From c851c3549409c7b2a72f61c29c7e1b4f11a433d6 Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Tue, 22 Oct 2024 15:05:40 -0500 Subject: [PATCH 01/11] Add DDL grammars --- parse/antlr.go | 119 + parse/ast.go | 136 +- parse/gen/kuneiform_lexer.go | 1126 +- parse/gen/kuneiform_parser.go | 11730 ++++++++++++++------ parse/gen/kuneiformparser_base_visitor.go | 76 + parse/gen/kuneiformparser_visitor.go | 57 + parse/grammar/KuneiformLexer.g4 | 9 + parse/grammar/KuneiformParser.g4 | 169 +- 8 files changed, 9338 insertions(+), 4084 deletions(-) diff --git a/parse/antlr.go b/parse/antlr.go index 9ec06d5e8..b5f806f07 100644 --- a/parse/antlr.go +++ b/parse/antlr.go @@ -39,6 +39,91 @@ type schemaVisitor struct { actions map[string][]ActionStmt } +func (s *schemaVisitor) VisitC_column_def(ctx *gen.C_column_defContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitC_index_def(ctx *gen.C_index_defContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitC_constraint(ctx *gen.C_constraintContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitFk_action(ctx *gen.Fk_actionContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitFk_constraint(ctx *gen.Fk_constraintContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitConstraint_def(ctx *gen.Constraint_defContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitUnnamed_constraint_def(ctx *gen.Unnamed_constraint_defContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitAlter_table_statement(ctx *gen.Alter_table_statementContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitAlter_column_clause(ctx *gen.Alter_column_clauseContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitAdd_column_clause(ctx *gen.Add_column_clauseContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitDrop_column_clause(ctx *gen.Drop_column_clauseContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitRename_column_clause(ctx *gen.Rename_column_clauseContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitRename_table_clause(ctx *gen.Rename_table_clauseContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitAdd_fk_clause(ctx *gen.Add_fk_clauseContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitDrop_fk_clause(ctx *gen.Drop_fk_clauseContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitCreate_index_statement(ctx *gen.Create_index_statementContext) interface{} { + //TODO implement me + panic("implement me") +} + +func (s *schemaVisitor) VisitDrop_index_statement(ctx *gen.Drop_index_statementContext) interface{} { + //TODO implement me + panic("implement me") +} + // getTextFromStream gets the text from the input stream for a given range. // This is a hack over a bug in the generated antlr code, where it will try // to access index out of bounds. @@ -906,6 +991,14 @@ func (s *schemaVisitor) VisitSql_statement(ctx *gen.Sql_statementContext) any { } switch { + case ctx.Create_table_statement() != nil: + stmt.SQL = ctx.Create_table_statement().Accept(s).(*CreateTableStatement) + //case ctx.Alter_table_statement() != nil: + // stmt.SQL = ctx.Alter_table_statement().Accept(s).(*AlterTableStatement) + //case ctx.Create_index_statement() != nil: + // stmt.SQL = ctx.Create_index_statement().Accept(s).(*CreateIndexStatement) + //case ctx.Drop_index_statement() != nil: + // stmt.SQL = ctx.Drop_index_statement().Accept(s).(*DropIndexStatement) case ctx.Select_statement() != nil: stmt.SQL = ctx.Select_statement().Accept(s).(*SelectStatement) case ctx.Update_statement() != nil: @@ -938,6 +1031,32 @@ func (s *schemaVisitor) VisitCommon_table_expression(ctx *gen.Common_table_expre return cte } +func (s *schemaVisitor) VisitCreate_table_statement(ctx *gen.Create_table_statementContext) any { + stmt := &CreateTableStatement{ + Name: ctx.GetName().Accept(s).(string), + Columns: arr[*Column](len(ctx.AllC_column_def())), + Indexes: nil, + ForeignKeys: nil, + } + for i, c := range ctx.AllC_column_def() { + stmt.Columns[i] = c.Accept(s).(*Column) + } + + var allIndexes []*Index + var allForeignKeys []*ForeignKey + + for _, c := range ctx.AllC_index_def() { + allIndexes = append(allIndexes, c.Accept(s).(*Index)) + } + + for _, c := range ctx.AllConstraint_def() { + + } + + stmt.Set(ctx) + return stmt +} + func (s *schemaVisitor) VisitSelect_statement(ctx *gen.Select_statementContext) any { stmt := &SelectStatement{ SelectCores: arr[*SelectCore](len(ctx.AllSelect_core())), diff --git a/parse/ast.go b/parse/ast.go index 64cc2fb73..20a000e5d 100644 --- a/parse/ast.go +++ b/parse/ast.go @@ -531,12 +531,140 @@ type SQLCore interface { type SQLStatementType string const ( - SQLStatementTypeInsert SQLStatementType = "insert" - SQLStatementTypeUpdate SQLStatementType = "update" - SQLStatementTypeDelete SQLStatementType = "delete" - SQLStatementTypeSelect SQLStatementType = "select" + SQLStatementTypeInsert SQLStatementType = "insert" + SQLStatementTypeUpdate SQLStatementType = "update" + SQLStatementTypeDelete SQLStatementType = "delete" + SQLStatementTypeSelect SQLStatementType = "select" + SQLStatementTypeCreateTable SQLStatementType = "create_table" + SQLStatementTypeAlterTable SQLStatementType = "alter_table" + SQLStatementTypeCreateIndex SQLStatementType = "create_index" + SQLStatementTypeDropIndex SQLStatementType = "drop_index" + //SQLStatementTypeDropTable SQLStatementType = "drop_table" ) +// CreateTableStatement is a CREATE TABLE statement. +type CreateTableStatement struct { + Position + + Name string + Columns []*Column + Indexes []*Index + ForeignKeys []*ForeignKey + PrimaryKey []string +} + +// Column represents a table column. +type Column struct { + Position + + Name string + Type *types.DataType + Constraints []Constraint + ForeignKey *ForeignKey + Index *Index +} + +//type Constraint interface { +// constraint() +//} + +// Constraint represents a table column constraint. +type Constraint struct { + Position + + Type string + Value *types.DataType +} + +type IndexType string + +const ( + // IndexTypePrimary is a primary index, created by using `PRIMARY KEY`. + // Only one primary index is allowed per table. + IndexTypePrimary IndexType = "primary" + // IndexTypeBTree is the default index, created by using `INDEX`. + IndexTypeBTree IndexType = "btree" + // IndexTypeUnique is a unique BTree index, created by using `UNIQUE INDEX`. + IndexTypeUnique IndexType = "unique" +) + +type Index struct { + Position + + Name string + Columns []string + Type IndexType +} + +// ForeignKey is a foreign key in a table. +type ForeignKey struct { + // ChildKeys are the columns that are referencing another. + // For example, in FOREIGN KEY (a) REFERENCES tbl2(b), "a" is the child key + ChildKeys []string `json:"child_keys"` + + // ParentKeys are the columns that are being referred to. + // For example, in FOREIGN KEY (a) REFERENCES tbl2(b), "b" is the parent key + ParentKeys []string `json:"parent_keys"` + + // ParentTable is the table that holds the parent columns. + // For example, in FOREIGN KEY (a) REFERENCES tbl2(b), "tbl2" is the parent table + ParentTable string `json:"parent_table"` + + // Do we need parent schema stored with meta data or should assume and + // enforce same schema when creating the dataset with generated DDL. + // ParentSchema string `json:"parent_schema"` + + // Action refers to what the foreign key should do when the parent is altered. + // This is NOT the same as a database action; + // however sqlite's docs refer to these as actions, + // so we should be consistent with that. + // For example, ON DELETE CASCADE is a foreign key action + Actions []*ForeignKeyAction `json:"actions"` +} + +// ForeignKeyActionOn specifies when a foreign key action should occur. +// It can be either "UPDATE" or "DELETE". +type ForeignKeyActionOn string + +// ForeignKeyActionOn types +const ( + // ON_UPDATE is used to specify an action should occur when a parent key is updated + ON_UPDATE ForeignKeyActionOn = "UPDATE" + // ON_DELETE is used to specify an action should occur when a parent key is deleted + ON_DELETE ForeignKeyActionOn = "DELETE" +) + +// ForeignKeyActionDo specifies what should be done when a foreign key action is triggered. +type ForeignKeyActionDo string + +// ForeignKeyActionDo types +const ( + // DO_NO_ACTION does nothing when a parent key is altered + DO_NO_ACTION ForeignKeyActionDo = "NO ACTION" + + // DO_RESTRICT prevents the parent key from being altered + DO_RESTRICT ForeignKeyActionDo = "RESTRICT" + + // DO_SET_NULL sets the child key(s) to NULL + DO_SET_NULL ForeignKeyActionDo = "SET NULL" + + // DO_SET_DEFAULT sets the child key(s) to their default values + DO_SET_DEFAULT ForeignKeyActionDo = "SET DEFAULT" + + // DO_CASCADE updates the child key(s) or deletes the records (depending on the action type) + DO_CASCADE ForeignKeyActionDo = "CASCADE" +) + +// ForeignKeyAction is used to specify what should occur +// if a parent key is updated or deleted +type ForeignKeyAction struct { + // On can be either "UPDATE" or "DELETE" + On ForeignKeyActionOn `json:"on"` + + // Do specifies what a foreign key action should do + Do ForeignKeyActionDo `json:"do"` +} + // SelectStatement is a SELECT statement. type SelectStatement struct { Position diff --git a/parse/gen/kuneiform_lexer.go b/parse/gen/kuneiform_lexer.go index 7053b0957..2c7191c86 100644 --- a/parse/gen/kuneiform_lexer.go +++ b/parse/gen/kuneiform_lexer.go @@ -47,20 +47,22 @@ func kuneiformlexerLexerInit() { "'!'", "'.'", "'||'", "'*'", "'='", "'=='", "'#'", "'$'", "'%'", "'+'", "'-'", "'/'", "", "'<'", "'<='", "'>'", "'>='", "'::'", "'_'", "':='", "'..'", "'\"'", "'database'", "'use'", "'table'", "'action'", "'procedure'", - "'public'", "'private'", "'view'", "'owner'", "'foreign'", "'primary'", - "'key'", "'on'", "'do'", "'unique'", "'cascade'", "'restrict'", "'set'", - "'default'", "'null'", "'delete'", "'update'", "'references'", "'ref'", - "'not'", "'index'", "'and'", "'or'", "'like'", "'ilike'", "'in'", "'between'", - "'is'", "'exists'", "'all'", "'any'", "'join'", "'left'", "'right'", - "'inner'", "'as'", "'asc'", "'desc'", "'limit'", "'offset'", "'order'", - "'by'", "'group'", "'having'", "'returns'", "'no'", "'with'", "'case'", - "'when'", "'then'", "'end'", "'distinct'", "'from'", "'where'", "'collate'", - "'select'", "'insert'", "'values'", "'full'", "'union'", "'intersect'", - "'except'", "'nulls'", "'first'", "'last'", "'returning'", "'into'", - "'conflict'", "'nothing'", "'for'", "'if'", "'elseif'", "'else'", "'break'", - "'return'", "'next'", "'over'", "'partition'", "'window'", "'filter'", - "'recursive'", "", "'true'", "'false'", "", "", "", "'on_update'", "'on_delete'", - "'set_default'", "'set_null'", "'no_action'", + "'public'", "'private'", "'view'", "'owner'", "'create'", "'alter'", + "'column'", "'add'", "'drop'", "'rename'", "'to'", "'constraint'", "'check'", + "'foreign'", "'primary'", "'key'", "'on'", "'do'", "'unique'", "'cascade'", + "'restrict'", "'set'", "'default'", "'null'", "'delete'", "'update'", + "'references'", "'ref'", "'not'", "'index'", "'and'", "'or'", "'like'", + "'ilike'", "'in'", "'between'", "'is'", "'exists'", "'all'", "'any'", + "'join'", "'left'", "'right'", "'inner'", "'as'", "'asc'", "'desc'", + "'limit'", "'offset'", "'order'", "'by'", "'group'", "'having'", "'returns'", + "'no'", "'with'", "'case'", "'when'", "'then'", "'end'", "'distinct'", + "'from'", "'where'", "'collate'", "'select'", "'insert'", "'values'", + "'full'", "'union'", "'intersect'", "'except'", "'nulls'", "'first'", + "'last'", "'returning'", "'into'", "'conflict'", "'nothing'", "'for'", + "'if'", "'elseif'", "'else'", "'break'", "'return'", "'next'", "'over'", + "'partition'", "'window'", "'filter'", "'recursive'", "", "'true'", + "'false'", "", "", "", "'on_update'", "'on_delete'", "'set_default'", + "'set_null'", "'no_action'", } staticData.SymbolicNames = []string{ "", "LBRACE", "RBRACE", "LBRACKET", "RBRACKET", "COL", "SCOL", "LPAREN", @@ -68,20 +70,21 @@ func kuneiformlexerLexerInit() { "EQUATE", "HASH", "DOLLAR", "MOD", "PLUS", "MINUS", "DIV", "NEQ", "LT", "LTE", "GT", "GTE", "TYPE_CAST", "UNDERSCORE", "ASSIGN", "RANGE", "DOUBLE_QUOTE", "DATABASE", "USE", "TABLE", "ACTION", "PROCEDURE", "PUBLIC", "PRIVATE", - "VIEW", "OWNER", "FOREIGN", "PRIMARY", "KEY", "ON", "DO", "UNIQUE", - "CASCADE", "RESTRICT", "SET", "DEFAULT", "NULL", "DELETE", "UPDATE", - "REFERENCES", "REF", "NOT", "INDEX", "AND", "OR", "LIKE", "ILIKE", "IN", - "BETWEEN", "IS", "EXISTS", "ALL", "ANY", "JOIN", "LEFT", "RIGHT", "INNER", - "AS", "ASC", "DESC", "LIMIT", "OFFSET", "ORDER", "BY", "GROUP", "HAVING", - "RETURNS", "NO", "WITH", "CASE", "WHEN", "THEN", "END", "DISTINCT", - "FROM", "WHERE", "COLLATE", "SELECT", "INSERT", "VALUES", "FULL", "UNION", - "INTERSECT", "EXCEPT", "NULLS", "FIRST", "LAST", "RETURNING", "INTO", - "CONFLICT", "NOTHING", "FOR", "IF", "ELSEIF", "ELSE", "BREAK", "RETURN", - "NEXT", "OVER", "PARTITION", "WINDOW", "FILTER", "RECURSIVE", "STRING_", - "TRUE", "FALSE", "DIGITS_", "BINARY_", "LEGACY_FOREIGN_KEY", "LEGACY_ON_UPDATE", - "LEGACY_ON_DELETE", "LEGACY_SET_DEFAULT", "LEGACY_SET_NULL", "LEGACY_NO_ACTION", - "IDENTIFIER", "VARIABLE", "CONTEXTUAL_VARIABLE", "HASH_IDENTIFIER", - "WS", "BLOCK_COMMENT", "LINE_COMMENT", + "VIEW", "OWNER", "CREATE", "ALTER", "COLUMN", "ADD", "DROP", "RENAME", + "TO", "CONSTRAINT", "CHECK", "FOREIGN", "PRIMARY", "KEY", "ON", "DO", + "UNIQUE", "CASCADE", "RESTRICT", "SET", "DEFAULT", "NULL", "DELETE", + "UPDATE", "REFERENCES", "REF", "NOT", "INDEX", "AND", "OR", "LIKE", + "ILIKE", "IN", "BETWEEN", "IS", "EXISTS", "ALL", "ANY", "JOIN", "LEFT", + "RIGHT", "INNER", "AS", "ASC", "DESC", "LIMIT", "OFFSET", "ORDER", "BY", + "GROUP", "HAVING", "RETURNS", "NO", "WITH", "CASE", "WHEN", "THEN", + "END", "DISTINCT", "FROM", "WHERE", "COLLATE", "SELECT", "INSERT", "VALUES", + "FULL", "UNION", "INTERSECT", "EXCEPT", "NULLS", "FIRST", "LAST", "RETURNING", + "INTO", "CONFLICT", "NOTHING", "FOR", "IF", "ELSEIF", "ELSE", "BREAK", + "RETURN", "NEXT", "OVER", "PARTITION", "WINDOW", "FILTER", "RECURSIVE", + "STRING_", "TRUE", "FALSE", "DIGITS_", "BINARY_", "LEGACY_FOREIGN_KEY", + "LEGACY_ON_UPDATE", "LEGACY_ON_DELETE", "LEGACY_SET_DEFAULT", "LEGACY_SET_NULL", + "LEGACY_NO_ACTION", "IDENTIFIER", "VARIABLE", "CONTEXTUAL_VARIABLE", + "HASH_IDENTIFIER", "WS", "BLOCK_COMMENT", "LINE_COMMENT", } staticData.RuleNames = []string{ "LBRACE", "RBRACE", "LBRACKET", "RBRACKET", "COL", "SCOL", "LPAREN", @@ -89,24 +92,25 @@ func kuneiformlexerLexerInit() { "EQUATE", "HASH", "DOLLAR", "MOD", "PLUS", "MINUS", "DIV", "NEQ", "LT", "LTE", "GT", "GTE", "TYPE_CAST", "UNDERSCORE", "ASSIGN", "RANGE", "DOUBLE_QUOTE", "DATABASE", "USE", "TABLE", "ACTION", "PROCEDURE", "PUBLIC", "PRIVATE", - "VIEW", "OWNER", "FOREIGN", "PRIMARY", "KEY", "ON", "DO", "UNIQUE", - "CASCADE", "RESTRICT", "SET", "DEFAULT", "NULL", "DELETE", "UPDATE", - "REFERENCES", "REF", "NOT", "INDEX", "AND", "OR", "LIKE", "ILIKE", "IN", - "BETWEEN", "IS", "EXISTS", "ALL", "ANY", "JOIN", "LEFT", "RIGHT", "INNER", - "AS", "ASC", "DESC", "LIMIT", "OFFSET", "ORDER", "BY", "GROUP", "HAVING", - "RETURNS", "NO", "WITH", "CASE", "WHEN", "THEN", "END", "DISTINCT", - "FROM", "WHERE", "COLLATE", "SELECT", "INSERT", "VALUES", "FULL", "UNION", - "INTERSECT", "EXCEPT", "NULLS", "FIRST", "LAST", "RETURNING", "INTO", - "CONFLICT", "NOTHING", "FOR", "IF", "ELSEIF", "ELSE", "BREAK", "RETURN", - "NEXT", "OVER", "PARTITION", "WINDOW", "FILTER", "RECURSIVE", "STRING_", - "TRUE", "FALSE", "DIGITS_", "BINARY_", "LEGACY_FOREIGN_KEY", "LEGACY_ON_UPDATE", - "LEGACY_ON_DELETE", "LEGACY_SET_DEFAULT", "LEGACY_SET_NULL", "LEGACY_NO_ACTION", - "IDENTIFIER", "VARIABLE", "CONTEXTUAL_VARIABLE", "HASH_IDENTIFIER", - "WS", "BLOCK_COMMENT", "LINE_COMMENT", + "VIEW", "OWNER", "CREATE", "ALTER", "COLUMN", "ADD", "DROP", "RENAME", + "TO", "CONSTRAINT", "CHECK", "FOREIGN", "PRIMARY", "KEY", "ON", "DO", + "UNIQUE", "CASCADE", "RESTRICT", "SET", "DEFAULT", "NULL", "DELETE", + "UPDATE", "REFERENCES", "REF", "NOT", "INDEX", "AND", "OR", "LIKE", + "ILIKE", "IN", "BETWEEN", "IS", "EXISTS", "ALL", "ANY", "JOIN", "LEFT", + "RIGHT", "INNER", "AS", "ASC", "DESC", "LIMIT", "OFFSET", "ORDER", "BY", + "GROUP", "HAVING", "RETURNS", "NO", "WITH", "CASE", "WHEN", "THEN", + "END", "DISTINCT", "FROM", "WHERE", "COLLATE", "SELECT", "INSERT", "VALUES", + "FULL", "UNION", "INTERSECT", "EXCEPT", "NULLS", "FIRST", "LAST", "RETURNING", + "INTO", "CONFLICT", "NOTHING", "FOR", "IF", "ELSEIF", "ELSE", "BREAK", + "RETURN", "NEXT", "OVER", "PARTITION", "WINDOW", "FILTER", "RECURSIVE", + "STRING_", "TRUE", "FALSE", "DIGITS_", "BINARY_", "LEGACY_FOREIGN_KEY", + "LEGACY_ON_UPDATE", "LEGACY_ON_DELETE", "LEGACY_SET_DEFAULT", "LEGACY_SET_NULL", + "LEGACY_NO_ACTION", "IDENTIFIER", "VARIABLE", "CONTEXTUAL_VARIABLE", + "HASH_IDENTIFIER", "WS", "BLOCK_COMMENT", "LINE_COMMENT", } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 136, 1015, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, + 4, 0, 145, 1089, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, @@ -133,11 +137,13 @@ func kuneiformlexerLexerInit() { 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, - 7, 135, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, + 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, + 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, + 7, 144, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, - 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 324, 8, 22, 1, + 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 342, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, @@ -146,407 +152,440 @@ func kuneiformlexerLexerInit() { 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, - 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, - 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, - 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, - 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, + 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, + 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, + 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, + 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, - 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, - 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, - 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, - 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, - 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, - 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, - 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, - 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, - 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, - 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, - 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, - 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, - 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, - 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, - 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, - 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, - 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, - 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, - 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, - 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, - 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, - 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, - 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, - 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, - 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, - 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, - 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, - 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, - 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, - 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, - 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, - 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, - 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, - 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, - 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, - 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, - 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, - 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, - 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, - 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, - 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, - 1, 118, 5, 118, 874, 8, 118, 10, 118, 12, 118, 877, 9, 118, 1, 118, 1, - 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, - 120, 1, 120, 1, 120, 1, 121, 4, 121, 893, 8, 121, 11, 121, 12, 121, 894, - 1, 122, 1, 122, 1, 122, 1, 122, 4, 122, 901, 8, 122, 11, 122, 12, 122, - 902, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, - 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 918, 8, 123, 1, 124, 1, 124, - 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, - 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, + 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, + 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, + 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, + 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, + 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, + 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, + 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, + 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, + 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, + 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, + 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, + 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, + 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, + 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, + 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, + 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, + 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, + 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, + 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, + 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, + 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, + 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, + 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, + 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, + 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, + 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, + 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, + 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, + 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, + 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, + 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, + 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, + 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, + 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, + 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, + 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, + 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, + 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, + 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, + 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, + 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, + 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, + 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, + 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, + 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, + 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, - 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, - 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, - 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 5, 129, 973, 8, 129, 10, - 129, 12, 129, 976, 9, 129, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, - 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, - 1, 134, 1, 134, 5, 134, 995, 8, 134, 10, 134, 12, 134, 998, 9, 134, 1, - 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 5, - 135, 1009, 8, 135, 10, 135, 12, 135, 1012, 9, 135, 1, 135, 1, 135, 1, 996, - 0, 136, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, - 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, - 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, - 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, - 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, - 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, - 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, - 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, - 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, - 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, - 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, - 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, - 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, - 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, - 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, - 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, - 133, 267, 134, 269, 135, 271, 136, 1, 0, 32, 2, 0, 68, 68, 100, 100, 2, - 0, 65, 65, 97, 97, 2, 0, 84, 84, 116, 116, 2, 0, 66, 66, 98, 98, 2, 0, - 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 85, 85, 117, 117, 2, 0, - 76, 76, 108, 108, 2, 0, 67, 67, 99, 99, 2, 0, 73, 73, 105, 105, 2, 0, 79, - 79, 111, 111, 2, 0, 78, 78, 110, 110, 2, 0, 80, 80, 112, 112, 2, 0, 82, - 82, 114, 114, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 70, - 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 77, 77, 109, 109, 2, 0, 89, - 89, 121, 121, 2, 0, 75, 75, 107, 107, 2, 0, 81, 81, 113, 113, 2, 0, 88, - 88, 120, 120, 2, 0, 74, 74, 106, 106, 2, 0, 72, 72, 104, 104, 2, 0, 39, - 39, 92, 92, 1, 0, 48, 57, 3, 0, 48, 57, 65, 70, 97, 102, 2, 0, 65, 90, - 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 3, 0, 9, 11, 13, 13, 32, - 32, 2, 0, 10, 10, 13, 13, 1023, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, - 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, - 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, - 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, - 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, - 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, - 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, - 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, - 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, - 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, - 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, - 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, - 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, - 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, - 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, - 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, - 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, - 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, - 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, - 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, - 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, - 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, - 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, - 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, - 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, - 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, - 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, - 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, - 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, - 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, - 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, - 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, - 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, - 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, - 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, - 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, - 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, - 0, 0, 0, 271, 1, 0, 0, 0, 1, 273, 1, 0, 0, 0, 3, 275, 1, 0, 0, 0, 5, 277, - 1, 0, 0, 0, 7, 279, 1, 0, 0, 0, 9, 281, 1, 0, 0, 0, 11, 283, 1, 0, 0, 0, - 13, 285, 1, 0, 0, 0, 15, 287, 1, 0, 0, 0, 17, 289, 1, 0, 0, 0, 19, 291, - 1, 0, 0, 0, 21, 293, 1, 0, 0, 0, 23, 295, 1, 0, 0, 0, 25, 297, 1, 0, 0, - 0, 27, 300, 1, 0, 0, 0, 29, 302, 1, 0, 0, 0, 31, 304, 1, 0, 0, 0, 33, 307, - 1, 0, 0, 0, 35, 309, 1, 0, 0, 0, 37, 311, 1, 0, 0, 0, 39, 313, 1, 0, 0, - 0, 41, 315, 1, 0, 0, 0, 43, 317, 1, 0, 0, 0, 45, 323, 1, 0, 0, 0, 47, 325, - 1, 0, 0, 0, 49, 327, 1, 0, 0, 0, 51, 330, 1, 0, 0, 0, 53, 332, 1, 0, 0, - 0, 55, 335, 1, 0, 0, 0, 57, 338, 1, 0, 0, 0, 59, 340, 1, 0, 0, 0, 61, 343, - 1, 0, 0, 0, 63, 346, 1, 0, 0, 0, 65, 348, 1, 0, 0, 0, 67, 357, 1, 0, 0, - 0, 69, 361, 1, 0, 0, 0, 71, 367, 1, 0, 0, 0, 73, 374, 1, 0, 0, 0, 75, 384, - 1, 0, 0, 0, 77, 391, 1, 0, 0, 0, 79, 399, 1, 0, 0, 0, 81, 404, 1, 0, 0, - 0, 83, 410, 1, 0, 0, 0, 85, 418, 1, 0, 0, 0, 87, 426, 1, 0, 0, 0, 89, 430, - 1, 0, 0, 0, 91, 433, 1, 0, 0, 0, 93, 436, 1, 0, 0, 0, 95, 443, 1, 0, 0, - 0, 97, 451, 1, 0, 0, 0, 99, 460, 1, 0, 0, 0, 101, 464, 1, 0, 0, 0, 103, - 472, 1, 0, 0, 0, 105, 477, 1, 0, 0, 0, 107, 484, 1, 0, 0, 0, 109, 491, - 1, 0, 0, 0, 111, 502, 1, 0, 0, 0, 113, 506, 1, 0, 0, 0, 115, 510, 1, 0, - 0, 0, 117, 516, 1, 0, 0, 0, 119, 520, 1, 0, 0, 0, 121, 523, 1, 0, 0, 0, - 123, 528, 1, 0, 0, 0, 125, 534, 1, 0, 0, 0, 127, 537, 1, 0, 0, 0, 129, - 545, 1, 0, 0, 0, 131, 548, 1, 0, 0, 0, 133, 555, 1, 0, 0, 0, 135, 559, - 1, 0, 0, 0, 137, 563, 1, 0, 0, 0, 139, 568, 1, 0, 0, 0, 141, 573, 1, 0, - 0, 0, 143, 579, 1, 0, 0, 0, 145, 585, 1, 0, 0, 0, 147, 588, 1, 0, 0, 0, - 149, 592, 1, 0, 0, 0, 151, 597, 1, 0, 0, 0, 153, 603, 1, 0, 0, 0, 155, - 610, 1, 0, 0, 0, 157, 616, 1, 0, 0, 0, 159, 619, 1, 0, 0, 0, 161, 625, - 1, 0, 0, 0, 163, 632, 1, 0, 0, 0, 165, 640, 1, 0, 0, 0, 167, 643, 1, 0, - 0, 0, 169, 648, 1, 0, 0, 0, 171, 653, 1, 0, 0, 0, 173, 658, 1, 0, 0, 0, - 175, 663, 1, 0, 0, 0, 177, 667, 1, 0, 0, 0, 179, 676, 1, 0, 0, 0, 181, - 681, 1, 0, 0, 0, 183, 687, 1, 0, 0, 0, 185, 695, 1, 0, 0, 0, 187, 702, - 1, 0, 0, 0, 189, 709, 1, 0, 0, 0, 191, 716, 1, 0, 0, 0, 193, 721, 1, 0, - 0, 0, 195, 727, 1, 0, 0, 0, 197, 737, 1, 0, 0, 0, 199, 744, 1, 0, 0, 0, - 201, 750, 1, 0, 0, 0, 203, 756, 1, 0, 0, 0, 205, 761, 1, 0, 0, 0, 207, - 771, 1, 0, 0, 0, 209, 776, 1, 0, 0, 0, 211, 785, 1, 0, 0, 0, 213, 793, - 1, 0, 0, 0, 215, 797, 1, 0, 0, 0, 217, 800, 1, 0, 0, 0, 219, 807, 1, 0, - 0, 0, 221, 812, 1, 0, 0, 0, 223, 818, 1, 0, 0, 0, 225, 825, 1, 0, 0, 0, - 227, 830, 1, 0, 0, 0, 229, 835, 1, 0, 0, 0, 231, 845, 1, 0, 0, 0, 233, - 852, 1, 0, 0, 0, 235, 859, 1, 0, 0, 0, 237, 869, 1, 0, 0, 0, 239, 880, - 1, 0, 0, 0, 241, 885, 1, 0, 0, 0, 243, 892, 1, 0, 0, 0, 245, 896, 1, 0, - 0, 0, 247, 917, 1, 0, 0, 0, 249, 919, 1, 0, 0, 0, 251, 929, 1, 0, 0, 0, - 253, 939, 1, 0, 0, 0, 255, 951, 1, 0, 0, 0, 257, 960, 1, 0, 0, 0, 259, - 970, 1, 0, 0, 0, 261, 977, 1, 0, 0, 0, 263, 980, 1, 0, 0, 0, 265, 983, - 1, 0, 0, 0, 267, 986, 1, 0, 0, 0, 269, 990, 1, 0, 0, 0, 271, 1004, 1, 0, - 0, 0, 273, 274, 5, 123, 0, 0, 274, 2, 1, 0, 0, 0, 275, 276, 5, 125, 0, - 0, 276, 4, 1, 0, 0, 0, 277, 278, 5, 91, 0, 0, 278, 6, 1, 0, 0, 0, 279, - 280, 5, 93, 0, 0, 280, 8, 1, 0, 0, 0, 281, 282, 5, 58, 0, 0, 282, 10, 1, - 0, 0, 0, 283, 284, 5, 59, 0, 0, 284, 12, 1, 0, 0, 0, 285, 286, 5, 40, 0, - 0, 286, 14, 1, 0, 0, 0, 287, 288, 5, 41, 0, 0, 288, 16, 1, 0, 0, 0, 289, - 290, 5, 44, 0, 0, 290, 18, 1, 0, 0, 0, 291, 292, 5, 64, 0, 0, 292, 20, - 1, 0, 0, 0, 293, 294, 5, 33, 0, 0, 294, 22, 1, 0, 0, 0, 295, 296, 5, 46, - 0, 0, 296, 24, 1, 0, 0, 0, 297, 298, 5, 124, 0, 0, 298, 299, 5, 124, 0, - 0, 299, 26, 1, 0, 0, 0, 300, 301, 5, 42, 0, 0, 301, 28, 1, 0, 0, 0, 302, - 303, 5, 61, 0, 0, 303, 30, 1, 0, 0, 0, 304, 305, 5, 61, 0, 0, 305, 306, - 5, 61, 0, 0, 306, 32, 1, 0, 0, 0, 307, 308, 5, 35, 0, 0, 308, 34, 1, 0, - 0, 0, 309, 310, 5, 36, 0, 0, 310, 36, 1, 0, 0, 0, 311, 312, 5, 37, 0, 0, - 312, 38, 1, 0, 0, 0, 313, 314, 5, 43, 0, 0, 314, 40, 1, 0, 0, 0, 315, 316, - 5, 45, 0, 0, 316, 42, 1, 0, 0, 0, 317, 318, 5, 47, 0, 0, 318, 44, 1, 0, - 0, 0, 319, 320, 5, 33, 0, 0, 320, 324, 5, 61, 0, 0, 321, 322, 5, 60, 0, - 0, 322, 324, 5, 62, 0, 0, 323, 319, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, - 46, 1, 0, 0, 0, 325, 326, 5, 60, 0, 0, 326, 48, 1, 0, 0, 0, 327, 328, 5, - 60, 0, 0, 328, 329, 5, 61, 0, 0, 329, 50, 1, 0, 0, 0, 330, 331, 5, 62, - 0, 0, 331, 52, 1, 0, 0, 0, 332, 333, 5, 62, 0, 0, 333, 334, 5, 61, 0, 0, - 334, 54, 1, 0, 0, 0, 335, 336, 5, 58, 0, 0, 336, 337, 5, 58, 0, 0, 337, - 56, 1, 0, 0, 0, 338, 339, 5, 95, 0, 0, 339, 58, 1, 0, 0, 0, 340, 341, 5, - 58, 0, 0, 341, 342, 5, 61, 0, 0, 342, 60, 1, 0, 0, 0, 343, 344, 5, 46, - 0, 0, 344, 345, 5, 46, 0, 0, 345, 62, 1, 0, 0, 0, 346, 347, 5, 34, 0, 0, - 347, 64, 1, 0, 0, 0, 348, 349, 7, 0, 0, 0, 349, 350, 7, 1, 0, 0, 350, 351, - 7, 2, 0, 0, 351, 352, 7, 1, 0, 0, 352, 353, 7, 3, 0, 0, 353, 354, 7, 1, - 0, 0, 354, 355, 7, 4, 0, 0, 355, 356, 7, 5, 0, 0, 356, 66, 1, 0, 0, 0, - 357, 358, 7, 6, 0, 0, 358, 359, 7, 4, 0, 0, 359, 360, 7, 5, 0, 0, 360, - 68, 1, 0, 0, 0, 361, 362, 7, 2, 0, 0, 362, 363, 7, 1, 0, 0, 363, 364, 7, - 3, 0, 0, 364, 365, 7, 7, 0, 0, 365, 366, 7, 5, 0, 0, 366, 70, 1, 0, 0, - 0, 367, 368, 7, 1, 0, 0, 368, 369, 7, 8, 0, 0, 369, 370, 7, 2, 0, 0, 370, - 371, 7, 9, 0, 0, 371, 372, 7, 10, 0, 0, 372, 373, 7, 11, 0, 0, 373, 72, - 1, 0, 0, 0, 374, 375, 7, 12, 0, 0, 375, 376, 7, 13, 0, 0, 376, 377, 7, - 10, 0, 0, 377, 378, 7, 8, 0, 0, 378, 379, 7, 5, 0, 0, 379, 380, 7, 0, 0, - 0, 380, 381, 7, 6, 0, 0, 381, 382, 7, 13, 0, 0, 382, 383, 7, 5, 0, 0, 383, - 74, 1, 0, 0, 0, 384, 385, 7, 12, 0, 0, 385, 386, 7, 6, 0, 0, 386, 387, - 7, 3, 0, 0, 387, 388, 7, 7, 0, 0, 388, 389, 7, 9, 0, 0, 389, 390, 7, 8, - 0, 0, 390, 76, 1, 0, 0, 0, 391, 392, 7, 12, 0, 0, 392, 393, 7, 13, 0, 0, - 393, 394, 7, 9, 0, 0, 394, 395, 7, 14, 0, 0, 395, 396, 7, 1, 0, 0, 396, - 397, 7, 2, 0, 0, 397, 398, 7, 5, 0, 0, 398, 78, 1, 0, 0, 0, 399, 400, 7, - 14, 0, 0, 400, 401, 7, 9, 0, 0, 401, 402, 7, 5, 0, 0, 402, 403, 7, 15, - 0, 0, 403, 80, 1, 0, 0, 0, 404, 405, 7, 10, 0, 0, 405, 406, 7, 15, 0, 0, - 406, 407, 7, 11, 0, 0, 407, 408, 7, 5, 0, 0, 408, 409, 7, 13, 0, 0, 409, - 82, 1, 0, 0, 0, 410, 411, 7, 16, 0, 0, 411, 412, 7, 10, 0, 0, 412, 413, - 7, 13, 0, 0, 413, 414, 7, 5, 0, 0, 414, 415, 7, 9, 0, 0, 415, 416, 7, 17, - 0, 0, 416, 417, 7, 11, 0, 0, 417, 84, 1, 0, 0, 0, 418, 419, 7, 12, 0, 0, - 419, 420, 7, 13, 0, 0, 420, 421, 7, 9, 0, 0, 421, 422, 7, 18, 0, 0, 422, - 423, 7, 1, 0, 0, 423, 424, 7, 13, 0, 0, 424, 425, 7, 19, 0, 0, 425, 86, - 1, 0, 0, 0, 426, 427, 7, 20, 0, 0, 427, 428, 7, 5, 0, 0, 428, 429, 7, 19, - 0, 0, 429, 88, 1, 0, 0, 0, 430, 431, 7, 10, 0, 0, 431, 432, 7, 11, 0, 0, - 432, 90, 1, 0, 0, 0, 433, 434, 7, 0, 0, 0, 434, 435, 7, 10, 0, 0, 435, - 92, 1, 0, 0, 0, 436, 437, 7, 6, 0, 0, 437, 438, 7, 11, 0, 0, 438, 439, - 7, 9, 0, 0, 439, 440, 7, 21, 0, 0, 440, 441, 7, 6, 0, 0, 441, 442, 7, 5, - 0, 0, 442, 94, 1, 0, 0, 0, 443, 444, 7, 8, 0, 0, 444, 445, 7, 1, 0, 0, - 445, 446, 7, 4, 0, 0, 446, 447, 7, 8, 0, 0, 447, 448, 7, 1, 0, 0, 448, - 449, 7, 0, 0, 0, 449, 450, 7, 5, 0, 0, 450, 96, 1, 0, 0, 0, 451, 452, 7, - 13, 0, 0, 452, 453, 7, 5, 0, 0, 453, 454, 7, 4, 0, 0, 454, 455, 7, 2, 0, - 0, 455, 456, 7, 13, 0, 0, 456, 457, 7, 9, 0, 0, 457, 458, 7, 8, 0, 0, 458, - 459, 7, 2, 0, 0, 459, 98, 1, 0, 0, 0, 460, 461, 7, 4, 0, 0, 461, 462, 7, - 5, 0, 0, 462, 463, 7, 2, 0, 0, 463, 100, 1, 0, 0, 0, 464, 465, 7, 0, 0, - 0, 465, 466, 7, 5, 0, 0, 466, 467, 7, 16, 0, 0, 467, 468, 7, 1, 0, 0, 468, - 469, 7, 6, 0, 0, 469, 470, 7, 7, 0, 0, 470, 471, 7, 2, 0, 0, 471, 102, - 1, 0, 0, 0, 472, 473, 7, 11, 0, 0, 473, 474, 7, 6, 0, 0, 474, 475, 7, 7, - 0, 0, 475, 476, 7, 7, 0, 0, 476, 104, 1, 0, 0, 0, 477, 478, 7, 0, 0, 0, - 478, 479, 7, 5, 0, 0, 479, 480, 7, 7, 0, 0, 480, 481, 7, 5, 0, 0, 481, - 482, 7, 2, 0, 0, 482, 483, 7, 5, 0, 0, 483, 106, 1, 0, 0, 0, 484, 485, - 7, 6, 0, 0, 485, 486, 7, 12, 0, 0, 486, 487, 7, 0, 0, 0, 487, 488, 7, 1, - 0, 0, 488, 489, 7, 2, 0, 0, 489, 490, 7, 5, 0, 0, 490, 108, 1, 0, 0, 0, - 491, 492, 7, 13, 0, 0, 492, 493, 7, 5, 0, 0, 493, 494, 7, 16, 0, 0, 494, - 495, 7, 5, 0, 0, 495, 496, 7, 13, 0, 0, 496, 497, 7, 5, 0, 0, 497, 498, - 7, 11, 0, 0, 498, 499, 7, 8, 0, 0, 499, 500, 7, 5, 0, 0, 500, 501, 7, 4, - 0, 0, 501, 110, 1, 0, 0, 0, 502, 503, 7, 13, 0, 0, 503, 504, 7, 5, 0, 0, - 504, 505, 7, 16, 0, 0, 505, 112, 1, 0, 0, 0, 506, 507, 7, 11, 0, 0, 507, - 508, 7, 10, 0, 0, 508, 509, 7, 2, 0, 0, 509, 114, 1, 0, 0, 0, 510, 511, - 7, 9, 0, 0, 511, 512, 7, 11, 0, 0, 512, 513, 7, 0, 0, 0, 513, 514, 7, 5, - 0, 0, 514, 515, 7, 22, 0, 0, 515, 116, 1, 0, 0, 0, 516, 517, 7, 1, 0, 0, - 517, 518, 7, 11, 0, 0, 518, 519, 7, 0, 0, 0, 519, 118, 1, 0, 0, 0, 520, - 521, 7, 10, 0, 0, 521, 522, 7, 13, 0, 0, 522, 120, 1, 0, 0, 0, 523, 524, - 7, 7, 0, 0, 524, 525, 7, 9, 0, 0, 525, 526, 7, 20, 0, 0, 526, 527, 7, 5, - 0, 0, 527, 122, 1, 0, 0, 0, 528, 529, 7, 9, 0, 0, 529, 530, 7, 7, 0, 0, - 530, 531, 7, 9, 0, 0, 531, 532, 7, 20, 0, 0, 532, 533, 7, 5, 0, 0, 533, - 124, 1, 0, 0, 0, 534, 535, 7, 9, 0, 0, 535, 536, 7, 11, 0, 0, 536, 126, - 1, 0, 0, 0, 537, 538, 7, 3, 0, 0, 538, 539, 7, 5, 0, 0, 539, 540, 7, 2, - 0, 0, 540, 541, 7, 15, 0, 0, 541, 542, 7, 5, 0, 0, 542, 543, 7, 5, 0, 0, - 543, 544, 7, 11, 0, 0, 544, 128, 1, 0, 0, 0, 545, 546, 7, 9, 0, 0, 546, - 547, 7, 4, 0, 0, 547, 130, 1, 0, 0, 0, 548, 549, 7, 5, 0, 0, 549, 550, - 7, 22, 0, 0, 550, 551, 7, 9, 0, 0, 551, 552, 7, 4, 0, 0, 552, 553, 7, 2, - 0, 0, 553, 554, 7, 4, 0, 0, 554, 132, 1, 0, 0, 0, 555, 556, 7, 1, 0, 0, - 556, 557, 7, 7, 0, 0, 557, 558, 7, 7, 0, 0, 558, 134, 1, 0, 0, 0, 559, - 560, 7, 1, 0, 0, 560, 561, 7, 11, 0, 0, 561, 562, 7, 19, 0, 0, 562, 136, - 1, 0, 0, 0, 563, 564, 7, 23, 0, 0, 564, 565, 7, 10, 0, 0, 565, 566, 7, - 9, 0, 0, 566, 567, 7, 11, 0, 0, 567, 138, 1, 0, 0, 0, 568, 569, 7, 7, 0, - 0, 569, 570, 7, 5, 0, 0, 570, 571, 7, 16, 0, 0, 571, 572, 7, 2, 0, 0, 572, - 140, 1, 0, 0, 0, 573, 574, 7, 13, 0, 0, 574, 575, 7, 9, 0, 0, 575, 576, - 7, 17, 0, 0, 576, 577, 7, 24, 0, 0, 577, 578, 7, 2, 0, 0, 578, 142, 1, - 0, 0, 0, 579, 580, 7, 9, 0, 0, 580, 581, 7, 11, 0, 0, 581, 582, 7, 11, - 0, 0, 582, 583, 7, 5, 0, 0, 583, 584, 7, 13, 0, 0, 584, 144, 1, 0, 0, 0, - 585, 586, 7, 1, 0, 0, 586, 587, 7, 4, 0, 0, 587, 146, 1, 0, 0, 0, 588, - 589, 7, 1, 0, 0, 589, 590, 7, 4, 0, 0, 590, 591, 7, 8, 0, 0, 591, 148, - 1, 0, 0, 0, 592, 593, 7, 0, 0, 0, 593, 594, 7, 5, 0, 0, 594, 595, 7, 4, - 0, 0, 595, 596, 7, 8, 0, 0, 596, 150, 1, 0, 0, 0, 597, 598, 7, 7, 0, 0, - 598, 599, 7, 9, 0, 0, 599, 600, 7, 18, 0, 0, 600, 601, 7, 9, 0, 0, 601, - 602, 7, 2, 0, 0, 602, 152, 1, 0, 0, 0, 603, 604, 7, 10, 0, 0, 604, 605, - 7, 16, 0, 0, 605, 606, 7, 16, 0, 0, 606, 607, 7, 4, 0, 0, 607, 608, 7, - 5, 0, 0, 608, 609, 7, 2, 0, 0, 609, 154, 1, 0, 0, 0, 610, 611, 7, 10, 0, - 0, 611, 612, 7, 13, 0, 0, 612, 613, 7, 0, 0, 0, 613, 614, 7, 5, 0, 0, 614, - 615, 7, 13, 0, 0, 615, 156, 1, 0, 0, 0, 616, 617, 7, 3, 0, 0, 617, 618, - 7, 19, 0, 0, 618, 158, 1, 0, 0, 0, 619, 620, 7, 17, 0, 0, 620, 621, 7, - 13, 0, 0, 621, 622, 7, 10, 0, 0, 622, 623, 7, 6, 0, 0, 623, 624, 7, 12, - 0, 0, 624, 160, 1, 0, 0, 0, 625, 626, 7, 24, 0, 0, 626, 627, 7, 1, 0, 0, - 627, 628, 7, 14, 0, 0, 628, 629, 7, 9, 0, 0, 629, 630, 7, 11, 0, 0, 630, - 631, 7, 17, 0, 0, 631, 162, 1, 0, 0, 0, 632, 633, 7, 13, 0, 0, 633, 634, - 7, 5, 0, 0, 634, 635, 7, 2, 0, 0, 635, 636, 7, 6, 0, 0, 636, 637, 7, 13, - 0, 0, 637, 638, 7, 11, 0, 0, 638, 639, 7, 4, 0, 0, 639, 164, 1, 0, 0, 0, - 640, 641, 7, 11, 0, 0, 641, 642, 7, 10, 0, 0, 642, 166, 1, 0, 0, 0, 643, - 644, 7, 15, 0, 0, 644, 645, 7, 9, 0, 0, 645, 646, 7, 2, 0, 0, 646, 647, - 7, 24, 0, 0, 647, 168, 1, 0, 0, 0, 648, 649, 7, 8, 0, 0, 649, 650, 7, 1, - 0, 0, 650, 651, 7, 4, 0, 0, 651, 652, 7, 5, 0, 0, 652, 170, 1, 0, 0, 0, - 653, 654, 7, 15, 0, 0, 654, 655, 7, 24, 0, 0, 655, 656, 7, 5, 0, 0, 656, - 657, 7, 11, 0, 0, 657, 172, 1, 0, 0, 0, 658, 659, 7, 2, 0, 0, 659, 660, - 7, 24, 0, 0, 660, 661, 7, 5, 0, 0, 661, 662, 7, 11, 0, 0, 662, 174, 1, - 0, 0, 0, 663, 664, 7, 5, 0, 0, 664, 665, 7, 11, 0, 0, 665, 666, 7, 0, 0, - 0, 666, 176, 1, 0, 0, 0, 667, 668, 7, 0, 0, 0, 668, 669, 7, 9, 0, 0, 669, - 670, 7, 4, 0, 0, 670, 671, 7, 2, 0, 0, 671, 672, 7, 9, 0, 0, 672, 673, - 7, 11, 0, 0, 673, 674, 7, 8, 0, 0, 674, 675, 7, 2, 0, 0, 675, 178, 1, 0, - 0, 0, 676, 677, 7, 16, 0, 0, 677, 678, 7, 13, 0, 0, 678, 679, 7, 10, 0, - 0, 679, 680, 7, 18, 0, 0, 680, 180, 1, 0, 0, 0, 681, 682, 7, 15, 0, 0, - 682, 683, 7, 24, 0, 0, 683, 684, 7, 5, 0, 0, 684, 685, 7, 13, 0, 0, 685, - 686, 7, 5, 0, 0, 686, 182, 1, 0, 0, 0, 687, 688, 7, 8, 0, 0, 688, 689, - 7, 10, 0, 0, 689, 690, 7, 7, 0, 0, 690, 691, 7, 7, 0, 0, 691, 692, 7, 1, - 0, 0, 692, 693, 7, 2, 0, 0, 693, 694, 7, 5, 0, 0, 694, 184, 1, 0, 0, 0, - 695, 696, 7, 4, 0, 0, 696, 697, 7, 5, 0, 0, 697, 698, 7, 7, 0, 0, 698, - 699, 7, 5, 0, 0, 699, 700, 7, 8, 0, 0, 700, 701, 7, 2, 0, 0, 701, 186, - 1, 0, 0, 0, 702, 703, 7, 9, 0, 0, 703, 704, 7, 11, 0, 0, 704, 705, 7, 4, - 0, 0, 705, 706, 7, 5, 0, 0, 706, 707, 7, 13, 0, 0, 707, 708, 7, 2, 0, 0, - 708, 188, 1, 0, 0, 0, 709, 710, 7, 14, 0, 0, 710, 711, 7, 1, 0, 0, 711, - 712, 7, 7, 0, 0, 712, 713, 7, 6, 0, 0, 713, 714, 7, 5, 0, 0, 714, 715, - 7, 4, 0, 0, 715, 190, 1, 0, 0, 0, 716, 717, 7, 16, 0, 0, 717, 718, 7, 6, - 0, 0, 718, 719, 7, 7, 0, 0, 719, 720, 7, 7, 0, 0, 720, 192, 1, 0, 0, 0, - 721, 722, 7, 6, 0, 0, 722, 723, 7, 11, 0, 0, 723, 724, 7, 9, 0, 0, 724, - 725, 7, 10, 0, 0, 725, 726, 7, 11, 0, 0, 726, 194, 1, 0, 0, 0, 727, 728, - 7, 9, 0, 0, 728, 729, 7, 11, 0, 0, 729, 730, 7, 2, 0, 0, 730, 731, 7, 5, - 0, 0, 731, 732, 7, 13, 0, 0, 732, 733, 7, 4, 0, 0, 733, 734, 7, 5, 0, 0, - 734, 735, 7, 8, 0, 0, 735, 736, 7, 2, 0, 0, 736, 196, 1, 0, 0, 0, 737, - 738, 7, 5, 0, 0, 738, 739, 7, 22, 0, 0, 739, 740, 7, 8, 0, 0, 740, 741, - 7, 5, 0, 0, 741, 742, 7, 12, 0, 0, 742, 743, 7, 2, 0, 0, 743, 198, 1, 0, - 0, 0, 744, 745, 7, 11, 0, 0, 745, 746, 7, 6, 0, 0, 746, 747, 7, 7, 0, 0, - 747, 748, 7, 7, 0, 0, 748, 749, 7, 4, 0, 0, 749, 200, 1, 0, 0, 0, 750, - 751, 7, 16, 0, 0, 751, 752, 7, 9, 0, 0, 752, 753, 7, 13, 0, 0, 753, 754, - 7, 4, 0, 0, 754, 755, 7, 2, 0, 0, 755, 202, 1, 0, 0, 0, 756, 757, 7, 7, - 0, 0, 757, 758, 7, 1, 0, 0, 758, 759, 7, 4, 0, 0, 759, 760, 7, 2, 0, 0, - 760, 204, 1, 0, 0, 0, 761, 762, 7, 13, 0, 0, 762, 763, 7, 5, 0, 0, 763, - 764, 7, 2, 0, 0, 764, 765, 7, 6, 0, 0, 765, 766, 7, 13, 0, 0, 766, 767, - 7, 11, 0, 0, 767, 768, 7, 9, 0, 0, 768, 769, 7, 11, 0, 0, 769, 770, 7, - 17, 0, 0, 770, 206, 1, 0, 0, 0, 771, 772, 7, 9, 0, 0, 772, 773, 7, 11, - 0, 0, 773, 774, 7, 2, 0, 0, 774, 775, 7, 10, 0, 0, 775, 208, 1, 0, 0, 0, - 776, 777, 7, 8, 0, 0, 777, 778, 7, 10, 0, 0, 778, 779, 7, 11, 0, 0, 779, - 780, 7, 16, 0, 0, 780, 781, 7, 7, 0, 0, 781, 782, 7, 9, 0, 0, 782, 783, - 7, 8, 0, 0, 783, 784, 7, 2, 0, 0, 784, 210, 1, 0, 0, 0, 785, 786, 7, 11, - 0, 0, 786, 787, 7, 10, 0, 0, 787, 788, 7, 2, 0, 0, 788, 789, 7, 24, 0, - 0, 789, 790, 7, 9, 0, 0, 790, 791, 7, 11, 0, 0, 791, 792, 7, 17, 0, 0, - 792, 212, 1, 0, 0, 0, 793, 794, 7, 16, 0, 0, 794, 795, 7, 10, 0, 0, 795, - 796, 7, 13, 0, 0, 796, 214, 1, 0, 0, 0, 797, 798, 7, 9, 0, 0, 798, 799, - 7, 16, 0, 0, 799, 216, 1, 0, 0, 0, 800, 801, 7, 5, 0, 0, 801, 802, 7, 7, - 0, 0, 802, 803, 7, 4, 0, 0, 803, 804, 7, 5, 0, 0, 804, 805, 7, 9, 0, 0, - 805, 806, 7, 16, 0, 0, 806, 218, 1, 0, 0, 0, 807, 808, 7, 5, 0, 0, 808, - 809, 7, 7, 0, 0, 809, 810, 7, 4, 0, 0, 810, 811, 7, 5, 0, 0, 811, 220, - 1, 0, 0, 0, 812, 813, 7, 3, 0, 0, 813, 814, 7, 13, 0, 0, 814, 815, 7, 5, - 0, 0, 815, 816, 7, 1, 0, 0, 816, 817, 7, 20, 0, 0, 817, 222, 1, 0, 0, 0, - 818, 819, 7, 13, 0, 0, 819, 820, 7, 5, 0, 0, 820, 821, 7, 2, 0, 0, 821, - 822, 7, 6, 0, 0, 822, 823, 7, 13, 0, 0, 823, 824, 7, 11, 0, 0, 824, 224, - 1, 0, 0, 0, 825, 826, 7, 11, 0, 0, 826, 827, 7, 5, 0, 0, 827, 828, 7, 22, - 0, 0, 828, 829, 7, 2, 0, 0, 829, 226, 1, 0, 0, 0, 830, 831, 7, 10, 0, 0, - 831, 832, 7, 14, 0, 0, 832, 833, 7, 5, 0, 0, 833, 834, 7, 13, 0, 0, 834, - 228, 1, 0, 0, 0, 835, 836, 7, 12, 0, 0, 836, 837, 7, 1, 0, 0, 837, 838, - 7, 13, 0, 0, 838, 839, 7, 2, 0, 0, 839, 840, 7, 9, 0, 0, 840, 841, 7, 2, - 0, 0, 841, 842, 7, 9, 0, 0, 842, 843, 7, 10, 0, 0, 843, 844, 7, 11, 0, - 0, 844, 230, 1, 0, 0, 0, 845, 846, 7, 15, 0, 0, 846, 847, 7, 9, 0, 0, 847, - 848, 7, 11, 0, 0, 848, 849, 7, 0, 0, 0, 849, 850, 7, 10, 0, 0, 850, 851, - 7, 15, 0, 0, 851, 232, 1, 0, 0, 0, 852, 853, 7, 16, 0, 0, 853, 854, 7, - 9, 0, 0, 854, 855, 7, 7, 0, 0, 855, 856, 7, 2, 0, 0, 856, 857, 7, 5, 0, - 0, 857, 858, 7, 13, 0, 0, 858, 234, 1, 0, 0, 0, 859, 860, 7, 13, 0, 0, - 860, 861, 7, 5, 0, 0, 861, 862, 7, 8, 0, 0, 862, 863, 7, 6, 0, 0, 863, - 864, 7, 13, 0, 0, 864, 865, 7, 4, 0, 0, 865, 866, 7, 9, 0, 0, 866, 867, - 7, 14, 0, 0, 867, 868, 7, 5, 0, 0, 868, 236, 1, 0, 0, 0, 869, 875, 5, 39, - 0, 0, 870, 874, 8, 25, 0, 0, 871, 872, 5, 92, 0, 0, 872, 874, 9, 0, 0, - 0, 873, 870, 1, 0, 0, 0, 873, 871, 1, 0, 0, 0, 874, 877, 1, 0, 0, 0, 875, - 873, 1, 0, 0, 0, 875, 876, 1, 0, 0, 0, 876, 878, 1, 0, 0, 0, 877, 875, - 1, 0, 0, 0, 878, 879, 5, 39, 0, 0, 879, 238, 1, 0, 0, 0, 880, 881, 7, 2, - 0, 0, 881, 882, 7, 13, 0, 0, 882, 883, 7, 6, 0, 0, 883, 884, 7, 5, 0, 0, - 884, 240, 1, 0, 0, 0, 885, 886, 7, 16, 0, 0, 886, 887, 7, 1, 0, 0, 887, - 888, 7, 7, 0, 0, 888, 889, 7, 4, 0, 0, 889, 890, 7, 5, 0, 0, 890, 242, - 1, 0, 0, 0, 891, 893, 7, 26, 0, 0, 892, 891, 1, 0, 0, 0, 893, 894, 1, 0, - 0, 0, 894, 892, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 244, 1, 0, 0, 0, - 896, 897, 5, 48, 0, 0, 897, 898, 7, 22, 0, 0, 898, 900, 1, 0, 0, 0, 899, - 901, 7, 27, 0, 0, 900, 899, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 900, - 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 246, 1, 0, 0, 0, 904, 905, 7, 16, - 0, 0, 905, 906, 7, 10, 0, 0, 906, 907, 7, 13, 0, 0, 907, 908, 7, 5, 0, - 0, 908, 909, 7, 9, 0, 0, 909, 910, 7, 17, 0, 0, 910, 911, 7, 11, 0, 0, - 911, 912, 5, 95, 0, 0, 912, 913, 7, 20, 0, 0, 913, 914, 7, 5, 0, 0, 914, - 918, 7, 19, 0, 0, 915, 916, 7, 16, 0, 0, 916, 918, 7, 20, 0, 0, 917, 904, - 1, 0, 0, 0, 917, 915, 1, 0, 0, 0, 918, 248, 1, 0, 0, 0, 919, 920, 7, 10, - 0, 0, 920, 921, 7, 11, 0, 0, 921, 922, 5, 95, 0, 0, 922, 923, 7, 6, 0, - 0, 923, 924, 7, 12, 0, 0, 924, 925, 7, 0, 0, 0, 925, 926, 7, 1, 0, 0, 926, - 927, 7, 2, 0, 0, 927, 928, 7, 5, 0, 0, 928, 250, 1, 0, 0, 0, 929, 930, - 7, 10, 0, 0, 930, 931, 7, 11, 0, 0, 931, 932, 5, 95, 0, 0, 932, 933, 7, - 0, 0, 0, 933, 934, 7, 5, 0, 0, 934, 935, 7, 7, 0, 0, 935, 936, 7, 5, 0, - 0, 936, 937, 7, 2, 0, 0, 937, 938, 7, 5, 0, 0, 938, 252, 1, 0, 0, 0, 939, - 940, 7, 4, 0, 0, 940, 941, 7, 5, 0, 0, 941, 942, 7, 2, 0, 0, 942, 943, - 5, 95, 0, 0, 943, 944, 7, 0, 0, 0, 944, 945, 7, 5, 0, 0, 945, 946, 7, 16, - 0, 0, 946, 947, 7, 1, 0, 0, 947, 948, 7, 6, 0, 0, 948, 949, 7, 7, 0, 0, - 949, 950, 7, 2, 0, 0, 950, 254, 1, 0, 0, 0, 951, 952, 7, 4, 0, 0, 952, - 953, 7, 5, 0, 0, 953, 954, 7, 2, 0, 0, 954, 955, 5, 95, 0, 0, 955, 956, - 7, 11, 0, 0, 956, 957, 7, 6, 0, 0, 957, 958, 7, 7, 0, 0, 958, 959, 7, 7, - 0, 0, 959, 256, 1, 0, 0, 0, 960, 961, 7, 11, 0, 0, 961, 962, 7, 10, 0, - 0, 962, 963, 5, 95, 0, 0, 963, 964, 7, 1, 0, 0, 964, 965, 7, 8, 0, 0, 965, - 966, 7, 2, 0, 0, 966, 967, 7, 9, 0, 0, 967, 968, 7, 10, 0, 0, 968, 969, - 7, 11, 0, 0, 969, 258, 1, 0, 0, 0, 970, 974, 7, 28, 0, 0, 971, 973, 7, - 29, 0, 0, 972, 971, 1, 0, 0, 0, 973, 976, 1, 0, 0, 0, 974, 972, 1, 0, 0, - 0, 974, 975, 1, 0, 0, 0, 975, 260, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 977, - 978, 3, 35, 17, 0, 978, 979, 3, 259, 129, 0, 979, 262, 1, 0, 0, 0, 980, - 981, 3, 19, 9, 0, 981, 982, 3, 259, 129, 0, 982, 264, 1, 0, 0, 0, 983, - 984, 3, 33, 16, 0, 984, 985, 3, 259, 129, 0, 985, 266, 1, 0, 0, 0, 986, - 987, 7, 30, 0, 0, 987, 988, 1, 0, 0, 0, 988, 989, 6, 133, 0, 0, 989, 268, - 1, 0, 0, 0, 990, 991, 5, 47, 0, 0, 991, 992, 5, 42, 0, 0, 992, 996, 1, - 0, 0, 0, 993, 995, 9, 0, 0, 0, 994, 993, 1, 0, 0, 0, 995, 998, 1, 0, 0, - 0, 996, 997, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 999, 1, 0, 0, 0, 998, - 996, 1, 0, 0, 0, 999, 1000, 5, 42, 0, 0, 1000, 1001, 5, 47, 0, 0, 1001, - 1002, 1, 0, 0, 0, 1002, 1003, 6, 134, 0, 0, 1003, 270, 1, 0, 0, 0, 1004, - 1005, 5, 47, 0, 0, 1005, 1006, 5, 47, 0, 0, 1006, 1010, 1, 0, 0, 0, 1007, - 1009, 8, 31, 0, 0, 1008, 1007, 1, 0, 0, 0, 1009, 1012, 1, 0, 0, 0, 1010, - 1008, 1, 0, 0, 0, 1010, 1011, 1, 0, 0, 0, 1011, 1013, 1, 0, 0, 0, 1012, - 1010, 1, 0, 0, 0, 1013, 1014, 6, 135, 0, 0, 1014, 272, 1, 0, 0, 0, 10, - 0, 323, 873, 875, 894, 902, 917, 974, 996, 1010, 1, 0, 1, 0, + 1, 127, 1, 127, 1, 127, 1, 127, 5, 127, 948, 8, 127, 10, 127, 12, 127, + 951, 9, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, + 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 4, 130, 967, 8, 130, + 11, 130, 12, 130, 968, 1, 131, 1, 131, 1, 131, 1, 131, 4, 131, 975, 8, + 131, 11, 131, 12, 131, 976, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, + 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 992, + 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, + 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, + 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, + 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, + 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, + 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, + 5, 138, 1047, 8, 138, 10, 138, 12, 138, 1050, 9, 138, 1, 139, 1, 139, 1, + 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, + 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 5, 143, 1069, 8, 143, 10, + 143, 12, 143, 1072, 9, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, + 144, 1, 144, 1, 144, 1, 144, 5, 144, 1083, 8, 144, 10, 144, 12, 144, 1086, + 9, 144, 1, 144, 1, 144, 1, 1070, 0, 145, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, + 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, + 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, + 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, + 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, + 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, + 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, + 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, + 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, + 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, + 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, + 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, + 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, + 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, + 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, + 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, + 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, + 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, + 144, 289, 145, 1, 0, 32, 2, 0, 68, 68, 100, 100, 2, 0, 65, 65, 97, 97, + 2, 0, 84, 84, 116, 116, 2, 0, 66, 66, 98, 98, 2, 0, 83, 83, 115, 115, 2, + 0, 69, 69, 101, 101, 2, 0, 85, 85, 117, 117, 2, 0, 76, 76, 108, 108, 2, + 0, 67, 67, 99, 99, 2, 0, 73, 73, 105, 105, 2, 0, 79, 79, 111, 111, 2, 0, + 78, 78, 110, 110, 2, 0, 80, 80, 112, 112, 2, 0, 82, 82, 114, 114, 2, 0, + 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 77, 77, 109, 109, 2, 0, + 72, 72, 104, 104, 2, 0, 75, 75, 107, 107, 2, 0, 70, 70, 102, 102, 2, 0, + 71, 71, 103, 103, 2, 0, 89, 89, 121, 121, 2, 0, 81, 81, 113, 113, 2, 0, + 88, 88, 120, 120, 2, 0, 74, 74, 106, 106, 2, 0, 39, 39, 92, 92, 1, 0, 48, + 57, 3, 0, 48, 57, 65, 70, 97, 102, 2, 0, 65, 90, 97, 122, 4, 0, 48, 57, + 65, 90, 95, 95, 97, 122, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 10, 10, 13, + 13, 1097, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, + 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, + 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, + 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, + 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, + 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, + 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, + 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, + 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, + 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, + 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, + 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, + 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, + 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, + 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, + 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, + 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, + 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, + 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, + 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, + 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, + 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, + 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, + 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, + 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, + 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, + 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, + 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, + 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, + 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, + 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, + 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, + 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, + 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, + 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, + 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, + 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, + 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, + 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, + 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 1, 291, 1, 0, 0, 0, 3, 293, 1, 0, + 0, 0, 5, 295, 1, 0, 0, 0, 7, 297, 1, 0, 0, 0, 9, 299, 1, 0, 0, 0, 11, 301, + 1, 0, 0, 0, 13, 303, 1, 0, 0, 0, 15, 305, 1, 0, 0, 0, 17, 307, 1, 0, 0, + 0, 19, 309, 1, 0, 0, 0, 21, 311, 1, 0, 0, 0, 23, 313, 1, 0, 0, 0, 25, 315, + 1, 0, 0, 0, 27, 318, 1, 0, 0, 0, 29, 320, 1, 0, 0, 0, 31, 322, 1, 0, 0, + 0, 33, 325, 1, 0, 0, 0, 35, 327, 1, 0, 0, 0, 37, 329, 1, 0, 0, 0, 39, 331, + 1, 0, 0, 0, 41, 333, 1, 0, 0, 0, 43, 335, 1, 0, 0, 0, 45, 341, 1, 0, 0, + 0, 47, 343, 1, 0, 0, 0, 49, 345, 1, 0, 0, 0, 51, 348, 1, 0, 0, 0, 53, 350, + 1, 0, 0, 0, 55, 353, 1, 0, 0, 0, 57, 356, 1, 0, 0, 0, 59, 358, 1, 0, 0, + 0, 61, 361, 1, 0, 0, 0, 63, 364, 1, 0, 0, 0, 65, 366, 1, 0, 0, 0, 67, 375, + 1, 0, 0, 0, 69, 379, 1, 0, 0, 0, 71, 385, 1, 0, 0, 0, 73, 392, 1, 0, 0, + 0, 75, 402, 1, 0, 0, 0, 77, 409, 1, 0, 0, 0, 79, 417, 1, 0, 0, 0, 81, 422, + 1, 0, 0, 0, 83, 428, 1, 0, 0, 0, 85, 435, 1, 0, 0, 0, 87, 441, 1, 0, 0, + 0, 89, 448, 1, 0, 0, 0, 91, 452, 1, 0, 0, 0, 93, 457, 1, 0, 0, 0, 95, 464, + 1, 0, 0, 0, 97, 467, 1, 0, 0, 0, 99, 478, 1, 0, 0, 0, 101, 484, 1, 0, 0, + 0, 103, 492, 1, 0, 0, 0, 105, 500, 1, 0, 0, 0, 107, 504, 1, 0, 0, 0, 109, + 507, 1, 0, 0, 0, 111, 510, 1, 0, 0, 0, 113, 517, 1, 0, 0, 0, 115, 525, + 1, 0, 0, 0, 117, 534, 1, 0, 0, 0, 119, 538, 1, 0, 0, 0, 121, 546, 1, 0, + 0, 0, 123, 551, 1, 0, 0, 0, 125, 558, 1, 0, 0, 0, 127, 565, 1, 0, 0, 0, + 129, 576, 1, 0, 0, 0, 131, 580, 1, 0, 0, 0, 133, 584, 1, 0, 0, 0, 135, + 590, 1, 0, 0, 0, 137, 594, 1, 0, 0, 0, 139, 597, 1, 0, 0, 0, 141, 602, + 1, 0, 0, 0, 143, 608, 1, 0, 0, 0, 145, 611, 1, 0, 0, 0, 147, 619, 1, 0, + 0, 0, 149, 622, 1, 0, 0, 0, 151, 629, 1, 0, 0, 0, 153, 633, 1, 0, 0, 0, + 155, 637, 1, 0, 0, 0, 157, 642, 1, 0, 0, 0, 159, 647, 1, 0, 0, 0, 161, + 653, 1, 0, 0, 0, 163, 659, 1, 0, 0, 0, 165, 662, 1, 0, 0, 0, 167, 666, + 1, 0, 0, 0, 169, 671, 1, 0, 0, 0, 171, 677, 1, 0, 0, 0, 173, 684, 1, 0, + 0, 0, 175, 690, 1, 0, 0, 0, 177, 693, 1, 0, 0, 0, 179, 699, 1, 0, 0, 0, + 181, 706, 1, 0, 0, 0, 183, 714, 1, 0, 0, 0, 185, 717, 1, 0, 0, 0, 187, + 722, 1, 0, 0, 0, 189, 727, 1, 0, 0, 0, 191, 732, 1, 0, 0, 0, 193, 737, + 1, 0, 0, 0, 195, 741, 1, 0, 0, 0, 197, 750, 1, 0, 0, 0, 199, 755, 1, 0, + 0, 0, 201, 761, 1, 0, 0, 0, 203, 769, 1, 0, 0, 0, 205, 776, 1, 0, 0, 0, + 207, 783, 1, 0, 0, 0, 209, 790, 1, 0, 0, 0, 211, 795, 1, 0, 0, 0, 213, + 801, 1, 0, 0, 0, 215, 811, 1, 0, 0, 0, 217, 818, 1, 0, 0, 0, 219, 824, + 1, 0, 0, 0, 221, 830, 1, 0, 0, 0, 223, 835, 1, 0, 0, 0, 225, 845, 1, 0, + 0, 0, 227, 850, 1, 0, 0, 0, 229, 859, 1, 0, 0, 0, 231, 867, 1, 0, 0, 0, + 233, 871, 1, 0, 0, 0, 235, 874, 1, 0, 0, 0, 237, 881, 1, 0, 0, 0, 239, + 886, 1, 0, 0, 0, 241, 892, 1, 0, 0, 0, 243, 899, 1, 0, 0, 0, 245, 904, + 1, 0, 0, 0, 247, 909, 1, 0, 0, 0, 249, 919, 1, 0, 0, 0, 251, 926, 1, 0, + 0, 0, 253, 933, 1, 0, 0, 0, 255, 943, 1, 0, 0, 0, 257, 954, 1, 0, 0, 0, + 259, 959, 1, 0, 0, 0, 261, 966, 1, 0, 0, 0, 263, 970, 1, 0, 0, 0, 265, + 991, 1, 0, 0, 0, 267, 993, 1, 0, 0, 0, 269, 1003, 1, 0, 0, 0, 271, 1013, + 1, 0, 0, 0, 273, 1025, 1, 0, 0, 0, 275, 1034, 1, 0, 0, 0, 277, 1044, 1, + 0, 0, 0, 279, 1051, 1, 0, 0, 0, 281, 1054, 1, 0, 0, 0, 283, 1057, 1, 0, + 0, 0, 285, 1060, 1, 0, 0, 0, 287, 1064, 1, 0, 0, 0, 289, 1078, 1, 0, 0, + 0, 291, 292, 5, 123, 0, 0, 292, 2, 1, 0, 0, 0, 293, 294, 5, 125, 0, 0, + 294, 4, 1, 0, 0, 0, 295, 296, 5, 91, 0, 0, 296, 6, 1, 0, 0, 0, 297, 298, + 5, 93, 0, 0, 298, 8, 1, 0, 0, 0, 299, 300, 5, 58, 0, 0, 300, 10, 1, 0, + 0, 0, 301, 302, 5, 59, 0, 0, 302, 12, 1, 0, 0, 0, 303, 304, 5, 40, 0, 0, + 304, 14, 1, 0, 0, 0, 305, 306, 5, 41, 0, 0, 306, 16, 1, 0, 0, 0, 307, 308, + 5, 44, 0, 0, 308, 18, 1, 0, 0, 0, 309, 310, 5, 64, 0, 0, 310, 20, 1, 0, + 0, 0, 311, 312, 5, 33, 0, 0, 312, 22, 1, 0, 0, 0, 313, 314, 5, 46, 0, 0, + 314, 24, 1, 0, 0, 0, 315, 316, 5, 124, 0, 0, 316, 317, 5, 124, 0, 0, 317, + 26, 1, 0, 0, 0, 318, 319, 5, 42, 0, 0, 319, 28, 1, 0, 0, 0, 320, 321, 5, + 61, 0, 0, 321, 30, 1, 0, 0, 0, 322, 323, 5, 61, 0, 0, 323, 324, 5, 61, + 0, 0, 324, 32, 1, 0, 0, 0, 325, 326, 5, 35, 0, 0, 326, 34, 1, 0, 0, 0, + 327, 328, 5, 36, 0, 0, 328, 36, 1, 0, 0, 0, 329, 330, 5, 37, 0, 0, 330, + 38, 1, 0, 0, 0, 331, 332, 5, 43, 0, 0, 332, 40, 1, 0, 0, 0, 333, 334, 5, + 45, 0, 0, 334, 42, 1, 0, 0, 0, 335, 336, 5, 47, 0, 0, 336, 44, 1, 0, 0, + 0, 337, 338, 5, 33, 0, 0, 338, 342, 5, 61, 0, 0, 339, 340, 5, 60, 0, 0, + 340, 342, 5, 62, 0, 0, 341, 337, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 342, + 46, 1, 0, 0, 0, 343, 344, 5, 60, 0, 0, 344, 48, 1, 0, 0, 0, 345, 346, 5, + 60, 0, 0, 346, 347, 5, 61, 0, 0, 347, 50, 1, 0, 0, 0, 348, 349, 5, 62, + 0, 0, 349, 52, 1, 0, 0, 0, 350, 351, 5, 62, 0, 0, 351, 352, 5, 61, 0, 0, + 352, 54, 1, 0, 0, 0, 353, 354, 5, 58, 0, 0, 354, 355, 5, 58, 0, 0, 355, + 56, 1, 0, 0, 0, 356, 357, 5, 95, 0, 0, 357, 58, 1, 0, 0, 0, 358, 359, 5, + 58, 0, 0, 359, 360, 5, 61, 0, 0, 360, 60, 1, 0, 0, 0, 361, 362, 5, 46, + 0, 0, 362, 363, 5, 46, 0, 0, 363, 62, 1, 0, 0, 0, 364, 365, 5, 34, 0, 0, + 365, 64, 1, 0, 0, 0, 366, 367, 7, 0, 0, 0, 367, 368, 7, 1, 0, 0, 368, 369, + 7, 2, 0, 0, 369, 370, 7, 1, 0, 0, 370, 371, 7, 3, 0, 0, 371, 372, 7, 1, + 0, 0, 372, 373, 7, 4, 0, 0, 373, 374, 7, 5, 0, 0, 374, 66, 1, 0, 0, 0, + 375, 376, 7, 6, 0, 0, 376, 377, 7, 4, 0, 0, 377, 378, 7, 5, 0, 0, 378, + 68, 1, 0, 0, 0, 379, 380, 7, 2, 0, 0, 380, 381, 7, 1, 0, 0, 381, 382, 7, + 3, 0, 0, 382, 383, 7, 7, 0, 0, 383, 384, 7, 5, 0, 0, 384, 70, 1, 0, 0, + 0, 385, 386, 7, 1, 0, 0, 386, 387, 7, 8, 0, 0, 387, 388, 7, 2, 0, 0, 388, + 389, 7, 9, 0, 0, 389, 390, 7, 10, 0, 0, 390, 391, 7, 11, 0, 0, 391, 72, + 1, 0, 0, 0, 392, 393, 7, 12, 0, 0, 393, 394, 7, 13, 0, 0, 394, 395, 7, + 10, 0, 0, 395, 396, 7, 8, 0, 0, 396, 397, 7, 5, 0, 0, 397, 398, 7, 0, 0, + 0, 398, 399, 7, 6, 0, 0, 399, 400, 7, 13, 0, 0, 400, 401, 7, 5, 0, 0, 401, + 74, 1, 0, 0, 0, 402, 403, 7, 12, 0, 0, 403, 404, 7, 6, 0, 0, 404, 405, + 7, 3, 0, 0, 405, 406, 7, 7, 0, 0, 406, 407, 7, 9, 0, 0, 407, 408, 7, 8, + 0, 0, 408, 76, 1, 0, 0, 0, 409, 410, 7, 12, 0, 0, 410, 411, 7, 13, 0, 0, + 411, 412, 7, 9, 0, 0, 412, 413, 7, 14, 0, 0, 413, 414, 7, 1, 0, 0, 414, + 415, 7, 2, 0, 0, 415, 416, 7, 5, 0, 0, 416, 78, 1, 0, 0, 0, 417, 418, 7, + 14, 0, 0, 418, 419, 7, 9, 0, 0, 419, 420, 7, 5, 0, 0, 420, 421, 7, 15, + 0, 0, 421, 80, 1, 0, 0, 0, 422, 423, 7, 10, 0, 0, 423, 424, 7, 15, 0, 0, + 424, 425, 7, 11, 0, 0, 425, 426, 7, 5, 0, 0, 426, 427, 7, 13, 0, 0, 427, + 82, 1, 0, 0, 0, 428, 429, 7, 8, 0, 0, 429, 430, 7, 13, 0, 0, 430, 431, + 7, 5, 0, 0, 431, 432, 7, 1, 0, 0, 432, 433, 7, 2, 0, 0, 433, 434, 7, 5, + 0, 0, 434, 84, 1, 0, 0, 0, 435, 436, 7, 1, 0, 0, 436, 437, 7, 7, 0, 0, + 437, 438, 7, 2, 0, 0, 438, 439, 7, 5, 0, 0, 439, 440, 7, 13, 0, 0, 440, + 86, 1, 0, 0, 0, 441, 442, 7, 8, 0, 0, 442, 443, 7, 10, 0, 0, 443, 444, + 7, 7, 0, 0, 444, 445, 7, 6, 0, 0, 445, 446, 7, 16, 0, 0, 446, 447, 7, 11, + 0, 0, 447, 88, 1, 0, 0, 0, 448, 449, 7, 1, 0, 0, 449, 450, 7, 0, 0, 0, + 450, 451, 7, 0, 0, 0, 451, 90, 1, 0, 0, 0, 452, 453, 7, 0, 0, 0, 453, 454, + 7, 13, 0, 0, 454, 455, 7, 10, 0, 0, 455, 456, 7, 12, 0, 0, 456, 92, 1, + 0, 0, 0, 457, 458, 7, 13, 0, 0, 458, 459, 7, 5, 0, 0, 459, 460, 7, 11, + 0, 0, 460, 461, 7, 1, 0, 0, 461, 462, 7, 16, 0, 0, 462, 463, 7, 5, 0, 0, + 463, 94, 1, 0, 0, 0, 464, 465, 7, 2, 0, 0, 465, 466, 7, 10, 0, 0, 466, + 96, 1, 0, 0, 0, 467, 468, 7, 8, 0, 0, 468, 469, 7, 10, 0, 0, 469, 470, + 7, 11, 0, 0, 470, 471, 7, 4, 0, 0, 471, 472, 7, 2, 0, 0, 472, 473, 7, 13, + 0, 0, 473, 474, 7, 1, 0, 0, 474, 475, 7, 9, 0, 0, 475, 476, 7, 11, 0, 0, + 476, 477, 7, 2, 0, 0, 477, 98, 1, 0, 0, 0, 478, 479, 7, 8, 0, 0, 479, 480, + 7, 17, 0, 0, 480, 481, 7, 5, 0, 0, 481, 482, 7, 8, 0, 0, 482, 483, 7, 18, + 0, 0, 483, 100, 1, 0, 0, 0, 484, 485, 7, 19, 0, 0, 485, 486, 7, 10, 0, + 0, 486, 487, 7, 13, 0, 0, 487, 488, 7, 5, 0, 0, 488, 489, 7, 9, 0, 0, 489, + 490, 7, 20, 0, 0, 490, 491, 7, 11, 0, 0, 491, 102, 1, 0, 0, 0, 492, 493, + 7, 12, 0, 0, 493, 494, 7, 13, 0, 0, 494, 495, 7, 9, 0, 0, 495, 496, 7, + 16, 0, 0, 496, 497, 7, 1, 0, 0, 497, 498, 7, 13, 0, 0, 498, 499, 7, 21, + 0, 0, 499, 104, 1, 0, 0, 0, 500, 501, 7, 18, 0, 0, 501, 502, 7, 5, 0, 0, + 502, 503, 7, 21, 0, 0, 503, 106, 1, 0, 0, 0, 504, 505, 7, 10, 0, 0, 505, + 506, 7, 11, 0, 0, 506, 108, 1, 0, 0, 0, 507, 508, 7, 0, 0, 0, 508, 509, + 7, 10, 0, 0, 509, 110, 1, 0, 0, 0, 510, 511, 7, 6, 0, 0, 511, 512, 7, 11, + 0, 0, 512, 513, 7, 9, 0, 0, 513, 514, 7, 22, 0, 0, 514, 515, 7, 6, 0, 0, + 515, 516, 7, 5, 0, 0, 516, 112, 1, 0, 0, 0, 517, 518, 7, 8, 0, 0, 518, + 519, 7, 1, 0, 0, 519, 520, 7, 4, 0, 0, 520, 521, 7, 8, 0, 0, 521, 522, + 7, 1, 0, 0, 522, 523, 7, 0, 0, 0, 523, 524, 7, 5, 0, 0, 524, 114, 1, 0, + 0, 0, 525, 526, 7, 13, 0, 0, 526, 527, 7, 5, 0, 0, 527, 528, 7, 4, 0, 0, + 528, 529, 7, 2, 0, 0, 529, 530, 7, 13, 0, 0, 530, 531, 7, 9, 0, 0, 531, + 532, 7, 8, 0, 0, 532, 533, 7, 2, 0, 0, 533, 116, 1, 0, 0, 0, 534, 535, + 7, 4, 0, 0, 535, 536, 7, 5, 0, 0, 536, 537, 7, 2, 0, 0, 537, 118, 1, 0, + 0, 0, 538, 539, 7, 0, 0, 0, 539, 540, 7, 5, 0, 0, 540, 541, 7, 19, 0, 0, + 541, 542, 7, 1, 0, 0, 542, 543, 7, 6, 0, 0, 543, 544, 7, 7, 0, 0, 544, + 545, 7, 2, 0, 0, 545, 120, 1, 0, 0, 0, 546, 547, 7, 11, 0, 0, 547, 548, + 7, 6, 0, 0, 548, 549, 7, 7, 0, 0, 549, 550, 7, 7, 0, 0, 550, 122, 1, 0, + 0, 0, 551, 552, 7, 0, 0, 0, 552, 553, 7, 5, 0, 0, 553, 554, 7, 7, 0, 0, + 554, 555, 7, 5, 0, 0, 555, 556, 7, 2, 0, 0, 556, 557, 7, 5, 0, 0, 557, + 124, 1, 0, 0, 0, 558, 559, 7, 6, 0, 0, 559, 560, 7, 12, 0, 0, 560, 561, + 7, 0, 0, 0, 561, 562, 7, 1, 0, 0, 562, 563, 7, 2, 0, 0, 563, 564, 7, 5, + 0, 0, 564, 126, 1, 0, 0, 0, 565, 566, 7, 13, 0, 0, 566, 567, 7, 5, 0, 0, + 567, 568, 7, 19, 0, 0, 568, 569, 7, 5, 0, 0, 569, 570, 7, 13, 0, 0, 570, + 571, 7, 5, 0, 0, 571, 572, 7, 11, 0, 0, 572, 573, 7, 8, 0, 0, 573, 574, + 7, 5, 0, 0, 574, 575, 7, 4, 0, 0, 575, 128, 1, 0, 0, 0, 576, 577, 7, 13, + 0, 0, 577, 578, 7, 5, 0, 0, 578, 579, 7, 19, 0, 0, 579, 130, 1, 0, 0, 0, + 580, 581, 7, 11, 0, 0, 581, 582, 7, 10, 0, 0, 582, 583, 7, 2, 0, 0, 583, + 132, 1, 0, 0, 0, 584, 585, 7, 9, 0, 0, 585, 586, 7, 11, 0, 0, 586, 587, + 7, 0, 0, 0, 587, 588, 7, 5, 0, 0, 588, 589, 7, 23, 0, 0, 589, 134, 1, 0, + 0, 0, 590, 591, 7, 1, 0, 0, 591, 592, 7, 11, 0, 0, 592, 593, 7, 0, 0, 0, + 593, 136, 1, 0, 0, 0, 594, 595, 7, 10, 0, 0, 595, 596, 7, 13, 0, 0, 596, + 138, 1, 0, 0, 0, 597, 598, 7, 7, 0, 0, 598, 599, 7, 9, 0, 0, 599, 600, + 7, 18, 0, 0, 600, 601, 7, 5, 0, 0, 601, 140, 1, 0, 0, 0, 602, 603, 7, 9, + 0, 0, 603, 604, 7, 7, 0, 0, 604, 605, 7, 9, 0, 0, 605, 606, 7, 18, 0, 0, + 606, 607, 7, 5, 0, 0, 607, 142, 1, 0, 0, 0, 608, 609, 7, 9, 0, 0, 609, + 610, 7, 11, 0, 0, 610, 144, 1, 0, 0, 0, 611, 612, 7, 3, 0, 0, 612, 613, + 7, 5, 0, 0, 613, 614, 7, 2, 0, 0, 614, 615, 7, 15, 0, 0, 615, 616, 7, 5, + 0, 0, 616, 617, 7, 5, 0, 0, 617, 618, 7, 11, 0, 0, 618, 146, 1, 0, 0, 0, + 619, 620, 7, 9, 0, 0, 620, 621, 7, 4, 0, 0, 621, 148, 1, 0, 0, 0, 622, + 623, 7, 5, 0, 0, 623, 624, 7, 23, 0, 0, 624, 625, 7, 9, 0, 0, 625, 626, + 7, 4, 0, 0, 626, 627, 7, 2, 0, 0, 627, 628, 7, 4, 0, 0, 628, 150, 1, 0, + 0, 0, 629, 630, 7, 1, 0, 0, 630, 631, 7, 7, 0, 0, 631, 632, 7, 7, 0, 0, + 632, 152, 1, 0, 0, 0, 633, 634, 7, 1, 0, 0, 634, 635, 7, 11, 0, 0, 635, + 636, 7, 21, 0, 0, 636, 154, 1, 0, 0, 0, 637, 638, 7, 24, 0, 0, 638, 639, + 7, 10, 0, 0, 639, 640, 7, 9, 0, 0, 640, 641, 7, 11, 0, 0, 641, 156, 1, + 0, 0, 0, 642, 643, 7, 7, 0, 0, 643, 644, 7, 5, 0, 0, 644, 645, 7, 19, 0, + 0, 645, 646, 7, 2, 0, 0, 646, 158, 1, 0, 0, 0, 647, 648, 7, 13, 0, 0, 648, + 649, 7, 9, 0, 0, 649, 650, 7, 20, 0, 0, 650, 651, 7, 17, 0, 0, 651, 652, + 7, 2, 0, 0, 652, 160, 1, 0, 0, 0, 653, 654, 7, 9, 0, 0, 654, 655, 7, 11, + 0, 0, 655, 656, 7, 11, 0, 0, 656, 657, 7, 5, 0, 0, 657, 658, 7, 13, 0, + 0, 658, 162, 1, 0, 0, 0, 659, 660, 7, 1, 0, 0, 660, 661, 7, 4, 0, 0, 661, + 164, 1, 0, 0, 0, 662, 663, 7, 1, 0, 0, 663, 664, 7, 4, 0, 0, 664, 665, + 7, 8, 0, 0, 665, 166, 1, 0, 0, 0, 666, 667, 7, 0, 0, 0, 667, 668, 7, 5, + 0, 0, 668, 669, 7, 4, 0, 0, 669, 670, 7, 8, 0, 0, 670, 168, 1, 0, 0, 0, + 671, 672, 7, 7, 0, 0, 672, 673, 7, 9, 0, 0, 673, 674, 7, 16, 0, 0, 674, + 675, 7, 9, 0, 0, 675, 676, 7, 2, 0, 0, 676, 170, 1, 0, 0, 0, 677, 678, + 7, 10, 0, 0, 678, 679, 7, 19, 0, 0, 679, 680, 7, 19, 0, 0, 680, 681, 7, + 4, 0, 0, 681, 682, 7, 5, 0, 0, 682, 683, 7, 2, 0, 0, 683, 172, 1, 0, 0, + 0, 684, 685, 7, 10, 0, 0, 685, 686, 7, 13, 0, 0, 686, 687, 7, 0, 0, 0, + 687, 688, 7, 5, 0, 0, 688, 689, 7, 13, 0, 0, 689, 174, 1, 0, 0, 0, 690, + 691, 7, 3, 0, 0, 691, 692, 7, 21, 0, 0, 692, 176, 1, 0, 0, 0, 693, 694, + 7, 20, 0, 0, 694, 695, 7, 13, 0, 0, 695, 696, 7, 10, 0, 0, 696, 697, 7, + 6, 0, 0, 697, 698, 7, 12, 0, 0, 698, 178, 1, 0, 0, 0, 699, 700, 7, 17, + 0, 0, 700, 701, 7, 1, 0, 0, 701, 702, 7, 14, 0, 0, 702, 703, 7, 9, 0, 0, + 703, 704, 7, 11, 0, 0, 704, 705, 7, 20, 0, 0, 705, 180, 1, 0, 0, 0, 706, + 707, 7, 13, 0, 0, 707, 708, 7, 5, 0, 0, 708, 709, 7, 2, 0, 0, 709, 710, + 7, 6, 0, 0, 710, 711, 7, 13, 0, 0, 711, 712, 7, 11, 0, 0, 712, 713, 7, + 4, 0, 0, 713, 182, 1, 0, 0, 0, 714, 715, 7, 11, 0, 0, 715, 716, 7, 10, + 0, 0, 716, 184, 1, 0, 0, 0, 717, 718, 7, 15, 0, 0, 718, 719, 7, 9, 0, 0, + 719, 720, 7, 2, 0, 0, 720, 721, 7, 17, 0, 0, 721, 186, 1, 0, 0, 0, 722, + 723, 7, 8, 0, 0, 723, 724, 7, 1, 0, 0, 724, 725, 7, 4, 0, 0, 725, 726, + 7, 5, 0, 0, 726, 188, 1, 0, 0, 0, 727, 728, 7, 15, 0, 0, 728, 729, 7, 17, + 0, 0, 729, 730, 7, 5, 0, 0, 730, 731, 7, 11, 0, 0, 731, 190, 1, 0, 0, 0, + 732, 733, 7, 2, 0, 0, 733, 734, 7, 17, 0, 0, 734, 735, 7, 5, 0, 0, 735, + 736, 7, 11, 0, 0, 736, 192, 1, 0, 0, 0, 737, 738, 7, 5, 0, 0, 738, 739, + 7, 11, 0, 0, 739, 740, 7, 0, 0, 0, 740, 194, 1, 0, 0, 0, 741, 742, 7, 0, + 0, 0, 742, 743, 7, 9, 0, 0, 743, 744, 7, 4, 0, 0, 744, 745, 7, 2, 0, 0, + 745, 746, 7, 9, 0, 0, 746, 747, 7, 11, 0, 0, 747, 748, 7, 8, 0, 0, 748, + 749, 7, 2, 0, 0, 749, 196, 1, 0, 0, 0, 750, 751, 7, 19, 0, 0, 751, 752, + 7, 13, 0, 0, 752, 753, 7, 10, 0, 0, 753, 754, 7, 16, 0, 0, 754, 198, 1, + 0, 0, 0, 755, 756, 7, 15, 0, 0, 756, 757, 7, 17, 0, 0, 757, 758, 7, 5, + 0, 0, 758, 759, 7, 13, 0, 0, 759, 760, 7, 5, 0, 0, 760, 200, 1, 0, 0, 0, + 761, 762, 7, 8, 0, 0, 762, 763, 7, 10, 0, 0, 763, 764, 7, 7, 0, 0, 764, + 765, 7, 7, 0, 0, 765, 766, 7, 1, 0, 0, 766, 767, 7, 2, 0, 0, 767, 768, + 7, 5, 0, 0, 768, 202, 1, 0, 0, 0, 769, 770, 7, 4, 0, 0, 770, 771, 7, 5, + 0, 0, 771, 772, 7, 7, 0, 0, 772, 773, 7, 5, 0, 0, 773, 774, 7, 8, 0, 0, + 774, 775, 7, 2, 0, 0, 775, 204, 1, 0, 0, 0, 776, 777, 7, 9, 0, 0, 777, + 778, 7, 11, 0, 0, 778, 779, 7, 4, 0, 0, 779, 780, 7, 5, 0, 0, 780, 781, + 7, 13, 0, 0, 781, 782, 7, 2, 0, 0, 782, 206, 1, 0, 0, 0, 783, 784, 7, 14, + 0, 0, 784, 785, 7, 1, 0, 0, 785, 786, 7, 7, 0, 0, 786, 787, 7, 6, 0, 0, + 787, 788, 7, 5, 0, 0, 788, 789, 7, 4, 0, 0, 789, 208, 1, 0, 0, 0, 790, + 791, 7, 19, 0, 0, 791, 792, 7, 6, 0, 0, 792, 793, 7, 7, 0, 0, 793, 794, + 7, 7, 0, 0, 794, 210, 1, 0, 0, 0, 795, 796, 7, 6, 0, 0, 796, 797, 7, 11, + 0, 0, 797, 798, 7, 9, 0, 0, 798, 799, 7, 10, 0, 0, 799, 800, 7, 11, 0, + 0, 800, 212, 1, 0, 0, 0, 801, 802, 7, 9, 0, 0, 802, 803, 7, 11, 0, 0, 803, + 804, 7, 2, 0, 0, 804, 805, 7, 5, 0, 0, 805, 806, 7, 13, 0, 0, 806, 807, + 7, 4, 0, 0, 807, 808, 7, 5, 0, 0, 808, 809, 7, 8, 0, 0, 809, 810, 7, 2, + 0, 0, 810, 214, 1, 0, 0, 0, 811, 812, 7, 5, 0, 0, 812, 813, 7, 23, 0, 0, + 813, 814, 7, 8, 0, 0, 814, 815, 7, 5, 0, 0, 815, 816, 7, 12, 0, 0, 816, + 817, 7, 2, 0, 0, 817, 216, 1, 0, 0, 0, 818, 819, 7, 11, 0, 0, 819, 820, + 7, 6, 0, 0, 820, 821, 7, 7, 0, 0, 821, 822, 7, 7, 0, 0, 822, 823, 7, 4, + 0, 0, 823, 218, 1, 0, 0, 0, 824, 825, 7, 19, 0, 0, 825, 826, 7, 9, 0, 0, + 826, 827, 7, 13, 0, 0, 827, 828, 7, 4, 0, 0, 828, 829, 7, 2, 0, 0, 829, + 220, 1, 0, 0, 0, 830, 831, 7, 7, 0, 0, 831, 832, 7, 1, 0, 0, 832, 833, + 7, 4, 0, 0, 833, 834, 7, 2, 0, 0, 834, 222, 1, 0, 0, 0, 835, 836, 7, 13, + 0, 0, 836, 837, 7, 5, 0, 0, 837, 838, 7, 2, 0, 0, 838, 839, 7, 6, 0, 0, + 839, 840, 7, 13, 0, 0, 840, 841, 7, 11, 0, 0, 841, 842, 7, 9, 0, 0, 842, + 843, 7, 11, 0, 0, 843, 844, 7, 20, 0, 0, 844, 224, 1, 0, 0, 0, 845, 846, + 7, 9, 0, 0, 846, 847, 7, 11, 0, 0, 847, 848, 7, 2, 0, 0, 848, 849, 7, 10, + 0, 0, 849, 226, 1, 0, 0, 0, 850, 851, 7, 8, 0, 0, 851, 852, 7, 10, 0, 0, + 852, 853, 7, 11, 0, 0, 853, 854, 7, 19, 0, 0, 854, 855, 7, 7, 0, 0, 855, + 856, 7, 9, 0, 0, 856, 857, 7, 8, 0, 0, 857, 858, 7, 2, 0, 0, 858, 228, + 1, 0, 0, 0, 859, 860, 7, 11, 0, 0, 860, 861, 7, 10, 0, 0, 861, 862, 7, + 2, 0, 0, 862, 863, 7, 17, 0, 0, 863, 864, 7, 9, 0, 0, 864, 865, 7, 11, + 0, 0, 865, 866, 7, 20, 0, 0, 866, 230, 1, 0, 0, 0, 867, 868, 7, 19, 0, + 0, 868, 869, 7, 10, 0, 0, 869, 870, 7, 13, 0, 0, 870, 232, 1, 0, 0, 0, + 871, 872, 7, 9, 0, 0, 872, 873, 7, 19, 0, 0, 873, 234, 1, 0, 0, 0, 874, + 875, 7, 5, 0, 0, 875, 876, 7, 7, 0, 0, 876, 877, 7, 4, 0, 0, 877, 878, + 7, 5, 0, 0, 878, 879, 7, 9, 0, 0, 879, 880, 7, 19, 0, 0, 880, 236, 1, 0, + 0, 0, 881, 882, 7, 5, 0, 0, 882, 883, 7, 7, 0, 0, 883, 884, 7, 4, 0, 0, + 884, 885, 7, 5, 0, 0, 885, 238, 1, 0, 0, 0, 886, 887, 7, 3, 0, 0, 887, + 888, 7, 13, 0, 0, 888, 889, 7, 5, 0, 0, 889, 890, 7, 1, 0, 0, 890, 891, + 7, 18, 0, 0, 891, 240, 1, 0, 0, 0, 892, 893, 7, 13, 0, 0, 893, 894, 7, + 5, 0, 0, 894, 895, 7, 2, 0, 0, 895, 896, 7, 6, 0, 0, 896, 897, 7, 13, 0, + 0, 897, 898, 7, 11, 0, 0, 898, 242, 1, 0, 0, 0, 899, 900, 7, 11, 0, 0, + 900, 901, 7, 5, 0, 0, 901, 902, 7, 23, 0, 0, 902, 903, 7, 2, 0, 0, 903, + 244, 1, 0, 0, 0, 904, 905, 7, 10, 0, 0, 905, 906, 7, 14, 0, 0, 906, 907, + 7, 5, 0, 0, 907, 908, 7, 13, 0, 0, 908, 246, 1, 0, 0, 0, 909, 910, 7, 12, + 0, 0, 910, 911, 7, 1, 0, 0, 911, 912, 7, 13, 0, 0, 912, 913, 7, 2, 0, 0, + 913, 914, 7, 9, 0, 0, 914, 915, 7, 2, 0, 0, 915, 916, 7, 9, 0, 0, 916, + 917, 7, 10, 0, 0, 917, 918, 7, 11, 0, 0, 918, 248, 1, 0, 0, 0, 919, 920, + 7, 15, 0, 0, 920, 921, 7, 9, 0, 0, 921, 922, 7, 11, 0, 0, 922, 923, 7, + 0, 0, 0, 923, 924, 7, 10, 0, 0, 924, 925, 7, 15, 0, 0, 925, 250, 1, 0, + 0, 0, 926, 927, 7, 19, 0, 0, 927, 928, 7, 9, 0, 0, 928, 929, 7, 7, 0, 0, + 929, 930, 7, 2, 0, 0, 930, 931, 7, 5, 0, 0, 931, 932, 7, 13, 0, 0, 932, + 252, 1, 0, 0, 0, 933, 934, 7, 13, 0, 0, 934, 935, 7, 5, 0, 0, 935, 936, + 7, 8, 0, 0, 936, 937, 7, 6, 0, 0, 937, 938, 7, 13, 0, 0, 938, 939, 7, 4, + 0, 0, 939, 940, 7, 9, 0, 0, 940, 941, 7, 14, 0, 0, 941, 942, 7, 5, 0, 0, + 942, 254, 1, 0, 0, 0, 943, 949, 5, 39, 0, 0, 944, 948, 8, 25, 0, 0, 945, + 946, 5, 92, 0, 0, 946, 948, 9, 0, 0, 0, 947, 944, 1, 0, 0, 0, 947, 945, + 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 947, 1, 0, 0, 0, 949, 950, 1, 0, + 0, 0, 950, 952, 1, 0, 0, 0, 951, 949, 1, 0, 0, 0, 952, 953, 5, 39, 0, 0, + 953, 256, 1, 0, 0, 0, 954, 955, 7, 2, 0, 0, 955, 956, 7, 13, 0, 0, 956, + 957, 7, 6, 0, 0, 957, 958, 7, 5, 0, 0, 958, 258, 1, 0, 0, 0, 959, 960, + 7, 19, 0, 0, 960, 961, 7, 1, 0, 0, 961, 962, 7, 7, 0, 0, 962, 963, 7, 4, + 0, 0, 963, 964, 7, 5, 0, 0, 964, 260, 1, 0, 0, 0, 965, 967, 7, 26, 0, 0, + 966, 965, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 966, 1, 0, 0, 0, 968, + 969, 1, 0, 0, 0, 969, 262, 1, 0, 0, 0, 970, 971, 5, 48, 0, 0, 971, 972, + 7, 23, 0, 0, 972, 974, 1, 0, 0, 0, 973, 975, 7, 27, 0, 0, 974, 973, 1, + 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 976, 977, 1, 0, 0, + 0, 977, 264, 1, 0, 0, 0, 978, 979, 7, 19, 0, 0, 979, 980, 7, 10, 0, 0, + 980, 981, 7, 13, 0, 0, 981, 982, 7, 5, 0, 0, 982, 983, 7, 9, 0, 0, 983, + 984, 7, 20, 0, 0, 984, 985, 7, 11, 0, 0, 985, 986, 5, 95, 0, 0, 986, 987, + 7, 18, 0, 0, 987, 988, 7, 5, 0, 0, 988, 992, 7, 21, 0, 0, 989, 990, 7, + 19, 0, 0, 990, 992, 7, 18, 0, 0, 991, 978, 1, 0, 0, 0, 991, 989, 1, 0, + 0, 0, 992, 266, 1, 0, 0, 0, 993, 994, 7, 10, 0, 0, 994, 995, 7, 11, 0, + 0, 995, 996, 5, 95, 0, 0, 996, 997, 7, 6, 0, 0, 997, 998, 7, 12, 0, 0, + 998, 999, 7, 0, 0, 0, 999, 1000, 7, 1, 0, 0, 1000, 1001, 7, 2, 0, 0, 1001, + 1002, 7, 5, 0, 0, 1002, 268, 1, 0, 0, 0, 1003, 1004, 7, 10, 0, 0, 1004, + 1005, 7, 11, 0, 0, 1005, 1006, 5, 95, 0, 0, 1006, 1007, 7, 0, 0, 0, 1007, + 1008, 7, 5, 0, 0, 1008, 1009, 7, 7, 0, 0, 1009, 1010, 7, 5, 0, 0, 1010, + 1011, 7, 2, 0, 0, 1011, 1012, 7, 5, 0, 0, 1012, 270, 1, 0, 0, 0, 1013, + 1014, 7, 4, 0, 0, 1014, 1015, 7, 5, 0, 0, 1015, 1016, 7, 2, 0, 0, 1016, + 1017, 5, 95, 0, 0, 1017, 1018, 7, 0, 0, 0, 1018, 1019, 7, 5, 0, 0, 1019, + 1020, 7, 19, 0, 0, 1020, 1021, 7, 1, 0, 0, 1021, 1022, 7, 6, 0, 0, 1022, + 1023, 7, 7, 0, 0, 1023, 1024, 7, 2, 0, 0, 1024, 272, 1, 0, 0, 0, 1025, + 1026, 7, 4, 0, 0, 1026, 1027, 7, 5, 0, 0, 1027, 1028, 7, 2, 0, 0, 1028, + 1029, 5, 95, 0, 0, 1029, 1030, 7, 11, 0, 0, 1030, 1031, 7, 6, 0, 0, 1031, + 1032, 7, 7, 0, 0, 1032, 1033, 7, 7, 0, 0, 1033, 274, 1, 0, 0, 0, 1034, + 1035, 7, 11, 0, 0, 1035, 1036, 7, 10, 0, 0, 1036, 1037, 5, 95, 0, 0, 1037, + 1038, 7, 1, 0, 0, 1038, 1039, 7, 8, 0, 0, 1039, 1040, 7, 2, 0, 0, 1040, + 1041, 7, 9, 0, 0, 1041, 1042, 7, 10, 0, 0, 1042, 1043, 7, 11, 0, 0, 1043, + 276, 1, 0, 0, 0, 1044, 1048, 7, 28, 0, 0, 1045, 1047, 7, 29, 0, 0, 1046, + 1045, 1, 0, 0, 0, 1047, 1050, 1, 0, 0, 0, 1048, 1046, 1, 0, 0, 0, 1048, + 1049, 1, 0, 0, 0, 1049, 278, 1, 0, 0, 0, 1050, 1048, 1, 0, 0, 0, 1051, + 1052, 3, 35, 17, 0, 1052, 1053, 3, 277, 138, 0, 1053, 280, 1, 0, 0, 0, + 1054, 1055, 3, 19, 9, 0, 1055, 1056, 3, 277, 138, 0, 1056, 282, 1, 0, 0, + 0, 1057, 1058, 3, 33, 16, 0, 1058, 1059, 3, 277, 138, 0, 1059, 284, 1, + 0, 0, 0, 1060, 1061, 7, 30, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 6, + 142, 0, 0, 1063, 286, 1, 0, 0, 0, 1064, 1065, 5, 47, 0, 0, 1065, 1066, + 5, 42, 0, 0, 1066, 1070, 1, 0, 0, 0, 1067, 1069, 9, 0, 0, 0, 1068, 1067, + 1, 0, 0, 0, 1069, 1072, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1070, 1068, + 1, 0, 0, 0, 1071, 1073, 1, 0, 0, 0, 1072, 1070, 1, 0, 0, 0, 1073, 1074, + 5, 42, 0, 0, 1074, 1075, 5, 47, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1077, + 6, 143, 0, 0, 1077, 288, 1, 0, 0, 0, 1078, 1079, 5, 47, 0, 0, 1079, 1080, + 5, 47, 0, 0, 1080, 1084, 1, 0, 0, 0, 1081, 1083, 8, 31, 0, 0, 1082, 1081, + 1, 0, 0, 0, 1083, 1086, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1084, 1085, + 1, 0, 0, 0, 1085, 1087, 1, 0, 0, 0, 1086, 1084, 1, 0, 0, 0, 1087, 1088, + 6, 144, 0, 0, 1088, 290, 1, 0, 0, 0, 10, 0, 341, 947, 949, 968, 976, 991, + 1048, 1070, 1084, 1, 0, 1, 0, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -628,99 +667,108 @@ const ( KuneiformLexerPRIVATE = 39 KuneiformLexerVIEW = 40 KuneiformLexerOWNER = 41 - KuneiformLexerFOREIGN = 42 - KuneiformLexerPRIMARY = 43 - KuneiformLexerKEY = 44 - KuneiformLexerON = 45 - KuneiformLexerDO = 46 - KuneiformLexerUNIQUE = 47 - KuneiformLexerCASCADE = 48 - KuneiformLexerRESTRICT = 49 - KuneiformLexerSET = 50 - KuneiformLexerDEFAULT = 51 - KuneiformLexerNULL = 52 - KuneiformLexerDELETE = 53 - KuneiformLexerUPDATE = 54 - KuneiformLexerREFERENCES = 55 - KuneiformLexerREF = 56 - KuneiformLexerNOT = 57 - KuneiformLexerINDEX = 58 - KuneiformLexerAND = 59 - KuneiformLexerOR = 60 - KuneiformLexerLIKE = 61 - KuneiformLexerILIKE = 62 - KuneiformLexerIN = 63 - KuneiformLexerBETWEEN = 64 - KuneiformLexerIS = 65 - KuneiformLexerEXISTS = 66 - KuneiformLexerALL = 67 - KuneiformLexerANY = 68 - KuneiformLexerJOIN = 69 - KuneiformLexerLEFT = 70 - KuneiformLexerRIGHT = 71 - KuneiformLexerINNER = 72 - KuneiformLexerAS = 73 - KuneiformLexerASC = 74 - KuneiformLexerDESC = 75 - KuneiformLexerLIMIT = 76 - KuneiformLexerOFFSET = 77 - KuneiformLexerORDER = 78 - KuneiformLexerBY = 79 - KuneiformLexerGROUP = 80 - KuneiformLexerHAVING = 81 - KuneiformLexerRETURNS = 82 - KuneiformLexerNO = 83 - KuneiformLexerWITH = 84 - KuneiformLexerCASE = 85 - KuneiformLexerWHEN = 86 - KuneiformLexerTHEN = 87 - KuneiformLexerEND = 88 - KuneiformLexerDISTINCT = 89 - KuneiformLexerFROM = 90 - KuneiformLexerWHERE = 91 - KuneiformLexerCOLLATE = 92 - KuneiformLexerSELECT = 93 - KuneiformLexerINSERT = 94 - KuneiformLexerVALUES = 95 - KuneiformLexerFULL = 96 - KuneiformLexerUNION = 97 - KuneiformLexerINTERSECT = 98 - KuneiformLexerEXCEPT = 99 - KuneiformLexerNULLS = 100 - KuneiformLexerFIRST = 101 - KuneiformLexerLAST = 102 - KuneiformLexerRETURNING = 103 - KuneiformLexerINTO = 104 - KuneiformLexerCONFLICT = 105 - KuneiformLexerNOTHING = 106 - KuneiformLexerFOR = 107 - KuneiformLexerIF = 108 - KuneiformLexerELSEIF = 109 - KuneiformLexerELSE = 110 - KuneiformLexerBREAK = 111 - KuneiformLexerRETURN = 112 - KuneiformLexerNEXT = 113 - KuneiformLexerOVER = 114 - KuneiformLexerPARTITION = 115 - KuneiformLexerWINDOW = 116 - KuneiformLexerFILTER = 117 - KuneiformLexerRECURSIVE = 118 - KuneiformLexerSTRING_ = 119 - KuneiformLexerTRUE = 120 - KuneiformLexerFALSE = 121 - KuneiformLexerDIGITS_ = 122 - KuneiformLexerBINARY_ = 123 - KuneiformLexerLEGACY_FOREIGN_KEY = 124 - KuneiformLexerLEGACY_ON_UPDATE = 125 - KuneiformLexerLEGACY_ON_DELETE = 126 - KuneiformLexerLEGACY_SET_DEFAULT = 127 - KuneiformLexerLEGACY_SET_NULL = 128 - KuneiformLexerLEGACY_NO_ACTION = 129 - KuneiformLexerIDENTIFIER = 130 - KuneiformLexerVARIABLE = 131 - KuneiformLexerCONTEXTUAL_VARIABLE = 132 - KuneiformLexerHASH_IDENTIFIER = 133 - KuneiformLexerWS = 134 - KuneiformLexerBLOCK_COMMENT = 135 - KuneiformLexerLINE_COMMENT = 136 + KuneiformLexerCREATE = 42 + KuneiformLexerALTER = 43 + KuneiformLexerCOLUMN = 44 + KuneiformLexerADD = 45 + KuneiformLexerDROP = 46 + KuneiformLexerRENAME = 47 + KuneiformLexerTO = 48 + KuneiformLexerCONSTRAINT = 49 + KuneiformLexerCHECK = 50 + KuneiformLexerFOREIGN = 51 + KuneiformLexerPRIMARY = 52 + KuneiformLexerKEY = 53 + KuneiformLexerON = 54 + KuneiformLexerDO = 55 + KuneiformLexerUNIQUE = 56 + KuneiformLexerCASCADE = 57 + KuneiformLexerRESTRICT = 58 + KuneiformLexerSET = 59 + KuneiformLexerDEFAULT = 60 + KuneiformLexerNULL = 61 + KuneiformLexerDELETE = 62 + KuneiformLexerUPDATE = 63 + KuneiformLexerREFERENCES = 64 + KuneiformLexerREF = 65 + KuneiformLexerNOT = 66 + KuneiformLexerINDEX = 67 + KuneiformLexerAND = 68 + KuneiformLexerOR = 69 + KuneiformLexerLIKE = 70 + KuneiformLexerILIKE = 71 + KuneiformLexerIN = 72 + KuneiformLexerBETWEEN = 73 + KuneiformLexerIS = 74 + KuneiformLexerEXISTS = 75 + KuneiformLexerALL = 76 + KuneiformLexerANY = 77 + KuneiformLexerJOIN = 78 + KuneiformLexerLEFT = 79 + KuneiformLexerRIGHT = 80 + KuneiformLexerINNER = 81 + KuneiformLexerAS = 82 + KuneiformLexerASC = 83 + KuneiformLexerDESC = 84 + KuneiformLexerLIMIT = 85 + KuneiformLexerOFFSET = 86 + KuneiformLexerORDER = 87 + KuneiformLexerBY = 88 + KuneiformLexerGROUP = 89 + KuneiformLexerHAVING = 90 + KuneiformLexerRETURNS = 91 + KuneiformLexerNO = 92 + KuneiformLexerWITH = 93 + KuneiformLexerCASE = 94 + KuneiformLexerWHEN = 95 + KuneiformLexerTHEN = 96 + KuneiformLexerEND = 97 + KuneiformLexerDISTINCT = 98 + KuneiformLexerFROM = 99 + KuneiformLexerWHERE = 100 + KuneiformLexerCOLLATE = 101 + KuneiformLexerSELECT = 102 + KuneiformLexerINSERT = 103 + KuneiformLexerVALUES = 104 + KuneiformLexerFULL = 105 + KuneiformLexerUNION = 106 + KuneiformLexerINTERSECT = 107 + KuneiformLexerEXCEPT = 108 + KuneiformLexerNULLS = 109 + KuneiformLexerFIRST = 110 + KuneiformLexerLAST = 111 + KuneiformLexerRETURNING = 112 + KuneiformLexerINTO = 113 + KuneiformLexerCONFLICT = 114 + KuneiformLexerNOTHING = 115 + KuneiformLexerFOR = 116 + KuneiformLexerIF = 117 + KuneiformLexerELSEIF = 118 + KuneiformLexerELSE = 119 + KuneiformLexerBREAK = 120 + KuneiformLexerRETURN = 121 + KuneiformLexerNEXT = 122 + KuneiformLexerOVER = 123 + KuneiformLexerPARTITION = 124 + KuneiformLexerWINDOW = 125 + KuneiformLexerFILTER = 126 + KuneiformLexerRECURSIVE = 127 + KuneiformLexerSTRING_ = 128 + KuneiformLexerTRUE = 129 + KuneiformLexerFALSE = 130 + KuneiformLexerDIGITS_ = 131 + KuneiformLexerBINARY_ = 132 + KuneiformLexerLEGACY_FOREIGN_KEY = 133 + KuneiformLexerLEGACY_ON_UPDATE = 134 + KuneiformLexerLEGACY_ON_DELETE = 135 + KuneiformLexerLEGACY_SET_DEFAULT = 136 + KuneiformLexerLEGACY_SET_NULL = 137 + KuneiformLexerLEGACY_NO_ACTION = 138 + KuneiformLexerIDENTIFIER = 139 + KuneiformLexerVARIABLE = 140 + KuneiformLexerCONTEXTUAL_VARIABLE = 141 + KuneiformLexerHASH_IDENTIFIER = 142 + KuneiformLexerWS = 143 + KuneiformLexerBLOCK_COMMENT = 144 + KuneiformLexerLINE_COMMENT = 145 ) diff --git a/parse/gen/kuneiform_parser.go b/parse/gen/kuneiform_parser.go index 9a2de3700..ad794af07 100644 --- a/parse/gen/kuneiform_parser.go +++ b/parse/gen/kuneiform_parser.go @@ -36,20 +36,22 @@ func kuneiformparserParserInit() { "'!'", "'.'", "'||'", "'*'", "'='", "'=='", "'#'", "'$'", "'%'", "'+'", "'-'", "'/'", "", "'<'", "'<='", "'>'", "'>='", "'::'", "'_'", "':='", "'..'", "'\"'", "'database'", "'use'", "'table'", "'action'", "'procedure'", - "'public'", "'private'", "'view'", "'owner'", "'foreign'", "'primary'", - "'key'", "'on'", "'do'", "'unique'", "'cascade'", "'restrict'", "'set'", - "'default'", "'null'", "'delete'", "'update'", "'references'", "'ref'", - "'not'", "'index'", "'and'", "'or'", "'like'", "'ilike'", "'in'", "'between'", - "'is'", "'exists'", "'all'", "'any'", "'join'", "'left'", "'right'", - "'inner'", "'as'", "'asc'", "'desc'", "'limit'", "'offset'", "'order'", - "'by'", "'group'", "'having'", "'returns'", "'no'", "'with'", "'case'", - "'when'", "'then'", "'end'", "'distinct'", "'from'", "'where'", "'collate'", - "'select'", "'insert'", "'values'", "'full'", "'union'", "'intersect'", - "'except'", "'nulls'", "'first'", "'last'", "'returning'", "'into'", - "'conflict'", "'nothing'", "'for'", "'if'", "'elseif'", "'else'", "'break'", - "'return'", "'next'", "'over'", "'partition'", "'window'", "'filter'", - "'recursive'", "", "'true'", "'false'", "", "", "", "'on_update'", "'on_delete'", - "'set_default'", "'set_null'", "'no_action'", + "'public'", "'private'", "'view'", "'owner'", "'create'", "'alter'", + "'column'", "'add'", "'drop'", "'rename'", "'to'", "'constraint'", "'check'", + "'foreign'", "'primary'", "'key'", "'on'", "'do'", "'unique'", "'cascade'", + "'restrict'", "'set'", "'default'", "'null'", "'delete'", "'update'", + "'references'", "'ref'", "'not'", "'index'", "'and'", "'or'", "'like'", + "'ilike'", "'in'", "'between'", "'is'", "'exists'", "'all'", "'any'", + "'join'", "'left'", "'right'", "'inner'", "'as'", "'asc'", "'desc'", + "'limit'", "'offset'", "'order'", "'by'", "'group'", "'having'", "'returns'", + "'no'", "'with'", "'case'", "'when'", "'then'", "'end'", "'distinct'", + "'from'", "'where'", "'collate'", "'select'", "'insert'", "'values'", + "'full'", "'union'", "'intersect'", "'except'", "'nulls'", "'first'", + "'last'", "'returning'", "'into'", "'conflict'", "'nothing'", "'for'", + "'if'", "'elseif'", "'else'", "'break'", "'return'", "'next'", "'over'", + "'partition'", "'window'", "'filter'", "'recursive'", "", "'true'", + "'false'", "", "", "", "'on_update'", "'on_delete'", "'set_default'", + "'set_null'", "'no_action'", } staticData.SymbolicNames = []string{ "", "LBRACE", "RBRACE", "LBRACKET", "RBRACKET", "COL", "SCOL", "LPAREN", @@ -57,40 +59,45 @@ func kuneiformparserParserInit() { "EQUATE", "HASH", "DOLLAR", "MOD", "PLUS", "MINUS", "DIV", "NEQ", "LT", "LTE", "GT", "GTE", "TYPE_CAST", "UNDERSCORE", "ASSIGN", "RANGE", "DOUBLE_QUOTE", "DATABASE", "USE", "TABLE", "ACTION", "PROCEDURE", "PUBLIC", "PRIVATE", - "VIEW", "OWNER", "FOREIGN", "PRIMARY", "KEY", "ON", "DO", "UNIQUE", - "CASCADE", "RESTRICT", "SET", "DEFAULT", "NULL", "DELETE", "UPDATE", - "REFERENCES", "REF", "NOT", "INDEX", "AND", "OR", "LIKE", "ILIKE", "IN", - "BETWEEN", "IS", "EXISTS", "ALL", "ANY", "JOIN", "LEFT", "RIGHT", "INNER", - "AS", "ASC", "DESC", "LIMIT", "OFFSET", "ORDER", "BY", "GROUP", "HAVING", - "RETURNS", "NO", "WITH", "CASE", "WHEN", "THEN", "END", "DISTINCT", - "FROM", "WHERE", "COLLATE", "SELECT", "INSERT", "VALUES", "FULL", "UNION", - "INTERSECT", "EXCEPT", "NULLS", "FIRST", "LAST", "RETURNING", "INTO", - "CONFLICT", "NOTHING", "FOR", "IF", "ELSEIF", "ELSE", "BREAK", "RETURN", - "NEXT", "OVER", "PARTITION", "WINDOW", "FILTER", "RECURSIVE", "STRING_", - "TRUE", "FALSE", "DIGITS_", "BINARY_", "LEGACY_FOREIGN_KEY", "LEGACY_ON_UPDATE", - "LEGACY_ON_DELETE", "LEGACY_SET_DEFAULT", "LEGACY_SET_NULL", "LEGACY_NO_ACTION", - "IDENTIFIER", "VARIABLE", "CONTEXTUAL_VARIABLE", "HASH_IDENTIFIER", - "WS", "BLOCK_COMMENT", "LINE_COMMENT", + "VIEW", "OWNER", "CREATE", "ALTER", "COLUMN", "ADD", "DROP", "RENAME", + "TO", "CONSTRAINT", "CHECK", "FOREIGN", "PRIMARY", "KEY", "ON", "DO", + "UNIQUE", "CASCADE", "RESTRICT", "SET", "DEFAULT", "NULL", "DELETE", + "UPDATE", "REFERENCES", "REF", "NOT", "INDEX", "AND", "OR", "LIKE", + "ILIKE", "IN", "BETWEEN", "IS", "EXISTS", "ALL", "ANY", "JOIN", "LEFT", + "RIGHT", "INNER", "AS", "ASC", "DESC", "LIMIT", "OFFSET", "ORDER", "BY", + "GROUP", "HAVING", "RETURNS", "NO", "WITH", "CASE", "WHEN", "THEN", + "END", "DISTINCT", "FROM", "WHERE", "COLLATE", "SELECT", "INSERT", "VALUES", + "FULL", "UNION", "INTERSECT", "EXCEPT", "NULLS", "FIRST", "LAST", "RETURNING", + "INTO", "CONFLICT", "NOTHING", "FOR", "IF", "ELSEIF", "ELSE", "BREAK", + "RETURN", "NEXT", "OVER", "PARTITION", "WINDOW", "FILTER", "RECURSIVE", + "STRING_", "TRUE", "FALSE", "DIGITS_", "BINARY_", "LEGACY_FOREIGN_KEY", + "LEGACY_ON_UPDATE", "LEGACY_ON_DELETE", "LEGACY_SET_DEFAULT", "LEGACY_SET_NULL", + "LEGACY_NO_ACTION", "IDENTIFIER", "VARIABLE", "CONTEXTUAL_VARIABLE", + "HASH_IDENTIFIER", "WS", "BLOCK_COMMENT", "LINE_COMMENT", } staticData.RuleNames = []string{ - "schema_entry", "sql_entry", "action_entry", "procedure_entry", "literal", - "identifier", "identifier_list", "type", "type_cast", "variable", "variable_list", - "schema", "annotation", "database_declaration", "use_declaration", "table_declaration", - "column_def", "index_def", "foreign_key_def", "foreign_key_action", - "type_list", "named_type_list", "typed_variable_list", "constraint", - "access_modifier", "action_declaration", "procedure_declaration", "procedure_return", - "sql", "sql_statement", "common_table_expression", "select_statement", - "compound_operator", "ordering_term", "select_core", "relation", "join", - "result_column", "update_statement", "update_set_clause", "insert_statement", - "upsert_clause", "delete_statement", "sql_expr", "window", "when_then_clause", - "sql_expr_list", "sql_function_call", "action_block", "action_statement", - "procedure_block", "procedure_expr", "procedure_expr_list", "proc_statement", - "variable_or_underscore", "procedure_function_call", "if_then_block", - "range", + "src", "schema_entry", "sql_entry", "action_entry", "procedure_entry", + "literal", "identifier", "identifier_list", "type", "type_cast", "variable", + "variable_list", "schema", "annotation", "database_declaration", "use_declaration", + "table_declaration", "column_def", "c_column_def", "index_def", "c_index_def", + "foreign_key_def", "foreign_key_action", "type_list", "named_type_list", + "typed_variable_list", "constraint", "inline_constraint", "fk_action", + "fk_constraint", "access_modifier", "action_declaration", "procedure_declaration", + "procedure_return", "sql", "sql_statement", "common_table_expression", + "create_table_statement", "constraint_def", "unnamed_constraint", "alter_table_statement", + "alter_column_clause", "add_column_clause", "drop_column_clause", "rename_column_clause", + "rename_table_clause", "add_fk_clause", "drop_fk_clause", "create_index_statement", + "drop_index_statement", "select_statement", "compound_operator", "ordering_term", + "select_core", "relation", "join", "result_column", "update_statement", + "update_set_clause", "insert_statement", "upsert_clause", "delete_statement", + "sql_expr", "window", "when_then_clause", "sql_expr_list", "sql_function_call", + "action_block", "action_statement", "procedure_block", "procedure_expr", + "procedure_expr_list", "proc_statement", "variable_or_underscore", "procedure_function_call", + "if_then_block", "range", } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 136, 1171, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, + 4, 1, 145, 1422, 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, @@ -101,562 +108,688 @@ func kuneiformparserParserInit() { 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, - 57, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, - 3, 1, 4, 1, 4, 3, 4, 131, 8, 4, 1, 4, 1, 4, 3, 4, 135, 8, 4, 1, 4, 1, 4, - 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 143, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, - 149, 8, 5, 1, 6, 1, 6, 1, 6, 5, 6, 154, 8, 6, 10, 6, 12, 6, 157, 9, 6, - 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 165, 8, 7, 1, 7, 1, 7, 3, 7, - 169, 8, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 5, 10, 179, - 8, 10, 10, 10, 12, 10, 182, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, - 11, 189, 8, 11, 10, 11, 12, 11, 192, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, - 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 203, 8, 12, 10, 12, 12, 12, 206, - 9, 12, 3, 12, 208, 8, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, - 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, - 226, 8, 14, 10, 14, 12, 14, 229, 9, 14, 1, 14, 1, 14, 3, 14, 233, 8, 14, - 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, - 15, 1, 15, 3, 15, 247, 8, 15, 5, 15, 249, 8, 15, 10, 15, 12, 15, 252, 9, - 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 5, 16, 259, 8, 16, 10, 16, 12, 16, - 262, 9, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, - 18, 3, 18, 273, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, - 1, 18, 1, 18, 5, 18, 284, 8, 18, 10, 18, 12, 18, 287, 9, 18, 1, 19, 1, - 19, 1, 19, 3, 19, 292, 8, 19, 1, 19, 1, 19, 1, 19, 3, 19, 297, 8, 19, 3, - 19, 299, 8, 19, 1, 19, 3, 19, 302, 8, 19, 1, 19, 1, 19, 1, 19, 3, 19, 307, - 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 313, 8, 19, 1, 19, 1, 19, 1, - 19, 3, 19, 318, 8, 19, 1, 19, 3, 19, 321, 8, 19, 1, 20, 1, 20, 1, 20, 5, - 20, 326, 8, 20, 10, 20, 12, 20, 329, 9, 20, 1, 21, 1, 21, 1, 21, 1, 21, - 1, 21, 5, 21, 336, 8, 21, 10, 21, 12, 21, 339, 9, 21, 1, 22, 1, 22, 1, - 22, 1, 22, 1, 22, 1, 22, 5, 22, 347, 8, 22, 10, 22, 12, 22, 350, 9, 22, - 1, 23, 1, 23, 1, 23, 3, 23, 355, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, - 23, 361, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 367, 8, 23, 1, 24, 1, - 24, 1, 25, 5, 25, 372, 8, 25, 10, 25, 12, 25, 375, 9, 25, 1, 25, 1, 25, - 1, 25, 1, 25, 3, 25, 381, 8, 25, 1, 25, 1, 25, 4, 25, 385, 8, 25, 11, 25, - 12, 25, 386, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 5, 26, 394, 8, 26, 10, - 26, 12, 26, 397, 9, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 403, 8, 26, - 1, 26, 1, 26, 4, 26, 407, 8, 26, 11, 26, 12, 26, 408, 1, 26, 3, 26, 412, - 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 3, 27, 420, 8, 27, 1, - 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 430, 8, 27, - 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 3, 29, 437, 8, 29, 1, 29, 1, 29, 1, - 29, 5, 29, 442, 8, 29, 10, 29, 12, 29, 445, 9, 29, 3, 29, 447, 8, 29, 1, - 29, 1, 29, 1, 29, 1, 29, 3, 29, 453, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, - 1, 30, 5, 30, 460, 8, 30, 10, 30, 12, 30, 463, 9, 30, 3, 30, 465, 8, 30, - 1, 30, 3, 30, 468, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, - 31, 1, 31, 1, 31, 5, 31, 479, 8, 31, 10, 31, 12, 31, 482, 9, 31, 1, 31, - 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 489, 8, 31, 10, 31, 12, 31, 492, 9, - 31, 3, 31, 494, 8, 31, 1, 31, 1, 31, 3, 31, 498, 8, 31, 1, 31, 1, 31, 3, - 31, 502, 8, 31, 1, 32, 1, 32, 3, 32, 506, 8, 32, 1, 32, 1, 32, 3, 32, 510, - 8, 32, 1, 33, 1, 33, 3, 33, 514, 8, 33, 1, 33, 1, 33, 3, 33, 518, 8, 33, - 1, 34, 1, 34, 3, 34, 522, 8, 34, 1, 34, 1, 34, 1, 34, 5, 34, 527, 8, 34, - 10, 34, 12, 34, 530, 9, 34, 1, 34, 1, 34, 1, 34, 5, 34, 535, 8, 34, 10, - 34, 12, 34, 538, 9, 34, 3, 34, 540, 8, 34, 1, 34, 1, 34, 3, 34, 544, 8, - 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 551, 8, 34, 3, 34, 553, 8, - 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, - 564, 8, 34, 10, 34, 12, 34, 567, 9, 34, 3, 34, 569, 8, 34, 1, 35, 1, 35, - 3, 35, 573, 8, 35, 1, 35, 3, 35, 576, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, - 3, 35, 582, 8, 35, 1, 35, 3, 35, 585, 8, 35, 3, 35, 587, 8, 35, 1, 36, - 3, 36, 590, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 3, - 37, 599, 8, 37, 1, 37, 3, 37, 602, 8, 37, 1, 37, 1, 37, 1, 37, 3, 37, 607, - 8, 37, 1, 37, 3, 37, 610, 8, 37, 1, 38, 1, 38, 1, 38, 3, 38, 615, 8, 38, - 1, 38, 3, 38, 618, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 624, 8, 38, - 10, 38, 12, 38, 627, 9, 38, 1, 38, 1, 38, 1, 38, 5, 38, 632, 8, 38, 10, - 38, 12, 38, 635, 9, 38, 3, 38, 637, 8, 38, 1, 38, 1, 38, 3, 38, 641, 8, - 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 651, - 8, 40, 1, 40, 3, 40, 654, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 660, - 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 5, - 40, 671, 8, 40, 10, 40, 12, 40, 674, 9, 40, 1, 40, 3, 40, 677, 8, 40, 1, - 40, 3, 40, 680, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, - 3, 41, 689, 8, 41, 3, 41, 691, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, - 1, 41, 1, 41, 5, 41, 700, 8, 41, 10, 41, 12, 41, 703, 9, 41, 1, 41, 1, - 41, 3, 41, 707, 8, 41, 3, 41, 709, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 3, - 42, 715, 8, 42, 1, 42, 3, 42, 718, 8, 42, 1, 42, 1, 42, 3, 42, 722, 8, - 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 729, 8, 43, 1, 43, 1, 43, - 1, 43, 1, 43, 3, 43, 735, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, - 43, 1, 43, 3, 43, 744, 8, 43, 1, 43, 1, 43, 1, 43, 3, 43, 749, 8, 43, 1, - 43, 1, 43, 3, 43, 753, 8, 43, 1, 43, 1, 43, 3, 43, 757, 8, 43, 1, 43, 1, - 43, 1, 43, 3, 43, 762, 8, 43, 1, 43, 1, 43, 3, 43, 766, 8, 43, 1, 43, 1, - 43, 3, 43, 770, 8, 43, 1, 43, 4, 43, 773, 8, 43, 11, 43, 12, 43, 774, 1, - 43, 1, 43, 3, 43, 779, 8, 43, 1, 43, 1, 43, 1, 43, 3, 43, 784, 8, 43, 1, - 43, 3, 43, 787, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 793, 8, 43, 1, - 43, 1, 43, 3, 43, 797, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, - 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 810, 8, 43, 1, 43, 1, 43, 1, - 43, 1, 43, 3, 43, 816, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, - 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, - 43, 1, 43, 3, 43, 836, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 842, 8, - 43, 1, 43, 1, 43, 3, 43, 846, 8, 43, 3, 43, 848, 8, 43, 1, 43, 1, 43, 3, - 43, 852, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 859, 8, 43, 1, - 43, 1, 43, 1, 43, 1, 43, 3, 43, 865, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, - 1, 43, 3, 43, 872, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, - 43, 880, 8, 43, 5, 43, 882, 8, 43, 10, 43, 12, 43, 885, 9, 43, 1, 44, 1, - 44, 1, 44, 1, 44, 3, 44, 891, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, - 5, 44, 898, 8, 44, 10, 44, 12, 44, 901, 9, 44, 3, 44, 903, 8, 44, 1, 44, - 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 5, 46, 915, - 8, 46, 10, 46, 12, 46, 918, 9, 46, 1, 47, 1, 47, 1, 47, 3, 47, 923, 8, - 47, 1, 47, 1, 47, 3, 47, 927, 8, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, - 5, 48, 934, 8, 48, 10, 48, 12, 48, 937, 9, 48, 1, 49, 1, 49, 1, 49, 1, - 49, 3, 49, 943, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 949, 8, 49, 1, - 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 956, 8, 49, 1, 49, 3, 49, 959, 8, - 49, 1, 50, 5, 50, 962, 8, 50, 10, 50, 12, 50, 965, 9, 50, 1, 51, 1, 51, - 1, 51, 1, 51, 1, 51, 3, 51, 972, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, - 51, 978, 8, 51, 1, 51, 1, 51, 3, 51, 982, 8, 51, 1, 51, 1, 51, 3, 51, 986, - 8, 51, 1, 51, 1, 51, 3, 51, 990, 8, 51, 1, 51, 1, 51, 3, 51, 994, 8, 51, - 1, 51, 1, 51, 3, 51, 998, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, - 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, - 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 1022, 8, 51, 1, 51, 1, - 51, 1, 51, 1, 51, 3, 51, 1028, 8, 51, 1, 51, 1, 51, 3, 51, 1032, 8, 51, - 3, 51, 1034, 8, 51, 1, 51, 1, 51, 3, 51, 1038, 8, 51, 1, 51, 1, 51, 1, - 51, 3, 51, 1043, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, - 1051, 8, 51, 5, 51, 1053, 8, 51, 10, 51, 12, 51, 1056, 9, 51, 1, 52, 1, - 52, 1, 52, 5, 52, 1061, 8, 52, 10, 52, 12, 52, 1064, 9, 52, 1, 53, 1, 53, - 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1073, 8, 53, 10, 53, 12, 53, - 1076, 9, 53, 1, 53, 1, 53, 3, 53, 1080, 8, 53, 1, 53, 1, 53, 1, 53, 1, - 53, 1, 53, 3, 53, 1087, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, - 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1099, 8, 53, 1, 53, 1, 53, 5, 53, 1103, - 8, 53, 10, 53, 12, 53, 1106, 9, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, - 1, 53, 5, 53, 1114, 8, 53, 10, 53, 12, 53, 1117, 9, 53, 1, 53, 1, 53, 1, - 53, 5, 53, 1122, 8, 53, 10, 53, 12, 53, 1125, 9, 53, 1, 53, 3, 53, 1128, - 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1138, - 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1146, 8, 53, 1, - 54, 1, 54, 1, 55, 1, 55, 1, 55, 3, 55, 1153, 8, 55, 1, 55, 1, 55, 1, 56, - 1, 56, 1, 56, 5, 56, 1160, 8, 56, 10, 56, 12, 56, 1163, 9, 56, 1, 56, 1, - 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 0, 2, 86, 102, 58, 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, 0, 14, 1, 0, 20, 21, 1, 0, 120, 121, 1, 0, 131, 132, 3, 0, 43, 43, - 47, 47, 58, 58, 1, 0, 55, 56, 1, 0, 38, 41, 1, 0, 74, 75, 1, 0, 101, 102, - 2, 0, 70, 72, 96, 96, 3, 0, 14, 14, 19, 19, 22, 22, 1, 0, 61, 62, 2, 0, - 15, 16, 23, 27, 2, 0, 11, 11, 20, 21, 2, 0, 29, 29, 131, 131, 1340, 0, - 116, 1, 0, 0, 0, 2, 119, 1, 0, 0, 0, 4, 122, 1, 0, 0, 0, 6, 125, 1, 0, - 0, 0, 8, 142, 1, 0, 0, 0, 10, 148, 1, 0, 0, 0, 12, 150, 1, 0, 0, 0, 14, - 158, 1, 0, 0, 0, 16, 170, 1, 0, 0, 0, 18, 173, 1, 0, 0, 0, 20, 175, 1, - 0, 0, 0, 22, 183, 1, 0, 0, 0, 24, 193, 1, 0, 0, 0, 26, 211, 1, 0, 0, 0, - 28, 215, 1, 0, 0, 0, 30, 238, 1, 0, 0, 0, 32, 255, 1, 0, 0, 0, 34, 263, - 1, 0, 0, 0, 36, 272, 1, 0, 0, 0, 38, 298, 1, 0, 0, 0, 40, 322, 1, 0, 0, - 0, 42, 330, 1, 0, 0, 0, 44, 340, 1, 0, 0, 0, 46, 360, 1, 0, 0, 0, 48, 368, - 1, 0, 0, 0, 50, 373, 1, 0, 0, 0, 52, 395, 1, 0, 0, 0, 54, 417, 1, 0, 0, - 0, 56, 431, 1, 0, 0, 0, 58, 446, 1, 0, 0, 0, 60, 454, 1, 0, 0, 0, 62, 474, - 1, 0, 0, 0, 64, 509, 1, 0, 0, 0, 66, 511, 1, 0, 0, 0, 68, 519, 1, 0, 0, - 0, 70, 586, 1, 0, 0, 0, 72, 589, 1, 0, 0, 0, 74, 609, 1, 0, 0, 0, 76, 611, - 1, 0, 0, 0, 78, 642, 1, 0, 0, 0, 80, 646, 1, 0, 0, 0, 82, 681, 1, 0, 0, - 0, 84, 710, 1, 0, 0, 0, 86, 796, 1, 0, 0, 0, 88, 886, 1, 0, 0, 0, 90, 906, - 1, 0, 0, 0, 92, 911, 1, 0, 0, 0, 94, 919, 1, 0, 0, 0, 96, 935, 1, 0, 0, - 0, 98, 958, 1, 0, 0, 0, 100, 963, 1, 0, 0, 0, 102, 997, 1, 0, 0, 0, 104, - 1057, 1, 0, 0, 0, 106, 1145, 1, 0, 0, 0, 108, 1147, 1, 0, 0, 0, 110, 1149, - 1, 0, 0, 0, 112, 1156, 1, 0, 0, 0, 114, 1166, 1, 0, 0, 0, 116, 117, 3, - 22, 11, 0, 117, 118, 5, 0, 0, 1, 118, 1, 1, 0, 0, 0, 119, 120, 3, 56, 28, - 0, 120, 121, 5, 0, 0, 1, 121, 3, 1, 0, 0, 0, 122, 123, 3, 96, 48, 0, 123, - 124, 5, 0, 0, 1, 124, 5, 1, 0, 0, 0, 125, 126, 3, 100, 50, 0, 126, 127, - 5, 0, 0, 1, 127, 7, 1, 0, 0, 0, 128, 143, 5, 119, 0, 0, 129, 131, 7, 0, - 0, 0, 130, 129, 1, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, - 132, 143, 5, 122, 0, 0, 133, 135, 7, 0, 0, 0, 134, 133, 1, 0, 0, 0, 134, - 135, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 137, 5, 122, 0, 0, 137, 138, - 5, 12, 0, 0, 138, 143, 5, 122, 0, 0, 139, 143, 7, 1, 0, 0, 140, 143, 5, - 52, 0, 0, 141, 143, 5, 123, 0, 0, 142, 128, 1, 0, 0, 0, 142, 130, 1, 0, - 0, 0, 142, 134, 1, 0, 0, 0, 142, 139, 1, 0, 0, 0, 142, 140, 1, 0, 0, 0, - 142, 141, 1, 0, 0, 0, 143, 9, 1, 0, 0, 0, 144, 145, 5, 32, 0, 0, 145, 146, - 5, 130, 0, 0, 146, 149, 5, 32, 0, 0, 147, 149, 5, 130, 0, 0, 148, 144, - 1, 0, 0, 0, 148, 147, 1, 0, 0, 0, 149, 11, 1, 0, 0, 0, 150, 155, 3, 10, - 5, 0, 151, 152, 5, 9, 0, 0, 152, 154, 3, 10, 5, 0, 153, 151, 1, 0, 0, 0, - 154, 157, 1, 0, 0, 0, 155, 153, 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, - 13, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 158, 164, 5, 130, 0, 0, 159, 160, - 5, 7, 0, 0, 160, 161, 5, 122, 0, 0, 161, 162, 5, 9, 0, 0, 162, 163, 5, - 122, 0, 0, 163, 165, 5, 8, 0, 0, 164, 159, 1, 0, 0, 0, 164, 165, 1, 0, - 0, 0, 165, 168, 1, 0, 0, 0, 166, 167, 5, 3, 0, 0, 167, 169, 5, 4, 0, 0, - 168, 166, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 15, 1, 0, 0, 0, 170, 171, - 5, 28, 0, 0, 171, 172, 3, 14, 7, 0, 172, 17, 1, 0, 0, 0, 173, 174, 7, 2, - 0, 0, 174, 19, 1, 0, 0, 0, 175, 180, 3, 18, 9, 0, 176, 177, 5, 9, 0, 0, - 177, 179, 3, 18, 9, 0, 178, 176, 1, 0, 0, 0, 179, 182, 1, 0, 0, 0, 180, - 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 21, 1, 0, 0, 0, 182, 180, 1, - 0, 0, 0, 183, 190, 3, 26, 13, 0, 184, 189, 3, 28, 14, 0, 185, 189, 3, 30, - 15, 0, 186, 189, 3, 50, 25, 0, 187, 189, 3, 52, 26, 0, 188, 184, 1, 0, - 0, 0, 188, 185, 1, 0, 0, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, - 189, 192, 1, 0, 0, 0, 190, 188, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, - 23, 1, 0, 0, 0, 192, 190, 1, 0, 0, 0, 193, 194, 5, 132, 0, 0, 194, 207, - 5, 7, 0, 0, 195, 196, 5, 130, 0, 0, 196, 197, 5, 15, 0, 0, 197, 204, 3, - 8, 4, 0, 198, 199, 5, 9, 0, 0, 199, 200, 5, 130, 0, 0, 200, 201, 5, 15, - 0, 0, 201, 203, 3, 8, 4, 0, 202, 198, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, - 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 208, 1, 0, 0, 0, 206, - 204, 1, 0, 0, 0, 207, 195, 1, 0, 0, 0, 207, 208, 1, 0, 0, 0, 208, 209, - 1, 0, 0, 0, 209, 210, 5, 8, 0, 0, 210, 25, 1, 0, 0, 0, 211, 212, 5, 33, - 0, 0, 212, 213, 5, 130, 0, 0, 213, 214, 5, 6, 0, 0, 214, 27, 1, 0, 0, 0, - 215, 216, 5, 34, 0, 0, 216, 232, 5, 130, 0, 0, 217, 218, 5, 1, 0, 0, 218, - 219, 5, 130, 0, 0, 219, 220, 5, 5, 0, 0, 220, 227, 3, 8, 4, 0, 221, 222, - 5, 9, 0, 0, 222, 223, 5, 130, 0, 0, 223, 224, 5, 5, 0, 0, 224, 226, 3, - 8, 4, 0, 225, 221, 1, 0, 0, 0, 226, 229, 1, 0, 0, 0, 227, 225, 1, 0, 0, - 0, 227, 228, 1, 0, 0, 0, 228, 230, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 230, - 231, 5, 2, 0, 0, 231, 233, 1, 0, 0, 0, 232, 217, 1, 0, 0, 0, 232, 233, - 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234, 235, 5, 73, 0, 0, 235, 236, 5, 130, - 0, 0, 236, 237, 5, 6, 0, 0, 237, 29, 1, 0, 0, 0, 238, 239, 5, 35, 0, 0, - 239, 240, 5, 130, 0, 0, 240, 241, 5, 1, 0, 0, 241, 250, 3, 32, 16, 0, 242, - 246, 5, 9, 0, 0, 243, 247, 3, 32, 16, 0, 244, 247, 3, 34, 17, 0, 245, 247, - 3, 36, 18, 0, 246, 243, 1, 0, 0, 0, 246, 244, 1, 0, 0, 0, 246, 245, 1, - 0, 0, 0, 247, 249, 1, 0, 0, 0, 248, 242, 1, 0, 0, 0, 249, 252, 1, 0, 0, - 0, 250, 248, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251, 253, 1, 0, 0, 0, 252, - 250, 1, 0, 0, 0, 253, 254, 5, 2, 0, 0, 254, 31, 1, 0, 0, 0, 255, 256, 5, - 130, 0, 0, 256, 260, 3, 14, 7, 0, 257, 259, 3, 46, 23, 0, 258, 257, 1, - 0, 0, 0, 259, 262, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, - 0, 261, 33, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 264, 5, 133, 0, 0, 264, - 265, 7, 3, 0, 0, 265, 266, 5, 7, 0, 0, 266, 267, 3, 12, 6, 0, 267, 268, - 5, 8, 0, 0, 268, 35, 1, 0, 0, 0, 269, 270, 5, 42, 0, 0, 270, 273, 5, 44, - 0, 0, 271, 273, 5, 124, 0, 0, 272, 269, 1, 0, 0, 0, 272, 271, 1, 0, 0, - 0, 273, 274, 1, 0, 0, 0, 274, 275, 5, 7, 0, 0, 275, 276, 3, 12, 6, 0, 276, - 277, 5, 8, 0, 0, 277, 278, 7, 4, 0, 0, 278, 279, 5, 130, 0, 0, 279, 280, - 5, 7, 0, 0, 280, 281, 3, 12, 6, 0, 281, 285, 5, 8, 0, 0, 282, 284, 3, 38, - 19, 0, 283, 282, 1, 0, 0, 0, 284, 287, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, - 285, 286, 1, 0, 0, 0, 286, 37, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 289, - 5, 45, 0, 0, 289, 292, 5, 54, 0, 0, 290, 292, 5, 125, 0, 0, 291, 288, 1, - 0, 0, 0, 291, 290, 1, 0, 0, 0, 292, 299, 1, 0, 0, 0, 293, 294, 5, 45, 0, - 0, 294, 297, 5, 53, 0, 0, 295, 297, 5, 126, 0, 0, 296, 293, 1, 0, 0, 0, - 296, 295, 1, 0, 0, 0, 297, 299, 1, 0, 0, 0, 298, 291, 1, 0, 0, 0, 298, - 296, 1, 0, 0, 0, 299, 301, 1, 0, 0, 0, 300, 302, 5, 46, 0, 0, 301, 300, - 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 320, 1, 0, 0, 0, 303, 304, 5, 83, - 0, 0, 304, 307, 5, 36, 0, 0, 305, 307, 5, 129, 0, 0, 306, 303, 1, 0, 0, - 0, 306, 305, 1, 0, 0, 0, 307, 321, 1, 0, 0, 0, 308, 321, 5, 48, 0, 0, 309, - 310, 5, 50, 0, 0, 310, 313, 5, 52, 0, 0, 311, 313, 5, 128, 0, 0, 312, 309, - 1, 0, 0, 0, 312, 311, 1, 0, 0, 0, 313, 321, 1, 0, 0, 0, 314, 315, 5, 50, - 0, 0, 315, 318, 5, 51, 0, 0, 316, 318, 5, 127, 0, 0, 317, 314, 1, 0, 0, - 0, 317, 316, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 321, 5, 49, 0, 0, 320, - 306, 1, 0, 0, 0, 320, 308, 1, 0, 0, 0, 320, 312, 1, 0, 0, 0, 320, 317, - 1, 0, 0, 0, 320, 319, 1, 0, 0, 0, 321, 39, 1, 0, 0, 0, 322, 327, 3, 14, - 7, 0, 323, 324, 5, 9, 0, 0, 324, 326, 3, 14, 7, 0, 325, 323, 1, 0, 0, 0, - 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, - 41, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 330, 331, 5, 130, 0, 0, 331, 337, - 3, 14, 7, 0, 332, 333, 5, 9, 0, 0, 333, 334, 5, 130, 0, 0, 334, 336, 3, - 14, 7, 0, 335, 332, 1, 0, 0, 0, 336, 339, 1, 0, 0, 0, 337, 335, 1, 0, 0, - 0, 337, 338, 1, 0, 0, 0, 338, 43, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 340, - 341, 3, 18, 9, 0, 341, 348, 3, 14, 7, 0, 342, 343, 5, 9, 0, 0, 343, 344, - 3, 18, 9, 0, 344, 345, 3, 14, 7, 0, 345, 347, 1, 0, 0, 0, 346, 342, 1, - 0, 0, 0, 347, 350, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, - 0, 349, 45, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 351, 361, 5, 130, 0, 0, 352, - 354, 5, 43, 0, 0, 353, 355, 5, 44, 0, 0, 354, 353, 1, 0, 0, 0, 354, 355, - 1, 0, 0, 0, 355, 361, 1, 0, 0, 0, 356, 357, 5, 57, 0, 0, 357, 361, 5, 52, - 0, 0, 358, 361, 5, 51, 0, 0, 359, 361, 5, 47, 0, 0, 360, 351, 1, 0, 0, - 0, 360, 352, 1, 0, 0, 0, 360, 356, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, - 359, 1, 0, 0, 0, 361, 366, 1, 0, 0, 0, 362, 363, 5, 7, 0, 0, 363, 364, - 3, 8, 4, 0, 364, 365, 5, 8, 0, 0, 365, 367, 1, 0, 0, 0, 366, 362, 1, 0, - 0, 0, 366, 367, 1, 0, 0, 0, 367, 47, 1, 0, 0, 0, 368, 369, 7, 5, 0, 0, - 369, 49, 1, 0, 0, 0, 370, 372, 3, 24, 12, 0, 371, 370, 1, 0, 0, 0, 372, - 375, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 376, - 1, 0, 0, 0, 375, 373, 1, 0, 0, 0, 376, 377, 5, 36, 0, 0, 377, 378, 5, 130, - 0, 0, 378, 380, 5, 7, 0, 0, 379, 381, 3, 20, 10, 0, 380, 379, 1, 0, 0, - 0, 380, 381, 1, 0, 0, 0, 381, 382, 1, 0, 0, 0, 382, 384, 5, 8, 0, 0, 383, - 385, 3, 48, 24, 0, 384, 383, 1, 0, 0, 0, 385, 386, 1, 0, 0, 0, 386, 384, - 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389, 5, 1, - 0, 0, 389, 390, 3, 96, 48, 0, 390, 391, 5, 2, 0, 0, 391, 51, 1, 0, 0, 0, - 392, 394, 3, 24, 12, 0, 393, 392, 1, 0, 0, 0, 394, 397, 1, 0, 0, 0, 395, - 393, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 398, 1, 0, 0, 0, 397, 395, - 1, 0, 0, 0, 398, 399, 5, 37, 0, 0, 399, 400, 5, 130, 0, 0, 400, 402, 5, - 7, 0, 0, 401, 403, 3, 44, 22, 0, 402, 401, 1, 0, 0, 0, 402, 403, 1, 0, - 0, 0, 403, 404, 1, 0, 0, 0, 404, 406, 5, 8, 0, 0, 405, 407, 3, 48, 24, - 0, 406, 405, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 406, 1, 0, 0, 0, 408, - 409, 1, 0, 0, 0, 409, 411, 1, 0, 0, 0, 410, 412, 3, 54, 27, 0, 411, 410, - 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 414, 5, 1, - 0, 0, 414, 415, 3, 100, 50, 0, 415, 416, 5, 2, 0, 0, 416, 53, 1, 0, 0, - 0, 417, 429, 5, 82, 0, 0, 418, 420, 5, 35, 0, 0, 419, 418, 1, 0, 0, 0, - 419, 420, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 422, 5, 7, 0, 0, 422, - 423, 3, 42, 21, 0, 423, 424, 5, 8, 0, 0, 424, 430, 1, 0, 0, 0, 425, 426, - 5, 7, 0, 0, 426, 427, 3, 40, 20, 0, 427, 428, 5, 8, 0, 0, 428, 430, 1, - 0, 0, 0, 429, 419, 1, 0, 0, 0, 429, 425, 1, 0, 0, 0, 430, 55, 1, 0, 0, - 0, 431, 432, 3, 58, 29, 0, 432, 433, 5, 6, 0, 0, 433, 57, 1, 0, 0, 0, 434, - 436, 5, 84, 0, 0, 435, 437, 5, 118, 0, 0, 436, 435, 1, 0, 0, 0, 436, 437, - 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 443, 3, 60, 30, 0, 439, 440, 5, - 9, 0, 0, 440, 442, 3, 60, 30, 0, 441, 439, 1, 0, 0, 0, 442, 445, 1, 0, - 0, 0, 443, 441, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 447, 1, 0, 0, 0, - 445, 443, 1, 0, 0, 0, 446, 434, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, - 452, 1, 0, 0, 0, 448, 453, 3, 62, 31, 0, 449, 453, 3, 76, 38, 0, 450, 453, - 3, 80, 40, 0, 451, 453, 3, 84, 42, 0, 452, 448, 1, 0, 0, 0, 452, 449, 1, - 0, 0, 0, 452, 450, 1, 0, 0, 0, 452, 451, 1, 0, 0, 0, 453, 59, 1, 0, 0, - 0, 454, 467, 3, 10, 5, 0, 455, 464, 5, 7, 0, 0, 456, 461, 3, 10, 5, 0, - 457, 458, 5, 9, 0, 0, 458, 460, 3, 10, 5, 0, 459, 457, 1, 0, 0, 0, 460, - 463, 1, 0, 0, 0, 461, 459, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 465, - 1, 0, 0, 0, 463, 461, 1, 0, 0, 0, 464, 456, 1, 0, 0, 0, 464, 465, 1, 0, - 0, 0, 465, 466, 1, 0, 0, 0, 466, 468, 5, 8, 0, 0, 467, 455, 1, 0, 0, 0, - 467, 468, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 470, 5, 73, 0, 0, 470, - 471, 5, 7, 0, 0, 471, 472, 3, 62, 31, 0, 472, 473, 5, 8, 0, 0, 473, 61, - 1, 0, 0, 0, 474, 480, 3, 68, 34, 0, 475, 476, 3, 64, 32, 0, 476, 477, 3, - 68, 34, 0, 477, 479, 1, 0, 0, 0, 478, 475, 1, 0, 0, 0, 479, 482, 1, 0, - 0, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 493, 1, 0, 0, 0, - 482, 480, 1, 0, 0, 0, 483, 484, 5, 78, 0, 0, 484, 485, 5, 79, 0, 0, 485, - 490, 3, 66, 33, 0, 486, 487, 5, 9, 0, 0, 487, 489, 3, 66, 33, 0, 488, 486, - 1, 0, 0, 0, 489, 492, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, - 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 493, 483, 1, 0, 0, 0, - 493, 494, 1, 0, 0, 0, 494, 497, 1, 0, 0, 0, 495, 496, 5, 76, 0, 0, 496, - 498, 3, 86, 43, 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 501, - 1, 0, 0, 0, 499, 500, 5, 77, 0, 0, 500, 502, 3, 86, 43, 0, 501, 499, 1, - 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 63, 1, 0, 0, 0, 503, 505, 5, 97, 0, - 0, 504, 506, 5, 67, 0, 0, 505, 504, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, - 510, 1, 0, 0, 0, 507, 510, 5, 98, 0, 0, 508, 510, 5, 99, 0, 0, 509, 503, - 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 508, 1, 0, 0, 0, 510, 65, 1, 0, - 0, 0, 511, 513, 3, 86, 43, 0, 512, 514, 7, 6, 0, 0, 513, 512, 1, 0, 0, - 0, 513, 514, 1, 0, 0, 0, 514, 517, 1, 0, 0, 0, 515, 516, 5, 100, 0, 0, - 516, 518, 7, 7, 0, 0, 517, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, - 67, 1, 0, 0, 0, 519, 521, 5, 93, 0, 0, 520, 522, 5, 89, 0, 0, 521, 520, - 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 528, 3, 74, - 37, 0, 524, 525, 5, 9, 0, 0, 525, 527, 3, 74, 37, 0, 526, 524, 1, 0, 0, - 0, 527, 530, 1, 0, 0, 0, 528, 526, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, - 539, 1, 0, 0, 0, 530, 528, 1, 0, 0, 0, 531, 532, 5, 90, 0, 0, 532, 536, - 3, 70, 35, 0, 533, 535, 3, 72, 36, 0, 534, 533, 1, 0, 0, 0, 535, 538, 1, - 0, 0, 0, 536, 534, 1, 0, 0, 0, 536, 537, 1, 0, 0, 0, 537, 540, 1, 0, 0, - 0, 538, 536, 1, 0, 0, 0, 539, 531, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, - 543, 1, 0, 0, 0, 541, 542, 5, 91, 0, 0, 542, 544, 3, 86, 43, 0, 543, 541, - 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 552, 1, 0, 0, 0, 545, 546, 5, 80, - 0, 0, 546, 547, 5, 79, 0, 0, 547, 550, 3, 92, 46, 0, 548, 549, 5, 81, 0, - 0, 549, 551, 3, 86, 43, 0, 550, 548, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, - 551, 553, 1, 0, 0, 0, 552, 545, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, - 568, 1, 0, 0, 0, 554, 555, 5, 116, 0, 0, 555, 556, 3, 10, 5, 0, 556, 557, - 5, 73, 0, 0, 557, 565, 3, 88, 44, 0, 558, 559, 5, 9, 0, 0, 559, 560, 3, - 10, 5, 0, 560, 561, 5, 73, 0, 0, 561, 562, 3, 88, 44, 0, 562, 564, 1, 0, - 0, 0, 563, 558, 1, 0, 0, 0, 564, 567, 1, 0, 0, 0, 565, 563, 1, 0, 0, 0, - 565, 566, 1, 0, 0, 0, 566, 569, 1, 0, 0, 0, 567, 565, 1, 0, 0, 0, 568, - 554, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 69, 1, 0, 0, 0, 570, 575, 3, - 10, 5, 0, 571, 573, 5, 73, 0, 0, 572, 571, 1, 0, 0, 0, 572, 573, 1, 0, - 0, 0, 573, 574, 1, 0, 0, 0, 574, 576, 3, 10, 5, 0, 575, 572, 1, 0, 0, 0, - 575, 576, 1, 0, 0, 0, 576, 587, 1, 0, 0, 0, 577, 578, 5, 7, 0, 0, 578, - 579, 3, 62, 31, 0, 579, 584, 5, 8, 0, 0, 580, 582, 5, 73, 0, 0, 581, 580, - 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 585, 3, 10, - 5, 0, 584, 581, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 587, 1, 0, 0, 0, - 586, 570, 1, 0, 0, 0, 586, 577, 1, 0, 0, 0, 587, 71, 1, 0, 0, 0, 588, 590, - 7, 8, 0, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, - 0, 0, 591, 592, 5, 69, 0, 0, 592, 593, 3, 70, 35, 0, 593, 594, 5, 45, 0, - 0, 594, 595, 3, 86, 43, 0, 595, 73, 1, 0, 0, 0, 596, 601, 3, 86, 43, 0, - 597, 599, 5, 73, 0, 0, 598, 597, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, - 600, 1, 0, 0, 0, 600, 602, 3, 10, 5, 0, 601, 598, 1, 0, 0, 0, 601, 602, - 1, 0, 0, 0, 602, 610, 1, 0, 0, 0, 603, 604, 3, 10, 5, 0, 604, 605, 5, 12, - 0, 0, 605, 607, 1, 0, 0, 0, 606, 603, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, - 607, 608, 1, 0, 0, 0, 608, 610, 5, 14, 0, 0, 609, 596, 1, 0, 0, 0, 609, - 606, 1, 0, 0, 0, 610, 75, 1, 0, 0, 0, 611, 612, 5, 54, 0, 0, 612, 617, - 3, 10, 5, 0, 613, 615, 5, 73, 0, 0, 614, 613, 1, 0, 0, 0, 614, 615, 1, - 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 618, 3, 10, 5, 0, 617, 614, 1, 0, 0, - 0, 617, 618, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 620, 5, 50, 0, 0, 620, - 625, 3, 78, 39, 0, 621, 622, 5, 9, 0, 0, 622, 624, 3, 78, 39, 0, 623, 621, - 1, 0, 0, 0, 624, 627, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 625, 626, 1, 0, - 0, 0, 626, 636, 1, 0, 0, 0, 627, 625, 1, 0, 0, 0, 628, 629, 5, 90, 0, 0, - 629, 633, 3, 70, 35, 0, 630, 632, 3, 72, 36, 0, 631, 630, 1, 0, 0, 0, 632, - 635, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 637, - 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 636, 628, 1, 0, 0, 0, 636, 637, 1, 0, - 0, 0, 637, 640, 1, 0, 0, 0, 638, 639, 5, 91, 0, 0, 639, 641, 3, 86, 43, - 0, 640, 638, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, 77, 1, 0, 0, 0, 642, - 643, 3, 10, 5, 0, 643, 644, 5, 15, 0, 0, 644, 645, 3, 86, 43, 0, 645, 79, - 1, 0, 0, 0, 646, 647, 5, 94, 0, 0, 647, 648, 5, 104, 0, 0, 648, 653, 3, - 10, 5, 0, 649, 651, 5, 73, 0, 0, 650, 649, 1, 0, 0, 0, 650, 651, 1, 0, - 0, 0, 651, 652, 1, 0, 0, 0, 652, 654, 3, 10, 5, 0, 653, 650, 1, 0, 0, 0, - 653, 654, 1, 0, 0, 0, 654, 659, 1, 0, 0, 0, 655, 656, 5, 7, 0, 0, 656, - 657, 3, 12, 6, 0, 657, 658, 5, 8, 0, 0, 658, 660, 1, 0, 0, 0, 659, 655, - 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 676, 1, 0, 0, 0, 661, 662, 5, 95, - 0, 0, 662, 663, 5, 7, 0, 0, 663, 664, 3, 92, 46, 0, 664, 672, 5, 8, 0, - 0, 665, 666, 5, 9, 0, 0, 666, 667, 5, 7, 0, 0, 667, 668, 3, 92, 46, 0, - 668, 669, 5, 8, 0, 0, 669, 671, 1, 0, 0, 0, 670, 665, 1, 0, 0, 0, 671, - 674, 1, 0, 0, 0, 672, 670, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 677, - 1, 0, 0, 0, 674, 672, 1, 0, 0, 0, 675, 677, 3, 62, 31, 0, 676, 661, 1, - 0, 0, 0, 676, 675, 1, 0, 0, 0, 677, 679, 1, 0, 0, 0, 678, 680, 3, 82, 41, - 0, 679, 678, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 81, 1, 0, 0, 0, 681, - 682, 5, 45, 0, 0, 682, 690, 5, 105, 0, 0, 683, 684, 5, 7, 0, 0, 684, 685, - 3, 12, 6, 0, 685, 688, 5, 8, 0, 0, 686, 687, 5, 91, 0, 0, 687, 689, 3, - 86, 43, 0, 688, 686, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 691, 1, 0, - 0, 0, 690, 683, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, - 692, 708, 5, 46, 0, 0, 693, 709, 5, 106, 0, 0, 694, 695, 5, 54, 0, 0, 695, - 696, 5, 50, 0, 0, 696, 701, 3, 78, 39, 0, 697, 698, 5, 9, 0, 0, 698, 700, - 3, 78, 39, 0, 699, 697, 1, 0, 0, 0, 700, 703, 1, 0, 0, 0, 701, 699, 1, - 0, 0, 0, 701, 702, 1, 0, 0, 0, 702, 706, 1, 0, 0, 0, 703, 701, 1, 0, 0, - 0, 704, 705, 5, 91, 0, 0, 705, 707, 3, 86, 43, 0, 706, 704, 1, 0, 0, 0, - 706, 707, 1, 0, 0, 0, 707, 709, 1, 0, 0, 0, 708, 693, 1, 0, 0, 0, 708, - 694, 1, 0, 0, 0, 709, 83, 1, 0, 0, 0, 710, 711, 5, 53, 0, 0, 711, 712, - 5, 90, 0, 0, 712, 717, 3, 10, 5, 0, 713, 715, 5, 73, 0, 0, 714, 713, 1, - 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, 3, 10, 5, - 0, 717, 714, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 721, 1, 0, 0, 0, 719, - 720, 5, 91, 0, 0, 720, 722, 3, 86, 43, 0, 721, 719, 1, 0, 0, 0, 721, 722, - 1, 0, 0, 0, 722, 85, 1, 0, 0, 0, 723, 724, 6, 43, -1, 0, 724, 725, 5, 7, - 0, 0, 725, 726, 3, 86, 43, 0, 726, 728, 5, 8, 0, 0, 727, 729, 3, 16, 8, - 0, 728, 727, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 797, 1, 0, 0, 0, 730, - 731, 7, 0, 0, 0, 731, 797, 3, 86, 43, 20, 732, 734, 3, 8, 4, 0, 733, 735, - 3, 16, 8, 0, 734, 733, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 797, 1, 0, - 0, 0, 736, 743, 3, 94, 47, 0, 737, 738, 5, 117, 0, 0, 738, 739, 5, 7, 0, - 0, 739, 740, 5, 91, 0, 0, 740, 741, 3, 86, 43, 0, 741, 742, 5, 8, 0, 0, - 742, 744, 1, 0, 0, 0, 743, 737, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, - 745, 1, 0, 0, 0, 745, 748, 5, 114, 0, 0, 746, 749, 3, 88, 44, 0, 747, 749, - 5, 130, 0, 0, 748, 746, 1, 0, 0, 0, 748, 747, 1, 0, 0, 0, 749, 797, 1, - 0, 0, 0, 750, 752, 3, 94, 47, 0, 751, 753, 3, 16, 8, 0, 752, 751, 1, 0, - 0, 0, 752, 753, 1, 0, 0, 0, 753, 797, 1, 0, 0, 0, 754, 756, 3, 18, 9, 0, - 755, 757, 3, 16, 8, 0, 756, 755, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, - 797, 1, 0, 0, 0, 758, 759, 3, 10, 5, 0, 759, 760, 5, 12, 0, 0, 760, 762, - 1, 0, 0, 0, 761, 758, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 763, 1, 0, - 0, 0, 763, 765, 3, 10, 5, 0, 764, 766, 3, 16, 8, 0, 765, 764, 1, 0, 0, - 0, 765, 766, 1, 0, 0, 0, 766, 797, 1, 0, 0, 0, 767, 769, 5, 85, 0, 0, 768, - 770, 3, 86, 43, 0, 769, 768, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 772, - 1, 0, 0, 0, 771, 773, 3, 90, 45, 0, 772, 771, 1, 0, 0, 0, 773, 774, 1, - 0, 0, 0, 774, 772, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 778, 1, 0, 0, - 0, 776, 777, 5, 110, 0, 0, 777, 779, 3, 86, 43, 0, 778, 776, 1, 0, 0, 0, - 778, 779, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 5, 88, 0, 0, 781, - 797, 1, 0, 0, 0, 782, 784, 5, 57, 0, 0, 783, 782, 1, 0, 0, 0, 783, 784, - 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 787, 5, 66, 0, 0, 786, 783, 1, 0, - 0, 0, 786, 787, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 789, 5, 7, 0, 0, - 789, 790, 3, 62, 31, 0, 790, 792, 5, 8, 0, 0, 791, 793, 3, 16, 8, 0, 792, - 791, 1, 0, 0, 0, 792, 793, 1, 0, 0, 0, 793, 797, 1, 0, 0, 0, 794, 795, - 5, 57, 0, 0, 795, 797, 3, 86, 43, 3, 796, 723, 1, 0, 0, 0, 796, 730, 1, - 0, 0, 0, 796, 732, 1, 0, 0, 0, 796, 736, 1, 0, 0, 0, 796, 750, 1, 0, 0, - 0, 796, 754, 1, 0, 0, 0, 796, 761, 1, 0, 0, 0, 796, 767, 1, 0, 0, 0, 796, - 786, 1, 0, 0, 0, 796, 794, 1, 0, 0, 0, 797, 883, 1, 0, 0, 0, 798, 799, - 10, 18, 0, 0, 799, 800, 7, 9, 0, 0, 800, 882, 3, 86, 43, 19, 801, 802, - 10, 17, 0, 0, 802, 803, 7, 0, 0, 0, 803, 882, 3, 86, 43, 18, 804, 805, - 10, 9, 0, 0, 805, 806, 5, 13, 0, 0, 806, 882, 3, 86, 43, 10, 807, 809, - 10, 7, 0, 0, 808, 810, 5, 57, 0, 0, 809, 808, 1, 0, 0, 0, 809, 810, 1, - 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 812, 7, 10, 0, 0, 812, 882, 3, 86, - 43, 8, 813, 815, 10, 6, 0, 0, 814, 816, 5, 57, 0, 0, 815, 814, 1, 0, 0, - 0, 815, 816, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 818, 5, 64, 0, 0, 818, - 819, 3, 86, 43, 0, 819, 820, 5, 59, 0, 0, 820, 821, 3, 86, 43, 7, 821, - 882, 1, 0, 0, 0, 822, 823, 10, 5, 0, 0, 823, 824, 7, 11, 0, 0, 824, 882, - 3, 86, 43, 6, 825, 826, 10, 2, 0, 0, 826, 827, 5, 59, 0, 0, 827, 882, 3, - 86, 43, 3, 828, 829, 10, 1, 0, 0, 829, 830, 5, 60, 0, 0, 830, 882, 3, 86, - 43, 2, 831, 832, 10, 22, 0, 0, 832, 833, 5, 12, 0, 0, 833, 835, 3, 10, - 5, 0, 834, 836, 3, 16, 8, 0, 835, 834, 1, 0, 0, 0, 835, 836, 1, 0, 0, 0, - 836, 882, 1, 0, 0, 0, 837, 838, 10, 21, 0, 0, 838, 847, 5, 3, 0, 0, 839, - 848, 3, 86, 43, 0, 840, 842, 3, 86, 43, 0, 841, 840, 1, 0, 0, 0, 841, 842, - 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 845, 5, 5, 0, 0, 844, 846, 3, 86, - 43, 0, 845, 844, 1, 0, 0, 0, 845, 846, 1, 0, 0, 0, 846, 848, 1, 0, 0, 0, - 847, 839, 1, 0, 0, 0, 847, 841, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, - 851, 5, 4, 0, 0, 850, 852, 3, 16, 8, 0, 851, 850, 1, 0, 0, 0, 851, 852, - 1, 0, 0, 0, 852, 882, 1, 0, 0, 0, 853, 854, 10, 19, 0, 0, 854, 855, 5, - 92, 0, 0, 855, 882, 3, 10, 5, 0, 856, 858, 10, 8, 0, 0, 857, 859, 5, 57, - 0, 0, 858, 857, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, - 860, 861, 5, 63, 0, 0, 861, 864, 5, 7, 0, 0, 862, 865, 3, 92, 46, 0, 863, - 865, 3, 62, 31, 0, 864, 862, 1, 0, 0, 0, 864, 863, 1, 0, 0, 0, 865, 866, - 1, 0, 0, 0, 866, 867, 5, 8, 0, 0, 867, 882, 1, 0, 0, 0, 868, 869, 10, 4, - 0, 0, 869, 871, 5, 65, 0, 0, 870, 872, 5, 57, 0, 0, 871, 870, 1, 0, 0, - 0, 871, 872, 1, 0, 0, 0, 872, 879, 1, 0, 0, 0, 873, 874, 5, 89, 0, 0, 874, - 875, 5, 90, 0, 0, 875, 880, 3, 86, 43, 0, 876, 880, 5, 52, 0, 0, 877, 880, - 5, 120, 0, 0, 878, 880, 5, 121, 0, 0, 879, 873, 1, 0, 0, 0, 879, 876, 1, - 0, 0, 0, 879, 877, 1, 0, 0, 0, 879, 878, 1, 0, 0, 0, 880, 882, 1, 0, 0, - 0, 881, 798, 1, 0, 0, 0, 881, 801, 1, 0, 0, 0, 881, 804, 1, 0, 0, 0, 881, - 807, 1, 0, 0, 0, 881, 813, 1, 0, 0, 0, 881, 822, 1, 0, 0, 0, 881, 825, - 1, 0, 0, 0, 881, 828, 1, 0, 0, 0, 881, 831, 1, 0, 0, 0, 881, 837, 1, 0, - 0, 0, 881, 853, 1, 0, 0, 0, 881, 856, 1, 0, 0, 0, 881, 868, 1, 0, 0, 0, - 882, 885, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, - 87, 1, 0, 0, 0, 885, 883, 1, 0, 0, 0, 886, 890, 5, 7, 0, 0, 887, 888, 5, - 115, 0, 0, 888, 889, 5, 79, 0, 0, 889, 891, 3, 92, 46, 0, 890, 887, 1, - 0, 0, 0, 890, 891, 1, 0, 0, 0, 891, 902, 1, 0, 0, 0, 892, 893, 5, 78, 0, - 0, 893, 894, 5, 79, 0, 0, 894, 899, 3, 66, 33, 0, 895, 896, 5, 9, 0, 0, - 896, 898, 3, 66, 33, 0, 897, 895, 1, 0, 0, 0, 898, 901, 1, 0, 0, 0, 899, - 897, 1, 0, 0, 0, 899, 900, 1, 0, 0, 0, 900, 903, 1, 0, 0, 0, 901, 899, - 1, 0, 0, 0, 902, 892, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 904, 1, 0, - 0, 0, 904, 905, 5, 8, 0, 0, 905, 89, 1, 0, 0, 0, 906, 907, 5, 86, 0, 0, - 907, 908, 3, 86, 43, 0, 908, 909, 5, 87, 0, 0, 909, 910, 3, 86, 43, 0, - 910, 91, 1, 0, 0, 0, 911, 916, 3, 86, 43, 0, 912, 913, 5, 9, 0, 0, 913, - 915, 3, 86, 43, 0, 914, 912, 1, 0, 0, 0, 915, 918, 1, 0, 0, 0, 916, 914, - 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 93, 1, 0, 0, 0, 918, 916, 1, 0, - 0, 0, 919, 920, 3, 10, 5, 0, 920, 926, 5, 7, 0, 0, 921, 923, 5, 89, 0, - 0, 922, 921, 1, 0, 0, 0, 922, 923, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, - 927, 3, 92, 46, 0, 925, 927, 5, 14, 0, 0, 926, 922, 1, 0, 0, 0, 926, 925, - 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 929, 5, 8, - 0, 0, 929, 95, 1, 0, 0, 0, 930, 931, 3, 98, 49, 0, 931, 932, 5, 6, 0, 0, - 932, 934, 1, 0, 0, 0, 933, 930, 1, 0, 0, 0, 934, 937, 1, 0, 0, 0, 935, - 933, 1, 0, 0, 0, 935, 936, 1, 0, 0, 0, 936, 97, 1, 0, 0, 0, 937, 935, 1, - 0, 0, 0, 938, 959, 3, 58, 29, 0, 939, 940, 5, 130, 0, 0, 940, 942, 5, 7, - 0, 0, 941, 943, 3, 104, 52, 0, 942, 941, 1, 0, 0, 0, 942, 943, 1, 0, 0, - 0, 943, 944, 1, 0, 0, 0, 944, 959, 5, 8, 0, 0, 945, 946, 3, 20, 10, 0, - 946, 947, 5, 15, 0, 0, 947, 949, 1, 0, 0, 0, 948, 945, 1, 0, 0, 0, 948, - 949, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 951, 5, 130, 0, 0, 951, 952, - 5, 12, 0, 0, 952, 953, 5, 130, 0, 0, 953, 955, 5, 7, 0, 0, 954, 956, 3, - 104, 52, 0, 955, 954, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956, 957, 1, 0, - 0, 0, 957, 959, 5, 8, 0, 0, 958, 938, 1, 0, 0, 0, 958, 939, 1, 0, 0, 0, - 958, 948, 1, 0, 0, 0, 959, 99, 1, 0, 0, 0, 960, 962, 3, 106, 53, 0, 961, - 960, 1, 0, 0, 0, 962, 965, 1, 0, 0, 0, 963, 961, 1, 0, 0, 0, 963, 964, - 1, 0, 0, 0, 964, 101, 1, 0, 0, 0, 965, 963, 1, 0, 0, 0, 966, 967, 6, 51, - -1, 0, 967, 968, 5, 7, 0, 0, 968, 969, 3, 102, 51, 0, 969, 971, 5, 8, 0, - 0, 970, 972, 3, 16, 8, 0, 971, 970, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, - 998, 1, 0, 0, 0, 973, 974, 7, 12, 0, 0, 974, 998, 3, 102, 51, 13, 975, - 977, 3, 8, 4, 0, 976, 978, 3, 16, 8, 0, 977, 976, 1, 0, 0, 0, 977, 978, - 1, 0, 0, 0, 978, 998, 1, 0, 0, 0, 979, 981, 3, 110, 55, 0, 980, 982, 3, - 16, 8, 0, 981, 980, 1, 0, 0, 0, 981, 982, 1, 0, 0, 0, 982, 998, 1, 0, 0, - 0, 983, 985, 3, 18, 9, 0, 984, 986, 3, 16, 8, 0, 985, 984, 1, 0, 0, 0, - 985, 986, 1, 0, 0, 0, 986, 998, 1, 0, 0, 0, 987, 989, 5, 3, 0, 0, 988, - 990, 3, 104, 52, 0, 989, 988, 1, 0, 0, 0, 989, 990, 1, 0, 0, 0, 990, 991, - 1, 0, 0, 0, 991, 993, 5, 4, 0, 0, 992, 994, 3, 16, 8, 0, 993, 992, 1, 0, - 0, 0, 993, 994, 1, 0, 0, 0, 994, 998, 1, 0, 0, 0, 995, 996, 5, 57, 0, 0, - 996, 998, 3, 102, 51, 3, 997, 966, 1, 0, 0, 0, 997, 973, 1, 0, 0, 0, 997, - 975, 1, 0, 0, 0, 997, 979, 1, 0, 0, 0, 997, 983, 1, 0, 0, 0, 997, 987, - 1, 0, 0, 0, 997, 995, 1, 0, 0, 0, 998, 1054, 1, 0, 0, 0, 999, 1000, 10, - 12, 0, 0, 1000, 1001, 7, 9, 0, 0, 1001, 1053, 3, 102, 51, 13, 1002, 1003, - 10, 11, 0, 0, 1003, 1004, 7, 0, 0, 0, 1004, 1053, 3, 102, 51, 12, 1005, - 1006, 10, 6, 0, 0, 1006, 1007, 5, 13, 0, 0, 1007, 1053, 3, 102, 51, 7, - 1008, 1009, 10, 5, 0, 0, 1009, 1010, 7, 11, 0, 0, 1010, 1053, 3, 102, 51, - 6, 1011, 1012, 10, 2, 0, 0, 1012, 1013, 5, 59, 0, 0, 1013, 1053, 3, 102, - 51, 3, 1014, 1015, 10, 1, 0, 0, 1015, 1016, 5, 60, 0, 0, 1016, 1053, 3, - 102, 51, 2, 1017, 1018, 10, 15, 0, 0, 1018, 1019, 5, 12, 0, 0, 1019, 1021, - 5, 130, 0, 0, 1020, 1022, 3, 16, 8, 0, 1021, 1020, 1, 0, 0, 0, 1021, 1022, - 1, 0, 0, 0, 1022, 1053, 1, 0, 0, 0, 1023, 1024, 10, 14, 0, 0, 1024, 1033, - 5, 3, 0, 0, 1025, 1034, 3, 102, 51, 0, 1026, 1028, 3, 102, 51, 0, 1027, - 1026, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, - 1031, 5, 5, 0, 0, 1030, 1032, 3, 102, 51, 0, 1031, 1030, 1, 0, 0, 0, 1031, - 1032, 1, 0, 0, 0, 1032, 1034, 1, 0, 0, 0, 1033, 1025, 1, 0, 0, 0, 1033, - 1027, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1037, 5, 4, 0, 0, 1036, - 1038, 3, 16, 8, 0, 1037, 1036, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, - 1053, 1, 0, 0, 0, 1039, 1040, 10, 4, 0, 0, 1040, 1042, 5, 65, 0, 0, 1041, - 1043, 5, 57, 0, 0, 1042, 1041, 1, 0, 0, 0, 1042, 1043, 1, 0, 0, 0, 1043, - 1050, 1, 0, 0, 0, 1044, 1045, 5, 89, 0, 0, 1045, 1046, 5, 90, 0, 0, 1046, - 1051, 3, 102, 51, 0, 1047, 1051, 5, 52, 0, 0, 1048, 1051, 5, 120, 0, 0, - 1049, 1051, 5, 121, 0, 0, 1050, 1044, 1, 0, 0, 0, 1050, 1047, 1, 0, 0, - 0, 1050, 1048, 1, 0, 0, 0, 1050, 1049, 1, 0, 0, 0, 1051, 1053, 1, 0, 0, - 0, 1052, 999, 1, 0, 0, 0, 1052, 1002, 1, 0, 0, 0, 1052, 1005, 1, 0, 0, - 0, 1052, 1008, 1, 0, 0, 0, 1052, 1011, 1, 0, 0, 0, 1052, 1014, 1, 0, 0, - 0, 1052, 1017, 1, 0, 0, 0, 1052, 1023, 1, 0, 0, 0, 1052, 1039, 1, 0, 0, - 0, 1053, 1056, 1, 0, 0, 0, 1054, 1052, 1, 0, 0, 0, 1054, 1055, 1, 0, 0, - 0, 1055, 103, 1, 0, 0, 0, 1056, 1054, 1, 0, 0, 0, 1057, 1062, 3, 102, 51, - 0, 1058, 1059, 5, 9, 0, 0, 1059, 1061, 3, 102, 51, 0, 1060, 1058, 1, 0, - 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, - 0, 0, 1063, 105, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 131, - 0, 0, 1066, 1067, 3, 14, 7, 0, 1067, 1068, 5, 6, 0, 0, 1068, 1146, 1, 0, - 0, 0, 1069, 1074, 3, 108, 54, 0, 1070, 1071, 5, 9, 0, 0, 1071, 1073, 3, - 108, 54, 0, 1072, 1070, 1, 0, 0, 0, 1073, 1076, 1, 0, 0, 0, 1074, 1072, - 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1077, 1, 0, 0, 0, 1076, 1074, - 1, 0, 0, 0, 1077, 1078, 5, 30, 0, 0, 1078, 1080, 1, 0, 0, 0, 1079, 1069, - 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, - 3, 110, 55, 0, 1082, 1083, 5, 6, 0, 0, 1083, 1146, 1, 0, 0, 0, 1084, 1086, - 3, 102, 51, 0, 1085, 1087, 3, 14, 7, 0, 1086, 1085, 1, 0, 0, 0, 1086, 1087, - 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 5, 30, 0, 0, 1089, 1090, - 3, 102, 51, 0, 1090, 1091, 5, 6, 0, 0, 1091, 1146, 1, 0, 0, 0, 1092, 1093, - 5, 107, 0, 0, 1093, 1094, 5, 131, 0, 0, 1094, 1098, 5, 63, 0, 0, 1095, - 1099, 3, 114, 57, 0, 1096, 1099, 3, 18, 9, 0, 1097, 1099, 3, 58, 29, 0, - 1098, 1095, 1, 0, 0, 0, 1098, 1096, 1, 0, 0, 0, 1098, 1097, 1, 0, 0, 0, - 1099, 1100, 1, 0, 0, 0, 1100, 1104, 5, 1, 0, 0, 1101, 1103, 3, 106, 53, - 0, 1102, 1101, 1, 0, 0, 0, 1103, 1106, 1, 0, 0, 0, 1104, 1102, 1, 0, 0, - 0, 1104, 1105, 1, 0, 0, 0, 1105, 1107, 1, 0, 0, 0, 1106, 1104, 1, 0, 0, - 0, 1107, 1108, 5, 2, 0, 0, 1108, 1146, 1, 0, 0, 0, 1109, 1110, 5, 108, - 0, 0, 1110, 1115, 3, 112, 56, 0, 1111, 1112, 5, 109, 0, 0, 1112, 1114, - 3, 112, 56, 0, 1113, 1111, 1, 0, 0, 0, 1114, 1117, 1, 0, 0, 0, 1115, 1113, - 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1127, 1, 0, 0, 0, 1117, 1115, - 1, 0, 0, 0, 1118, 1119, 5, 110, 0, 0, 1119, 1123, 5, 1, 0, 0, 1120, 1122, - 3, 106, 53, 0, 1121, 1120, 1, 0, 0, 0, 1122, 1125, 1, 0, 0, 0, 1123, 1121, - 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1126, 1, 0, 0, 0, 1125, 1123, - 1, 0, 0, 0, 1126, 1128, 5, 2, 0, 0, 1127, 1118, 1, 0, 0, 0, 1127, 1128, - 1, 0, 0, 0, 1128, 1146, 1, 0, 0, 0, 1129, 1130, 3, 58, 29, 0, 1130, 1131, - 5, 6, 0, 0, 1131, 1146, 1, 0, 0, 0, 1132, 1133, 5, 111, 0, 0, 1133, 1146, - 5, 6, 0, 0, 1134, 1137, 5, 112, 0, 0, 1135, 1138, 3, 104, 52, 0, 1136, - 1138, 3, 58, 29, 0, 1137, 1135, 1, 0, 0, 0, 1137, 1136, 1, 0, 0, 0, 1137, - 1138, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, 1146, 5, 6, 0, 0, 1140, - 1141, 5, 112, 0, 0, 1141, 1142, 5, 113, 0, 0, 1142, 1143, 3, 104, 52, 0, - 1143, 1144, 5, 6, 0, 0, 1144, 1146, 1, 0, 0, 0, 1145, 1065, 1, 0, 0, 0, - 1145, 1079, 1, 0, 0, 0, 1145, 1084, 1, 0, 0, 0, 1145, 1092, 1, 0, 0, 0, - 1145, 1109, 1, 0, 0, 0, 1145, 1129, 1, 0, 0, 0, 1145, 1132, 1, 0, 0, 0, - 1145, 1134, 1, 0, 0, 0, 1145, 1140, 1, 0, 0, 0, 1146, 107, 1, 0, 0, 0, - 1147, 1148, 7, 13, 0, 0, 1148, 109, 1, 0, 0, 0, 1149, 1150, 5, 130, 0, - 0, 1150, 1152, 5, 7, 0, 0, 1151, 1153, 3, 104, 52, 0, 1152, 1151, 1, 0, - 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 1155, 5, 8, - 0, 0, 1155, 111, 1, 0, 0, 0, 1156, 1157, 3, 102, 51, 0, 1157, 1161, 5, - 1, 0, 0, 1158, 1160, 3, 106, 53, 0, 1159, 1158, 1, 0, 0, 0, 1160, 1163, - 1, 0, 0, 0, 1161, 1159, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1164, - 1, 0, 0, 0, 1163, 1161, 1, 0, 0, 0, 1164, 1165, 5, 2, 0, 0, 1165, 113, - 1, 0, 0, 0, 1166, 1167, 3, 102, 51, 0, 1167, 1168, 5, 31, 0, 0, 1168, 1169, - 3, 102, 51, 0, 1169, 115, 1, 0, 0, 0, 166, 130, 134, 142, 148, 155, 164, - 168, 180, 188, 190, 204, 207, 227, 232, 246, 250, 260, 272, 285, 291, 296, - 298, 301, 306, 312, 317, 320, 327, 337, 348, 354, 360, 366, 373, 380, 386, - 395, 402, 408, 411, 419, 429, 436, 443, 446, 452, 461, 464, 467, 480, 490, - 493, 497, 501, 505, 509, 513, 517, 521, 528, 536, 539, 543, 550, 552, 565, - 568, 572, 575, 581, 584, 586, 589, 598, 601, 606, 609, 614, 617, 625, 633, - 636, 640, 650, 653, 659, 672, 676, 679, 688, 690, 701, 706, 708, 714, 717, - 721, 728, 734, 743, 748, 752, 756, 761, 765, 769, 774, 778, 783, 786, 792, - 796, 809, 815, 835, 841, 845, 847, 851, 858, 864, 871, 879, 881, 883, 890, - 899, 902, 916, 922, 926, 935, 942, 948, 955, 958, 963, 971, 977, 981, 985, - 989, 993, 997, 1021, 1027, 1031, 1033, 1037, 1042, 1050, 1052, 1054, 1062, - 1074, 1079, 1086, 1098, 1104, 1115, 1123, 1127, 1137, 1145, 1152, 1161, + 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, + 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, + 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, + 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 1, 0, 4, 0, 156, 8, 0, + 11, 0, 12, 0, 157, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, + 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 3, 5, 176, 8, 5, 1, 5, 1, 5, + 3, 5, 180, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 188, 8, 5, 1, + 6, 1, 6, 1, 6, 1, 6, 3, 6, 194, 8, 6, 1, 7, 1, 7, 1, 7, 5, 7, 199, 8, 7, + 10, 7, 12, 7, 202, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 210, + 8, 8, 1, 8, 1, 8, 3, 8, 214, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, + 1, 11, 1, 11, 5, 11, 224, 8, 11, 10, 11, 12, 11, 227, 9, 11, 1, 12, 1, + 12, 1, 12, 1, 12, 1, 12, 5, 12, 234, 8, 12, 10, 12, 12, 12, 237, 9, 12, + 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 248, + 8, 13, 10, 13, 12, 13, 251, 9, 13, 3, 13, 253, 8, 13, 1, 13, 1, 13, 1, + 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, + 1, 15, 1, 15, 1, 15, 5, 15, 271, 8, 15, 10, 15, 12, 15, 274, 9, 15, 1, + 15, 1, 15, 3, 15, 278, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, + 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 292, 8, 16, 5, 16, 294, + 8, 16, 10, 16, 12, 16, 297, 9, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, + 17, 304, 8, 17, 10, 17, 12, 17, 307, 9, 17, 1, 18, 1, 18, 1, 18, 5, 18, + 312, 8, 18, 10, 18, 12, 18, 315, 9, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, + 19, 1, 19, 1, 20, 3, 20, 324, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, + 1, 20, 1, 21, 1, 21, 1, 21, 3, 21, 335, 8, 21, 1, 21, 1, 21, 1, 21, 1, + 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 346, 8, 21, 10, 21, 12, 21, + 349, 9, 21, 1, 22, 1, 22, 1, 22, 3, 22, 354, 8, 22, 1, 22, 1, 22, 1, 22, + 3, 22, 359, 8, 22, 3, 22, 361, 8, 22, 1, 22, 3, 22, 364, 8, 22, 1, 22, + 1, 22, 1, 22, 3, 22, 369, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 375, + 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 380, 8, 22, 1, 22, 3, 22, 383, 8, 22, + 1, 23, 1, 23, 1, 23, 5, 23, 388, 8, 23, 10, 23, 12, 23, 391, 9, 23, 1, + 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 398, 8, 24, 10, 24, 12, 24, 401, + 9, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 409, 8, 25, 10, + 25, 12, 25, 412, 9, 25, 1, 26, 1, 26, 1, 26, 3, 26, 417, 8, 26, 1, 26, + 1, 26, 1, 26, 1, 26, 3, 26, 423, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, + 26, 429, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, + 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 444, 8, 27, 1, 28, 1, 28, 1, + 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 456, 8, 28, + 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 466, 8, + 29, 10, 29, 12, 29, 469, 9, 29, 3, 29, 471, 8, 29, 1, 30, 1, 30, 1, 31, + 5, 31, 476, 8, 31, 10, 31, 12, 31, 479, 9, 31, 1, 31, 1, 31, 1, 31, 1, + 31, 3, 31, 485, 8, 31, 1, 31, 1, 31, 4, 31, 489, 8, 31, 11, 31, 12, 31, + 490, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 5, 32, 498, 8, 32, 10, 32, 12, + 32, 501, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 507, 8, 32, 1, 32, 1, + 32, 4, 32, 511, 8, 32, 11, 32, 12, 32, 512, 1, 32, 3, 32, 516, 8, 32, 1, + 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 524, 8, 33, 1, 33, 1, 33, + 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 534, 8, 33, 1, 34, 1, + 34, 1, 34, 1, 35, 1, 35, 3, 35, 541, 8, 35, 1, 35, 1, 35, 1, 35, 5, 35, + 546, 8, 35, 10, 35, 12, 35, 549, 9, 35, 3, 35, 551, 8, 35, 1, 35, 1, 35, + 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 561, 8, 35, 1, 36, 1, + 36, 1, 36, 1, 36, 1, 36, 5, 36, 568, 8, 36, 10, 36, 12, 36, 571, 9, 36, + 3, 36, 573, 8, 36, 1, 36, 3, 36, 576, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, + 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 590, 8, + 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 596, 8, 37, 5, 37, 598, 8, 37, 10, + 37, 12, 37, 601, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 607, 8, 38, + 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, + 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, + 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 634, 8, 39, 1, 40, 1, 40, 1, 40, 1, + 40, 1, 40, 1, 40, 1, 40, 5, 40, 643, 8, 40, 10, 40, 12, 40, 646, 9, 40, + 1, 40, 1, 40, 1, 40, 5, 40, 651, 8, 40, 10, 40, 12, 40, 654, 9, 40, 1, + 40, 1, 40, 1, 40, 1, 40, 3, 40, 660, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, + 1, 41, 1, 41, 1, 41, 3, 41, 669, 8, 41, 1, 41, 3, 41, 672, 8, 41, 1, 41, + 1, 41, 3, 41, 676, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, + 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, + 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, + 47, 1, 48, 1, 48, 3, 48, 708, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, + 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 722, 8, 49, 1, + 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 730, 8, 50, 10, 50, 12, 50, + 733, 9, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 740, 8, 50, 10, 50, + 12, 50, 743, 9, 50, 3, 50, 745, 8, 50, 1, 50, 1, 50, 3, 50, 749, 8, 50, + 1, 50, 1, 50, 3, 50, 753, 8, 50, 1, 51, 1, 51, 3, 51, 757, 8, 51, 1, 51, + 1, 51, 3, 51, 761, 8, 51, 1, 52, 1, 52, 3, 52, 765, 8, 52, 1, 52, 1, 52, + 3, 52, 769, 8, 52, 1, 53, 1, 53, 3, 53, 773, 8, 53, 1, 53, 1, 53, 1, 53, + 5, 53, 778, 8, 53, 10, 53, 12, 53, 781, 9, 53, 1, 53, 1, 53, 1, 53, 5, + 53, 786, 8, 53, 10, 53, 12, 53, 789, 9, 53, 3, 53, 791, 8, 53, 1, 53, 1, + 53, 3, 53, 795, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 802, 8, + 53, 3, 53, 804, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, + 1, 53, 1, 53, 5, 53, 815, 8, 53, 10, 53, 12, 53, 818, 9, 53, 3, 53, 820, + 8, 53, 1, 54, 1, 54, 3, 54, 824, 8, 54, 1, 54, 3, 54, 827, 8, 54, 1, 54, + 1, 54, 1, 54, 1, 54, 3, 54, 833, 8, 54, 1, 54, 3, 54, 836, 8, 54, 3, 54, + 838, 8, 54, 1, 55, 3, 55, 841, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, + 1, 56, 1, 56, 3, 56, 850, 8, 56, 1, 56, 3, 56, 853, 8, 56, 1, 56, 1, 56, + 1, 56, 3, 56, 858, 8, 56, 1, 56, 3, 56, 861, 8, 56, 1, 57, 1, 57, 1, 57, + 3, 57, 866, 8, 57, 1, 57, 3, 57, 869, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, + 5, 57, 875, 8, 57, 10, 57, 12, 57, 878, 9, 57, 1, 57, 1, 57, 1, 57, 5, + 57, 883, 8, 57, 10, 57, 12, 57, 886, 9, 57, 3, 57, 888, 8, 57, 1, 57, 1, + 57, 3, 57, 892, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, + 1, 59, 3, 59, 902, 8, 59, 1, 59, 3, 59, 905, 8, 59, 1, 59, 1, 59, 1, 59, + 1, 59, 3, 59, 911, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, + 59, 1, 59, 1, 59, 5, 59, 922, 8, 59, 10, 59, 12, 59, 925, 9, 59, 1, 59, + 3, 59, 928, 8, 59, 1, 59, 3, 59, 931, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, + 1, 60, 1, 60, 1, 60, 3, 60, 940, 8, 60, 3, 60, 942, 8, 60, 1, 60, 1, 60, + 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 951, 8, 60, 10, 60, 12, 60, 954, + 9, 60, 1, 60, 1, 60, 3, 60, 958, 8, 60, 3, 60, 960, 8, 60, 1, 61, 1, 61, + 1, 61, 1, 61, 3, 61, 966, 8, 61, 1, 61, 3, 61, 969, 8, 61, 1, 61, 1, 61, + 3, 61, 973, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 980, 8, 62, + 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 986, 8, 62, 1, 62, 1, 62, 1, 62, 1, + 62, 1, 62, 1, 62, 1, 62, 3, 62, 995, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, + 1000, 8, 62, 1, 62, 1, 62, 3, 62, 1004, 8, 62, 1, 62, 1, 62, 3, 62, 1008, + 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1013, 8, 62, 1, 62, 1, 62, 3, 62, 1017, + 8, 62, 1, 62, 1, 62, 3, 62, 1021, 8, 62, 1, 62, 4, 62, 1024, 8, 62, 11, + 62, 12, 62, 1025, 1, 62, 1, 62, 3, 62, 1030, 8, 62, 1, 62, 1, 62, 1, 62, + 3, 62, 1035, 8, 62, 1, 62, 3, 62, 1038, 8, 62, 1, 62, 1, 62, 1, 62, 1, + 62, 3, 62, 1044, 8, 62, 1, 62, 1, 62, 3, 62, 1048, 8, 62, 1, 62, 1, 62, + 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1061, + 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1067, 8, 62, 1, 62, 1, 62, 1, + 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, + 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1087, 8, 62, 1, 62, 1, 62, 1, + 62, 1, 62, 3, 62, 1093, 8, 62, 1, 62, 1, 62, 3, 62, 1097, 8, 62, 3, 62, + 1099, 8, 62, 1, 62, 1, 62, 3, 62, 1103, 8, 62, 1, 62, 1, 62, 1, 62, 1, + 62, 1, 62, 3, 62, 1110, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1116, + 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1123, 8, 62, 1, 62, 1, + 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1131, 8, 62, 5, 62, 1133, 8, 62, + 10, 62, 12, 62, 1136, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1142, 8, + 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 5, 63, 1149, 8, 63, 10, 63, 12, + 63, 1152, 9, 63, 3, 63, 1154, 8, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, + 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 5, 65, 1166, 8, 65, 10, 65, 12, 65, + 1169, 9, 65, 1, 66, 1, 66, 1, 66, 3, 66, 1174, 8, 66, 1, 66, 1, 66, 3, + 66, 1178, 8, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 5, 67, 1185, 8, 67, + 10, 67, 12, 67, 1188, 9, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1194, 8, + 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1200, 8, 68, 1, 68, 1, 68, 1, 68, + 1, 68, 1, 68, 3, 68, 1207, 8, 68, 1, 68, 3, 68, 1210, 8, 68, 1, 69, 5, + 69, 1213, 8, 69, 10, 69, 12, 69, 1216, 9, 69, 1, 70, 1, 70, 1, 70, 1, 70, + 1, 70, 3, 70, 1223, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1229, 8, + 70, 1, 70, 1, 70, 3, 70, 1233, 8, 70, 1, 70, 1, 70, 3, 70, 1237, 8, 70, + 1, 70, 1, 70, 3, 70, 1241, 8, 70, 1, 70, 1, 70, 3, 70, 1245, 8, 70, 1, + 70, 1, 70, 3, 70, 1249, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, + 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, + 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1273, 8, 70, 1, 70, 1, 70, + 1, 70, 1, 70, 3, 70, 1279, 8, 70, 1, 70, 1, 70, 3, 70, 1283, 8, 70, 3, + 70, 1285, 8, 70, 1, 70, 1, 70, 3, 70, 1289, 8, 70, 1, 70, 1, 70, 1, 70, + 3, 70, 1294, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1302, + 8, 70, 5, 70, 1304, 8, 70, 10, 70, 12, 70, 1307, 9, 70, 1, 71, 1, 71, 1, + 71, 5, 71, 1312, 8, 71, 10, 71, 12, 71, 1315, 9, 71, 1, 72, 1, 72, 1, 72, + 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 1324, 8, 72, 10, 72, 12, 72, 1327, 9, + 72, 1, 72, 1, 72, 3, 72, 1331, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, + 3, 72, 1338, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, + 72, 1, 72, 1, 72, 3, 72, 1350, 8, 72, 1, 72, 1, 72, 5, 72, 1354, 8, 72, + 10, 72, 12, 72, 1357, 9, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, + 5, 72, 1365, 8, 72, 10, 72, 12, 72, 1368, 9, 72, 1, 72, 1, 72, 1, 72, 5, + 72, 1373, 8, 72, 10, 72, 12, 72, 1376, 9, 72, 1, 72, 3, 72, 1379, 8, 72, + 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1389, 8, + 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1397, 8, 72, 1, 73, + 1, 73, 1, 74, 1, 74, 1, 74, 3, 74, 1404, 8, 74, 1, 74, 1, 74, 1, 75, 1, + 75, 1, 75, 5, 75, 1411, 8, 75, 10, 75, 12, 75, 1414, 9, 75, 1, 75, 1, 75, + 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 0, 2, 124, 140, 77, 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, 0, 16, 1, 0, 20, 21, 1, 0, 129, 130, 1, 0, 140, 141, + 3, 0, 52, 52, 56, 56, 67, 67, 1, 0, 64, 65, 1, 0, 62, 63, 1, 0, 38, 41, + 2, 0, 46, 46, 59, 59, 1, 0, 83, 84, 1, 0, 110, 111, 2, 0, 79, 81, 105, + 105, 3, 0, 14, 14, 19, 19, 22, 22, 1, 0, 70, 71, 2, 0, 15, 16, 23, 27, + 2, 0, 11, 11, 20, 21, 2, 0, 29, 29, 140, 140, 1612, 0, 155, 1, 0, 0, 0, + 2, 161, 1, 0, 0, 0, 4, 164, 1, 0, 0, 0, 6, 167, 1, 0, 0, 0, 8, 170, 1, + 0, 0, 0, 10, 187, 1, 0, 0, 0, 12, 193, 1, 0, 0, 0, 14, 195, 1, 0, 0, 0, + 16, 203, 1, 0, 0, 0, 18, 215, 1, 0, 0, 0, 20, 218, 1, 0, 0, 0, 22, 220, + 1, 0, 0, 0, 24, 228, 1, 0, 0, 0, 26, 238, 1, 0, 0, 0, 28, 256, 1, 0, 0, + 0, 30, 260, 1, 0, 0, 0, 32, 283, 1, 0, 0, 0, 34, 300, 1, 0, 0, 0, 36, 308, + 1, 0, 0, 0, 38, 316, 1, 0, 0, 0, 40, 323, 1, 0, 0, 0, 42, 334, 1, 0, 0, + 0, 44, 360, 1, 0, 0, 0, 46, 384, 1, 0, 0, 0, 48, 392, 1, 0, 0, 0, 50, 402, + 1, 0, 0, 0, 52, 422, 1, 0, 0, 0, 54, 443, 1, 0, 0, 0, 56, 445, 1, 0, 0, + 0, 58, 457, 1, 0, 0, 0, 60, 472, 1, 0, 0, 0, 62, 477, 1, 0, 0, 0, 64, 499, + 1, 0, 0, 0, 66, 521, 1, 0, 0, 0, 68, 535, 1, 0, 0, 0, 70, 550, 1, 0, 0, + 0, 72, 562, 1, 0, 0, 0, 74, 582, 1, 0, 0, 0, 76, 606, 1, 0, 0, 0, 78, 633, + 1, 0, 0, 0, 80, 635, 1, 0, 0, 0, 82, 661, 1, 0, 0, 0, 84, 677, 1, 0, 0, + 0, 86, 682, 1, 0, 0, 0, 88, 686, 1, 0, 0, 0, 90, 692, 1, 0, 0, 0, 92, 696, + 1, 0, 0, 0, 94, 701, 1, 0, 0, 0, 96, 705, 1, 0, 0, 0, 98, 717, 1, 0, 0, + 0, 100, 725, 1, 0, 0, 0, 102, 760, 1, 0, 0, 0, 104, 762, 1, 0, 0, 0, 106, + 770, 1, 0, 0, 0, 108, 837, 1, 0, 0, 0, 110, 840, 1, 0, 0, 0, 112, 860, + 1, 0, 0, 0, 114, 862, 1, 0, 0, 0, 116, 893, 1, 0, 0, 0, 118, 897, 1, 0, + 0, 0, 120, 932, 1, 0, 0, 0, 122, 961, 1, 0, 0, 0, 124, 1047, 1, 0, 0, 0, + 126, 1137, 1, 0, 0, 0, 128, 1157, 1, 0, 0, 0, 130, 1162, 1, 0, 0, 0, 132, + 1170, 1, 0, 0, 0, 134, 1186, 1, 0, 0, 0, 136, 1209, 1, 0, 0, 0, 138, 1214, + 1, 0, 0, 0, 140, 1248, 1, 0, 0, 0, 142, 1308, 1, 0, 0, 0, 144, 1396, 1, + 0, 0, 0, 146, 1398, 1, 0, 0, 0, 148, 1400, 1, 0, 0, 0, 150, 1407, 1, 0, + 0, 0, 152, 1417, 1, 0, 0, 0, 154, 156, 3, 68, 34, 0, 155, 154, 1, 0, 0, + 0, 156, 157, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, + 159, 1, 0, 0, 0, 159, 160, 5, 0, 0, 1, 160, 1, 1, 0, 0, 0, 161, 162, 3, + 24, 12, 0, 162, 163, 5, 0, 0, 1, 163, 3, 1, 0, 0, 0, 164, 165, 3, 68, 34, + 0, 165, 166, 5, 0, 0, 1, 166, 5, 1, 0, 0, 0, 167, 168, 3, 134, 67, 0, 168, + 169, 5, 0, 0, 1, 169, 7, 1, 0, 0, 0, 170, 171, 3, 138, 69, 0, 171, 172, + 5, 0, 0, 1, 172, 9, 1, 0, 0, 0, 173, 188, 5, 128, 0, 0, 174, 176, 7, 0, + 0, 0, 175, 174, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, + 177, 188, 5, 131, 0, 0, 178, 180, 7, 0, 0, 0, 179, 178, 1, 0, 0, 0, 179, + 180, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 182, 5, 131, 0, 0, 182, 183, + 5, 12, 0, 0, 183, 188, 5, 131, 0, 0, 184, 188, 7, 1, 0, 0, 185, 188, 5, + 61, 0, 0, 186, 188, 5, 132, 0, 0, 187, 173, 1, 0, 0, 0, 187, 175, 1, 0, + 0, 0, 187, 179, 1, 0, 0, 0, 187, 184, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, + 187, 186, 1, 0, 0, 0, 188, 11, 1, 0, 0, 0, 189, 190, 5, 32, 0, 0, 190, + 191, 5, 139, 0, 0, 191, 194, 5, 32, 0, 0, 192, 194, 5, 139, 0, 0, 193, + 189, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 13, 1, 0, 0, 0, 195, 200, 3, + 12, 6, 0, 196, 197, 5, 9, 0, 0, 197, 199, 3, 12, 6, 0, 198, 196, 1, 0, + 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, + 201, 15, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 209, 5, 139, 0, 0, 204, + 205, 5, 7, 0, 0, 205, 206, 5, 131, 0, 0, 206, 207, 5, 9, 0, 0, 207, 208, + 5, 131, 0, 0, 208, 210, 5, 8, 0, 0, 209, 204, 1, 0, 0, 0, 209, 210, 1, + 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 212, 5, 3, 0, 0, 212, 214, 5, 4, 0, + 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 17, 1, 0, 0, 0, 215, + 216, 5, 28, 0, 0, 216, 217, 3, 16, 8, 0, 217, 19, 1, 0, 0, 0, 218, 219, + 7, 2, 0, 0, 219, 21, 1, 0, 0, 0, 220, 225, 3, 20, 10, 0, 221, 222, 5, 9, + 0, 0, 222, 224, 3, 20, 10, 0, 223, 221, 1, 0, 0, 0, 224, 227, 1, 0, 0, + 0, 225, 223, 1, 0, 0, 0, 225, 226, 1, 0, 0, 0, 226, 23, 1, 0, 0, 0, 227, + 225, 1, 0, 0, 0, 228, 235, 3, 28, 14, 0, 229, 234, 3, 30, 15, 0, 230, 234, + 3, 32, 16, 0, 231, 234, 3, 62, 31, 0, 232, 234, 3, 64, 32, 0, 233, 229, + 1, 0, 0, 0, 233, 230, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 233, 232, 1, 0, + 0, 0, 234, 237, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, + 236, 25, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 238, 239, 5, 141, 0, 0, 239, + 252, 5, 7, 0, 0, 240, 241, 5, 139, 0, 0, 241, 242, 5, 15, 0, 0, 242, 249, + 3, 10, 5, 0, 243, 244, 5, 9, 0, 0, 244, 245, 5, 139, 0, 0, 245, 246, 5, + 15, 0, 0, 246, 248, 3, 10, 5, 0, 247, 243, 1, 0, 0, 0, 248, 251, 1, 0, + 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 253, 1, 0, 0, 0, + 251, 249, 1, 0, 0, 0, 252, 240, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, + 254, 1, 0, 0, 0, 254, 255, 5, 8, 0, 0, 255, 27, 1, 0, 0, 0, 256, 257, 5, + 33, 0, 0, 257, 258, 5, 139, 0, 0, 258, 259, 5, 6, 0, 0, 259, 29, 1, 0, + 0, 0, 260, 261, 5, 34, 0, 0, 261, 277, 5, 139, 0, 0, 262, 263, 5, 1, 0, + 0, 263, 264, 5, 139, 0, 0, 264, 265, 5, 5, 0, 0, 265, 272, 3, 10, 5, 0, + 266, 267, 5, 9, 0, 0, 267, 268, 5, 139, 0, 0, 268, 269, 5, 5, 0, 0, 269, + 271, 3, 10, 5, 0, 270, 266, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272, 270, + 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 275, 1, 0, 0, 0, 274, 272, 1, 0, + 0, 0, 275, 276, 5, 2, 0, 0, 276, 278, 1, 0, 0, 0, 277, 262, 1, 0, 0, 0, + 277, 278, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 280, 5, 82, 0, 0, 280, + 281, 5, 139, 0, 0, 281, 282, 5, 6, 0, 0, 282, 31, 1, 0, 0, 0, 283, 284, + 5, 35, 0, 0, 284, 285, 5, 139, 0, 0, 285, 286, 5, 1, 0, 0, 286, 295, 3, + 34, 17, 0, 287, 291, 5, 9, 0, 0, 288, 292, 3, 34, 17, 0, 289, 292, 3, 38, + 19, 0, 290, 292, 3, 42, 21, 0, 291, 288, 1, 0, 0, 0, 291, 289, 1, 0, 0, + 0, 291, 290, 1, 0, 0, 0, 292, 294, 1, 0, 0, 0, 293, 287, 1, 0, 0, 0, 294, + 297, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, + 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, 299, 5, 2, 0, 0, 299, 33, 1, 0, + 0, 0, 300, 301, 5, 139, 0, 0, 301, 305, 3, 16, 8, 0, 302, 304, 3, 52, 26, + 0, 303, 302, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, + 306, 1, 0, 0, 0, 306, 35, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 309, 5, + 139, 0, 0, 309, 313, 3, 16, 8, 0, 310, 312, 3, 54, 27, 0, 311, 310, 1, + 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, + 0, 314, 37, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 142, 0, 0, 317, + 318, 7, 3, 0, 0, 318, 319, 5, 7, 0, 0, 319, 320, 3, 14, 7, 0, 320, 321, + 5, 8, 0, 0, 321, 39, 1, 0, 0, 0, 322, 324, 5, 56, 0, 0, 323, 322, 1, 0, + 0, 0, 323, 324, 1, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 326, 5, 67, 0, 0, + 326, 327, 3, 12, 6, 0, 327, 328, 5, 7, 0, 0, 328, 329, 3, 14, 7, 0, 329, + 330, 5, 8, 0, 0, 330, 41, 1, 0, 0, 0, 331, 332, 5, 51, 0, 0, 332, 335, + 5, 53, 0, 0, 333, 335, 5, 133, 0, 0, 334, 331, 1, 0, 0, 0, 334, 333, 1, + 0, 0, 0, 335, 336, 1, 0, 0, 0, 336, 337, 5, 7, 0, 0, 337, 338, 3, 14, 7, + 0, 338, 339, 5, 8, 0, 0, 339, 340, 7, 4, 0, 0, 340, 341, 5, 139, 0, 0, + 341, 342, 5, 7, 0, 0, 342, 343, 3, 14, 7, 0, 343, 347, 5, 8, 0, 0, 344, + 346, 3, 44, 22, 0, 345, 344, 1, 0, 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, + 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 43, 1, 0, 0, 0, 349, 347, 1, 0, + 0, 0, 350, 351, 5, 54, 0, 0, 351, 354, 5, 63, 0, 0, 352, 354, 5, 134, 0, + 0, 353, 350, 1, 0, 0, 0, 353, 352, 1, 0, 0, 0, 354, 361, 1, 0, 0, 0, 355, + 356, 5, 54, 0, 0, 356, 359, 5, 62, 0, 0, 357, 359, 5, 135, 0, 0, 358, 355, + 1, 0, 0, 0, 358, 357, 1, 0, 0, 0, 359, 361, 1, 0, 0, 0, 360, 353, 1, 0, + 0, 0, 360, 358, 1, 0, 0, 0, 361, 363, 1, 0, 0, 0, 362, 364, 5, 55, 0, 0, + 363, 362, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 382, 1, 0, 0, 0, 365, + 366, 5, 92, 0, 0, 366, 369, 5, 36, 0, 0, 367, 369, 5, 138, 0, 0, 368, 365, + 1, 0, 0, 0, 368, 367, 1, 0, 0, 0, 369, 383, 1, 0, 0, 0, 370, 383, 5, 57, + 0, 0, 371, 372, 5, 59, 0, 0, 372, 375, 5, 61, 0, 0, 373, 375, 5, 137, 0, + 0, 374, 371, 1, 0, 0, 0, 374, 373, 1, 0, 0, 0, 375, 383, 1, 0, 0, 0, 376, + 377, 5, 59, 0, 0, 377, 380, 5, 60, 0, 0, 378, 380, 5, 136, 0, 0, 379, 376, + 1, 0, 0, 0, 379, 378, 1, 0, 0, 0, 380, 383, 1, 0, 0, 0, 381, 383, 5, 58, + 0, 0, 382, 368, 1, 0, 0, 0, 382, 370, 1, 0, 0, 0, 382, 374, 1, 0, 0, 0, + 382, 379, 1, 0, 0, 0, 382, 381, 1, 0, 0, 0, 383, 45, 1, 0, 0, 0, 384, 389, + 3, 16, 8, 0, 385, 386, 5, 9, 0, 0, 386, 388, 3, 16, 8, 0, 387, 385, 1, + 0, 0, 0, 388, 391, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 389, 390, 1, 0, 0, + 0, 390, 47, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 392, 393, 5, 139, 0, 0, 393, + 399, 3, 16, 8, 0, 394, 395, 5, 9, 0, 0, 395, 396, 5, 139, 0, 0, 396, 398, + 3, 16, 8, 0, 397, 394, 1, 0, 0, 0, 398, 401, 1, 0, 0, 0, 399, 397, 1, 0, + 0, 0, 399, 400, 1, 0, 0, 0, 400, 49, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, + 402, 403, 3, 20, 10, 0, 403, 410, 3, 16, 8, 0, 404, 405, 5, 9, 0, 0, 405, + 406, 3, 20, 10, 0, 406, 407, 3, 16, 8, 0, 407, 409, 1, 0, 0, 0, 408, 404, + 1, 0, 0, 0, 409, 412, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, + 0, 0, 411, 51, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 413, 423, 5, 139, 0, 0, + 414, 416, 5, 52, 0, 0, 415, 417, 5, 53, 0, 0, 416, 415, 1, 0, 0, 0, 416, + 417, 1, 0, 0, 0, 417, 423, 1, 0, 0, 0, 418, 419, 5, 66, 0, 0, 419, 423, + 5, 61, 0, 0, 420, 423, 5, 60, 0, 0, 421, 423, 5, 56, 0, 0, 422, 413, 1, + 0, 0, 0, 422, 414, 1, 0, 0, 0, 422, 418, 1, 0, 0, 0, 422, 420, 1, 0, 0, + 0, 422, 421, 1, 0, 0, 0, 423, 428, 1, 0, 0, 0, 424, 425, 5, 7, 0, 0, 425, + 426, 3, 10, 5, 0, 426, 427, 5, 8, 0, 0, 427, 429, 1, 0, 0, 0, 428, 424, + 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 53, 1, 0, 0, 0, 430, 431, 5, 52, + 0, 0, 431, 444, 5, 53, 0, 0, 432, 444, 5, 56, 0, 0, 433, 434, 5, 66, 0, + 0, 434, 444, 5, 61, 0, 0, 435, 436, 5, 60, 0, 0, 436, 444, 3, 10, 5, 0, + 437, 444, 3, 58, 29, 0, 438, 439, 5, 50, 0, 0, 439, 440, 5, 7, 0, 0, 440, + 441, 3, 124, 62, 0, 441, 442, 5, 8, 0, 0, 442, 444, 1, 0, 0, 0, 443, 430, + 1, 0, 0, 0, 443, 432, 1, 0, 0, 0, 443, 433, 1, 0, 0, 0, 443, 435, 1, 0, + 0, 0, 443, 437, 1, 0, 0, 0, 443, 438, 1, 0, 0, 0, 444, 55, 1, 0, 0, 0, + 445, 446, 5, 54, 0, 0, 446, 455, 7, 5, 0, 0, 447, 448, 5, 59, 0, 0, 448, + 456, 5, 61, 0, 0, 449, 450, 5, 59, 0, 0, 450, 456, 5, 60, 0, 0, 451, 456, + 5, 58, 0, 0, 452, 453, 5, 92, 0, 0, 453, 456, 5, 36, 0, 0, 454, 456, 5, + 57, 0, 0, 455, 447, 1, 0, 0, 0, 455, 449, 1, 0, 0, 0, 455, 451, 1, 0, 0, + 0, 455, 452, 1, 0, 0, 0, 455, 454, 1, 0, 0, 0, 456, 57, 1, 0, 0, 0, 457, + 458, 5, 64, 0, 0, 458, 459, 3, 12, 6, 0, 459, 460, 5, 7, 0, 0, 460, 461, + 3, 12, 6, 0, 461, 462, 5, 8, 0, 0, 462, 470, 1, 0, 0, 0, 463, 467, 3, 56, + 28, 0, 464, 466, 3, 56, 28, 0, 465, 464, 1, 0, 0, 0, 466, 469, 1, 0, 0, + 0, 467, 465, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 471, 1, 0, 0, 0, 469, + 467, 1, 0, 0, 0, 470, 463, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 59, 1, + 0, 0, 0, 472, 473, 7, 6, 0, 0, 473, 61, 1, 0, 0, 0, 474, 476, 3, 26, 13, + 0, 475, 474, 1, 0, 0, 0, 476, 479, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 477, + 478, 1, 0, 0, 0, 478, 480, 1, 0, 0, 0, 479, 477, 1, 0, 0, 0, 480, 481, + 5, 36, 0, 0, 481, 482, 5, 139, 0, 0, 482, 484, 5, 7, 0, 0, 483, 485, 3, + 22, 11, 0, 484, 483, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 486, 1, 0, + 0, 0, 486, 488, 5, 8, 0, 0, 487, 489, 3, 60, 30, 0, 488, 487, 1, 0, 0, + 0, 489, 490, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, + 492, 1, 0, 0, 0, 492, 493, 5, 1, 0, 0, 493, 494, 3, 134, 67, 0, 494, 495, + 5, 2, 0, 0, 495, 63, 1, 0, 0, 0, 496, 498, 3, 26, 13, 0, 497, 496, 1, 0, + 0, 0, 498, 501, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, + 500, 502, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 502, 503, 5, 37, 0, 0, 503, + 504, 5, 139, 0, 0, 504, 506, 5, 7, 0, 0, 505, 507, 3, 50, 25, 0, 506, 505, + 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 510, 5, 8, + 0, 0, 509, 511, 3, 60, 30, 0, 510, 509, 1, 0, 0, 0, 511, 512, 1, 0, 0, + 0, 512, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 515, 1, 0, 0, 0, 514, + 516, 3, 66, 33, 0, 515, 514, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 517, + 1, 0, 0, 0, 517, 518, 5, 1, 0, 0, 518, 519, 3, 138, 69, 0, 519, 520, 5, + 2, 0, 0, 520, 65, 1, 0, 0, 0, 521, 533, 5, 91, 0, 0, 522, 524, 5, 35, 0, + 0, 523, 522, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, + 526, 5, 7, 0, 0, 526, 527, 3, 48, 24, 0, 527, 528, 5, 8, 0, 0, 528, 534, + 1, 0, 0, 0, 529, 530, 5, 7, 0, 0, 530, 531, 3, 46, 23, 0, 531, 532, 5, + 8, 0, 0, 532, 534, 1, 0, 0, 0, 533, 523, 1, 0, 0, 0, 533, 529, 1, 0, 0, + 0, 534, 67, 1, 0, 0, 0, 535, 536, 3, 70, 35, 0, 536, 537, 5, 6, 0, 0, 537, + 69, 1, 0, 0, 0, 538, 540, 5, 93, 0, 0, 539, 541, 5, 127, 0, 0, 540, 539, + 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 547, 3, 72, + 36, 0, 543, 544, 5, 9, 0, 0, 544, 546, 3, 72, 36, 0, 545, 543, 1, 0, 0, + 0, 546, 549, 1, 0, 0, 0, 547, 545, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, + 551, 1, 0, 0, 0, 549, 547, 1, 0, 0, 0, 550, 538, 1, 0, 0, 0, 550, 551, + 1, 0, 0, 0, 551, 560, 1, 0, 0, 0, 552, 561, 3, 74, 37, 0, 553, 561, 3, + 80, 40, 0, 554, 561, 3, 96, 48, 0, 555, 561, 3, 98, 49, 0, 556, 561, 3, + 100, 50, 0, 557, 561, 3, 114, 57, 0, 558, 561, 3, 118, 59, 0, 559, 561, + 3, 122, 61, 0, 560, 552, 1, 0, 0, 0, 560, 553, 1, 0, 0, 0, 560, 554, 1, + 0, 0, 0, 560, 555, 1, 0, 0, 0, 560, 556, 1, 0, 0, 0, 560, 557, 1, 0, 0, + 0, 560, 558, 1, 0, 0, 0, 560, 559, 1, 0, 0, 0, 561, 71, 1, 0, 0, 0, 562, + 575, 3, 12, 6, 0, 563, 572, 5, 7, 0, 0, 564, 569, 3, 12, 6, 0, 565, 566, + 5, 9, 0, 0, 566, 568, 3, 12, 6, 0, 567, 565, 1, 0, 0, 0, 568, 571, 1, 0, + 0, 0, 569, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, + 571, 569, 1, 0, 0, 0, 572, 564, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, + 574, 1, 0, 0, 0, 574, 576, 5, 8, 0, 0, 575, 563, 1, 0, 0, 0, 575, 576, + 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 5, 82, 0, 0, 578, 579, 5, 7, + 0, 0, 579, 580, 3, 100, 50, 0, 580, 581, 5, 8, 0, 0, 581, 73, 1, 0, 0, + 0, 582, 583, 5, 42, 0, 0, 583, 584, 5, 35, 0, 0, 584, 585, 3, 12, 6, 0, + 585, 589, 5, 7, 0, 0, 586, 590, 3, 36, 18, 0, 587, 590, 3, 76, 38, 0, 588, + 590, 3, 40, 20, 0, 589, 586, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 588, + 1, 0, 0, 0, 590, 599, 1, 0, 0, 0, 591, 595, 5, 9, 0, 0, 592, 596, 3, 36, + 18, 0, 593, 596, 3, 76, 38, 0, 594, 596, 3, 40, 20, 0, 595, 592, 1, 0, + 0, 0, 595, 593, 1, 0, 0, 0, 595, 594, 1, 0, 0, 0, 596, 598, 1, 0, 0, 0, + 597, 591, 1, 0, 0, 0, 598, 601, 1, 0, 0, 0, 599, 597, 1, 0, 0, 0, 599, + 600, 1, 0, 0, 0, 600, 602, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 602, 603, + 5, 8, 0, 0, 603, 75, 1, 0, 0, 0, 604, 605, 5, 49, 0, 0, 605, 607, 3, 12, + 6, 0, 606, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, + 608, 609, 3, 78, 39, 0, 609, 77, 1, 0, 0, 0, 610, 611, 5, 52, 0, 0, 611, + 612, 5, 53, 0, 0, 612, 613, 5, 7, 0, 0, 613, 614, 3, 14, 7, 0, 614, 615, + 5, 8, 0, 0, 615, 634, 1, 0, 0, 0, 616, 617, 5, 56, 0, 0, 617, 618, 5, 7, + 0, 0, 618, 619, 3, 14, 7, 0, 619, 620, 5, 8, 0, 0, 620, 634, 1, 0, 0, 0, + 621, 622, 5, 50, 0, 0, 622, 623, 5, 7, 0, 0, 623, 624, 3, 124, 62, 0, 624, + 625, 5, 8, 0, 0, 625, 634, 1, 0, 0, 0, 626, 627, 5, 51, 0, 0, 627, 628, + 5, 53, 0, 0, 628, 629, 5, 7, 0, 0, 629, 630, 3, 12, 6, 0, 630, 631, 5, + 8, 0, 0, 631, 632, 3, 58, 29, 0, 632, 634, 1, 0, 0, 0, 633, 610, 1, 0, + 0, 0, 633, 616, 1, 0, 0, 0, 633, 621, 1, 0, 0, 0, 633, 626, 1, 0, 0, 0, + 634, 79, 1, 0, 0, 0, 635, 636, 5, 43, 0, 0, 636, 637, 5, 35, 0, 0, 637, + 659, 3, 12, 6, 0, 638, 660, 3, 82, 41, 0, 639, 644, 3, 84, 42, 0, 640, + 641, 5, 9, 0, 0, 641, 643, 3, 84, 42, 0, 642, 640, 1, 0, 0, 0, 643, 646, + 1, 0, 0, 0, 644, 642, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 660, 1, 0, + 0, 0, 646, 644, 1, 0, 0, 0, 647, 652, 3, 86, 43, 0, 648, 649, 5, 9, 0, + 0, 649, 651, 3, 86, 43, 0, 650, 648, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, + 652, 650, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 660, 1, 0, 0, 0, 654, + 652, 1, 0, 0, 0, 655, 660, 3, 88, 44, 0, 656, 660, 3, 90, 45, 0, 657, 660, + 3, 92, 46, 0, 658, 660, 3, 94, 47, 0, 659, 638, 1, 0, 0, 0, 659, 639, 1, + 0, 0, 0, 659, 647, 1, 0, 0, 0, 659, 655, 1, 0, 0, 0, 659, 656, 1, 0, 0, + 0, 659, 657, 1, 0, 0, 0, 659, 658, 1, 0, 0, 0, 660, 81, 1, 0, 0, 0, 661, + 662, 5, 43, 0, 0, 662, 663, 5, 44, 0, 0, 663, 664, 3, 12, 6, 0, 664, 675, + 7, 7, 0, 0, 665, 666, 5, 66, 0, 0, 666, 669, 5, 61, 0, 0, 667, 669, 5, + 60, 0, 0, 668, 665, 1, 0, 0, 0, 668, 667, 1, 0, 0, 0, 669, 671, 1, 0, 0, + 0, 670, 672, 3, 10, 5, 0, 671, 670, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, + 676, 1, 0, 0, 0, 673, 674, 5, 49, 0, 0, 674, 676, 3, 12, 6, 0, 675, 668, + 1, 0, 0, 0, 675, 673, 1, 0, 0, 0, 676, 83, 1, 0, 0, 0, 677, 678, 5, 45, + 0, 0, 678, 679, 5, 44, 0, 0, 679, 680, 3, 12, 6, 0, 680, 681, 3, 16, 8, + 0, 681, 85, 1, 0, 0, 0, 682, 683, 5, 46, 0, 0, 683, 684, 5, 44, 0, 0, 684, + 685, 3, 12, 6, 0, 685, 87, 1, 0, 0, 0, 686, 687, 5, 47, 0, 0, 687, 688, + 5, 44, 0, 0, 688, 689, 3, 12, 6, 0, 689, 690, 5, 48, 0, 0, 690, 691, 3, + 12, 6, 0, 691, 89, 1, 0, 0, 0, 692, 693, 5, 47, 0, 0, 693, 694, 5, 48, + 0, 0, 694, 695, 3, 12, 6, 0, 695, 91, 1, 0, 0, 0, 696, 697, 5, 45, 0, 0, + 697, 698, 5, 49, 0, 0, 698, 699, 3, 12, 6, 0, 699, 700, 3, 78, 39, 0, 700, + 93, 1, 0, 0, 0, 701, 702, 5, 46, 0, 0, 702, 703, 5, 49, 0, 0, 703, 704, + 3, 12, 6, 0, 704, 95, 1, 0, 0, 0, 705, 707, 5, 42, 0, 0, 706, 708, 5, 56, + 0, 0, 707, 706, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, + 709, 710, 5, 67, 0, 0, 710, 711, 3, 12, 6, 0, 711, 712, 5, 54, 0, 0, 712, + 713, 3, 12, 6, 0, 713, 714, 5, 7, 0, 0, 714, 715, 3, 14, 7, 0, 715, 716, + 5, 8, 0, 0, 716, 97, 1, 0, 0, 0, 717, 718, 5, 46, 0, 0, 718, 721, 5, 67, + 0, 0, 719, 720, 5, 117, 0, 0, 720, 722, 5, 75, 0, 0, 721, 719, 1, 0, 0, + 0, 721, 722, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 724, 3, 12, 6, 0, 724, + 99, 1, 0, 0, 0, 725, 731, 3, 106, 53, 0, 726, 727, 3, 102, 51, 0, 727, + 728, 3, 106, 53, 0, 728, 730, 1, 0, 0, 0, 729, 726, 1, 0, 0, 0, 730, 733, + 1, 0, 0, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 744, 1, 0, + 0, 0, 733, 731, 1, 0, 0, 0, 734, 735, 5, 87, 0, 0, 735, 736, 5, 88, 0, + 0, 736, 741, 3, 104, 52, 0, 737, 738, 5, 9, 0, 0, 738, 740, 3, 104, 52, + 0, 739, 737, 1, 0, 0, 0, 740, 743, 1, 0, 0, 0, 741, 739, 1, 0, 0, 0, 741, + 742, 1, 0, 0, 0, 742, 745, 1, 0, 0, 0, 743, 741, 1, 0, 0, 0, 744, 734, + 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 748, 1, 0, 0, 0, 746, 747, 5, 85, + 0, 0, 747, 749, 3, 124, 62, 0, 748, 746, 1, 0, 0, 0, 748, 749, 1, 0, 0, + 0, 749, 752, 1, 0, 0, 0, 750, 751, 5, 86, 0, 0, 751, 753, 3, 124, 62, 0, + 752, 750, 1, 0, 0, 0, 752, 753, 1, 0, 0, 0, 753, 101, 1, 0, 0, 0, 754, + 756, 5, 106, 0, 0, 755, 757, 5, 76, 0, 0, 756, 755, 1, 0, 0, 0, 756, 757, + 1, 0, 0, 0, 757, 761, 1, 0, 0, 0, 758, 761, 5, 107, 0, 0, 759, 761, 5, + 108, 0, 0, 760, 754, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 760, 759, 1, 0, + 0, 0, 761, 103, 1, 0, 0, 0, 762, 764, 3, 124, 62, 0, 763, 765, 7, 8, 0, + 0, 764, 763, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 768, 1, 0, 0, 0, 766, + 767, 5, 109, 0, 0, 767, 769, 7, 9, 0, 0, 768, 766, 1, 0, 0, 0, 768, 769, + 1, 0, 0, 0, 769, 105, 1, 0, 0, 0, 770, 772, 5, 102, 0, 0, 771, 773, 5, + 98, 0, 0, 772, 771, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 774, 1, 0, 0, + 0, 774, 779, 3, 112, 56, 0, 775, 776, 5, 9, 0, 0, 776, 778, 3, 112, 56, + 0, 777, 775, 1, 0, 0, 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, + 780, 1, 0, 0, 0, 780, 790, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 783, + 5, 99, 0, 0, 783, 787, 3, 108, 54, 0, 784, 786, 3, 110, 55, 0, 785, 784, + 1, 0, 0, 0, 786, 789, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 787, 788, 1, 0, + 0, 0, 788, 791, 1, 0, 0, 0, 789, 787, 1, 0, 0, 0, 790, 782, 1, 0, 0, 0, + 790, 791, 1, 0, 0, 0, 791, 794, 1, 0, 0, 0, 792, 793, 5, 100, 0, 0, 793, + 795, 3, 124, 62, 0, 794, 792, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 803, + 1, 0, 0, 0, 796, 797, 5, 89, 0, 0, 797, 798, 5, 88, 0, 0, 798, 801, 3, + 130, 65, 0, 799, 800, 5, 90, 0, 0, 800, 802, 3, 124, 62, 0, 801, 799, 1, + 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 804, 1, 0, 0, 0, 803, 796, 1, 0, 0, + 0, 803, 804, 1, 0, 0, 0, 804, 819, 1, 0, 0, 0, 805, 806, 5, 125, 0, 0, + 806, 807, 3, 12, 6, 0, 807, 808, 5, 82, 0, 0, 808, 816, 3, 126, 63, 0, + 809, 810, 5, 9, 0, 0, 810, 811, 3, 12, 6, 0, 811, 812, 5, 82, 0, 0, 812, + 813, 3, 126, 63, 0, 813, 815, 1, 0, 0, 0, 814, 809, 1, 0, 0, 0, 815, 818, + 1, 0, 0, 0, 816, 814, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 820, 1, 0, + 0, 0, 818, 816, 1, 0, 0, 0, 819, 805, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, + 820, 107, 1, 0, 0, 0, 821, 826, 3, 12, 6, 0, 822, 824, 5, 82, 0, 0, 823, + 822, 1, 0, 0, 0, 823, 824, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 827, + 3, 12, 6, 0, 826, 823, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 838, 1, 0, + 0, 0, 828, 829, 5, 7, 0, 0, 829, 830, 3, 100, 50, 0, 830, 835, 5, 8, 0, + 0, 831, 833, 5, 82, 0, 0, 832, 831, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, + 834, 1, 0, 0, 0, 834, 836, 3, 12, 6, 0, 835, 832, 1, 0, 0, 0, 835, 836, + 1, 0, 0, 0, 836, 838, 1, 0, 0, 0, 837, 821, 1, 0, 0, 0, 837, 828, 1, 0, + 0, 0, 838, 109, 1, 0, 0, 0, 839, 841, 7, 10, 0, 0, 840, 839, 1, 0, 0, 0, + 840, 841, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 843, 5, 78, 0, 0, 843, + 844, 3, 108, 54, 0, 844, 845, 5, 54, 0, 0, 845, 846, 3, 124, 62, 0, 846, + 111, 1, 0, 0, 0, 847, 852, 3, 124, 62, 0, 848, 850, 5, 82, 0, 0, 849, 848, + 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 853, 3, 12, + 6, 0, 852, 849, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 861, 1, 0, 0, 0, + 854, 855, 3, 12, 6, 0, 855, 856, 5, 12, 0, 0, 856, 858, 1, 0, 0, 0, 857, + 854, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 861, + 5, 14, 0, 0, 860, 847, 1, 0, 0, 0, 860, 857, 1, 0, 0, 0, 861, 113, 1, 0, + 0, 0, 862, 863, 5, 63, 0, 0, 863, 868, 3, 12, 6, 0, 864, 866, 5, 82, 0, + 0, 865, 864, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, + 869, 3, 12, 6, 0, 868, 865, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 870, + 1, 0, 0, 0, 870, 871, 5, 59, 0, 0, 871, 876, 3, 116, 58, 0, 872, 873, 5, + 9, 0, 0, 873, 875, 3, 116, 58, 0, 874, 872, 1, 0, 0, 0, 875, 878, 1, 0, + 0, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 887, 1, 0, 0, 0, + 878, 876, 1, 0, 0, 0, 879, 880, 5, 99, 0, 0, 880, 884, 3, 108, 54, 0, 881, + 883, 3, 110, 55, 0, 882, 881, 1, 0, 0, 0, 883, 886, 1, 0, 0, 0, 884, 882, + 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 888, 1, 0, 0, 0, 886, 884, 1, 0, + 0, 0, 887, 879, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 891, 1, 0, 0, 0, + 889, 890, 5, 100, 0, 0, 890, 892, 3, 124, 62, 0, 891, 889, 1, 0, 0, 0, + 891, 892, 1, 0, 0, 0, 892, 115, 1, 0, 0, 0, 893, 894, 3, 12, 6, 0, 894, + 895, 5, 15, 0, 0, 895, 896, 3, 124, 62, 0, 896, 117, 1, 0, 0, 0, 897, 898, + 5, 103, 0, 0, 898, 899, 5, 113, 0, 0, 899, 904, 3, 12, 6, 0, 900, 902, + 5, 82, 0, 0, 901, 900, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 903, 1, 0, + 0, 0, 903, 905, 3, 12, 6, 0, 904, 901, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, + 905, 910, 1, 0, 0, 0, 906, 907, 5, 7, 0, 0, 907, 908, 3, 14, 7, 0, 908, + 909, 5, 8, 0, 0, 909, 911, 1, 0, 0, 0, 910, 906, 1, 0, 0, 0, 910, 911, + 1, 0, 0, 0, 911, 927, 1, 0, 0, 0, 912, 913, 5, 104, 0, 0, 913, 914, 5, + 7, 0, 0, 914, 915, 3, 130, 65, 0, 915, 923, 5, 8, 0, 0, 916, 917, 5, 9, + 0, 0, 917, 918, 5, 7, 0, 0, 918, 919, 3, 130, 65, 0, 919, 920, 5, 8, 0, + 0, 920, 922, 1, 0, 0, 0, 921, 916, 1, 0, 0, 0, 922, 925, 1, 0, 0, 0, 923, + 921, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 928, 1, 0, 0, 0, 925, 923, + 1, 0, 0, 0, 926, 928, 3, 100, 50, 0, 927, 912, 1, 0, 0, 0, 927, 926, 1, + 0, 0, 0, 928, 930, 1, 0, 0, 0, 929, 931, 3, 120, 60, 0, 930, 929, 1, 0, + 0, 0, 930, 931, 1, 0, 0, 0, 931, 119, 1, 0, 0, 0, 932, 933, 5, 54, 0, 0, + 933, 941, 5, 114, 0, 0, 934, 935, 5, 7, 0, 0, 935, 936, 3, 14, 7, 0, 936, + 939, 5, 8, 0, 0, 937, 938, 5, 100, 0, 0, 938, 940, 3, 124, 62, 0, 939, + 937, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 942, 1, 0, 0, 0, 941, 934, + 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 959, 5, 55, + 0, 0, 944, 960, 5, 115, 0, 0, 945, 946, 5, 63, 0, 0, 946, 947, 5, 59, 0, + 0, 947, 952, 3, 116, 58, 0, 948, 949, 5, 9, 0, 0, 949, 951, 3, 116, 58, + 0, 950, 948, 1, 0, 0, 0, 951, 954, 1, 0, 0, 0, 952, 950, 1, 0, 0, 0, 952, + 953, 1, 0, 0, 0, 953, 957, 1, 0, 0, 0, 954, 952, 1, 0, 0, 0, 955, 956, + 5, 100, 0, 0, 956, 958, 3, 124, 62, 0, 957, 955, 1, 0, 0, 0, 957, 958, + 1, 0, 0, 0, 958, 960, 1, 0, 0, 0, 959, 944, 1, 0, 0, 0, 959, 945, 1, 0, + 0, 0, 960, 121, 1, 0, 0, 0, 961, 962, 5, 62, 0, 0, 962, 963, 5, 99, 0, + 0, 963, 968, 3, 12, 6, 0, 964, 966, 5, 82, 0, 0, 965, 964, 1, 0, 0, 0, + 965, 966, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 969, 3, 12, 6, 0, 968, + 965, 1, 0, 0, 0, 968, 969, 1, 0, 0, 0, 969, 972, 1, 0, 0, 0, 970, 971, + 5, 100, 0, 0, 971, 973, 3, 124, 62, 0, 972, 970, 1, 0, 0, 0, 972, 973, + 1, 0, 0, 0, 973, 123, 1, 0, 0, 0, 974, 975, 6, 62, -1, 0, 975, 976, 5, + 7, 0, 0, 976, 977, 3, 124, 62, 0, 977, 979, 5, 8, 0, 0, 978, 980, 3, 18, + 9, 0, 979, 978, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 1048, 1, 0, 0, 0, + 981, 982, 7, 0, 0, 0, 982, 1048, 3, 124, 62, 20, 983, 985, 3, 10, 5, 0, + 984, 986, 3, 18, 9, 0, 985, 984, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, + 1048, 1, 0, 0, 0, 987, 994, 3, 132, 66, 0, 988, 989, 5, 126, 0, 0, 989, + 990, 5, 7, 0, 0, 990, 991, 5, 100, 0, 0, 991, 992, 3, 124, 62, 0, 992, + 993, 5, 8, 0, 0, 993, 995, 1, 0, 0, 0, 994, 988, 1, 0, 0, 0, 994, 995, + 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 999, 5, 123, 0, 0, 997, 1000, 3, + 126, 63, 0, 998, 1000, 5, 139, 0, 0, 999, 997, 1, 0, 0, 0, 999, 998, 1, + 0, 0, 0, 1000, 1048, 1, 0, 0, 0, 1001, 1003, 3, 132, 66, 0, 1002, 1004, + 3, 18, 9, 0, 1003, 1002, 1, 0, 0, 0, 1003, 1004, 1, 0, 0, 0, 1004, 1048, + 1, 0, 0, 0, 1005, 1007, 3, 20, 10, 0, 1006, 1008, 3, 18, 9, 0, 1007, 1006, + 1, 0, 0, 0, 1007, 1008, 1, 0, 0, 0, 1008, 1048, 1, 0, 0, 0, 1009, 1010, + 3, 12, 6, 0, 1010, 1011, 5, 12, 0, 0, 1011, 1013, 1, 0, 0, 0, 1012, 1009, + 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1016, + 3, 12, 6, 0, 1015, 1017, 3, 18, 9, 0, 1016, 1015, 1, 0, 0, 0, 1016, 1017, + 1, 0, 0, 0, 1017, 1048, 1, 0, 0, 0, 1018, 1020, 5, 94, 0, 0, 1019, 1021, + 3, 124, 62, 0, 1020, 1019, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1023, + 1, 0, 0, 0, 1022, 1024, 3, 128, 64, 0, 1023, 1022, 1, 0, 0, 0, 1024, 1025, + 1, 0, 0, 0, 1025, 1023, 1, 0, 0, 0, 1025, 1026, 1, 0, 0, 0, 1026, 1029, + 1, 0, 0, 0, 1027, 1028, 5, 119, 0, 0, 1028, 1030, 3, 124, 62, 0, 1029, + 1027, 1, 0, 0, 0, 1029, 1030, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, + 1032, 5, 97, 0, 0, 1032, 1048, 1, 0, 0, 0, 1033, 1035, 5, 66, 0, 0, 1034, + 1033, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, + 1038, 5, 75, 0, 0, 1037, 1034, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, + 1039, 1, 0, 0, 0, 1039, 1040, 5, 7, 0, 0, 1040, 1041, 3, 100, 50, 0, 1041, + 1043, 5, 8, 0, 0, 1042, 1044, 3, 18, 9, 0, 1043, 1042, 1, 0, 0, 0, 1043, + 1044, 1, 0, 0, 0, 1044, 1048, 1, 0, 0, 0, 1045, 1046, 5, 66, 0, 0, 1046, + 1048, 3, 124, 62, 3, 1047, 974, 1, 0, 0, 0, 1047, 981, 1, 0, 0, 0, 1047, + 983, 1, 0, 0, 0, 1047, 987, 1, 0, 0, 0, 1047, 1001, 1, 0, 0, 0, 1047, 1005, + 1, 0, 0, 0, 1047, 1012, 1, 0, 0, 0, 1047, 1018, 1, 0, 0, 0, 1047, 1037, + 1, 0, 0, 0, 1047, 1045, 1, 0, 0, 0, 1048, 1134, 1, 0, 0, 0, 1049, 1050, + 10, 18, 0, 0, 1050, 1051, 7, 11, 0, 0, 1051, 1133, 3, 124, 62, 19, 1052, + 1053, 10, 17, 0, 0, 1053, 1054, 7, 0, 0, 0, 1054, 1133, 3, 124, 62, 18, + 1055, 1056, 10, 9, 0, 0, 1056, 1057, 5, 13, 0, 0, 1057, 1133, 3, 124, 62, + 10, 1058, 1060, 10, 7, 0, 0, 1059, 1061, 5, 66, 0, 0, 1060, 1059, 1, 0, + 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 7, 12, + 0, 0, 1063, 1133, 3, 124, 62, 8, 1064, 1066, 10, 6, 0, 0, 1065, 1067, 5, + 66, 0, 0, 1066, 1065, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 1, + 0, 0, 0, 1068, 1069, 5, 73, 0, 0, 1069, 1070, 3, 124, 62, 0, 1070, 1071, + 5, 68, 0, 0, 1071, 1072, 3, 124, 62, 7, 1072, 1133, 1, 0, 0, 0, 1073, 1074, + 10, 5, 0, 0, 1074, 1075, 7, 13, 0, 0, 1075, 1133, 3, 124, 62, 6, 1076, + 1077, 10, 2, 0, 0, 1077, 1078, 5, 68, 0, 0, 1078, 1133, 3, 124, 62, 3, + 1079, 1080, 10, 1, 0, 0, 1080, 1081, 5, 69, 0, 0, 1081, 1133, 3, 124, 62, + 2, 1082, 1083, 10, 22, 0, 0, 1083, 1084, 5, 12, 0, 0, 1084, 1086, 3, 12, + 6, 0, 1085, 1087, 3, 18, 9, 0, 1086, 1085, 1, 0, 0, 0, 1086, 1087, 1, 0, + 0, 0, 1087, 1133, 1, 0, 0, 0, 1088, 1089, 10, 21, 0, 0, 1089, 1098, 5, + 3, 0, 0, 1090, 1099, 3, 124, 62, 0, 1091, 1093, 3, 124, 62, 0, 1092, 1091, + 1, 0, 0, 0, 1092, 1093, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1096, + 5, 5, 0, 0, 1095, 1097, 3, 124, 62, 0, 1096, 1095, 1, 0, 0, 0, 1096, 1097, + 1, 0, 0, 0, 1097, 1099, 1, 0, 0, 0, 1098, 1090, 1, 0, 0, 0, 1098, 1092, + 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1102, 5, 4, 0, 0, 1101, 1103, + 3, 18, 9, 0, 1102, 1101, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1133, + 1, 0, 0, 0, 1104, 1105, 10, 19, 0, 0, 1105, 1106, 5, 101, 0, 0, 1106, 1133, + 3, 12, 6, 0, 1107, 1109, 10, 8, 0, 0, 1108, 1110, 5, 66, 0, 0, 1109, 1108, + 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1112, + 5, 72, 0, 0, 1112, 1115, 5, 7, 0, 0, 1113, 1116, 3, 130, 65, 0, 1114, 1116, + 3, 100, 50, 0, 1115, 1113, 1, 0, 0, 0, 1115, 1114, 1, 0, 0, 0, 1116, 1117, + 1, 0, 0, 0, 1117, 1118, 5, 8, 0, 0, 1118, 1133, 1, 0, 0, 0, 1119, 1120, + 10, 4, 0, 0, 1120, 1122, 5, 74, 0, 0, 1121, 1123, 5, 66, 0, 0, 1122, 1121, + 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1130, 1, 0, 0, 0, 1124, 1125, + 5, 98, 0, 0, 1125, 1126, 5, 99, 0, 0, 1126, 1131, 3, 124, 62, 0, 1127, + 1131, 5, 61, 0, 0, 1128, 1131, 5, 129, 0, 0, 1129, 1131, 5, 130, 0, 0, + 1130, 1124, 1, 0, 0, 0, 1130, 1127, 1, 0, 0, 0, 1130, 1128, 1, 0, 0, 0, + 1130, 1129, 1, 0, 0, 0, 1131, 1133, 1, 0, 0, 0, 1132, 1049, 1, 0, 0, 0, + 1132, 1052, 1, 0, 0, 0, 1132, 1055, 1, 0, 0, 0, 1132, 1058, 1, 0, 0, 0, + 1132, 1064, 1, 0, 0, 0, 1132, 1073, 1, 0, 0, 0, 1132, 1076, 1, 0, 0, 0, + 1132, 1079, 1, 0, 0, 0, 1132, 1082, 1, 0, 0, 0, 1132, 1088, 1, 0, 0, 0, + 1132, 1104, 1, 0, 0, 0, 1132, 1107, 1, 0, 0, 0, 1132, 1119, 1, 0, 0, 0, + 1133, 1136, 1, 0, 0, 0, 1134, 1132, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, + 1135, 125, 1, 0, 0, 0, 1136, 1134, 1, 0, 0, 0, 1137, 1141, 5, 7, 0, 0, + 1138, 1139, 5, 124, 0, 0, 1139, 1140, 5, 88, 0, 0, 1140, 1142, 3, 130, + 65, 0, 1141, 1138, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1153, 1, 0, + 0, 0, 1143, 1144, 5, 87, 0, 0, 1144, 1145, 5, 88, 0, 0, 1145, 1150, 3, + 104, 52, 0, 1146, 1147, 5, 9, 0, 0, 1147, 1149, 3, 104, 52, 0, 1148, 1146, + 1, 0, 0, 0, 1149, 1152, 1, 0, 0, 0, 1150, 1148, 1, 0, 0, 0, 1150, 1151, + 1, 0, 0, 0, 1151, 1154, 1, 0, 0, 0, 1152, 1150, 1, 0, 0, 0, 1153, 1143, + 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1156, + 5, 8, 0, 0, 1156, 127, 1, 0, 0, 0, 1157, 1158, 5, 95, 0, 0, 1158, 1159, + 3, 124, 62, 0, 1159, 1160, 5, 96, 0, 0, 1160, 1161, 3, 124, 62, 0, 1161, + 129, 1, 0, 0, 0, 1162, 1167, 3, 124, 62, 0, 1163, 1164, 5, 9, 0, 0, 1164, + 1166, 3, 124, 62, 0, 1165, 1163, 1, 0, 0, 0, 1166, 1169, 1, 0, 0, 0, 1167, + 1165, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 131, 1, 0, 0, 0, 1169, + 1167, 1, 0, 0, 0, 1170, 1171, 3, 12, 6, 0, 1171, 1177, 5, 7, 0, 0, 1172, + 1174, 5, 98, 0, 0, 1173, 1172, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, + 1175, 1, 0, 0, 0, 1175, 1178, 3, 130, 65, 0, 1176, 1178, 5, 14, 0, 0, 1177, + 1173, 1, 0, 0, 0, 1177, 1176, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, + 1179, 1, 0, 0, 0, 1179, 1180, 5, 8, 0, 0, 1180, 133, 1, 0, 0, 0, 1181, + 1182, 3, 136, 68, 0, 1182, 1183, 5, 6, 0, 0, 1183, 1185, 1, 0, 0, 0, 1184, + 1181, 1, 0, 0, 0, 1185, 1188, 1, 0, 0, 0, 1186, 1184, 1, 0, 0, 0, 1186, + 1187, 1, 0, 0, 0, 1187, 135, 1, 0, 0, 0, 1188, 1186, 1, 0, 0, 0, 1189, + 1210, 3, 70, 35, 0, 1190, 1191, 5, 139, 0, 0, 1191, 1193, 5, 7, 0, 0, 1192, + 1194, 3, 142, 71, 0, 1193, 1192, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, + 1195, 1, 0, 0, 0, 1195, 1210, 5, 8, 0, 0, 1196, 1197, 3, 22, 11, 0, 1197, + 1198, 5, 15, 0, 0, 1198, 1200, 1, 0, 0, 0, 1199, 1196, 1, 0, 0, 0, 1199, + 1200, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1202, 5, 139, 0, 0, 1202, + 1203, 5, 12, 0, 0, 1203, 1204, 5, 139, 0, 0, 1204, 1206, 5, 7, 0, 0, 1205, + 1207, 3, 142, 71, 0, 1206, 1205, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, + 1208, 1, 0, 0, 0, 1208, 1210, 5, 8, 0, 0, 1209, 1189, 1, 0, 0, 0, 1209, + 1190, 1, 0, 0, 0, 1209, 1199, 1, 0, 0, 0, 1210, 137, 1, 0, 0, 0, 1211, + 1213, 3, 144, 72, 0, 1212, 1211, 1, 0, 0, 0, 1213, 1216, 1, 0, 0, 0, 1214, + 1212, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 139, 1, 0, 0, 0, 1216, + 1214, 1, 0, 0, 0, 1217, 1218, 6, 70, -1, 0, 1218, 1219, 5, 7, 0, 0, 1219, + 1220, 3, 140, 70, 0, 1220, 1222, 5, 8, 0, 0, 1221, 1223, 3, 18, 9, 0, 1222, + 1221, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1249, 1, 0, 0, 0, 1224, + 1225, 7, 14, 0, 0, 1225, 1249, 3, 140, 70, 13, 1226, 1228, 3, 10, 5, 0, + 1227, 1229, 3, 18, 9, 0, 1228, 1227, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, + 1229, 1249, 1, 0, 0, 0, 1230, 1232, 3, 148, 74, 0, 1231, 1233, 3, 18, 9, + 0, 1232, 1231, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1249, 1, 0, 0, + 0, 1234, 1236, 3, 20, 10, 0, 1235, 1237, 3, 18, 9, 0, 1236, 1235, 1, 0, + 0, 0, 1236, 1237, 1, 0, 0, 0, 1237, 1249, 1, 0, 0, 0, 1238, 1240, 5, 3, + 0, 0, 1239, 1241, 3, 142, 71, 0, 1240, 1239, 1, 0, 0, 0, 1240, 1241, 1, + 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1244, 5, 4, 0, 0, 1243, 1245, 3, + 18, 9, 0, 1244, 1243, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1249, 1, + 0, 0, 0, 1246, 1247, 5, 66, 0, 0, 1247, 1249, 3, 140, 70, 3, 1248, 1217, + 1, 0, 0, 0, 1248, 1224, 1, 0, 0, 0, 1248, 1226, 1, 0, 0, 0, 1248, 1230, + 1, 0, 0, 0, 1248, 1234, 1, 0, 0, 0, 1248, 1238, 1, 0, 0, 0, 1248, 1246, + 1, 0, 0, 0, 1249, 1305, 1, 0, 0, 0, 1250, 1251, 10, 12, 0, 0, 1251, 1252, + 7, 11, 0, 0, 1252, 1304, 3, 140, 70, 13, 1253, 1254, 10, 11, 0, 0, 1254, + 1255, 7, 0, 0, 0, 1255, 1304, 3, 140, 70, 12, 1256, 1257, 10, 6, 0, 0, + 1257, 1258, 5, 13, 0, 0, 1258, 1304, 3, 140, 70, 7, 1259, 1260, 10, 5, + 0, 0, 1260, 1261, 7, 13, 0, 0, 1261, 1304, 3, 140, 70, 6, 1262, 1263, 10, + 2, 0, 0, 1263, 1264, 5, 68, 0, 0, 1264, 1304, 3, 140, 70, 3, 1265, 1266, + 10, 1, 0, 0, 1266, 1267, 5, 69, 0, 0, 1267, 1304, 3, 140, 70, 2, 1268, + 1269, 10, 15, 0, 0, 1269, 1270, 5, 12, 0, 0, 1270, 1272, 5, 139, 0, 0, + 1271, 1273, 3, 18, 9, 0, 1272, 1271, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, + 1273, 1304, 1, 0, 0, 0, 1274, 1275, 10, 14, 0, 0, 1275, 1284, 5, 3, 0, + 0, 1276, 1285, 3, 140, 70, 0, 1277, 1279, 3, 140, 70, 0, 1278, 1277, 1, + 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1282, 5, + 5, 0, 0, 1281, 1283, 3, 140, 70, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, + 1, 0, 0, 0, 1283, 1285, 1, 0, 0, 0, 1284, 1276, 1, 0, 0, 0, 1284, 1278, + 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1288, 5, 4, 0, 0, 1287, 1289, + 3, 18, 9, 0, 1288, 1287, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1304, + 1, 0, 0, 0, 1290, 1291, 10, 4, 0, 0, 1291, 1293, 5, 74, 0, 0, 1292, 1294, + 5, 66, 0, 0, 1293, 1292, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, 1301, + 1, 0, 0, 0, 1295, 1296, 5, 98, 0, 0, 1296, 1297, 5, 99, 0, 0, 1297, 1302, + 3, 140, 70, 0, 1298, 1302, 5, 61, 0, 0, 1299, 1302, 5, 129, 0, 0, 1300, + 1302, 5, 130, 0, 0, 1301, 1295, 1, 0, 0, 0, 1301, 1298, 1, 0, 0, 0, 1301, + 1299, 1, 0, 0, 0, 1301, 1300, 1, 0, 0, 0, 1302, 1304, 1, 0, 0, 0, 1303, + 1250, 1, 0, 0, 0, 1303, 1253, 1, 0, 0, 0, 1303, 1256, 1, 0, 0, 0, 1303, + 1259, 1, 0, 0, 0, 1303, 1262, 1, 0, 0, 0, 1303, 1265, 1, 0, 0, 0, 1303, + 1268, 1, 0, 0, 0, 1303, 1274, 1, 0, 0, 0, 1303, 1290, 1, 0, 0, 0, 1304, + 1307, 1, 0, 0, 0, 1305, 1303, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, + 141, 1, 0, 0, 0, 1307, 1305, 1, 0, 0, 0, 1308, 1313, 3, 140, 70, 0, 1309, + 1310, 5, 9, 0, 0, 1310, 1312, 3, 140, 70, 0, 1311, 1309, 1, 0, 0, 0, 1312, + 1315, 1, 0, 0, 0, 1313, 1311, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, + 143, 1, 0, 0, 0, 1315, 1313, 1, 0, 0, 0, 1316, 1317, 5, 140, 0, 0, 1317, + 1318, 3, 16, 8, 0, 1318, 1319, 5, 6, 0, 0, 1319, 1397, 1, 0, 0, 0, 1320, + 1325, 3, 146, 73, 0, 1321, 1322, 5, 9, 0, 0, 1322, 1324, 3, 146, 73, 0, + 1323, 1321, 1, 0, 0, 0, 1324, 1327, 1, 0, 0, 0, 1325, 1323, 1, 0, 0, 0, + 1325, 1326, 1, 0, 0, 0, 1326, 1328, 1, 0, 0, 0, 1327, 1325, 1, 0, 0, 0, + 1328, 1329, 5, 30, 0, 0, 1329, 1331, 1, 0, 0, 0, 1330, 1320, 1, 0, 0, 0, + 1330, 1331, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1333, 3, 148, 74, + 0, 1333, 1334, 5, 6, 0, 0, 1334, 1397, 1, 0, 0, 0, 1335, 1337, 3, 140, + 70, 0, 1336, 1338, 3, 16, 8, 0, 1337, 1336, 1, 0, 0, 0, 1337, 1338, 1, + 0, 0, 0, 1338, 1339, 1, 0, 0, 0, 1339, 1340, 5, 30, 0, 0, 1340, 1341, 3, + 140, 70, 0, 1341, 1342, 5, 6, 0, 0, 1342, 1397, 1, 0, 0, 0, 1343, 1344, + 5, 116, 0, 0, 1344, 1345, 5, 140, 0, 0, 1345, 1349, 5, 72, 0, 0, 1346, + 1350, 3, 152, 76, 0, 1347, 1350, 3, 20, 10, 0, 1348, 1350, 3, 70, 35, 0, + 1349, 1346, 1, 0, 0, 0, 1349, 1347, 1, 0, 0, 0, 1349, 1348, 1, 0, 0, 0, + 1350, 1351, 1, 0, 0, 0, 1351, 1355, 5, 1, 0, 0, 1352, 1354, 3, 144, 72, + 0, 1353, 1352, 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, 1359, 5, 2, 0, 0, 1359, 1397, 1, 0, 0, 0, 1360, 1361, 5, 117, + 0, 0, 1361, 1366, 3, 150, 75, 0, 1362, 1363, 5, 118, 0, 0, 1363, 1365, + 3, 150, 75, 0, 1364, 1362, 1, 0, 0, 0, 1365, 1368, 1, 0, 0, 0, 1366, 1364, + 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1378, 1, 0, 0, 0, 1368, 1366, + 1, 0, 0, 0, 1369, 1370, 5, 119, 0, 0, 1370, 1374, 5, 1, 0, 0, 1371, 1373, + 3, 144, 72, 0, 1372, 1371, 1, 0, 0, 0, 1373, 1376, 1, 0, 0, 0, 1374, 1372, + 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1377, 1, 0, 0, 0, 1376, 1374, + 1, 0, 0, 0, 1377, 1379, 5, 2, 0, 0, 1378, 1369, 1, 0, 0, 0, 1378, 1379, + 1, 0, 0, 0, 1379, 1397, 1, 0, 0, 0, 1380, 1381, 3, 70, 35, 0, 1381, 1382, + 5, 6, 0, 0, 1382, 1397, 1, 0, 0, 0, 1383, 1384, 5, 120, 0, 0, 1384, 1397, + 5, 6, 0, 0, 1385, 1388, 5, 121, 0, 0, 1386, 1389, 3, 142, 71, 0, 1387, + 1389, 3, 70, 35, 0, 1388, 1386, 1, 0, 0, 0, 1388, 1387, 1, 0, 0, 0, 1388, + 1389, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1397, 5, 6, 0, 0, 1391, + 1392, 5, 121, 0, 0, 1392, 1393, 5, 122, 0, 0, 1393, 1394, 3, 142, 71, 0, + 1394, 1395, 5, 6, 0, 0, 1395, 1397, 1, 0, 0, 0, 1396, 1316, 1, 0, 0, 0, + 1396, 1330, 1, 0, 0, 0, 1396, 1335, 1, 0, 0, 0, 1396, 1343, 1, 0, 0, 0, + 1396, 1360, 1, 0, 0, 0, 1396, 1380, 1, 0, 0, 0, 1396, 1383, 1, 0, 0, 0, + 1396, 1385, 1, 0, 0, 0, 1396, 1391, 1, 0, 0, 0, 1397, 145, 1, 0, 0, 0, + 1398, 1399, 7, 15, 0, 0, 1399, 147, 1, 0, 0, 0, 1400, 1401, 5, 139, 0, + 0, 1401, 1403, 5, 7, 0, 0, 1402, 1404, 3, 142, 71, 0, 1403, 1402, 1, 0, + 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 5, 8, + 0, 0, 1406, 149, 1, 0, 0, 0, 1407, 1408, 3, 140, 70, 0, 1408, 1412, 5, + 1, 0, 0, 1409, 1411, 3, 144, 72, 0, 1410, 1409, 1, 0, 0, 0, 1411, 1414, + 1, 0, 0, 0, 1412, 1410, 1, 0, 0, 0, 1412, 1413, 1, 0, 0, 0, 1413, 1415, + 1, 0, 0, 0, 1414, 1412, 1, 0, 0, 0, 1415, 1416, 5, 2, 0, 0, 1416, 151, + 1, 0, 0, 0, 1417, 1418, 3, 140, 70, 0, 1418, 1419, 5, 31, 0, 0, 1419, 1420, + 3, 140, 70, 0, 1420, 153, 1, 0, 0, 0, 186, 157, 175, 179, 187, 193, 200, + 209, 213, 225, 233, 235, 249, 252, 272, 277, 291, 295, 305, 313, 323, 334, + 347, 353, 358, 360, 363, 368, 374, 379, 382, 389, 399, 410, 416, 422, 428, + 443, 455, 467, 470, 477, 484, 490, 499, 506, 512, 515, 523, 533, 540, 547, + 550, 560, 569, 572, 575, 589, 595, 599, 606, 633, 644, 652, 659, 668, 671, + 675, 707, 721, 731, 741, 744, 748, 752, 756, 760, 764, 768, 772, 779, 787, + 790, 794, 801, 803, 816, 819, 823, 826, 832, 835, 837, 840, 849, 852, 857, + 860, 865, 868, 876, 884, 887, 891, 901, 904, 910, 923, 927, 930, 939, 941, + 952, 957, 959, 965, 968, 972, 979, 985, 994, 999, 1003, 1007, 1012, 1016, + 1020, 1025, 1029, 1034, 1037, 1043, 1047, 1060, 1066, 1086, 1092, 1096, + 1098, 1102, 1109, 1115, 1122, 1130, 1132, 1134, 1141, 1150, 1153, 1167, + 1173, 1177, 1186, 1193, 1199, 1206, 1209, 1214, 1222, 1228, 1232, 1236, + 1240, 1244, 1248, 1272, 1278, 1282, 1284, 1288, 1293, 1301, 1303, 1305, + 1313, 1325, 1330, 1337, 1349, 1355, 1366, 1374, 1378, 1388, 1396, 1403, + 1412, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -736,165 +869,352 @@ const ( KuneiformParserPRIVATE = 39 KuneiformParserVIEW = 40 KuneiformParserOWNER = 41 - KuneiformParserFOREIGN = 42 - KuneiformParserPRIMARY = 43 - KuneiformParserKEY = 44 - KuneiformParserON = 45 - KuneiformParserDO = 46 - KuneiformParserUNIQUE = 47 - KuneiformParserCASCADE = 48 - KuneiformParserRESTRICT = 49 - KuneiformParserSET = 50 - KuneiformParserDEFAULT = 51 - KuneiformParserNULL = 52 - KuneiformParserDELETE = 53 - KuneiformParserUPDATE = 54 - KuneiformParserREFERENCES = 55 - KuneiformParserREF = 56 - KuneiformParserNOT = 57 - KuneiformParserINDEX = 58 - KuneiformParserAND = 59 - KuneiformParserOR = 60 - KuneiformParserLIKE = 61 - KuneiformParserILIKE = 62 - KuneiformParserIN = 63 - KuneiformParserBETWEEN = 64 - KuneiformParserIS = 65 - KuneiformParserEXISTS = 66 - KuneiformParserALL = 67 - KuneiformParserANY = 68 - KuneiformParserJOIN = 69 - KuneiformParserLEFT = 70 - KuneiformParserRIGHT = 71 - KuneiformParserINNER = 72 - KuneiformParserAS = 73 - KuneiformParserASC = 74 - KuneiformParserDESC = 75 - KuneiformParserLIMIT = 76 - KuneiformParserOFFSET = 77 - KuneiformParserORDER = 78 - KuneiformParserBY = 79 - KuneiformParserGROUP = 80 - KuneiformParserHAVING = 81 - KuneiformParserRETURNS = 82 - KuneiformParserNO = 83 - KuneiformParserWITH = 84 - KuneiformParserCASE = 85 - KuneiformParserWHEN = 86 - KuneiformParserTHEN = 87 - KuneiformParserEND = 88 - KuneiformParserDISTINCT = 89 - KuneiformParserFROM = 90 - KuneiformParserWHERE = 91 - KuneiformParserCOLLATE = 92 - KuneiformParserSELECT = 93 - KuneiformParserINSERT = 94 - KuneiformParserVALUES = 95 - KuneiformParserFULL = 96 - KuneiformParserUNION = 97 - KuneiformParserINTERSECT = 98 - KuneiformParserEXCEPT = 99 - KuneiformParserNULLS = 100 - KuneiformParserFIRST = 101 - KuneiformParserLAST = 102 - KuneiformParserRETURNING = 103 - KuneiformParserINTO = 104 - KuneiformParserCONFLICT = 105 - KuneiformParserNOTHING = 106 - KuneiformParserFOR = 107 - KuneiformParserIF = 108 - KuneiformParserELSEIF = 109 - KuneiformParserELSE = 110 - KuneiformParserBREAK = 111 - KuneiformParserRETURN = 112 - KuneiformParserNEXT = 113 - KuneiformParserOVER = 114 - KuneiformParserPARTITION = 115 - KuneiformParserWINDOW = 116 - KuneiformParserFILTER = 117 - KuneiformParserRECURSIVE = 118 - KuneiformParserSTRING_ = 119 - KuneiformParserTRUE = 120 - KuneiformParserFALSE = 121 - KuneiformParserDIGITS_ = 122 - KuneiformParserBINARY_ = 123 - KuneiformParserLEGACY_FOREIGN_KEY = 124 - KuneiformParserLEGACY_ON_UPDATE = 125 - KuneiformParserLEGACY_ON_DELETE = 126 - KuneiformParserLEGACY_SET_DEFAULT = 127 - KuneiformParserLEGACY_SET_NULL = 128 - KuneiformParserLEGACY_NO_ACTION = 129 - KuneiformParserIDENTIFIER = 130 - KuneiformParserVARIABLE = 131 - KuneiformParserCONTEXTUAL_VARIABLE = 132 - KuneiformParserHASH_IDENTIFIER = 133 - KuneiformParserWS = 134 - KuneiformParserBLOCK_COMMENT = 135 - KuneiformParserLINE_COMMENT = 136 + KuneiformParserCREATE = 42 + KuneiformParserALTER = 43 + KuneiformParserCOLUMN = 44 + KuneiformParserADD = 45 + KuneiformParserDROP = 46 + KuneiformParserRENAME = 47 + KuneiformParserTO = 48 + KuneiformParserCONSTRAINT = 49 + KuneiformParserCHECK = 50 + KuneiformParserFOREIGN = 51 + KuneiformParserPRIMARY = 52 + KuneiformParserKEY = 53 + KuneiformParserON = 54 + KuneiformParserDO = 55 + KuneiformParserUNIQUE = 56 + KuneiformParserCASCADE = 57 + KuneiformParserRESTRICT = 58 + KuneiformParserSET = 59 + KuneiformParserDEFAULT = 60 + KuneiformParserNULL = 61 + KuneiformParserDELETE = 62 + KuneiformParserUPDATE = 63 + KuneiformParserREFERENCES = 64 + KuneiformParserREF = 65 + KuneiformParserNOT = 66 + KuneiformParserINDEX = 67 + KuneiformParserAND = 68 + KuneiformParserOR = 69 + KuneiformParserLIKE = 70 + KuneiformParserILIKE = 71 + KuneiformParserIN = 72 + KuneiformParserBETWEEN = 73 + KuneiformParserIS = 74 + KuneiformParserEXISTS = 75 + KuneiformParserALL = 76 + KuneiformParserANY = 77 + KuneiformParserJOIN = 78 + KuneiformParserLEFT = 79 + KuneiformParserRIGHT = 80 + KuneiformParserINNER = 81 + KuneiformParserAS = 82 + KuneiformParserASC = 83 + KuneiformParserDESC = 84 + KuneiformParserLIMIT = 85 + KuneiformParserOFFSET = 86 + KuneiformParserORDER = 87 + KuneiformParserBY = 88 + KuneiformParserGROUP = 89 + KuneiformParserHAVING = 90 + KuneiformParserRETURNS = 91 + KuneiformParserNO = 92 + KuneiformParserWITH = 93 + KuneiformParserCASE = 94 + KuneiformParserWHEN = 95 + KuneiformParserTHEN = 96 + KuneiformParserEND = 97 + KuneiformParserDISTINCT = 98 + KuneiformParserFROM = 99 + KuneiformParserWHERE = 100 + KuneiformParserCOLLATE = 101 + KuneiformParserSELECT = 102 + KuneiformParserINSERT = 103 + KuneiformParserVALUES = 104 + KuneiformParserFULL = 105 + KuneiformParserUNION = 106 + KuneiformParserINTERSECT = 107 + KuneiformParserEXCEPT = 108 + KuneiformParserNULLS = 109 + KuneiformParserFIRST = 110 + KuneiformParserLAST = 111 + KuneiformParserRETURNING = 112 + KuneiformParserINTO = 113 + KuneiformParserCONFLICT = 114 + KuneiformParserNOTHING = 115 + KuneiformParserFOR = 116 + KuneiformParserIF = 117 + KuneiformParserELSEIF = 118 + KuneiformParserELSE = 119 + KuneiformParserBREAK = 120 + KuneiformParserRETURN = 121 + KuneiformParserNEXT = 122 + KuneiformParserOVER = 123 + KuneiformParserPARTITION = 124 + KuneiformParserWINDOW = 125 + KuneiformParserFILTER = 126 + KuneiformParserRECURSIVE = 127 + KuneiformParserSTRING_ = 128 + KuneiformParserTRUE = 129 + KuneiformParserFALSE = 130 + KuneiformParserDIGITS_ = 131 + KuneiformParserBINARY_ = 132 + KuneiformParserLEGACY_FOREIGN_KEY = 133 + KuneiformParserLEGACY_ON_UPDATE = 134 + KuneiformParserLEGACY_ON_DELETE = 135 + KuneiformParserLEGACY_SET_DEFAULT = 136 + KuneiformParserLEGACY_SET_NULL = 137 + KuneiformParserLEGACY_NO_ACTION = 138 + KuneiformParserIDENTIFIER = 139 + KuneiformParserVARIABLE = 140 + KuneiformParserCONTEXTUAL_VARIABLE = 141 + KuneiformParserHASH_IDENTIFIER = 142 + KuneiformParserWS = 143 + KuneiformParserBLOCK_COMMENT = 144 + KuneiformParserLINE_COMMENT = 145 ) // KuneiformParser rules. const ( - KuneiformParserRULE_schema_entry = 0 - KuneiformParserRULE_sql_entry = 1 - KuneiformParserRULE_action_entry = 2 - KuneiformParserRULE_procedure_entry = 3 - KuneiformParserRULE_literal = 4 - KuneiformParserRULE_identifier = 5 - KuneiformParserRULE_identifier_list = 6 - KuneiformParserRULE_type = 7 - KuneiformParserRULE_type_cast = 8 - KuneiformParserRULE_variable = 9 - KuneiformParserRULE_variable_list = 10 - KuneiformParserRULE_schema = 11 - KuneiformParserRULE_annotation = 12 - KuneiformParserRULE_database_declaration = 13 - KuneiformParserRULE_use_declaration = 14 - KuneiformParserRULE_table_declaration = 15 - KuneiformParserRULE_column_def = 16 - KuneiformParserRULE_index_def = 17 - KuneiformParserRULE_foreign_key_def = 18 - KuneiformParserRULE_foreign_key_action = 19 - KuneiformParserRULE_type_list = 20 - KuneiformParserRULE_named_type_list = 21 - KuneiformParserRULE_typed_variable_list = 22 - KuneiformParserRULE_constraint = 23 - KuneiformParserRULE_access_modifier = 24 - KuneiformParserRULE_action_declaration = 25 - KuneiformParserRULE_procedure_declaration = 26 - KuneiformParserRULE_procedure_return = 27 - KuneiformParserRULE_sql = 28 - KuneiformParserRULE_sql_statement = 29 - KuneiformParserRULE_common_table_expression = 30 - KuneiformParserRULE_select_statement = 31 - KuneiformParserRULE_compound_operator = 32 - KuneiformParserRULE_ordering_term = 33 - KuneiformParserRULE_select_core = 34 - KuneiformParserRULE_relation = 35 - KuneiformParserRULE_join = 36 - KuneiformParserRULE_result_column = 37 - KuneiformParserRULE_update_statement = 38 - KuneiformParserRULE_update_set_clause = 39 - KuneiformParserRULE_insert_statement = 40 - KuneiformParserRULE_upsert_clause = 41 - KuneiformParserRULE_delete_statement = 42 - KuneiformParserRULE_sql_expr = 43 - KuneiformParserRULE_window = 44 - KuneiformParserRULE_when_then_clause = 45 - KuneiformParserRULE_sql_expr_list = 46 - KuneiformParserRULE_sql_function_call = 47 - KuneiformParserRULE_action_block = 48 - KuneiformParserRULE_action_statement = 49 - KuneiformParserRULE_procedure_block = 50 - KuneiformParserRULE_procedure_expr = 51 - KuneiformParserRULE_procedure_expr_list = 52 - KuneiformParserRULE_proc_statement = 53 - KuneiformParserRULE_variable_or_underscore = 54 - KuneiformParserRULE_procedure_function_call = 55 - KuneiformParserRULE_if_then_block = 56 - KuneiformParserRULE_range = 57 + KuneiformParserRULE_src = 0 + KuneiformParserRULE_schema_entry = 1 + KuneiformParserRULE_sql_entry = 2 + KuneiformParserRULE_action_entry = 3 + KuneiformParserRULE_procedure_entry = 4 + KuneiformParserRULE_literal = 5 + KuneiformParserRULE_identifier = 6 + KuneiformParserRULE_identifier_list = 7 + KuneiformParserRULE_type = 8 + KuneiformParserRULE_type_cast = 9 + KuneiformParserRULE_variable = 10 + KuneiformParserRULE_variable_list = 11 + KuneiformParserRULE_schema = 12 + KuneiformParserRULE_annotation = 13 + KuneiformParserRULE_database_declaration = 14 + KuneiformParserRULE_use_declaration = 15 + KuneiformParserRULE_table_declaration = 16 + KuneiformParserRULE_column_def = 17 + KuneiformParserRULE_c_column_def = 18 + KuneiformParserRULE_index_def = 19 + KuneiformParserRULE_c_index_def = 20 + KuneiformParserRULE_foreign_key_def = 21 + KuneiformParserRULE_foreign_key_action = 22 + KuneiformParserRULE_type_list = 23 + KuneiformParserRULE_named_type_list = 24 + KuneiformParserRULE_typed_variable_list = 25 + KuneiformParserRULE_constraint = 26 + KuneiformParserRULE_inline_constraint = 27 + KuneiformParserRULE_fk_action = 28 + KuneiformParserRULE_fk_constraint = 29 + KuneiformParserRULE_access_modifier = 30 + KuneiformParserRULE_action_declaration = 31 + KuneiformParserRULE_procedure_declaration = 32 + KuneiformParserRULE_procedure_return = 33 + KuneiformParserRULE_sql = 34 + KuneiformParserRULE_sql_statement = 35 + KuneiformParserRULE_common_table_expression = 36 + KuneiformParserRULE_create_table_statement = 37 + KuneiformParserRULE_constraint_def = 38 + KuneiformParserRULE_unnamed_constraint = 39 + KuneiformParserRULE_alter_table_statement = 40 + KuneiformParserRULE_alter_column_clause = 41 + KuneiformParserRULE_add_column_clause = 42 + KuneiformParserRULE_drop_column_clause = 43 + KuneiformParserRULE_rename_column_clause = 44 + KuneiformParserRULE_rename_table_clause = 45 + KuneiformParserRULE_add_fk_clause = 46 + KuneiformParserRULE_drop_fk_clause = 47 + KuneiformParserRULE_create_index_statement = 48 + KuneiformParserRULE_drop_index_statement = 49 + KuneiformParserRULE_select_statement = 50 + KuneiformParserRULE_compound_operator = 51 + KuneiformParserRULE_ordering_term = 52 + KuneiformParserRULE_select_core = 53 + KuneiformParserRULE_relation = 54 + KuneiformParserRULE_join = 55 + KuneiformParserRULE_result_column = 56 + KuneiformParserRULE_update_statement = 57 + KuneiformParserRULE_update_set_clause = 58 + KuneiformParserRULE_insert_statement = 59 + KuneiformParserRULE_upsert_clause = 60 + KuneiformParserRULE_delete_statement = 61 + KuneiformParserRULE_sql_expr = 62 + KuneiformParserRULE_window = 63 + KuneiformParserRULE_when_then_clause = 64 + KuneiformParserRULE_sql_expr_list = 65 + KuneiformParserRULE_sql_function_call = 66 + KuneiformParserRULE_action_block = 67 + KuneiformParserRULE_action_statement = 68 + KuneiformParserRULE_procedure_block = 69 + KuneiformParserRULE_procedure_expr = 70 + KuneiformParserRULE_procedure_expr_list = 71 + KuneiformParserRULE_proc_statement = 72 + KuneiformParserRULE_variable_or_underscore = 73 + KuneiformParserRULE_procedure_function_call = 74 + KuneiformParserRULE_if_then_block = 75 + KuneiformParserRULE_range = 76 ) +// ISrcContext is an interface to support dynamic dispatch. +type ISrcContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EOF() antlr.TerminalNode + AllSql() []ISqlContext + Sql(i int) ISqlContext + + // IsSrcContext differentiates from other interfaces. + IsSrcContext() +} + +type SrcContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySrcContext() *SrcContext { + var p = new(SrcContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_src + return p +} + +func InitEmptySrcContext(p *SrcContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_src +} + +func (*SrcContext) IsSrcContext() {} + +func NewSrcContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SrcContext { + var p = new(SrcContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_src + + return p +} + +func (s *SrcContext) GetParser() antlr.Parser { return s.parser } + +func (s *SrcContext) EOF() antlr.TerminalNode { + return s.GetToken(KuneiformParserEOF, 0) +} + +func (s *SrcContext) AllSql() []ISqlContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISqlContext); ok { + len++ + } + } + + tst := make([]ISqlContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISqlContext); ok { + tst[i] = t.(ISqlContext) + i++ + } + } + + return tst +} + +func (s *SrcContext) Sql(i int) ISqlContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISqlContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISqlContext) +} + +func (s *SrcContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SrcContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SrcContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitSrc(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Src() (localctx ISrcContext) { + localctx = NewSrcContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 0, KuneiformParserRULE_src) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(155) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = ((int64((_la-42)) & ^0x3f) == 0 && ((int64(1)<<(_la-42))&3461016313637371923) != 0) { + { + p.SetState(154) + p.Sql() + } + + p.SetState(157) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(159) + p.Match(KuneiformParserEOF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + // ISchema_entryContext is an interface to support dynamic dispatch. type ISchema_entryContext interface { antlr.ParserRuleContext @@ -982,14 +1302,14 @@ func (s *Schema_entryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Schema_entry() (localctx ISchema_entryContext) { localctx = NewSchema_entryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 0, KuneiformParserRULE_schema_entry) + p.EnterRule(localctx, 2, KuneiformParserRULE_schema_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(116) + p.SetState(161) p.Schema() } { - p.SetState(117) + p.SetState(162) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1097,14 +1417,14 @@ func (s *Sql_entryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Sql_entry() (localctx ISql_entryContext) { localctx = NewSql_entryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 2, KuneiformParserRULE_sql_entry) + p.EnterRule(localctx, 4, KuneiformParserRULE_sql_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(119) + p.SetState(164) p.Sql() } { - p.SetState(120) + p.SetState(165) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1212,14 +1532,14 @@ func (s *Action_entryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Action_entry() (localctx IAction_entryContext) { localctx = NewAction_entryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 4, KuneiformParserRULE_action_entry) + p.EnterRule(localctx, 6, KuneiformParserRULE_action_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(122) + p.SetState(167) p.Action_block() } { - p.SetState(123) + p.SetState(168) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1327,14 +1647,14 @@ func (s *Procedure_entryContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Procedure_entry() (localctx IProcedure_entryContext) { localctx = NewProcedure_entryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 6, KuneiformParserRULE_procedure_entry) + p.EnterRule(localctx, 8, KuneiformParserRULE_procedure_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(125) + p.SetState(170) p.Procedure_block() } { - p.SetState(126) + p.SetState(171) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1631,21 +1951,21 @@ func (s *Binary_literalContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewLiteralContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 8, KuneiformParserRULE_literal) + p.EnterRule(localctx, 10, KuneiformParserRULE_literal) var _la int - p.SetState(142) + p.SetState(187) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 2, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 3, p.GetParserRuleContext()) { case 1: localctx = NewString_literalContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(128) + p.SetState(173) p.Match(KuneiformParserSTRING_) if p.HasError() { // Recognition error - abort rule @@ -1656,7 +1976,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { case 2: localctx = NewInteger_literalContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(130) + p.SetState(175) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1665,7 +1985,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { if _la == KuneiformParserPLUS || _la == KuneiformParserMINUS { { - p.SetState(129) + p.SetState(174) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -1678,7 +1998,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } { - p.SetState(132) + p.SetState(177) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -1689,7 +2009,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { case 3: localctx = NewDecimal_literalContext(p, localctx) p.EnterOuterAlt(localctx, 3) - p.SetState(134) + p.SetState(179) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1698,7 +2018,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { if _la == KuneiformParserPLUS || _la == KuneiformParserMINUS { { - p.SetState(133) + p.SetState(178) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -1711,7 +2031,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } { - p.SetState(136) + p.SetState(181) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -1719,7 +2039,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } } { - p.SetState(137) + p.SetState(182) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -1727,7 +2047,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } } { - p.SetState(138) + p.SetState(183) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -1739,7 +2059,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewBoolean_literalContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(139) + p.SetState(184) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserTRUE || _la == KuneiformParserFALSE) { @@ -1754,7 +2074,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewNull_literalContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(140) + p.SetState(185) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -1766,7 +2086,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewBinary_literalContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(141) + p.SetState(186) p.Match(KuneiformParserBINARY_) if p.HasError() { // Recognition error - abort rule @@ -1871,8 +2191,8 @@ func (s *IdentifierContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { localctx = NewIdentifierContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 10, KuneiformParserRULE_identifier) - p.SetState(148) + p.EnterRule(localctx, 12, KuneiformParserRULE_identifier) + p.SetState(193) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1882,7 +2202,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { case KuneiformParserDOUBLE_QUOTE: p.EnterOuterAlt(localctx, 1) { - p.SetState(144) + p.SetState(189) p.Match(KuneiformParserDOUBLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -1890,7 +2210,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { } } { - p.SetState(145) + p.SetState(190) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -1898,7 +2218,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { } } { - p.SetState(146) + p.SetState(191) p.Match(KuneiformParserDOUBLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -1909,7 +2229,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { case KuneiformParserIDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(147) + p.SetState(192) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -2053,15 +2373,15 @@ func (s *Identifier_listContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { localctx = NewIdentifier_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, KuneiformParserRULE_identifier_list) + p.EnterRule(localctx, 14, KuneiformParserRULE_identifier_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(150) + p.SetState(195) p.Identifier() } - p.SetState(155) + p.SetState(200) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2070,7 +2390,7 @@ func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(151) + p.SetState(196) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2078,11 +2398,11 @@ func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { } } { - p.SetState(152) + p.SetState(197) p.Identifier() } - p.SetState(157) + p.SetState(202) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2208,22 +2528,22 @@ func (s *TypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Type_() (localctx ITypeContext) { localctx = NewTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 14, KuneiformParserRULE_type) + p.EnterRule(localctx, 16, KuneiformParserRULE_type) p.EnterOuterAlt(localctx, 1) { - p.SetState(158) + p.SetState(203) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(164) + p.SetState(209) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 5, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 6, p.GetParserRuleContext()) == 1 { { - p.SetState(159) + p.SetState(204) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -2231,7 +2551,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(160) + p.SetState(205) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2239,7 +2559,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(161) + p.SetState(206) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2247,7 +2567,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(162) + p.SetState(207) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2255,7 +2575,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(163) + p.SetState(208) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -2266,12 +2586,12 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } else if p.HasError() { // JIM goto errorExit } - p.SetState(168) + p.SetState(213) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 6, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 7, p.GetParserRuleContext()) == 1 { { - p.SetState(166) + p.SetState(211) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -2279,7 +2599,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(167) + p.SetState(212) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -2391,10 +2711,10 @@ func (s *Type_castContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Type_cast() (localctx IType_castContext) { localctx = NewType_castContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 16, KuneiformParserRULE_type_cast) + p.EnterRule(localctx, 18, KuneiformParserRULE_type_cast) p.EnterOuterAlt(localctx, 1) { - p.SetState(170) + p.SetState(215) p.Match(KuneiformParserTYPE_CAST) if p.HasError() { // Recognition error - abort rule @@ -2402,7 +2722,7 @@ func (p *KuneiformParser) Type_cast() (localctx IType_castContext) { } } { - p.SetState(171) + p.SetState(216) p.Type_() } @@ -2494,12 +2814,12 @@ func (s *VariableContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Variable() (localctx IVariableContext) { localctx = NewVariableContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 18, KuneiformParserRULE_variable) + p.EnterRule(localctx, 20, KuneiformParserRULE_variable) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(173) + p.SetState(218) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE) { @@ -2641,15 +2961,15 @@ func (s *Variable_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { localctx = NewVariable_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 20, KuneiformParserRULE_variable_list) + p.EnterRule(localctx, 22, KuneiformParserRULE_variable_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(175) + p.SetState(220) p.Variable() } - p.SetState(180) + p.SetState(225) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2658,7 +2978,7 @@ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(176) + p.SetState(221) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2666,11 +2986,11 @@ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { } } { - p.SetState(177) + p.SetState(222) p.Variable() } - p.SetState(182) + p.SetState(227) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2945,15 +3265,15 @@ func (s *SchemaContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Schema() (localctx ISchemaContext) { localctx = NewSchemaContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 22, KuneiformParserRULE_schema) + p.EnterRule(localctx, 24, KuneiformParserRULE_schema) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(183) + p.SetState(228) p.Database_declaration() } - p.SetState(190) + p.SetState(235) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2961,34 +3281,34 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { _la = p.GetTokenStream().LA(1) for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&257698037760) != 0) || _la == KuneiformParserCONTEXTUAL_VARIABLE { - p.SetState(188) + p.SetState(233) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 8, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 9, p.GetParserRuleContext()) { case 1: { - p.SetState(184) + p.SetState(229) p.Use_declaration() } case 2: { - p.SetState(185) + p.SetState(230) p.Table_declaration() } case 3: { - p.SetState(186) + p.SetState(231) p.Action_declaration() } case 4: { - p.SetState(187) + p.SetState(232) p.Procedure_declaration() } @@ -2996,7 +3316,7 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { goto errorExit } - p.SetState(192) + p.SetState(237) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3170,12 +3490,12 @@ func (s *AnnotationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { localctx = NewAnnotationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 24, KuneiformParserRULE_annotation) + p.EnterRule(localctx, 26, KuneiformParserRULE_annotation) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(193) + p.SetState(238) p.Match(KuneiformParserCONTEXTUAL_VARIABLE) if p.HasError() { // Recognition error - abort rule @@ -3183,14 +3503,14 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(194) + p.SetState(239) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(207) + p.SetState(252) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3199,7 +3519,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { if _la == KuneiformParserIDENTIFIER { { - p.SetState(195) + p.SetState(240) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3207,7 +3527,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(196) + p.SetState(241) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -3215,10 +3535,10 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(197) + p.SetState(242) p.Literal() } - p.SetState(204) + p.SetState(249) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3227,7 +3547,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { for _la == KuneiformParserCOMMA { { - p.SetState(198) + p.SetState(243) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -3235,7 +3555,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(199) + p.SetState(244) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3243,7 +3563,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(200) + p.SetState(245) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -3251,11 +3571,11 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(201) + p.SetState(246) p.Literal() } - p.SetState(206) + p.SetState(251) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3265,7 +3585,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } { - p.SetState(209) + p.SetState(254) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -3366,10 +3686,10 @@ func (s *Database_declarationContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declarationContext) { localctx = NewDatabase_declarationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 26, KuneiformParserRULE_database_declaration) + p.EnterRule(localctx, 28, KuneiformParserRULE_database_declaration) p.EnterOuterAlt(localctx, 1) { - p.SetState(211) + p.SetState(256) p.Match(KuneiformParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -3377,7 +3697,7 @@ func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declaration } } { - p.SetState(212) + p.SetState(257) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3385,7 +3705,7 @@ func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declaration } } { - p.SetState(213) + p.SetState(258) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -3569,12 +3889,12 @@ func (s *Use_declarationContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { localctx = NewUse_declarationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 28, KuneiformParserRULE_use_declaration) + p.EnterRule(localctx, 30, KuneiformParserRULE_use_declaration) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(215) + p.SetState(260) p.Match(KuneiformParserUSE) if p.HasError() { // Recognition error - abort rule @@ -3582,14 +3902,14 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(216) + p.SetState(261) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(232) + p.SetState(277) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3598,7 +3918,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { if _la == KuneiformParserLBRACE { { - p.SetState(217) + p.SetState(262) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -3606,7 +3926,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(218) + p.SetState(263) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3614,7 +3934,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(219) + p.SetState(264) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule @@ -3622,10 +3942,10 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(220) + p.SetState(265) p.Literal() } - p.SetState(227) + p.SetState(272) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3634,7 +3954,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { for _la == KuneiformParserCOMMA { { - p.SetState(221) + p.SetState(266) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -3642,7 +3962,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(222) + p.SetState(267) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3650,7 +3970,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(223) + p.SetState(268) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule @@ -3658,11 +3978,11 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(224) + p.SetState(269) p.Literal() } - p.SetState(229) + p.SetState(274) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3670,7 +3990,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(230) + p.SetState(275) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -3680,7 +4000,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } { - p.SetState(234) + p.SetState(279) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -3688,7 +4008,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(235) + p.SetState(280) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3696,7 +4016,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(236) + p.SetState(281) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -3941,12 +4261,12 @@ func (s *Table_declarationContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContext) { localctx = NewTable_declarationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 30, KuneiformParserRULE_table_declaration) + p.EnterRule(localctx, 32, KuneiformParserRULE_table_declaration) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(238) + p.SetState(283) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -3954,7 +4274,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(239) + p.SetState(284) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3962,7 +4282,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(240) + p.SetState(285) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -3970,10 +4290,10 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(241) + p.SetState(286) p.Column_def() } - p.SetState(250) + p.SetState(295) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3982,14 +4302,14 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex for _la == KuneiformParserCOMMA { { - p.SetState(242) + p.SetState(287) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(246) + p.SetState(291) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3998,19 +4318,19 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex switch p.GetTokenStream().LA(1) { case KuneiformParserIDENTIFIER: { - p.SetState(243) + p.SetState(288) p.Column_def() } case KuneiformParserHASH_IDENTIFIER: { - p.SetState(244) + p.SetState(289) p.Index_def() } case KuneiformParserFOREIGN, KuneiformParserLEGACY_FOREIGN_KEY: { - p.SetState(245) + p.SetState(290) p.Foreign_key_def() } @@ -4019,7 +4339,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex goto errorExit } - p.SetState(252) + p.SetState(297) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4027,7 +4347,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex _la = p.GetTokenStream().LA(1) } { - p.SetState(253) + p.SetState(298) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -4189,12 +4509,12 @@ func (s *Column_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { localctx = NewColumn_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 32, KuneiformParserRULE_column_def) + p.EnterRule(localctx, 34, KuneiformParserRULE_column_def) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(255) + p.SetState(300) var _m = p.Match(KuneiformParserIDENTIFIER) @@ -4205,23 +4525,23 @@ func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { } } { - p.SetState(256) + p.SetState(301) p.Type_() } - p.SetState(260) + p.SetState(305) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&146516521470918656) != 0) || _la == KuneiformParserIDENTIFIER { + for ((int64((_la-52)) & ^0x3f) == 0 && ((int64(1)<<(_la-52))&16657) != 0) || _la == KuneiformParserIDENTIFIER { { - p.SetState(257) + p.SetState(302) p.Constraint() } - p.SetState(262) + p.SetState(307) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4242,97 +4562,70 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IIndex_defContext is an interface to support dynamic dispatch. -type IIndex_defContext interface { +// IC_column_defContext is an interface to support dynamic dispatch. +type IC_column_defContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser - // GetColumns returns the columns rule contexts. - GetColumns() IIdentifier_listContext + // GetName returns the name token. + GetName() antlr.Token - // SetColumns sets the columns rule contexts. - SetColumns(IIdentifier_listContext) + // SetName sets the name token. + SetName(antlr.Token) // Getter signatures - HASH_IDENTIFIER() antlr.TerminalNode - LPAREN() antlr.TerminalNode - RPAREN() antlr.TerminalNode - UNIQUE() antlr.TerminalNode - INDEX() antlr.TerminalNode - PRIMARY() antlr.TerminalNode - Identifier_list() IIdentifier_listContext + Type_() ITypeContext + IDENTIFIER() antlr.TerminalNode + AllInline_constraint() []IInline_constraintContext + Inline_constraint(i int) IInline_constraintContext - // IsIndex_defContext differentiates from other interfaces. - IsIndex_defContext() + // IsC_column_defContext differentiates from other interfaces. + IsC_column_defContext() } -type Index_defContext struct { +type C_column_defContext struct { antlr.BaseParserRuleContext - parser antlr.Parser - columns IIdentifier_listContext + parser antlr.Parser + name antlr.Token } -func NewEmptyIndex_defContext() *Index_defContext { - var p = new(Index_defContext) +func NewEmptyC_column_defContext() *C_column_defContext { + var p = new(C_column_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_index_def + p.RuleIndex = KuneiformParserRULE_c_column_def return p } -func InitEmptyIndex_defContext(p *Index_defContext) { +func InitEmptyC_column_defContext(p *C_column_defContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_index_def + p.RuleIndex = KuneiformParserRULE_c_column_def } -func (*Index_defContext) IsIndex_defContext() {} +func (*C_column_defContext) IsC_column_defContext() {} -func NewIndex_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Index_defContext { - var p = new(Index_defContext) +func NewC_column_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *C_column_defContext { + var p = new(C_column_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_index_def + p.RuleIndex = KuneiformParserRULE_c_column_def return p } -func (s *Index_defContext) GetParser() antlr.Parser { return s.parser } - -func (s *Index_defContext) GetColumns() IIdentifier_listContext { return s.columns } - -func (s *Index_defContext) SetColumns(v IIdentifier_listContext) { s.columns = v } - -func (s *Index_defContext) HASH_IDENTIFIER() antlr.TerminalNode { - return s.GetToken(KuneiformParserHASH_IDENTIFIER, 0) -} - -func (s *Index_defContext) LPAREN() antlr.TerminalNode { - return s.GetToken(KuneiformParserLPAREN, 0) -} - -func (s *Index_defContext) RPAREN() antlr.TerminalNode { - return s.GetToken(KuneiformParserRPAREN, 0) -} - -func (s *Index_defContext) UNIQUE() antlr.TerminalNode { - return s.GetToken(KuneiformParserUNIQUE, 0) -} +func (s *C_column_defContext) GetParser() antlr.Parser { return s.parser } -func (s *Index_defContext) INDEX() antlr.TerminalNode { - return s.GetToken(KuneiformParserINDEX, 0) -} +func (s *C_column_defContext) GetName() antlr.Token { return s.name } -func (s *Index_defContext) PRIMARY() antlr.TerminalNode { - return s.GetToken(KuneiformParserPRIMARY, 0) -} +func (s *C_column_defContext) SetName(v antlr.Token) { s.name = v } -func (s *Index_defContext) Identifier_list() IIdentifier_listContext { +func (s *C_column_defContext) Type_() ITypeContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIdentifier_listContext); ok { + if _, ok := ctx.(ITypeContext); ok { t = ctx.(antlr.RuleContext) break } @@ -4342,74 +4635,112 @@ func (s *Index_defContext) Identifier_list() IIdentifier_listContext { return nil } - return t.(IIdentifier_listContext) + return t.(ITypeContext) } -func (s *Index_defContext) GetRuleContext() antlr.RuleContext { - return s +func (s *C_column_defContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(KuneiformParserIDENTIFIER, 0) } -func (s *Index_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) +func (s *C_column_defContext) AllInline_constraint() []IInline_constraintContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IInline_constraintContext); ok { + len++ + } + } + + tst := make([]IInline_constraintContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IInline_constraintContext); ok { + tst[i] = t.(IInline_constraintContext) + i++ + } + } + + return tst } -func (s *Index_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *C_column_defContext) Inline_constraint(i int) IInline_constraintContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInline_constraintContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IInline_constraintContext) +} + +func (s *C_column_defContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *C_column_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *C_column_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitIndex_def(s) + return t.VisitC_column_def(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { - localctx = NewIndex_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 34, KuneiformParserRULE_index_def) +func (p *KuneiformParser) C_column_def() (localctx IC_column_defContext) { + localctx = NewC_column_defContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 36, KuneiformParserRULE_c_column_def) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(263) - p.Match(KuneiformParserHASH_IDENTIFIER) + p.SetState(308) + + var _m = p.Match(KuneiformParserIDENTIFIER) + + localctx.(*C_column_defContext).name = _m if p.HasError() { // Recognition error - abort rule goto errorExit } } { - p.SetState(264) - _la = p.GetTokenStream().LA(1) - - if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&288379909733089280) != 0) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } + p.SetState(309) + p.Type_() } - { - p.SetState(265) - p.Match(KuneiformParserLPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(313) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit } - { - p.SetState(266) + _la = p.GetTokenStream().LA(1) - var _x = p.Identifier_list() + for (int64((_la-50)) & ^0x3f) == 0 && ((int64(1)<<(_la-50))&83013) != 0 { + { + p.SetState(310) + p.Inline_constraint() + } - localctx.(*Index_defContext).columns = _x - } - { - p.SetState(267) - p.Match(KuneiformParserRPAREN) + p.SetState(315) + p.GetErrorHandler().Sync(p) if p.HasError() { - // Recognition error - abort rule goto errorExit } + _la = p.GetTokenStream().LA(1) } errorExit: @@ -4425,145 +4756,99 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IForeign_key_defContext is an interface to support dynamic dispatch. -type IForeign_key_defContext interface { +// IIndex_defContext is an interface to support dynamic dispatch. +type IIndex_defContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser - // GetParent_table returns the parent_table token. - GetParent_table() antlr.Token - - // SetParent_table sets the parent_table token. - SetParent_table(antlr.Token) - - // GetChild_keys returns the child_keys rule contexts. - GetChild_keys() IIdentifier_listContext - - // GetParent_keys returns the parent_keys rule contexts. - GetParent_keys() IIdentifier_listContext - - // SetChild_keys sets the child_keys rule contexts. - SetChild_keys(IIdentifier_listContext) + // GetColumns returns the columns rule contexts. + GetColumns() IIdentifier_listContext - // SetParent_keys sets the parent_keys rule contexts. - SetParent_keys(IIdentifier_listContext) + // SetColumns sets the columns rule contexts. + SetColumns(IIdentifier_listContext) // Getter signatures - AllLPAREN() []antlr.TerminalNode - LPAREN(i int) antlr.TerminalNode - AllRPAREN() []antlr.TerminalNode - RPAREN(i int) antlr.TerminalNode - AllIdentifier_list() []IIdentifier_listContext - Identifier_list(i int) IIdentifier_listContext - REFERENCES() antlr.TerminalNode - REF() antlr.TerminalNode - IDENTIFIER() antlr.TerminalNode - FOREIGN() antlr.TerminalNode - KEY() antlr.TerminalNode - LEGACY_FOREIGN_KEY() antlr.TerminalNode - AllForeign_key_action() []IForeign_key_actionContext - Foreign_key_action(i int) IForeign_key_actionContext + HASH_IDENTIFIER() antlr.TerminalNode + LPAREN() antlr.TerminalNode + RPAREN() antlr.TerminalNode + UNIQUE() antlr.TerminalNode + INDEX() antlr.TerminalNode + PRIMARY() antlr.TerminalNode + Identifier_list() IIdentifier_listContext - // IsForeign_key_defContext differentiates from other interfaces. - IsForeign_key_defContext() + // IsIndex_defContext differentiates from other interfaces. + IsIndex_defContext() } -type Foreign_key_defContext struct { +type Index_defContext struct { antlr.BaseParserRuleContext - parser antlr.Parser - child_keys IIdentifier_listContext - parent_table antlr.Token - parent_keys IIdentifier_listContext + parser antlr.Parser + columns IIdentifier_listContext } -func NewEmptyForeign_key_defContext() *Foreign_key_defContext { - var p = new(Foreign_key_defContext) +func NewEmptyIndex_defContext() *Index_defContext { + var p = new(Index_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_foreign_key_def + p.RuleIndex = KuneiformParserRULE_index_def return p } -func InitEmptyForeign_key_defContext(p *Foreign_key_defContext) { +func InitEmptyIndex_defContext(p *Index_defContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_foreign_key_def + p.RuleIndex = KuneiformParserRULE_index_def } -func (*Foreign_key_defContext) IsForeign_key_defContext() {} +func (*Index_defContext) IsIndex_defContext() {} -func NewForeign_key_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_key_defContext { - var p = new(Foreign_key_defContext) +func NewIndex_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Index_defContext { + var p = new(Index_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_foreign_key_def + p.RuleIndex = KuneiformParserRULE_index_def return p } -func (s *Foreign_key_defContext) GetParser() antlr.Parser { return s.parser } - -func (s *Foreign_key_defContext) GetParent_table() antlr.Token { return s.parent_table } - -func (s *Foreign_key_defContext) SetParent_table(v antlr.Token) { s.parent_table = v } - -func (s *Foreign_key_defContext) GetChild_keys() IIdentifier_listContext { return s.child_keys } - -func (s *Foreign_key_defContext) GetParent_keys() IIdentifier_listContext { return s.parent_keys } +func (s *Index_defContext) GetParser() antlr.Parser { return s.parser } -func (s *Foreign_key_defContext) SetChild_keys(v IIdentifier_listContext) { s.child_keys = v } +func (s *Index_defContext) GetColumns() IIdentifier_listContext { return s.columns } -func (s *Foreign_key_defContext) SetParent_keys(v IIdentifier_listContext) { s.parent_keys = v } +func (s *Index_defContext) SetColumns(v IIdentifier_listContext) { s.columns = v } -func (s *Foreign_key_defContext) AllLPAREN() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserLPAREN) +func (s *Index_defContext) HASH_IDENTIFIER() antlr.TerminalNode { + return s.GetToken(KuneiformParserHASH_IDENTIFIER, 0) } -func (s *Foreign_key_defContext) LPAREN(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserLPAREN, i) +func (s *Index_defContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) } -func (s *Foreign_key_defContext) AllRPAREN() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserRPAREN) +func (s *Index_defContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) } -func (s *Foreign_key_defContext) RPAREN(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserRPAREN, i) +func (s *Index_defContext) UNIQUE() antlr.TerminalNode { + return s.GetToken(KuneiformParserUNIQUE, 0) } -func (s *Foreign_key_defContext) AllIdentifier_list() []IIdentifier_listContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIdentifier_listContext); ok { - len++ - } - } - - tst := make([]IIdentifier_listContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIdentifier_listContext); ok { - tst[i] = t.(IIdentifier_listContext) - i++ - } - } +func (s *Index_defContext) INDEX() antlr.TerminalNode { + return s.GetToken(KuneiformParserINDEX, 0) +} - return tst +func (s *Index_defContext) PRIMARY() antlr.TerminalNode { + return s.GetToken(KuneiformParserPRIMARY, 0) } -func (s *Foreign_key_defContext) Identifier_list(i int) IIdentifier_listContext { +func (s *Index_defContext) Identifier_list() IIdentifier_listContext { var t antlr.RuleContext - j := 0 for _, ctx := range s.GetChildren() { if _, ok := ctx.(IIdentifier_listContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ + t = ctx.(antlr.RuleContext) + break } } @@ -4574,61 +4859,158 @@ func (s *Foreign_key_defContext) Identifier_list(i int) IIdentifier_listContext return t.(IIdentifier_listContext) } -func (s *Foreign_key_defContext) REFERENCES() antlr.TerminalNode { - return s.GetToken(KuneiformParserREFERENCES, 0) -} - -func (s *Foreign_key_defContext) REF() antlr.TerminalNode { - return s.GetToken(KuneiformParserREF, 0) +func (s *Index_defContext) GetRuleContext() antlr.RuleContext { + return s } -func (s *Foreign_key_defContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(KuneiformParserIDENTIFIER, 0) +func (s *Index_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Foreign_key_defContext) FOREIGN() antlr.TerminalNode { - return s.GetToken(KuneiformParserFOREIGN, 0) -} +func (s *Index_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitIndex_def(s) -func (s *Foreign_key_defContext) KEY() antlr.TerminalNode { - return s.GetToken(KuneiformParserKEY, 0) + default: + return t.VisitChildren(s) + } } -func (s *Foreign_key_defContext) LEGACY_FOREIGN_KEY() antlr.TerminalNode { - return s.GetToken(KuneiformParserLEGACY_FOREIGN_KEY, 0) -} +func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { + localctx = NewIndex_defContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 38, KuneiformParserRULE_index_def) + var _la int -func (s *Foreign_key_defContext) AllForeign_key_action() []IForeign_key_actionContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IForeign_key_actionContext); ok { - len++ + p.EnterOuterAlt(localctx, 1) + { + p.SetState(316) + p.Match(KuneiformParserHASH_IDENTIFIER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit } } + { + p.SetState(317) + _la = p.GetTokenStream().LA(1) - tst := make([]IForeign_key_actionContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IForeign_key_actionContext); ok { - tst[i] = t.(IForeign_key_actionContext) - i++ + if !((int64((_la-52)) & ^0x3f) == 0 && ((int64(1)<<(_la-52))&32785) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() } } + { + p.SetState(318) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(319) - return tst -} - -func (s *Foreign_key_defContext) Foreign_key_action(i int) IForeign_key_actionContext { + var _x = p.Identifier_list() + + localctx.(*Index_defContext).columns = _x + } + { + p.SetState(320) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IC_index_defContext is an interface to support dynamic dispatch. +type IC_index_defContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // GetColumns returns the columns rule contexts. + GetColumns() IIdentifier_listContext + + // SetColumns sets the columns rule contexts. + SetColumns(IIdentifier_listContext) + + // Getter signatures + INDEX() antlr.TerminalNode + Identifier() IIdentifierContext + LPAREN() antlr.TerminalNode + RPAREN() antlr.TerminalNode + Identifier_list() IIdentifier_listContext + UNIQUE() antlr.TerminalNode + + // IsC_index_defContext differentiates from other interfaces. + IsC_index_defContext() +} + +type C_index_defContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser + columns IIdentifier_listContext +} + +func NewEmptyC_index_defContext() *C_index_defContext { + var p = new(C_index_defContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_c_index_def + return p +} + +func InitEmptyC_index_defContext(p *C_index_defContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_c_index_def +} + +func (*C_index_defContext) IsC_index_defContext() {} + +func NewC_index_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *C_index_defContext { + var p = new(C_index_defContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_c_index_def + + return p +} + +func (s *C_index_defContext) GetParser() antlr.Parser { return s.parser } + +func (s *C_index_defContext) GetColumns() IIdentifier_listContext { return s.columns } + +func (s *C_index_defContext) SetColumns(v IIdentifier_listContext) { s.columns = v } + +func (s *C_index_defContext) INDEX() antlr.TerminalNode { + return s.GetToken(KuneiformParserINDEX, 0) +} + +func (s *C_index_defContext) Identifier() IIdentifierContext { var t antlr.RuleContext - j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IForeign_key_actionContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break } } @@ -4636,119 +5018,93 @@ func (s *Foreign_key_defContext) Foreign_key_action(i int) IForeign_key_actionCo return nil } - return t.(IForeign_key_actionContext) + return t.(IIdentifierContext) } -func (s *Foreign_key_defContext) GetRuleContext() antlr.RuleContext { +func (s *C_index_defContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) +} + +func (s *C_index_defContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) +} + +func (s *C_index_defContext) Identifier_list() IIdentifier_listContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifier_listContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifier_listContext) +} + +func (s *C_index_defContext) UNIQUE() antlr.TerminalNode { + return s.GetToken(KuneiformParserUNIQUE, 0) +} + +func (s *C_index_defContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Foreign_key_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *C_index_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Foreign_key_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *C_index_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitForeign_key_def(s) + return t.VisitC_index_def(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { - localctx = NewForeign_key_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 36, KuneiformParserRULE_foreign_key_def) +func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { + localctx = NewC_index_defContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 40, KuneiformParserRULE_c_index_def) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(272) + p.SetState(323) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } + _la = p.GetTokenStream().LA(1) - switch p.GetTokenStream().LA(1) { - case KuneiformParserFOREIGN: - { - p.SetState(269) - p.Match(KuneiformParserFOREIGN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(270) - p.Match(KuneiformParserKEY) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - case KuneiformParserLEGACY_FOREIGN_KEY: + if _la == KuneiformParserUNIQUE { { - p.SetState(271) - p.Match(KuneiformParserLEGACY_FOREIGN_KEY) + p.SetState(322) + p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - goto errorExit - } - { - p.SetState(274) - p.Match(KuneiformParserLPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(275) - - var _x = p.Identifier_list() - - localctx.(*Foreign_key_defContext).child_keys = _x } { - p.SetState(276) - p.Match(KuneiformParserRPAREN) + p.SetState(325) + p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule goto errorExit } } { - p.SetState(277) - _la = p.GetTokenStream().LA(1) - - if !(_la == KuneiformParserREFERENCES || _la == KuneiformParserREF) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(278) - - var _m = p.Match(KuneiformParserIDENTIFIER) - - localctx.(*Foreign_key_defContext).parent_table = _m - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(326) + p.Identifier() } { - p.SetState(279) + p.SetState(327) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -4756,40 +5112,20 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(280) + p.SetState(328) var _x = p.Identifier_list() - localctx.(*Foreign_key_defContext).parent_keys = _x + localctx.(*C_index_defContext).columns = _x } { - p.SetState(281) + p.SetState(329) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(285) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - for _la == KuneiformParserON || _la == KuneiformParserLEGACY_ON_UPDATE || _la == KuneiformParserLEGACY_ON_DELETE { - { - p.SetState(282) - p.Foreign_key_action() - } - - p.SetState(287) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - } errorExit: if p.HasError() { @@ -4804,417 +5140,4709 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IForeign_key_actionContext is an interface to support dynamic dispatch. -type IForeign_key_actionContext interface { +// IForeign_key_defContext is an interface to support dynamic dispatch. +type IForeign_key_defContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser - // Getter signatures - CASCADE() antlr.TerminalNode - RESTRICT() antlr.TerminalNode - DO() antlr.TerminalNode - ON() antlr.TerminalNode - UPDATE() antlr.TerminalNode - LEGACY_ON_UPDATE() antlr.TerminalNode - DELETE() antlr.TerminalNode - LEGACY_ON_DELETE() antlr.TerminalNode - NO() antlr.TerminalNode - ACTION() antlr.TerminalNode - LEGACY_NO_ACTION() antlr.TerminalNode - SET() antlr.TerminalNode - NULL() antlr.TerminalNode - LEGACY_SET_NULL() antlr.TerminalNode - DEFAULT() antlr.TerminalNode - LEGACY_SET_DEFAULT() antlr.TerminalNode + // GetParent_table returns the parent_table token. + GetParent_table() antlr.Token - // IsForeign_key_actionContext differentiates from other interfaces. - IsForeign_key_actionContext() -} + // SetParent_table sets the parent_table token. + SetParent_table(antlr.Token) -type Foreign_key_actionContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser -} + // GetChild_keys returns the child_keys rule contexts. + GetChild_keys() IIdentifier_listContext -func NewEmptyForeign_key_actionContext() *Foreign_key_actionContext { - var p = new(Foreign_key_actionContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_foreign_key_action - return p -} + // GetParent_keys returns the parent_keys rule contexts. + GetParent_keys() IIdentifier_listContext -func InitEmptyForeign_key_actionContext(p *Foreign_key_actionContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_foreign_key_action -} + // SetChild_keys sets the child_keys rule contexts. + SetChild_keys(IIdentifier_listContext) -func (*Foreign_key_actionContext) IsForeign_key_actionContext() {} + // SetParent_keys sets the parent_keys rule contexts. + SetParent_keys(IIdentifier_listContext) -func NewForeign_key_actionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_key_actionContext { - var p = new(Foreign_key_actionContext) + // Getter signatures + AllLPAREN() []antlr.TerminalNode + LPAREN(i int) antlr.TerminalNode + AllRPAREN() []antlr.TerminalNode + RPAREN(i int) antlr.TerminalNode + AllIdentifier_list() []IIdentifier_listContext + Identifier_list(i int) IIdentifier_listContext + REFERENCES() antlr.TerminalNode + REF() antlr.TerminalNode + IDENTIFIER() antlr.TerminalNode + FOREIGN() antlr.TerminalNode + KEY() antlr.TerminalNode + LEGACY_FOREIGN_KEY() antlr.TerminalNode + AllForeign_key_action() []IForeign_key_actionContext + Foreign_key_action(i int) IForeign_key_actionContext + + // IsForeign_key_defContext differentiates from other interfaces. + IsForeign_key_defContext() +} + +type Foreign_key_defContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser + child_keys IIdentifier_listContext + parent_table antlr.Token + parent_keys IIdentifier_listContext +} + +func NewEmptyForeign_key_defContext() *Foreign_key_defContext { + var p = new(Foreign_key_defContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_foreign_key_def + return p +} + +func InitEmptyForeign_key_defContext(p *Foreign_key_defContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_foreign_key_def +} + +func (*Foreign_key_defContext) IsForeign_key_defContext() {} + +func NewForeign_key_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_key_defContext { + var p = new(Foreign_key_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_foreign_key_action + p.RuleIndex = KuneiformParserRULE_foreign_key_def return p } -func (s *Foreign_key_actionContext) GetParser() antlr.Parser { return s.parser } +func (s *Foreign_key_defContext) GetParser() antlr.Parser { return s.parser } -func (s *Foreign_key_actionContext) CASCADE() antlr.TerminalNode { - return s.GetToken(KuneiformParserCASCADE, 0) -} +func (s *Foreign_key_defContext) GetParent_table() antlr.Token { return s.parent_table } -func (s *Foreign_key_actionContext) RESTRICT() antlr.TerminalNode { - return s.GetToken(KuneiformParserRESTRICT, 0) -} +func (s *Foreign_key_defContext) SetParent_table(v antlr.Token) { s.parent_table = v } -func (s *Foreign_key_actionContext) DO() antlr.TerminalNode { - return s.GetToken(KuneiformParserDO, 0) +func (s *Foreign_key_defContext) GetChild_keys() IIdentifier_listContext { return s.child_keys } + +func (s *Foreign_key_defContext) GetParent_keys() IIdentifier_listContext { return s.parent_keys } + +func (s *Foreign_key_defContext) SetChild_keys(v IIdentifier_listContext) { s.child_keys = v } + +func (s *Foreign_key_defContext) SetParent_keys(v IIdentifier_listContext) { s.parent_keys = v } + +func (s *Foreign_key_defContext) AllLPAREN() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserLPAREN) } -func (s *Foreign_key_actionContext) ON() antlr.TerminalNode { - return s.GetToken(KuneiformParserON, 0) +func (s *Foreign_key_defContext) LPAREN(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, i) } -func (s *Foreign_key_actionContext) UPDATE() antlr.TerminalNode { - return s.GetToken(KuneiformParserUPDATE, 0) +func (s *Foreign_key_defContext) AllRPAREN() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserRPAREN) } -func (s *Foreign_key_actionContext) LEGACY_ON_UPDATE() antlr.TerminalNode { - return s.GetToken(KuneiformParserLEGACY_ON_UPDATE, 0) +func (s *Foreign_key_defContext) RPAREN(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, i) } -func (s *Foreign_key_actionContext) DELETE() antlr.TerminalNode { - return s.GetToken(KuneiformParserDELETE, 0) +func (s *Foreign_key_defContext) AllIdentifier_list() []IIdentifier_listContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIdentifier_listContext); ok { + len++ + } + } + + tst := make([]IIdentifier_listContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIdentifier_listContext); ok { + tst[i] = t.(IIdentifier_listContext) + i++ + } + } + + return tst } -func (s *Foreign_key_actionContext) LEGACY_ON_DELETE() antlr.TerminalNode { - return s.GetToken(KuneiformParserLEGACY_ON_DELETE, 0) +func (s *Foreign_key_defContext) Identifier_list(i int) IIdentifier_listContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifier_listContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIdentifier_listContext) } -func (s *Foreign_key_actionContext) NO() antlr.TerminalNode { - return s.GetToken(KuneiformParserNO, 0) +func (s *Foreign_key_defContext) REFERENCES() antlr.TerminalNode { + return s.GetToken(KuneiformParserREFERENCES, 0) } -func (s *Foreign_key_actionContext) ACTION() antlr.TerminalNode { - return s.GetToken(KuneiformParserACTION, 0) +func (s *Foreign_key_defContext) REF() antlr.TerminalNode { + return s.GetToken(KuneiformParserREF, 0) } -func (s *Foreign_key_actionContext) LEGACY_NO_ACTION() antlr.TerminalNode { - return s.GetToken(KuneiformParserLEGACY_NO_ACTION, 0) +func (s *Foreign_key_defContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(KuneiformParserIDENTIFIER, 0) } -func (s *Foreign_key_actionContext) SET() antlr.TerminalNode { - return s.GetToken(KuneiformParserSET, 0) +func (s *Foreign_key_defContext) FOREIGN() antlr.TerminalNode { + return s.GetToken(KuneiformParserFOREIGN, 0) } -func (s *Foreign_key_actionContext) NULL() antlr.TerminalNode { - return s.GetToken(KuneiformParserNULL, 0) +func (s *Foreign_key_defContext) KEY() antlr.TerminalNode { + return s.GetToken(KuneiformParserKEY, 0) } -func (s *Foreign_key_actionContext) LEGACY_SET_NULL() antlr.TerminalNode { - return s.GetToken(KuneiformParserLEGACY_SET_NULL, 0) +func (s *Foreign_key_defContext) LEGACY_FOREIGN_KEY() antlr.TerminalNode { + return s.GetToken(KuneiformParserLEGACY_FOREIGN_KEY, 0) } -func (s *Foreign_key_actionContext) DEFAULT() antlr.TerminalNode { - return s.GetToken(KuneiformParserDEFAULT, 0) +func (s *Foreign_key_defContext) AllForeign_key_action() []IForeign_key_actionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IForeign_key_actionContext); ok { + len++ + } + } + + tst := make([]IForeign_key_actionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IForeign_key_actionContext); ok { + tst[i] = t.(IForeign_key_actionContext) + i++ + } + } + + return tst } -func (s *Foreign_key_actionContext) LEGACY_SET_DEFAULT() antlr.TerminalNode { - return s.GetToken(KuneiformParserLEGACY_SET_DEFAULT, 0) +func (s *Foreign_key_defContext) Foreign_key_action(i int) IForeign_key_actionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForeign_key_actionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IForeign_key_actionContext) } -func (s *Foreign_key_actionContext) GetRuleContext() antlr.RuleContext { +func (s *Foreign_key_defContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Foreign_key_actionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Foreign_key_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Foreign_key_actionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Foreign_key_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitForeign_key_action(s) + return t.VisitForeign_key_def(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionContext) { - localctx = NewForeign_key_actionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 38, KuneiformParserRULE_foreign_key_action) +func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { + localctx = NewForeign_key_defContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 42, KuneiformParserRULE_foreign_key_def) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(298) + p.SetState(334) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 21, p.GetParserRuleContext()) { - case 1: - p.SetState(291) - p.GetErrorHandler().Sync(p) + switch p.GetTokenStream().LA(1) { + case KuneiformParserFOREIGN: + { + p.SetState(331) + p.Match(KuneiformParserFOREIGN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(332) + p.Match(KuneiformParserKEY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserLEGACY_FOREIGN_KEY: + { + p.SetState(333) + p.Match(KuneiformParserLEGACY_FOREIGN_KEY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + { + p.SetState(336) + p.Match(KuneiformParserLPAREN) if p.HasError() { + // Recognition error - abort rule goto errorExit } + } + { + p.SetState(337) - switch p.GetTokenStream().LA(1) { - case KuneiformParserON: - { - p.SetState(288) - p.Match(KuneiformParserON) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(289) - p.Match(KuneiformParserUPDATE) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } + var _x = p.Identifier_list() + + localctx.(*Foreign_key_defContext).child_keys = _x + } + { + p.SetState(338) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(339) + _la = p.GetTokenStream().LA(1) + + if !(_la == KuneiformParserREFERENCES || _la == KuneiformParserREF) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(340) + + var _m = p.Match(KuneiformParserIDENTIFIER) + + localctx.(*Foreign_key_defContext).parent_table = _m + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(341) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(342) + + var _x = p.Identifier_list() + + localctx.(*Foreign_key_defContext).parent_keys = _x + } + { + p.SetState(343) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(347) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == KuneiformParserON || _la == KuneiformParserLEGACY_ON_UPDATE || _la == KuneiformParserLEGACY_ON_DELETE { + { + p.SetState(344) + p.Foreign_key_action() + } + + p.SetState(349) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IForeign_key_actionContext is an interface to support dynamic dispatch. +type IForeign_key_actionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CASCADE() antlr.TerminalNode + RESTRICT() antlr.TerminalNode + DO() antlr.TerminalNode + ON() antlr.TerminalNode + UPDATE() antlr.TerminalNode + LEGACY_ON_UPDATE() antlr.TerminalNode + DELETE() antlr.TerminalNode + LEGACY_ON_DELETE() antlr.TerminalNode + NO() antlr.TerminalNode + ACTION() antlr.TerminalNode + LEGACY_NO_ACTION() antlr.TerminalNode + SET() antlr.TerminalNode + NULL() antlr.TerminalNode + LEGACY_SET_NULL() antlr.TerminalNode + DEFAULT() antlr.TerminalNode + LEGACY_SET_DEFAULT() antlr.TerminalNode + + // IsForeign_key_actionContext differentiates from other interfaces. + IsForeign_key_actionContext() +} + +type Foreign_key_actionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyForeign_key_actionContext() *Foreign_key_actionContext { + var p = new(Foreign_key_actionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_foreign_key_action + return p +} + +func InitEmptyForeign_key_actionContext(p *Foreign_key_actionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_foreign_key_action +} + +func (*Foreign_key_actionContext) IsForeign_key_actionContext() {} + +func NewForeign_key_actionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_key_actionContext { + var p = new(Foreign_key_actionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_foreign_key_action + + return p +} + +func (s *Foreign_key_actionContext) GetParser() antlr.Parser { return s.parser } + +func (s *Foreign_key_actionContext) CASCADE() antlr.TerminalNode { + return s.GetToken(KuneiformParserCASCADE, 0) +} + +func (s *Foreign_key_actionContext) RESTRICT() antlr.TerminalNode { + return s.GetToken(KuneiformParserRESTRICT, 0) +} + +func (s *Foreign_key_actionContext) DO() antlr.TerminalNode { + return s.GetToken(KuneiformParserDO, 0) +} + +func (s *Foreign_key_actionContext) ON() antlr.TerminalNode { + return s.GetToken(KuneiformParserON, 0) +} + +func (s *Foreign_key_actionContext) UPDATE() antlr.TerminalNode { + return s.GetToken(KuneiformParserUPDATE, 0) +} + +func (s *Foreign_key_actionContext) LEGACY_ON_UPDATE() antlr.TerminalNode { + return s.GetToken(KuneiformParserLEGACY_ON_UPDATE, 0) +} + +func (s *Foreign_key_actionContext) DELETE() antlr.TerminalNode { + return s.GetToken(KuneiformParserDELETE, 0) +} + +func (s *Foreign_key_actionContext) LEGACY_ON_DELETE() antlr.TerminalNode { + return s.GetToken(KuneiformParserLEGACY_ON_DELETE, 0) +} + +func (s *Foreign_key_actionContext) NO() antlr.TerminalNode { + return s.GetToken(KuneiformParserNO, 0) +} + +func (s *Foreign_key_actionContext) ACTION() antlr.TerminalNode { + return s.GetToken(KuneiformParserACTION, 0) +} + +func (s *Foreign_key_actionContext) LEGACY_NO_ACTION() antlr.TerminalNode { + return s.GetToken(KuneiformParserLEGACY_NO_ACTION, 0) +} + +func (s *Foreign_key_actionContext) SET() antlr.TerminalNode { + return s.GetToken(KuneiformParserSET, 0) +} + +func (s *Foreign_key_actionContext) NULL() antlr.TerminalNode { + return s.GetToken(KuneiformParserNULL, 0) +} + +func (s *Foreign_key_actionContext) LEGACY_SET_NULL() antlr.TerminalNode { + return s.GetToken(KuneiformParserLEGACY_SET_NULL, 0) +} + +func (s *Foreign_key_actionContext) DEFAULT() antlr.TerminalNode { + return s.GetToken(KuneiformParserDEFAULT, 0) +} + +func (s *Foreign_key_actionContext) LEGACY_SET_DEFAULT() antlr.TerminalNode { + return s.GetToken(KuneiformParserLEGACY_SET_DEFAULT, 0) +} + +func (s *Foreign_key_actionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Foreign_key_actionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Foreign_key_actionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitForeign_key_action(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionContext) { + localctx = NewForeign_key_actionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 44, KuneiformParserRULE_foreign_key_action) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(360) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 24, p.GetParserRuleContext()) { + case 1: + p.SetState(353) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserON: + { + p.SetState(350) + p.Match(KuneiformParserON) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(351) + p.Match(KuneiformParserUPDATE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserLEGACY_ON_UPDATE: + { + p.SetState(352) + p.Match(KuneiformParserLEGACY_ON_UPDATE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + case 2: + p.SetState(358) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserON: + { + p.SetState(355) + p.Match(KuneiformParserON) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(356) + p.Match(KuneiformParserDELETE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserLEGACY_ON_DELETE: + { + p.SetState(357) + p.Match(KuneiformParserLEGACY_ON_DELETE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + p.SetState(363) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserDO { + { + p.SetState(362) + p.Match(KuneiformParserDO) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + p.SetState(382) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 29, p.GetParserRuleContext()) { + case 1: + p.SetState(368) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserNO: + { + p.SetState(365) + p.Match(KuneiformParserNO) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(366) + p.Match(KuneiformParserACTION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserLEGACY_NO_ACTION: + { + p.SetState(367) + p.Match(KuneiformParserLEGACY_NO_ACTION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + case 2: + { + p.SetState(370) + p.Match(KuneiformParserCASCADE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 3: + p.SetState(374) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserSET: + { + p.SetState(371) + p.Match(KuneiformParserSET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(372) + p.Match(KuneiformParserNULL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserLEGACY_SET_NULL: + { + p.SetState(373) + p.Match(KuneiformParserLEGACY_SET_NULL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + case 4: + p.SetState(379) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserSET: + { + p.SetState(376) + p.Match(KuneiformParserSET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(377) + p.Match(KuneiformParserDEFAULT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserLEGACY_SET_DEFAULT: + { + p.SetState(378) + p.Match(KuneiformParserLEGACY_SET_DEFAULT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + case 5: + { + p.SetState(381) + p.Match(KuneiformParserRESTRICT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IType_listContext is an interface to support dynamic dispatch. +type IType_listContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllType_() []ITypeContext + Type_(i int) ITypeContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsType_listContext differentiates from other interfaces. + IsType_listContext() +} + +type Type_listContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyType_listContext() *Type_listContext { + var p = new(Type_listContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_type_list + return p +} + +func InitEmptyType_listContext(p *Type_listContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_type_list +} + +func (*Type_listContext) IsType_listContext() {} + +func NewType_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Type_listContext { + var p = new(Type_listContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_type_list + + return p +} + +func (s *Type_listContext) GetParser() antlr.Parser { return s.parser } + +func (s *Type_listContext) AllType_() []ITypeContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITypeContext); ok { + len++ + } + } + + tst := make([]ITypeContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITypeContext); ok { + tst[i] = t.(ITypeContext) + i++ + } + } + + return tst +} + +func (s *Type_listContext) Type_(i int) ITypeContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypeContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITypeContext) +} + +func (s *Type_listContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserCOMMA) +} + +func (s *Type_listContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserCOMMA, i) +} + +func (s *Type_listContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Type_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Type_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitType_list(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Type_list() (localctx IType_listContext) { + localctx = NewType_listContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 46, KuneiformParserRULE_type_list) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(384) + p.Type_() + } + p.SetState(389) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == KuneiformParserCOMMA { + { + p.SetState(385) + p.Match(KuneiformParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(386) + p.Type_() + } + + p.SetState(391) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// INamed_type_listContext is an interface to support dynamic dispatch. +type INamed_type_listContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllIDENTIFIER() []antlr.TerminalNode + IDENTIFIER(i int) antlr.TerminalNode + AllType_() []ITypeContext + Type_(i int) ITypeContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsNamed_type_listContext differentiates from other interfaces. + IsNamed_type_listContext() +} + +type Named_type_listContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNamed_type_listContext() *Named_type_listContext { + var p = new(Named_type_listContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_named_type_list + return p +} + +func InitEmptyNamed_type_listContext(p *Named_type_listContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_named_type_list +} + +func (*Named_type_listContext) IsNamed_type_listContext() {} + +func NewNamed_type_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Named_type_listContext { + var p = new(Named_type_listContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_named_type_list + + return p +} + +func (s *Named_type_listContext) GetParser() antlr.Parser { return s.parser } + +func (s *Named_type_listContext) AllIDENTIFIER() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserIDENTIFIER) +} + +func (s *Named_type_listContext) IDENTIFIER(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserIDENTIFIER, i) +} + +func (s *Named_type_listContext) AllType_() []ITypeContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITypeContext); ok { + len++ + } + } + + tst := make([]ITypeContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITypeContext); ok { + tst[i] = t.(ITypeContext) + i++ + } + } + + return tst +} + +func (s *Named_type_listContext) Type_(i int) ITypeContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypeContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITypeContext) +} + +func (s *Named_type_listContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserCOMMA) +} + +func (s *Named_type_listContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserCOMMA, i) +} + +func (s *Named_type_listContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Named_type_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Named_type_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitNamed_type_list(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { + localctx = NewNamed_type_listContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 48, KuneiformParserRULE_named_type_list) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(392) + p.Match(KuneiformParserIDENTIFIER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(393) + p.Type_() + } + p.SetState(399) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == KuneiformParserCOMMA { + { + p.SetState(394) + p.Match(KuneiformParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(395) + p.Match(KuneiformParserIDENTIFIER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(396) + p.Type_() + } + + p.SetState(401) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// ITyped_variable_listContext is an interface to support dynamic dispatch. +type ITyped_variable_listContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllVariable() []IVariableContext + Variable(i int) IVariableContext + AllType_() []ITypeContext + Type_(i int) ITypeContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsTyped_variable_listContext differentiates from other interfaces. + IsTyped_variable_listContext() +} + +type Typed_variable_listContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTyped_variable_listContext() *Typed_variable_listContext { + var p = new(Typed_variable_listContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_typed_variable_list + return p +} + +func InitEmptyTyped_variable_listContext(p *Typed_variable_listContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_typed_variable_list +} + +func (*Typed_variable_listContext) IsTyped_variable_listContext() {} + +func NewTyped_variable_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Typed_variable_listContext { + var p = new(Typed_variable_listContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_typed_variable_list + + return p +} + +func (s *Typed_variable_listContext) GetParser() antlr.Parser { return s.parser } + +func (s *Typed_variable_listContext) AllVariable() []IVariableContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IVariableContext); ok { + len++ + } + } + + tst := make([]IVariableContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IVariableContext); ok { + tst[i] = t.(IVariableContext) + i++ + } + } + + return tst +} + +func (s *Typed_variable_listContext) Variable(i int) IVariableContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVariableContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IVariableContext) +} + +func (s *Typed_variable_listContext) AllType_() []ITypeContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITypeContext); ok { + len++ + } + } + + tst := make([]ITypeContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITypeContext); ok { + tst[i] = t.(ITypeContext) + i++ + } + } + + return tst +} + +func (s *Typed_variable_listContext) Type_(i int) ITypeContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypeContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITypeContext) +} + +func (s *Typed_variable_listContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserCOMMA) +} + +func (s *Typed_variable_listContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserCOMMA, i) +} + +func (s *Typed_variable_listContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Typed_variable_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Typed_variable_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitTyped_variable_list(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listContext) { + localctx = NewTyped_variable_listContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 50, KuneiformParserRULE_typed_variable_list) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(402) + p.Variable() + } + { + p.SetState(403) + p.Type_() + } + p.SetState(410) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == KuneiformParserCOMMA { + { + p.SetState(404) + p.Match(KuneiformParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(405) + p.Variable() + } + { + p.SetState(406) + p.Type_() + } + + p.SetState(412) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IConstraintContext is an interface to support dynamic dispatch. +type IConstraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IDENTIFIER() antlr.TerminalNode + PRIMARY() antlr.TerminalNode + NOT() antlr.TerminalNode + NULL() antlr.TerminalNode + DEFAULT() antlr.TerminalNode + UNIQUE() antlr.TerminalNode + LPAREN() antlr.TerminalNode + Literal() ILiteralContext + RPAREN() antlr.TerminalNode + KEY() antlr.TerminalNode + + // IsConstraintContext differentiates from other interfaces. + IsConstraintContext() +} + +type ConstraintContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyConstraintContext() *ConstraintContext { + var p = new(ConstraintContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_constraint + return p +} + +func InitEmptyConstraintContext(p *ConstraintContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_constraint +} + +func (*ConstraintContext) IsConstraintContext() {} + +func NewConstraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ConstraintContext { + var p = new(ConstraintContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_constraint + + return p +} + +func (s *ConstraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *ConstraintContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(KuneiformParserIDENTIFIER, 0) +} + +func (s *ConstraintContext) PRIMARY() antlr.TerminalNode { + return s.GetToken(KuneiformParserPRIMARY, 0) +} + +func (s *ConstraintContext) NOT() antlr.TerminalNode { + return s.GetToken(KuneiformParserNOT, 0) +} + +func (s *ConstraintContext) NULL() antlr.TerminalNode { + return s.GetToken(KuneiformParserNULL, 0) +} + +func (s *ConstraintContext) DEFAULT() antlr.TerminalNode { + return s.GetToken(KuneiformParserDEFAULT, 0) +} + +func (s *ConstraintContext) UNIQUE() antlr.TerminalNode { + return s.GetToken(KuneiformParserUNIQUE, 0) +} + +func (s *ConstraintContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) +} + +func (s *ConstraintContext) Literal() ILiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILiteralContext) +} + +func (s *ConstraintContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) +} + +func (s *ConstraintContext) KEY() antlr.TerminalNode { + return s.GetToken(KuneiformParserKEY, 0) +} + +func (s *ConstraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ConstraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ConstraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitConstraint(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { + localctx = NewConstraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 52, KuneiformParserRULE_constraint) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(422) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserIDENTIFIER: + { + p.SetState(413) + p.Match(KuneiformParserIDENTIFIER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserPRIMARY: + { + p.SetState(414) + p.Match(KuneiformParserPRIMARY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(416) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserKEY { + { + p.SetState(415) + p.Match(KuneiformParserKEY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + + case KuneiformParserNOT: + { + p.SetState(418) + p.Match(KuneiformParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(419) + p.Match(KuneiformParserNULL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserDEFAULT: + { + p.SetState(420) + p.Match(KuneiformParserDEFAULT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserUNIQUE: + { + p.SetState(421) + p.Match(KuneiformParserUNIQUE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + p.SetState(428) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserLPAREN { + { + p.SetState(424) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(425) + p.Literal() + } + { + p.SetState(426) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IInline_constraintContext is an interface to support dynamic dispatch. +type IInline_constraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PRIMARY() antlr.TerminalNode + KEY() antlr.TerminalNode + UNIQUE() antlr.TerminalNode + NOT() antlr.TerminalNode + NULL() antlr.TerminalNode + DEFAULT() antlr.TerminalNode + Literal() ILiteralContext + Fk_constraint() IFk_constraintContext + CHECK() antlr.TerminalNode + LPAREN() antlr.TerminalNode + Sql_expr() ISql_exprContext + RPAREN() antlr.TerminalNode + + // IsInline_constraintContext differentiates from other interfaces. + IsInline_constraintContext() +} + +type Inline_constraintContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInline_constraintContext() *Inline_constraintContext { + var p = new(Inline_constraintContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_inline_constraint + return p +} + +func InitEmptyInline_constraintContext(p *Inline_constraintContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_inline_constraint +} + +func (*Inline_constraintContext) IsInline_constraintContext() {} + +func NewInline_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Inline_constraintContext { + var p = new(Inline_constraintContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_inline_constraint + + return p +} + +func (s *Inline_constraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *Inline_constraintContext) PRIMARY() antlr.TerminalNode { + return s.GetToken(KuneiformParserPRIMARY, 0) +} + +func (s *Inline_constraintContext) KEY() antlr.TerminalNode { + return s.GetToken(KuneiformParserKEY, 0) +} + +func (s *Inline_constraintContext) UNIQUE() antlr.TerminalNode { + return s.GetToken(KuneiformParserUNIQUE, 0) +} + +func (s *Inline_constraintContext) NOT() antlr.TerminalNode { + return s.GetToken(KuneiformParserNOT, 0) +} + +func (s *Inline_constraintContext) NULL() antlr.TerminalNode { + return s.GetToken(KuneiformParserNULL, 0) +} + +func (s *Inline_constraintContext) DEFAULT() antlr.TerminalNode { + return s.GetToken(KuneiformParserDEFAULT, 0) +} + +func (s *Inline_constraintContext) Literal() ILiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILiteralContext) +} + +func (s *Inline_constraintContext) Fk_constraint() IFk_constraintContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFk_constraintContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFk_constraintContext) +} + +func (s *Inline_constraintContext) CHECK() antlr.TerminalNode { + return s.GetToken(KuneiformParserCHECK, 0) +} + +func (s *Inline_constraintContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) +} + +func (s *Inline_constraintContext) Sql_expr() ISql_exprContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISql_exprContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISql_exprContext) +} + +func (s *Inline_constraintContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) +} + +func (s *Inline_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Inline_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Inline_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitInline_constraint(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContext) { + localctx = NewInline_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 54, KuneiformParserRULE_inline_constraint) + p.SetState(443) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserPRIMARY: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(430) + p.Match(KuneiformParserPRIMARY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(431) + p.Match(KuneiformParserKEY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserUNIQUE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(432) + p.Match(KuneiformParserUNIQUE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserNOT: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(433) + p.Match(KuneiformParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(434) + p.Match(KuneiformParserNULL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserDEFAULT: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(435) + p.Match(KuneiformParserDEFAULT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(436) + p.Literal() + } + + case KuneiformParserREFERENCES: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(437) + p.Fk_constraint() + } + + case KuneiformParserCHECK: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(438) + p.Match(KuneiformParserCHECK) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + { + p.SetState(439) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(440) + p.sql_expr(0) + } + { + p.SetState(441) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IFk_actionContext is an interface to support dynamic dispatch. +type IFk_actionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ON() antlr.TerminalNode + UPDATE() antlr.TerminalNode + DELETE() antlr.TerminalNode + SET() antlr.TerminalNode + NULL() antlr.TerminalNode + DEFAULT() antlr.TerminalNode + RESTRICT() antlr.TerminalNode + NO() antlr.TerminalNode + ACTION() antlr.TerminalNode + CASCADE() antlr.TerminalNode + + // IsFk_actionContext differentiates from other interfaces. + IsFk_actionContext() +} + +type Fk_actionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFk_actionContext() *Fk_actionContext { + var p = new(Fk_actionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_fk_action + return p +} + +func InitEmptyFk_actionContext(p *Fk_actionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_fk_action +} + +func (*Fk_actionContext) IsFk_actionContext() {} + +func NewFk_actionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Fk_actionContext { + var p = new(Fk_actionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_fk_action + + return p +} + +func (s *Fk_actionContext) GetParser() antlr.Parser { return s.parser } + +func (s *Fk_actionContext) ON() antlr.TerminalNode { + return s.GetToken(KuneiformParserON, 0) +} + +func (s *Fk_actionContext) UPDATE() antlr.TerminalNode { + return s.GetToken(KuneiformParserUPDATE, 0) +} + +func (s *Fk_actionContext) DELETE() antlr.TerminalNode { + return s.GetToken(KuneiformParserDELETE, 0) +} + +func (s *Fk_actionContext) SET() antlr.TerminalNode { + return s.GetToken(KuneiformParserSET, 0) +} + +func (s *Fk_actionContext) NULL() antlr.TerminalNode { + return s.GetToken(KuneiformParserNULL, 0) +} + +func (s *Fk_actionContext) DEFAULT() antlr.TerminalNode { + return s.GetToken(KuneiformParserDEFAULT, 0) +} + +func (s *Fk_actionContext) RESTRICT() antlr.TerminalNode { + return s.GetToken(KuneiformParserRESTRICT, 0) +} + +func (s *Fk_actionContext) NO() antlr.TerminalNode { + return s.GetToken(KuneiformParserNO, 0) +} + +func (s *Fk_actionContext) ACTION() antlr.TerminalNode { + return s.GetToken(KuneiformParserACTION, 0) +} + +func (s *Fk_actionContext) CASCADE() antlr.TerminalNode { + return s.GetToken(KuneiformParserCASCADE, 0) +} + +func (s *Fk_actionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Fk_actionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Fk_actionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitFk_action(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { + localctx = NewFk_actionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 56, KuneiformParserRULE_fk_action) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(445) + p.Match(KuneiformParserON) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(446) + _la = p.GetTokenStream().LA(1) + + if !(_la == KuneiformParserDELETE || _la == KuneiformParserUPDATE) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + p.SetState(455) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 37, p.GetParserRuleContext()) { + case 1: + { + p.SetState(447) + p.Match(KuneiformParserSET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(448) + p.Match(KuneiformParserNULL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + { + p.SetState(449) + p.Match(KuneiformParserSET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(450) + p.Match(KuneiformParserDEFAULT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 3: + { + p.SetState(451) + p.Match(KuneiformParserRESTRICT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 4: + { + p.SetState(452) + p.Match(KuneiformParserNO) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(453) + p.Match(KuneiformParserACTION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 5: + { + p.SetState(454) + p.Match(KuneiformParserCASCADE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IFk_constraintContext is an interface to support dynamic dispatch. +type IFk_constraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // GetTable returns the table rule contexts. + GetTable() IIdentifierContext + + // GetColumn returns the column rule contexts. + GetColumn() IIdentifierContext + + // SetTable sets the table rule contexts. + SetTable(IIdentifierContext) + + // SetColumn sets the column rule contexts. + SetColumn(IIdentifierContext) + + // Getter signatures + REFERENCES() antlr.TerminalNode + AllIdentifier() []IIdentifierContext + Identifier(i int) IIdentifierContext + LPAREN() antlr.TerminalNode + RPAREN() antlr.TerminalNode + AllFk_action() []IFk_actionContext + Fk_action(i int) IFk_actionContext + + // IsFk_constraintContext differentiates from other interfaces. + IsFk_constraintContext() +} + +type Fk_constraintContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser + table IIdentifierContext + column IIdentifierContext +} + +func NewEmptyFk_constraintContext() *Fk_constraintContext { + var p = new(Fk_constraintContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_fk_constraint + return p +} + +func InitEmptyFk_constraintContext(p *Fk_constraintContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_fk_constraint +} + +func (*Fk_constraintContext) IsFk_constraintContext() {} + +func NewFk_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Fk_constraintContext { + var p = new(Fk_constraintContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_fk_constraint + + return p +} + +func (s *Fk_constraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *Fk_constraintContext) GetTable() IIdentifierContext { return s.table } + +func (s *Fk_constraintContext) GetColumn() IIdentifierContext { return s.column } + +func (s *Fk_constraintContext) SetTable(v IIdentifierContext) { s.table = v } + +func (s *Fk_constraintContext) SetColumn(v IIdentifierContext) { s.column = v } + +func (s *Fk_constraintContext) REFERENCES() antlr.TerminalNode { + return s.GetToken(KuneiformParserREFERENCES, 0) +} + +func (s *Fk_constraintContext) AllIdentifier() []IIdentifierContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIdentifierContext); ok { + len++ + } + } + + tst := make([]IIdentifierContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIdentifierContext); ok { + tst[i] = t.(IIdentifierContext) + i++ + } + } + + return tst +} + +func (s *Fk_constraintContext) Identifier(i int) IIdentifierContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *Fk_constraintContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) +} + +func (s *Fk_constraintContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) +} + +func (s *Fk_constraintContext) AllFk_action() []IFk_actionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IFk_actionContext); ok { + len++ + } + } + + tst := make([]IFk_actionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IFk_actionContext); ok { + tst[i] = t.(IFk_actionContext) + i++ + } + } + + return tst +} + +func (s *Fk_constraintContext) Fk_action(i int) IFk_actionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFk_actionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IFk_actionContext) +} + +func (s *Fk_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Fk_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Fk_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitFk_constraint(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { + localctx = NewFk_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 58, KuneiformParserRULE_fk_constraint) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(457) + p.Match(KuneiformParserREFERENCES) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(458) + + var _x = p.Identifier() + + localctx.(*Fk_constraintContext).table = _x + } + + { + p.SetState(459) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(460) + + var _x = p.Identifier() + + localctx.(*Fk_constraintContext).column = _x + } + { + p.SetState(461) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + p.SetState(470) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserON { + { + p.SetState(463) + p.Fk_action() + } + p.SetState(467) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == KuneiformParserON { + { + p.SetState(464) + p.Fk_action() + } + + p.SetState(469) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IAccess_modifierContext is an interface to support dynamic dispatch. +type IAccess_modifierContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PUBLIC() antlr.TerminalNode + PRIVATE() antlr.TerminalNode + VIEW() antlr.TerminalNode + OWNER() antlr.TerminalNode + + // IsAccess_modifierContext differentiates from other interfaces. + IsAccess_modifierContext() +} + +type Access_modifierContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAccess_modifierContext() *Access_modifierContext { + var p = new(Access_modifierContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_access_modifier + return p +} + +func InitEmptyAccess_modifierContext(p *Access_modifierContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_access_modifier +} + +func (*Access_modifierContext) IsAccess_modifierContext() {} + +func NewAccess_modifierContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Access_modifierContext { + var p = new(Access_modifierContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_access_modifier + + return p +} + +func (s *Access_modifierContext) GetParser() antlr.Parser { return s.parser } + +func (s *Access_modifierContext) PUBLIC() antlr.TerminalNode { + return s.GetToken(KuneiformParserPUBLIC, 0) +} + +func (s *Access_modifierContext) PRIVATE() antlr.TerminalNode { + return s.GetToken(KuneiformParserPRIVATE, 0) +} + +func (s *Access_modifierContext) VIEW() antlr.TerminalNode { + return s.GetToken(KuneiformParserVIEW, 0) +} + +func (s *Access_modifierContext) OWNER() antlr.TerminalNode { + return s.GetToken(KuneiformParserOWNER, 0) +} + +func (s *Access_modifierContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Access_modifierContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Access_modifierContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitAccess_modifier(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Access_modifier() (localctx IAccess_modifierContext) { + localctx = NewAccess_modifierContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 60, KuneiformParserRULE_access_modifier) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(472) + _la = p.GetTokenStream().LA(1) + + if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IAction_declarationContext is an interface to support dynamic dispatch. +type IAction_declarationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ACTION() antlr.TerminalNode + IDENTIFIER() antlr.TerminalNode + LPAREN() antlr.TerminalNode + RPAREN() antlr.TerminalNode + LBRACE() antlr.TerminalNode + Action_block() IAction_blockContext + RBRACE() antlr.TerminalNode + AllAnnotation() []IAnnotationContext + Annotation(i int) IAnnotationContext + Variable_list() IVariable_listContext + AllAccess_modifier() []IAccess_modifierContext + Access_modifier(i int) IAccess_modifierContext + + // IsAction_declarationContext differentiates from other interfaces. + IsAction_declarationContext() +} + +type Action_declarationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAction_declarationContext() *Action_declarationContext { + var p = new(Action_declarationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_action_declaration + return p +} + +func InitEmptyAction_declarationContext(p *Action_declarationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_action_declaration +} + +func (*Action_declarationContext) IsAction_declarationContext() {} + +func NewAction_declarationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Action_declarationContext { + var p = new(Action_declarationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_action_declaration + + return p +} + +func (s *Action_declarationContext) GetParser() antlr.Parser { return s.parser } + +func (s *Action_declarationContext) ACTION() antlr.TerminalNode { + return s.GetToken(KuneiformParserACTION, 0) +} + +func (s *Action_declarationContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(KuneiformParserIDENTIFIER, 0) +} + +func (s *Action_declarationContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) +} + +func (s *Action_declarationContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) +} + +func (s *Action_declarationContext) LBRACE() antlr.TerminalNode { + return s.GetToken(KuneiformParserLBRACE, 0) +} + +func (s *Action_declarationContext) Action_block() IAction_blockContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAction_blockContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAction_blockContext) +} + +func (s *Action_declarationContext) RBRACE() antlr.TerminalNode { + return s.GetToken(KuneiformParserRBRACE, 0) +} + +func (s *Action_declarationContext) AllAnnotation() []IAnnotationContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAnnotationContext); ok { + len++ + } + } + + tst := make([]IAnnotationContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAnnotationContext); ok { + tst[i] = t.(IAnnotationContext) + i++ + } + } + + return tst +} + +func (s *Action_declarationContext) Annotation(i int) IAnnotationContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAnnotationContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAnnotationContext) +} + +func (s *Action_declarationContext) Variable_list() IVariable_listContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVariable_listContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IVariable_listContext) +} + +func (s *Action_declarationContext) AllAccess_modifier() []IAccess_modifierContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAccess_modifierContext); ok { + len++ + } + } + + tst := make([]IAccess_modifierContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAccess_modifierContext); ok { + tst[i] = t.(IAccess_modifierContext) + i++ + } + } + + return tst +} + +func (s *Action_declarationContext) Access_modifier(i int) IAccess_modifierContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAccess_modifierContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAccess_modifierContext) +} + +func (s *Action_declarationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Action_declarationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Action_declarationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitAction_declaration(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationContext) { + localctx = NewAction_declarationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 62, KuneiformParserRULE_action_declaration) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(477) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == KuneiformParserCONTEXTUAL_VARIABLE { + { + p.SetState(474) + p.Annotation() + } + + p.SetState(479) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(480) + p.Match(KuneiformParserACTION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(481) + p.Match(KuneiformParserIDENTIFIER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(482) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(484) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { + { + p.SetState(483) + p.Variable_list() + } + + } + { + p.SetState(486) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(488) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { + { + p.SetState(487) + p.Access_modifier() + } + + p.SetState(490) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(492) + p.Match(KuneiformParserLBRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(493) + p.Action_block() + } + { + p.SetState(494) + p.Match(KuneiformParserRBRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IProcedure_declarationContext is an interface to support dynamic dispatch. +type IProcedure_declarationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PROCEDURE() antlr.TerminalNode + IDENTIFIER() antlr.TerminalNode + LPAREN() antlr.TerminalNode + RPAREN() antlr.TerminalNode + LBRACE() antlr.TerminalNode + Procedure_block() IProcedure_blockContext + RBRACE() antlr.TerminalNode + AllAnnotation() []IAnnotationContext + Annotation(i int) IAnnotationContext + Typed_variable_list() ITyped_variable_listContext + AllAccess_modifier() []IAccess_modifierContext + Access_modifier(i int) IAccess_modifierContext + Procedure_return() IProcedure_returnContext + + // IsProcedure_declarationContext differentiates from other interfaces. + IsProcedure_declarationContext() +} + +type Procedure_declarationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyProcedure_declarationContext() *Procedure_declarationContext { + var p = new(Procedure_declarationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_procedure_declaration + return p +} + +func InitEmptyProcedure_declarationContext(p *Procedure_declarationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_procedure_declaration +} + +func (*Procedure_declarationContext) IsProcedure_declarationContext() {} + +func NewProcedure_declarationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Procedure_declarationContext { + var p = new(Procedure_declarationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_procedure_declaration + + return p +} + +func (s *Procedure_declarationContext) GetParser() antlr.Parser { return s.parser } + +func (s *Procedure_declarationContext) PROCEDURE() antlr.TerminalNode { + return s.GetToken(KuneiformParserPROCEDURE, 0) +} + +func (s *Procedure_declarationContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(KuneiformParserIDENTIFIER, 0) +} + +func (s *Procedure_declarationContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) +} + +func (s *Procedure_declarationContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) +} + +func (s *Procedure_declarationContext) LBRACE() antlr.TerminalNode { + return s.GetToken(KuneiformParserLBRACE, 0) +} + +func (s *Procedure_declarationContext) Procedure_block() IProcedure_blockContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedure_blockContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedure_blockContext) +} + +func (s *Procedure_declarationContext) RBRACE() antlr.TerminalNode { + return s.GetToken(KuneiformParserRBRACE, 0) +} + +func (s *Procedure_declarationContext) AllAnnotation() []IAnnotationContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAnnotationContext); ok { + len++ + } + } + + tst := make([]IAnnotationContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAnnotationContext); ok { + tst[i] = t.(IAnnotationContext) + i++ + } + } + + return tst +} + +func (s *Procedure_declarationContext) Annotation(i int) IAnnotationContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAnnotationContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAnnotationContext) +} + +func (s *Procedure_declarationContext) Typed_variable_list() ITyped_variable_listContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITyped_variable_listContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITyped_variable_listContext) +} + +func (s *Procedure_declarationContext) AllAccess_modifier() []IAccess_modifierContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAccess_modifierContext); ok { + len++ + } + } + + tst := make([]IAccess_modifierContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAccess_modifierContext); ok { + tst[i] = t.(IAccess_modifierContext) + i++ + } + } + + return tst +} + +func (s *Procedure_declarationContext) Access_modifier(i int) IAccess_modifierContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAccess_modifierContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAccess_modifierContext) +} + +func (s *Procedure_declarationContext) Procedure_return() IProcedure_returnContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedure_returnContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedure_returnContext) +} + +func (s *Procedure_declarationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Procedure_declarationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Procedure_declarationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitProcedure_declaration(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarationContext) { + localctx = NewProcedure_declarationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 64, KuneiformParserRULE_procedure_declaration) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(499) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == KuneiformParserCONTEXTUAL_VARIABLE { + { + p.SetState(496) + p.Annotation() + } + + p.SetState(501) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(502) + p.Match(KuneiformParserPROCEDURE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(503) + p.Match(KuneiformParserIDENTIFIER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(504) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(506) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { + { + p.SetState(505) + p.Typed_variable_list() + } + + } + { + p.SetState(508) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(510) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { + { + p.SetState(509) + p.Access_modifier() + } + + p.SetState(512) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + p.SetState(515) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserRETURNS { + { + p.SetState(514) + p.Procedure_return() + } + + } + { + p.SetState(517) + p.Match(KuneiformParserLBRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(518) + p.Procedure_block() + } + { + p.SetState(519) + p.Match(KuneiformParserRBRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IProcedure_returnContext is an interface to support dynamic dispatch. +type IProcedure_returnContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // GetReturn_columns returns the return_columns rule contexts. + GetReturn_columns() INamed_type_listContext + + // GetUnnamed_return_types returns the unnamed_return_types rule contexts. + GetUnnamed_return_types() IType_listContext + + // SetReturn_columns sets the return_columns rule contexts. + SetReturn_columns(INamed_type_listContext) + + // SetUnnamed_return_types sets the unnamed_return_types rule contexts. + SetUnnamed_return_types(IType_listContext) + + // Getter signatures + RETURNS() antlr.TerminalNode + LPAREN() antlr.TerminalNode + RPAREN() antlr.TerminalNode + Named_type_list() INamed_type_listContext + Type_list() IType_listContext + TABLE() antlr.TerminalNode + + // IsProcedure_returnContext differentiates from other interfaces. + IsProcedure_returnContext() +} + +type Procedure_returnContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser + return_columns INamed_type_listContext + unnamed_return_types IType_listContext +} + +func NewEmptyProcedure_returnContext() *Procedure_returnContext { + var p = new(Procedure_returnContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_procedure_return + return p +} + +func InitEmptyProcedure_returnContext(p *Procedure_returnContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_procedure_return +} + +func (*Procedure_returnContext) IsProcedure_returnContext() {} + +func NewProcedure_returnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Procedure_returnContext { + var p = new(Procedure_returnContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_procedure_return + + return p +} + +func (s *Procedure_returnContext) GetParser() antlr.Parser { return s.parser } + +func (s *Procedure_returnContext) GetReturn_columns() INamed_type_listContext { + return s.return_columns +} + +func (s *Procedure_returnContext) GetUnnamed_return_types() IType_listContext { + return s.unnamed_return_types +} + +func (s *Procedure_returnContext) SetReturn_columns(v INamed_type_listContext) { s.return_columns = v } + +func (s *Procedure_returnContext) SetUnnamed_return_types(v IType_listContext) { + s.unnamed_return_types = v +} + +func (s *Procedure_returnContext) RETURNS() antlr.TerminalNode { + return s.GetToken(KuneiformParserRETURNS, 0) +} + +func (s *Procedure_returnContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) +} + +func (s *Procedure_returnContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) +} + +func (s *Procedure_returnContext) Named_type_list() INamed_type_listContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INamed_type_listContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INamed_type_listContext) +} + +func (s *Procedure_returnContext) Type_list() IType_listContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IType_listContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IType_listContext) +} + +func (s *Procedure_returnContext) TABLE() antlr.TerminalNode { + return s.GetToken(KuneiformParserTABLE, 0) +} + +func (s *Procedure_returnContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Procedure_returnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Procedure_returnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitProcedure_return(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) { + localctx = NewProcedure_returnContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 66, KuneiformParserRULE_procedure_return) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(521) + p.Match(KuneiformParserRETURNS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(533) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 48, p.GetParserRuleContext()) { + case 1: + p.SetState(523) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserTABLE { + { + p.SetState(522) + p.Match(KuneiformParserTABLE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(525) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(526) + + var _x = p.Named_type_list() + + localctx.(*Procedure_returnContext).return_columns = _x + } + { + p.SetState(527) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + { + p.SetState(529) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(530) + + var _x = p.Type_list() + + localctx.(*Procedure_returnContext).unnamed_return_types = _x + } + { + p.SetState(531) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// ISqlContext is an interface to support dynamic dispatch. +type ISqlContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Sql_statement() ISql_statementContext + SCOL() antlr.TerminalNode + + // IsSqlContext differentiates from other interfaces. + IsSqlContext() +} + +type SqlContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySqlContext() *SqlContext { + var p = new(SqlContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_sql + return p +} + +func InitEmptySqlContext(p *SqlContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_sql +} + +func (*SqlContext) IsSqlContext() {} + +func NewSqlContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SqlContext { + var p = new(SqlContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_sql + + return p +} + +func (s *SqlContext) GetParser() antlr.Parser { return s.parser } + +func (s *SqlContext) Sql_statement() ISql_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISql_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISql_statementContext) +} + +func (s *SqlContext) SCOL() antlr.TerminalNode { + return s.GetToken(KuneiformParserSCOL, 0) +} + +func (s *SqlContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SqlContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SqlContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitSql(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Sql() (localctx ISqlContext) { + localctx = NewSqlContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 68, KuneiformParserRULE_sql) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(535) + p.Sql_statement() + } + { + p.SetState(536) + p.Match(KuneiformParserSCOL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// ISql_statementContext is an interface to support dynamic dispatch. +type ISql_statementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Create_table_statement() ICreate_table_statementContext + Alter_table_statement() IAlter_table_statementContext + Create_index_statement() ICreate_index_statementContext + Drop_index_statement() IDrop_index_statementContext + Select_statement() ISelect_statementContext + Update_statement() IUpdate_statementContext + Insert_statement() IInsert_statementContext + Delete_statement() IDelete_statementContext + WITH() antlr.TerminalNode + AllCommon_table_expression() []ICommon_table_expressionContext + Common_table_expression(i int) ICommon_table_expressionContext + RECURSIVE() antlr.TerminalNode + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsSql_statementContext differentiates from other interfaces. + IsSql_statementContext() +} + +type Sql_statementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySql_statementContext() *Sql_statementContext { + var p = new(Sql_statementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_sql_statement + return p +} + +func InitEmptySql_statementContext(p *Sql_statementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_sql_statement +} + +func (*Sql_statementContext) IsSql_statementContext() {} + +func NewSql_statementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_statementContext { + var p = new(Sql_statementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_sql_statement + + return p +} + +func (s *Sql_statementContext) GetParser() antlr.Parser { return s.parser } + +func (s *Sql_statementContext) Create_table_statement() ICreate_table_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_table_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_table_statementContext) +} + +func (s *Sql_statementContext) Alter_table_statement() IAlter_table_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAlter_table_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAlter_table_statementContext) +} + +func (s *Sql_statementContext) Create_index_statement() ICreate_index_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_index_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_index_statementContext) +} + +func (s *Sql_statementContext) Drop_index_statement() IDrop_index_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDrop_index_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDrop_index_statementContext) +} + +func (s *Sql_statementContext) Select_statement() ISelect_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_statementContext) +} + +func (s *Sql_statementContext) Update_statement() IUpdate_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUpdate_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUpdate_statementContext) +} + +func (s *Sql_statementContext) Insert_statement() IInsert_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsert_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsert_statementContext) +} + +func (s *Sql_statementContext) Delete_statement() IDelete_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelete_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDelete_statementContext) +} + +func (s *Sql_statementContext) WITH() antlr.TerminalNode { + return s.GetToken(KuneiformParserWITH, 0) +} + +func (s *Sql_statementContext) AllCommon_table_expression() []ICommon_table_expressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + len++ + } + } + + tst := make([]ICommon_table_expressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICommon_table_expressionContext); ok { + tst[i] = t.(ICommon_table_expressionContext) + i++ + } + } + + return tst +} + +func (s *Sql_statementContext) Common_table_expression(i int) ICommon_table_expressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICommon_table_expressionContext) +} + +func (s *Sql_statementContext) RECURSIVE() antlr.TerminalNode { + return s.GetToken(KuneiformParserRECURSIVE, 0) +} + +func (s *Sql_statementContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserCOMMA) +} + +func (s *Sql_statementContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserCOMMA, i) +} + +func (s *Sql_statementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Sql_statementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Sql_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitSql_statement(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { + localctx = NewSql_statementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 70, KuneiformParserRULE_sql_statement) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(550) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserWITH { + { + p.SetState(538) + p.Match(KuneiformParserWITH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(540) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserRECURSIVE { + { + p.SetState(539) + p.Match(KuneiformParserRECURSIVE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(542) + p.Common_table_expression() + } + p.SetState(547) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == KuneiformParserCOMMA { + { + p.SetState(543) + p.Match(KuneiformParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(544) + p.Common_table_expression() + } + + p.SetState(549) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + + } + p.SetState(560) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 52, p.GetParserRuleContext()) { + case 1: + { + p.SetState(552) + p.Create_table_statement() + } + + case 2: + { + p.SetState(553) + p.Alter_table_statement() + } + + case 3: + { + p.SetState(554) + p.Create_index_statement() + } + + case 4: + { + p.SetState(555) + p.Drop_index_statement() + } + + case 5: + { + p.SetState(556) + p.Select_statement() + } + + case 6: + { + p.SetState(557) + p.Update_statement() + } + + case 7: + { + p.SetState(558) + p.Insert_statement() + } + + case 8: + { + p.SetState(559) + p.Delete_statement() + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// ICommon_table_expressionContext is an interface to support dynamic dispatch. +type ICommon_table_expressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllIdentifier() []IIdentifierContext + Identifier(i int) IIdentifierContext + AS() antlr.TerminalNode + AllLPAREN() []antlr.TerminalNode + LPAREN(i int) antlr.TerminalNode + Select_statement() ISelect_statementContext + AllRPAREN() []antlr.TerminalNode + RPAREN(i int) antlr.TerminalNode + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsCommon_table_expressionContext differentiates from other interfaces. + IsCommon_table_expressionContext() +} + +type Common_table_expressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCommon_table_expressionContext() *Common_table_expressionContext { + var p = new(Common_table_expressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_common_table_expression + return p +} + +func InitEmptyCommon_table_expressionContext(p *Common_table_expressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_common_table_expression +} + +func (*Common_table_expressionContext) IsCommon_table_expressionContext() {} + +func NewCommon_table_expressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Common_table_expressionContext { + var p = new(Common_table_expressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_common_table_expression + + return p +} + +func (s *Common_table_expressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *Common_table_expressionContext) AllIdentifier() []IIdentifierContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIdentifierContext); ok { + len++ + } + } + + tst := make([]IIdentifierContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIdentifierContext); ok { + tst[i] = t.(IIdentifierContext) + i++ + } + } + + return tst +} + +func (s *Common_table_expressionContext) Identifier(i int) IIdentifierContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *Common_table_expressionContext) AS() antlr.TerminalNode { + return s.GetToken(KuneiformParserAS, 0) +} + +func (s *Common_table_expressionContext) AllLPAREN() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserLPAREN) +} + +func (s *Common_table_expressionContext) LPAREN(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, i) +} + +func (s *Common_table_expressionContext) Select_statement() ISelect_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_statementContext) +} + +func (s *Common_table_expressionContext) AllRPAREN() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserRPAREN) +} + +func (s *Common_table_expressionContext) RPAREN(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, i) +} + +func (s *Common_table_expressionContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserCOMMA) +} + +func (s *Common_table_expressionContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserCOMMA, i) +} + +func (s *Common_table_expressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Common_table_expressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Common_table_expressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitCommon_table_expression(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expressionContext) { + localctx = NewCommon_table_expressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 72, KuneiformParserRULE_common_table_expression) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(562) + p.Identifier() + } + p.SetState(575) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserLPAREN { + { + p.SetState(563) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(572) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { + { + p.SetState(564) + p.Identifier() + } + p.SetState(569) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == KuneiformParserCOMMA { + { + p.SetState(565) + p.Match(KuneiformParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(566) + p.Identifier() + } + + p.SetState(571) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(574) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(577) + p.Match(KuneiformParserAS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(578) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(579) + p.Select_statement() + } + { + p.SetState(580) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// ICreate_table_statementContext is an interface to support dynamic dispatch. +type ICreate_table_statementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // GetName returns the name rule contexts. + GetName() IIdentifierContext + + // SetName sets the name rule contexts. + SetName(IIdentifierContext) + + // Getter signatures + CREATE() antlr.TerminalNode + TABLE() antlr.TerminalNode + LPAREN() antlr.TerminalNode + RPAREN() antlr.TerminalNode + Identifier() IIdentifierContext + AllC_column_def() []IC_column_defContext + C_column_def(i int) IC_column_defContext + AllConstraint_def() []IConstraint_defContext + Constraint_def(i int) IConstraint_defContext + AllC_index_def() []IC_index_defContext + C_index_def(i int) IC_index_defContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsCreate_table_statementContext differentiates from other interfaces. + IsCreate_table_statementContext() +} + +type Create_table_statementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser + name IIdentifierContext +} + +func NewEmptyCreate_table_statementContext() *Create_table_statementContext { + var p = new(Create_table_statementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_create_table_statement + return p +} + +func InitEmptyCreate_table_statementContext(p *Create_table_statementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_create_table_statement +} + +func (*Create_table_statementContext) IsCreate_table_statementContext() {} + +func NewCreate_table_statementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_table_statementContext { + var p = new(Create_table_statementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_create_table_statement + + return p +} + +func (s *Create_table_statementContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_table_statementContext) GetName() IIdentifierContext { return s.name } + +func (s *Create_table_statementContext) SetName(v IIdentifierContext) { s.name = v } + +func (s *Create_table_statementContext) CREATE() antlr.TerminalNode { + return s.GetToken(KuneiformParserCREATE, 0) +} + +func (s *Create_table_statementContext) TABLE() antlr.TerminalNode { + return s.GetToken(KuneiformParserTABLE, 0) +} + +func (s *Create_table_statementContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) +} + +func (s *Create_table_statementContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) +} + +func (s *Create_table_statementContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *Create_table_statementContext) AllC_column_def() []IC_column_defContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IC_column_defContext); ok { + len++ + } + } + + tst := make([]IC_column_defContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IC_column_defContext); ok { + tst[i] = t.(IC_column_defContext) + i++ + } + } + + return tst +} + +func (s *Create_table_statementContext) C_column_def(i int) IC_column_defContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IC_column_defContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IC_column_defContext) +} + +func (s *Create_table_statementContext) AllConstraint_def() []IConstraint_defContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IConstraint_defContext); ok { + len++ + } + } + + tst := make([]IConstraint_defContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IConstraint_defContext); ok { + tst[i] = t.(IConstraint_defContext) + i++ + } + } + + return tst +} + +func (s *Create_table_statementContext) Constraint_def(i int) IConstraint_defContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConstraint_defContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IConstraint_defContext) +} + +func (s *Create_table_statementContext) AllC_index_def() []IC_index_defContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IC_index_defContext); ok { + len++ + } + } + + tst := make([]IC_index_defContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IC_index_defContext); ok { + tst[i] = t.(IC_index_defContext) + i++ + } + } + + return tst +} + +func (s *Create_table_statementContext) C_index_def(i int) IC_index_defContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IC_index_defContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IC_index_defContext) +} + +func (s *Create_table_statementContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserCOMMA) +} + +func (s *Create_table_statementContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserCOMMA, i) +} + +func (s *Create_table_statementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_table_statementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Create_table_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitCreate_table_statement(s) + + default: + return t.VisitChildren(s) + } +} - case KuneiformParserLEGACY_ON_UPDATE: - { - p.SetState(290) - p.Match(KuneiformParserLEGACY_ON_UPDATE) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } +func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_statementContext) { + localctx = NewCreate_table_statementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 74, KuneiformParserRULE_create_table_statement) + var _la int - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(582) + p.Match(KuneiformParserCREATE) + if p.HasError() { + // Recognition error - abort rule goto errorExit } - - case 2: - p.SetState(296) - p.GetErrorHandler().Sync(p) + } + { + p.SetState(583) + p.Match(KuneiformParserTABLE) if p.HasError() { + // Recognition error - abort rule goto errorExit } + } + { + p.SetState(584) - switch p.GetTokenStream().LA(1) { - case KuneiformParserON: - { - p.SetState(293) - p.Match(KuneiformParserON) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(294) - p.Match(KuneiformParserDELETE) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - case KuneiformParserLEGACY_ON_DELETE: - { - p.SetState(295) - p.Match(KuneiformParserLEGACY_ON_DELETE) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } + var _x = p.Identifier() - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + localctx.(*Create_table_statementContext).name = _x + } + { + p.SetState(585) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule goto errorExit } - - case antlr.ATNInvalidAltNumber: - goto errorExit } - p.SetState(301) + p.SetState(589) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _la = p.GetTokenStream().LA(1) - if _la == KuneiformParserDO { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 56, p.GetParserRuleContext()) { + case 1: { - p.SetState(300) - p.Match(KuneiformParserDO) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(586) + p.C_column_def() + } + + case 2: + { + p.SetState(587) + p.Constraint_def() + } + + case 3: + { + p.SetState(588) + p.C_index_def() } + case antlr.ATNInvalidAltNumber: + goto errorExit } - p.SetState(320) + p.SetState(599) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } + _la = p.GetTokenStream().LA(1) - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 26, p.GetParserRuleContext()) { - case 1: - p.SetState(306) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - - switch p.GetTokenStream().LA(1) { - case KuneiformParserNO: - { - p.SetState(303) - p.Match(KuneiformParserNO) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(304) - p.Match(KuneiformParserACTION) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - case KuneiformParserLEGACY_NO_ACTION: - { - p.SetState(305) - p.Match(KuneiformParserLEGACY_NO_ACTION) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - goto errorExit - } - - case 2: + for _la == KuneiformParserCOMMA { { - p.SetState(308) - p.Match(KuneiformParserCASCADE) + p.SetState(591) + p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - - case 3: - p.SetState(312) + p.SetState(595) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetTokenStream().LA(1) { - case KuneiformParserSET: + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 57, p.GetParserRuleContext()) { + case 1: { - p.SetState(309) - p.Match(KuneiformParserSET) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(592) + p.C_column_def() } + + case 2: { - p.SetState(310) - p.Match(KuneiformParserNULL) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(593) + p.Constraint_def() } - case KuneiformParserLEGACY_SET_NULL: + case 3: { - p.SetState(311) - p.Match(KuneiformParserLEGACY_SET_NULL) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(594) + p.C_index_def() } - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + case antlr.ATNInvalidAltNumber: goto errorExit } - case 4: - p.SetState(317) + p.SetState(601) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - - switch p.GetTokenStream().LA(1) { - case KuneiformParserSET: - { - p.SetState(314) - p.Match(KuneiformParserSET) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(315) - p.Match(KuneiformParserDEFAULT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - case KuneiformParserLEGACY_SET_DEFAULT: - { - p.SetState(316) - p.Match(KuneiformParserLEGACY_SET_DEFAULT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(602) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule goto errorExit } - - case 5: - { - p.SetState(319) - p.Match(KuneiformParserRESTRICT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - case antlr.ATNInvalidAltNumber: - goto errorExit } errorExit: @@ -5230,86 +9858,91 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IType_listContext is an interface to support dynamic dispatch. -type IType_listContext interface { +// IConstraint_defContext is an interface to support dynamic dispatch. +type IConstraint_defContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser + // GetName returns the name rule contexts. + GetName() IIdentifierContext + + // SetName sets the name rule contexts. + SetName(IIdentifierContext) + // Getter signatures - AllType_() []ITypeContext - Type_(i int) ITypeContext - AllCOMMA() []antlr.TerminalNode - COMMA(i int) antlr.TerminalNode + Unnamed_constraint() IUnnamed_constraintContext + CONSTRAINT() antlr.TerminalNode + Identifier() IIdentifierContext - // IsType_listContext differentiates from other interfaces. - IsType_listContext() + // IsConstraint_defContext differentiates from other interfaces. + IsConstraint_defContext() } -type Type_listContext struct { +type Constraint_defContext struct { antlr.BaseParserRuleContext parser antlr.Parser + name IIdentifierContext } -func NewEmptyType_listContext() *Type_listContext { - var p = new(Type_listContext) +func NewEmptyConstraint_defContext() *Constraint_defContext { + var p = new(Constraint_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_type_list + p.RuleIndex = KuneiformParserRULE_constraint_def return p } -func InitEmptyType_listContext(p *Type_listContext) { +func InitEmptyConstraint_defContext(p *Constraint_defContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_type_list + p.RuleIndex = KuneiformParserRULE_constraint_def } -func (*Type_listContext) IsType_listContext() {} +func (*Constraint_defContext) IsConstraint_defContext() {} -func NewType_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Type_listContext { - var p = new(Type_listContext) +func NewConstraint_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Constraint_defContext { + var p = new(Constraint_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_type_list + p.RuleIndex = KuneiformParserRULE_constraint_def return p } -func (s *Type_listContext) GetParser() antlr.Parser { return s.parser } +func (s *Constraint_defContext) GetParser() antlr.Parser { return s.parser } -func (s *Type_listContext) AllType_() []ITypeContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITypeContext); ok { - len++ +func (s *Constraint_defContext) GetName() IIdentifierContext { return s.name } + +func (s *Constraint_defContext) SetName(v IIdentifierContext) { s.name = v } + +func (s *Constraint_defContext) Unnamed_constraint() IUnnamed_constraintContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnnamed_constraintContext); ok { + t = ctx.(antlr.RuleContext) + break } } - tst := make([]ITypeContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITypeContext); ok { - tst[i] = t.(ITypeContext) - i++ - } + if t == nil { + return nil } - return tst + return t.(IUnnamed_constraintContext) } -func (s *Type_listContext) Type_(i int) ITypeContext { +func (s *Constraint_defContext) CONSTRAINT() antlr.TerminalNode { + return s.GetToken(KuneiformParserCONSTRAINT, 0) +} + +func (s *Constraint_defContext) Identifier() IIdentifierContext { var t antlr.RuleContext - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITypeContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break } } @@ -5317,72 +9950,61 @@ func (s *Type_listContext) Type_(i int) ITypeContext { return nil } - return t.(ITypeContext) -} - -func (s *Type_listContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserCOMMA) -} - -func (s *Type_listContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserCOMMA, i) + return t.(IIdentifierContext) } -func (s *Type_listContext) GetRuleContext() antlr.RuleContext { +func (s *Constraint_defContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Type_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Constraint_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Type_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Constraint_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitType_list(s) + return t.VisitConstraint_def(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Type_list() (localctx IType_listContext) { - localctx = NewType_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 40, KuneiformParserRULE_type_list) +func (p *KuneiformParser) Constraint_def() (localctx IConstraint_defContext) { + localctx = NewConstraint_defContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 76, KuneiformParserRULE_constraint_def) var _la int p.EnterOuterAlt(localctx, 1) - { - p.SetState(322) - p.Type_() - } - p.SetState(327) + p.SetState(606) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for _la == KuneiformParserCOMMA { + if _la == KuneiformParserCONSTRAINT { { - p.SetState(323) - p.Match(KuneiformParserCOMMA) + p.SetState(604) + p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule goto errorExit } } { - p.SetState(324) - p.Type_() - } + p.SetState(605) - p.SetState(329) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit + var _x = p.Identifier() + + localctx.(*Constraint_defContext).name = _x } - _la = p.GetTokenStream().LA(1) + + } + { + p.SetState(608) + p.Unnamed_constraint() } errorExit: @@ -5398,96 +10020,108 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// INamed_type_listContext is an interface to support dynamic dispatch. -type INamed_type_listContext interface { +// IUnnamed_constraintContext is an interface to support dynamic dispatch. +type IUnnamed_constraintContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // Getter signatures - AllIDENTIFIER() []antlr.TerminalNode - IDENTIFIER(i int) antlr.TerminalNode - AllType_() []ITypeContext - Type_(i int) ITypeContext - AllCOMMA() []antlr.TerminalNode - COMMA(i int) antlr.TerminalNode + PRIMARY() antlr.TerminalNode + KEY() antlr.TerminalNode + LPAREN() antlr.TerminalNode + Identifier_list() IIdentifier_listContext + RPAREN() antlr.TerminalNode + UNIQUE() antlr.TerminalNode + CHECK() antlr.TerminalNode + Sql_expr() ISql_exprContext + FOREIGN() antlr.TerminalNode + Identifier() IIdentifierContext + Fk_constraint() IFk_constraintContext - // IsNamed_type_listContext differentiates from other interfaces. - IsNamed_type_listContext() + // IsUnnamed_constraintContext differentiates from other interfaces. + IsUnnamed_constraintContext() } -type Named_type_listContext struct { +type Unnamed_constraintContext struct { antlr.BaseParserRuleContext parser antlr.Parser } -func NewEmptyNamed_type_listContext() *Named_type_listContext { - var p = new(Named_type_listContext) +func NewEmptyUnnamed_constraintContext() *Unnamed_constraintContext { + var p = new(Unnamed_constraintContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_named_type_list + p.RuleIndex = KuneiformParserRULE_unnamed_constraint return p } -func InitEmptyNamed_type_listContext(p *Named_type_listContext) { +func InitEmptyUnnamed_constraintContext(p *Unnamed_constraintContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_named_type_list + p.RuleIndex = KuneiformParserRULE_unnamed_constraint } -func (*Named_type_listContext) IsNamed_type_listContext() {} +func (*Unnamed_constraintContext) IsUnnamed_constraintContext() {} -func NewNamed_type_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Named_type_listContext { - var p = new(Named_type_listContext) +func NewUnnamed_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Unnamed_constraintContext { + var p = new(Unnamed_constraintContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_named_type_list + p.RuleIndex = KuneiformParserRULE_unnamed_constraint return p } -func (s *Named_type_listContext) GetParser() antlr.Parser { return s.parser } +func (s *Unnamed_constraintContext) GetParser() antlr.Parser { return s.parser } -func (s *Named_type_listContext) AllIDENTIFIER() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserIDENTIFIER) +func (s *Unnamed_constraintContext) PRIMARY() antlr.TerminalNode { + return s.GetToken(KuneiformParserPRIMARY, 0) } -func (s *Named_type_listContext) IDENTIFIER(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserIDENTIFIER, i) +func (s *Unnamed_constraintContext) KEY() antlr.TerminalNode { + return s.GetToken(KuneiformParserKEY, 0) } -func (s *Named_type_listContext) AllType_() []ITypeContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITypeContext); ok { - len++ +func (s *Unnamed_constraintContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) +} + +func (s *Unnamed_constraintContext) Identifier_list() IIdentifier_listContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifier_listContext); ok { + t = ctx.(antlr.RuleContext) + break } } - tst := make([]ITypeContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITypeContext); ok { - tst[i] = t.(ITypeContext) - i++ - } + if t == nil { + return nil } - return tst + return t.(IIdentifier_listContext) } -func (s *Named_type_listContext) Type_(i int) ITypeContext { +func (s *Unnamed_constraintContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) +} + +func (s *Unnamed_constraintContext) UNIQUE() antlr.TerminalNode { + return s.GetToken(KuneiformParserUNIQUE, 0) +} + +func (s *Unnamed_constraintContext) CHECK() antlr.TerminalNode { + return s.GetToken(KuneiformParserCHECK, 0) +} + +func (s *Unnamed_constraintContext) Sql_expr() ISql_exprContext { var t antlr.RuleContext - j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITypeContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ + if _, ok := ctx.(ISql_exprContext); ok { + t = ctx.(antlr.RuleContext) + break } } @@ -5495,88 +10129,220 @@ func (s *Named_type_listContext) Type_(i int) ITypeContext { return nil } - return t.(ITypeContext) + return t.(ISql_exprContext) } -func (s *Named_type_listContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserCOMMA) +func (s *Unnamed_constraintContext) FOREIGN() antlr.TerminalNode { + return s.GetToken(KuneiformParserFOREIGN, 0) } -func (s *Named_type_listContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserCOMMA, i) +func (s *Unnamed_constraintContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) } -func (s *Named_type_listContext) GetRuleContext() antlr.RuleContext { +func (s *Unnamed_constraintContext) Fk_constraint() IFk_constraintContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFk_constraintContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFk_constraintContext) +} + +func (s *Unnamed_constraintContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Named_type_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Unnamed_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Named_type_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Unnamed_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitNamed_type_list(s) + return t.VisitUnnamed_constraint(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { - localctx = NewNamed_type_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 42, KuneiformParserRULE_named_type_list) - var _la int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(330) - p.Match(KuneiformParserIDENTIFIER) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(331) - p.Type_() - } - p.SetState(337) +func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintContext) { + localctx = NewUnnamed_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 78, KuneiformParserRULE_unnamed_constraint) + p.SetState(633) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _la = p.GetTokenStream().LA(1) - for _la == KuneiformParserCOMMA { + switch p.GetTokenStream().LA(1) { + case KuneiformParserPRIMARY: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(610) + p.Match(KuneiformParserPRIMARY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(611) + p.Match(KuneiformParserKEY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(612) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(613) + p.Identifier_list() + } + { + p.SetState(614) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserUNIQUE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(616) + p.Match(KuneiformParserUNIQUE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(617) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(618) + p.Identifier_list() + } + { + p.SetState(619) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserCHECK: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(621) + p.Match(KuneiformParserCHECK) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(622) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(623) + p.sql_expr(0) + } + { + p.SetState(624) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserFOREIGN: + p.EnterOuterAlt(localctx, 4) { - p.SetState(332) - p.Match(KuneiformParserCOMMA) + p.SetState(626) + p.Match(KuneiformParserFOREIGN) if p.HasError() { // Recognition error - abort rule goto errorExit } } { - p.SetState(333) - p.Match(KuneiformParserIDENTIFIER) + p.SetState(627) + p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule goto errorExit } } { - p.SetState(334) - p.Type_() + p.SetState(628) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } - - p.SetState(339) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit + { + p.SetState(629) + p.Identifier() } - _la = p.GetTokenStream().LA(1) + { + p.SetState(630) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(631) + p.Fk_constraint() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit } errorExit: @@ -5592,71 +10358,130 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// ITyped_variable_listContext is an interface to support dynamic dispatch. -type ITyped_variable_listContext interface { +// IAlter_table_statementContext is an interface to support dynamic dispatch. +type IAlter_table_statementContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser + // GetTable returns the table rule contexts. + GetTable() IIdentifierContext + + // SetTable sets the table rule contexts. + SetTable(IIdentifierContext) + // Getter signatures - AllVariable() []IVariableContext - Variable(i int) IVariableContext - AllType_() []ITypeContext - Type_(i int) ITypeContext + ALTER() antlr.TerminalNode + TABLE() antlr.TerminalNode + Identifier() IIdentifierContext + Alter_column_clause() IAlter_column_clauseContext + AllAdd_column_clause() []IAdd_column_clauseContext + Add_column_clause(i int) IAdd_column_clauseContext + AllDrop_column_clause() []IDrop_column_clauseContext + Drop_column_clause(i int) IDrop_column_clauseContext + Rename_column_clause() IRename_column_clauseContext + Rename_table_clause() IRename_table_clauseContext + Add_fk_clause() IAdd_fk_clauseContext + Drop_fk_clause() IDrop_fk_clauseContext AllCOMMA() []antlr.TerminalNode COMMA(i int) antlr.TerminalNode - // IsTyped_variable_listContext differentiates from other interfaces. - IsTyped_variable_listContext() + // IsAlter_table_statementContext differentiates from other interfaces. + IsAlter_table_statementContext() } -type Typed_variable_listContext struct { +type Alter_table_statementContext struct { antlr.BaseParserRuleContext parser antlr.Parser + table IIdentifierContext } -func NewEmptyTyped_variable_listContext() *Typed_variable_listContext { - var p = new(Typed_variable_listContext) +func NewEmptyAlter_table_statementContext() *Alter_table_statementContext { + var p = new(Alter_table_statementContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_typed_variable_list + p.RuleIndex = KuneiformParserRULE_alter_table_statement return p } -func InitEmptyTyped_variable_listContext(p *Typed_variable_listContext) { +func InitEmptyAlter_table_statementContext(p *Alter_table_statementContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_typed_variable_list + p.RuleIndex = KuneiformParserRULE_alter_table_statement } -func (*Typed_variable_listContext) IsTyped_variable_listContext() {} +func (*Alter_table_statementContext) IsAlter_table_statementContext() {} -func NewTyped_variable_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Typed_variable_listContext { - var p = new(Typed_variable_listContext) +func NewAlter_table_statementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_statementContext { + var p = new(Alter_table_statementContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_typed_variable_list + p.RuleIndex = KuneiformParserRULE_alter_table_statement return p } -func (s *Typed_variable_listContext) GetParser() antlr.Parser { return s.parser } +func (s *Alter_table_statementContext) GetParser() antlr.Parser { return s.parser } -func (s *Typed_variable_listContext) AllVariable() []IVariableContext { +func (s *Alter_table_statementContext) GetTable() IIdentifierContext { return s.table } + +func (s *Alter_table_statementContext) SetTable(v IIdentifierContext) { s.table = v } + +func (s *Alter_table_statementContext) ALTER() antlr.TerminalNode { + return s.GetToken(KuneiformParserALTER, 0) +} + +func (s *Alter_table_statementContext) TABLE() antlr.TerminalNode { + return s.GetToken(KuneiformParserTABLE, 0) +} + +func (s *Alter_table_statementContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *Alter_table_statementContext) Alter_column_clause() IAlter_column_clauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAlter_column_clauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAlter_column_clauseContext) +} + +func (s *Alter_table_statementContext) AllAdd_column_clause() []IAdd_column_clauseContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(IVariableContext); ok { + if _, ok := ctx.(IAdd_column_clauseContext); ok { len++ } } - tst := make([]IVariableContext, len) + tst := make([]IAdd_column_clauseContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(IVariableContext); ok { - tst[i] = t.(IVariableContext) + if t, ok := ctx.(IAdd_column_clauseContext); ok { + tst[i] = t.(IAdd_column_clauseContext) i++ } } @@ -5664,11 +10489,11 @@ func (s *Typed_variable_listContext) AllVariable() []IVariableContext { return tst } -func (s *Typed_variable_listContext) Variable(i int) IVariableContext { +func (s *Alter_table_statementContext) Add_column_clause(i int) IAdd_column_clauseContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IVariableContext); ok { + if _, ok := ctx.(IAdd_column_clauseContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -5681,23 +10506,23 @@ func (s *Typed_variable_listContext) Variable(i int) IVariableContext { return nil } - return t.(IVariableContext) + return t.(IAdd_column_clauseContext) } -func (s *Typed_variable_listContext) AllType_() []ITypeContext { +func (s *Alter_table_statementContext) AllDrop_column_clause() []IDrop_column_clauseContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(ITypeContext); ok { + if _, ok := ctx.(IDrop_column_clauseContext); ok { len++ } } - tst := make([]ITypeContext, len) + tst := make([]IDrop_column_clauseContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(ITypeContext); ok { - tst[i] = t.(ITypeContext) + if t, ok := ctx.(IDrop_column_clauseContext); ok { + tst[i] = t.(IDrop_column_clauseContext) i++ } } @@ -5705,11 +10530,11 @@ func (s *Typed_variable_listContext) AllType_() []ITypeContext { return tst } -func (s *Typed_variable_listContext) Type_(i int) ITypeContext { +func (s *Alter_table_statementContext) Drop_column_clause(i int) IDrop_column_clauseContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITypeContext); ok { + if _, ok := ctx.(IDrop_column_clauseContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -5722,182 +10547,61 @@ func (s *Typed_variable_listContext) Type_(i int) ITypeContext { return nil } - return t.(ITypeContext) -} - -func (s *Typed_variable_listContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserCOMMA) -} - -func (s *Typed_variable_listContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserCOMMA, i) -} - -func (s *Typed_variable_listContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Typed_variable_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *Typed_variable_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case KuneiformParserVisitor: - return t.VisitTyped_variable_list(s) - - default: - return t.VisitChildren(s) - } + return t.(IDrop_column_clauseContext) } -func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listContext) { - localctx = NewTyped_variable_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 44, KuneiformParserRULE_typed_variable_list) - var _la int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(340) - p.Variable() - } - { - p.SetState(341) - p.Type_() - } - p.SetState(348) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - for _la == KuneiformParserCOMMA { - { - p.SetState(342) - p.Match(KuneiformParserCOMMA) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(343) - p.Variable() - } - { - p.SetState(344) - p.Type_() - } - - p.SetState(350) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit +func (s *Alter_table_statementContext) Rename_column_clause() IRename_column_clauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRename_column_clauseContext); ok { + t = ctx.(antlr.RuleContext) + break } - _la = p.GetTokenStream().LA(1) } -errorExit: - if p.HasError() { - v := p.GetError() - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - p.SetError(nil) + if t == nil { + return nil } - p.ExitRule() - return localctx - goto errorExit // Trick to prevent compiler error if the label is not used -} - -// IConstraintContext is an interface to support dynamic dispatch. -type IConstraintContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // Getter signatures - IDENTIFIER() antlr.TerminalNode - PRIMARY() antlr.TerminalNode - NOT() antlr.TerminalNode - NULL() antlr.TerminalNode - DEFAULT() antlr.TerminalNode - UNIQUE() antlr.TerminalNode - LPAREN() antlr.TerminalNode - Literal() ILiteralContext - RPAREN() antlr.TerminalNode - KEY() antlr.TerminalNode - - // IsConstraintContext differentiates from other interfaces. - IsConstraintContext() -} - -type ConstraintContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyConstraintContext() *ConstraintContext { - var p = new(ConstraintContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_constraint - return p -} - -func InitEmptyConstraintContext(p *ConstraintContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_constraint -} - -func (*ConstraintContext) IsConstraintContext() {} - -func NewConstraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ConstraintContext { - var p = new(ConstraintContext) - - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) - - p.parser = parser - p.RuleIndex = KuneiformParserRULE_constraint - - return p -} - -func (s *ConstraintContext) GetParser() antlr.Parser { return s.parser } - -func (s *ConstraintContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(KuneiformParserIDENTIFIER, 0) -} -func (s *ConstraintContext) PRIMARY() antlr.TerminalNode { - return s.GetToken(KuneiformParserPRIMARY, 0) + return t.(IRename_column_clauseContext) } -func (s *ConstraintContext) NOT() antlr.TerminalNode { - return s.GetToken(KuneiformParserNOT, 0) -} +func (s *Alter_table_statementContext) Rename_table_clause() IRename_table_clauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRename_table_clauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *ConstraintContext) NULL() antlr.TerminalNode { - return s.GetToken(KuneiformParserNULL, 0) -} + if t == nil { + return nil + } -func (s *ConstraintContext) DEFAULT() antlr.TerminalNode { - return s.GetToken(KuneiformParserDEFAULT, 0) + return t.(IRename_table_clauseContext) } -func (s *ConstraintContext) UNIQUE() antlr.TerminalNode { - return s.GetToken(KuneiformParserUNIQUE, 0) -} +func (s *Alter_table_statementContext) Add_fk_clause() IAdd_fk_clauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAdd_fk_clauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *ConstraintContext) LPAREN() antlr.TerminalNode { - return s.GetToken(KuneiformParserLPAREN, 0) + if t == nil { + return nil + } + + return t.(IAdd_fk_clauseContext) } -func (s *ConstraintContext) Literal() ILiteralContext { +func (s *Alter_table_statementContext) Drop_fk_clause() IDrop_fk_clauseContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ILiteralContext); ok { + if _, ok := ctx.(IDrop_fk_clauseContext); ok { t = ctx.(antlr.RuleContext) break } @@ -5907,157 +10611,171 @@ func (s *ConstraintContext) Literal() ILiteralContext { return nil } - return t.(ILiteralContext) + return t.(IDrop_fk_clauseContext) } -func (s *ConstraintContext) RPAREN() antlr.TerminalNode { - return s.GetToken(KuneiformParserRPAREN, 0) +func (s *Alter_table_statementContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(KuneiformParserCOMMA) } -func (s *ConstraintContext) KEY() antlr.TerminalNode { - return s.GetToken(KuneiformParserKEY, 0) +func (s *Alter_table_statementContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(KuneiformParserCOMMA, i) } -func (s *ConstraintContext) GetRuleContext() antlr.RuleContext { +func (s *Alter_table_statementContext) GetRuleContext() antlr.RuleContext { return s } -func (s *ConstraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Alter_table_statementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *ConstraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Alter_table_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitConstraint(s) + return t.VisitAlter_table_statement(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { - localctx = NewConstraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 46, KuneiformParserRULE_constraint) +func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_statementContext) { + localctx = NewAlter_table_statementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 80, KuneiformParserRULE_alter_table_statement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(360) + { + p.SetState(635) + p.Match(KuneiformParserALTER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(636) + p.Match(KuneiformParserTABLE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(637) + + var _x = p.Identifier() + + localctx.(*Alter_table_statementContext).table = _x + } + p.SetState(659) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetTokenStream().LA(1) { - case KuneiformParserIDENTIFIER: + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 63, p.GetParserRuleContext()) { + case 1: { - p.SetState(351) - p.Match(KuneiformParserIDENTIFIER) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(638) + p.Alter_column_clause() } - case KuneiformParserPRIMARY: + case 2: { - p.SetState(352) - p.Match(KuneiformParserPRIMARY) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(639) + p.Add_column_clause() } - p.SetState(354) + p.SetState(644) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if _la == KuneiformParserKEY { + for _la == KuneiformParserCOMMA { { - p.SetState(353) - p.Match(KuneiformParserKEY) + p.SetState(640) + p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } + { + p.SetState(641) + p.Add_column_clause() + } - } - - case KuneiformParserNOT: - { - p.SetState(356) - p.Match(KuneiformParserNOT) + p.SetState(646) + p.GetErrorHandler().Sync(p) if p.HasError() { - // Recognition error - abort rule goto errorExit } + _la = p.GetTokenStream().LA(1) } + + case 3: { - p.SetState(357) - p.Match(KuneiformParserNULL) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(647) + p.Drop_column_clause() + } + p.SetState(652) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit } + _la = p.GetTokenStream().LA(1) - case KuneiformParserDEFAULT: - { - p.SetState(358) - p.Match(KuneiformParserDEFAULT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit + for _la == KuneiformParserCOMMA { + { + p.SetState(648) + p.Match(KuneiformParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(649) + p.Drop_column_clause() } - } - case KuneiformParserUNIQUE: - { - p.SetState(359) - p.Match(KuneiformParserUNIQUE) + p.SetState(654) + p.GetErrorHandler().Sync(p) if p.HasError() { - // Recognition error - abort rule goto errorExit } + _la = p.GetTokenStream().LA(1) } - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - goto errorExit - } - p.SetState(366) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) + case 4: + { + p.SetState(655) + p.Rename_column_clause() + } - if _la == KuneiformParserLPAREN { + case 5: { - p.SetState(362) - p.Match(KuneiformParserLPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(656) + p.Rename_table_clause() } + + case 6: { - p.SetState(363) - p.Literal() + p.SetState(657) + p.Add_fk_clause() } + + case 7: { - p.SetState(364) - p.Match(KuneiformParserRPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(658) + p.Drop_fk_clause() } + case antlr.ATNInvalidAltNumber: + goto errorExit } errorExit: @@ -6073,106 +10791,318 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IAccess_modifierContext is an interface to support dynamic dispatch. -type IAccess_modifierContext interface { +// IAlter_column_clauseContext is an interface to support dynamic dispatch. +type IAlter_column_clauseContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser + // GetOp returns the op token. + GetOp() antlr.Token + + // SetOp sets the op token. + SetOp(antlr.Token) + + // GetColumn returns the column rule contexts. + GetColumn() IIdentifierContext + + // SetColumn sets the column rule contexts. + SetColumn(IIdentifierContext) + // Getter signatures - PUBLIC() antlr.TerminalNode - PRIVATE() antlr.TerminalNode - VIEW() antlr.TerminalNode - OWNER() antlr.TerminalNode + ALTER() antlr.TerminalNode + COLUMN() antlr.TerminalNode + AllIdentifier() []IIdentifierContext + Identifier(i int) IIdentifierContext + SET() antlr.TerminalNode + DROP() antlr.TerminalNode + CONSTRAINT() antlr.TerminalNode + NOT() antlr.TerminalNode + NULL() antlr.TerminalNode + DEFAULT() antlr.TerminalNode + Literal() ILiteralContext - // IsAccess_modifierContext differentiates from other interfaces. - IsAccess_modifierContext() + // IsAlter_column_clauseContext differentiates from other interfaces. + IsAlter_column_clauseContext() } -type Access_modifierContext struct { +type Alter_column_clauseContext struct { antlr.BaseParserRuleContext parser antlr.Parser + column IIdentifierContext + op antlr.Token +} + +func NewEmptyAlter_column_clauseContext() *Alter_column_clauseContext { + var p = new(Alter_column_clauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_alter_column_clause + return p +} + +func InitEmptyAlter_column_clauseContext(p *Alter_column_clauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_alter_column_clause +} + +func (*Alter_column_clauseContext) IsAlter_column_clauseContext() {} + +func NewAlter_column_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_column_clauseContext { + var p = new(Alter_column_clauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_alter_column_clause + + return p +} + +func (s *Alter_column_clauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *Alter_column_clauseContext) GetOp() antlr.Token { return s.op } + +func (s *Alter_column_clauseContext) SetOp(v antlr.Token) { s.op = v } + +func (s *Alter_column_clauseContext) GetColumn() IIdentifierContext { return s.column } + +func (s *Alter_column_clauseContext) SetColumn(v IIdentifierContext) { s.column = v } + +func (s *Alter_column_clauseContext) ALTER() antlr.TerminalNode { + return s.GetToken(KuneiformParserALTER, 0) +} + +func (s *Alter_column_clauseContext) COLUMN() antlr.TerminalNode { + return s.GetToken(KuneiformParserCOLUMN, 0) +} + +func (s *Alter_column_clauseContext) AllIdentifier() []IIdentifierContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIdentifierContext); ok { + len++ + } + } + + tst := make([]IIdentifierContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIdentifierContext); ok { + tst[i] = t.(IIdentifierContext) + i++ + } + } + + return tst } -func NewEmptyAccess_modifierContext() *Access_modifierContext { - var p = new(Access_modifierContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_access_modifier - return p +func (s *Alter_column_clauseContext) Identifier(i int) IIdentifierContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) } -func InitEmptyAccess_modifierContext(p *Access_modifierContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_access_modifier +func (s *Alter_column_clauseContext) SET() antlr.TerminalNode { + return s.GetToken(KuneiformParserSET, 0) } -func (*Access_modifierContext) IsAccess_modifierContext() {} - -func NewAccess_modifierContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Access_modifierContext { - var p = new(Access_modifierContext) - - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) - - p.parser = parser - p.RuleIndex = KuneiformParserRULE_access_modifier - - return p +func (s *Alter_column_clauseContext) DROP() antlr.TerminalNode { + return s.GetToken(KuneiformParserDROP, 0) } -func (s *Access_modifierContext) GetParser() antlr.Parser { return s.parser } +func (s *Alter_column_clauseContext) CONSTRAINT() antlr.TerminalNode { + return s.GetToken(KuneiformParserCONSTRAINT, 0) +} -func (s *Access_modifierContext) PUBLIC() antlr.TerminalNode { - return s.GetToken(KuneiformParserPUBLIC, 0) +func (s *Alter_column_clauseContext) NOT() antlr.TerminalNode { + return s.GetToken(KuneiformParserNOT, 0) } -func (s *Access_modifierContext) PRIVATE() antlr.TerminalNode { - return s.GetToken(KuneiformParserPRIVATE, 0) +func (s *Alter_column_clauseContext) NULL() antlr.TerminalNode { + return s.GetToken(KuneiformParserNULL, 0) } -func (s *Access_modifierContext) VIEW() antlr.TerminalNode { - return s.GetToken(KuneiformParserVIEW, 0) +func (s *Alter_column_clauseContext) DEFAULT() antlr.TerminalNode { + return s.GetToken(KuneiformParserDEFAULT, 0) } -func (s *Access_modifierContext) OWNER() antlr.TerminalNode { - return s.GetToken(KuneiformParserOWNER, 0) +func (s *Alter_column_clauseContext) Literal() ILiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILiteralContext) } -func (s *Access_modifierContext) GetRuleContext() antlr.RuleContext { +func (s *Alter_column_clauseContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Access_modifierContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Alter_column_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Access_modifierContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Alter_column_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitAccess_modifier(s) + return t.VisitAlter_column_clause(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Access_modifier() (localctx IAccess_modifierContext) { - localctx = NewAccess_modifierContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 48, KuneiformParserRULE_access_modifier) +func (p *KuneiformParser) Alter_column_clause() (localctx IAlter_column_clauseContext) { + localctx = NewAlter_column_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 82, KuneiformParserRULE_alter_column_clause) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(368) + p.SetState(661) + p.Match(KuneiformParserALTER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(662) + p.Match(KuneiformParserCOLUMN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(663) + + var _x = p.Identifier() + + localctx.(*Alter_column_clauseContext).column = _x + } + { + p.SetState(664) + + var _lt = p.GetTokenStream().LT(1) + + localctx.(*Alter_column_clauseContext).op = _lt + _la = p.GetTokenStream().LA(1) - if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { - p.GetErrorHandler().RecoverInline(p) + if !(_la == KuneiformParserDROP || _la == KuneiformParserSET) { + var _ri = p.GetErrorHandler().RecoverInline(p) + + localctx.(*Alter_column_clauseContext).op = _ri } else { p.GetErrorHandler().ReportMatch(p) p.Consume() } } + p.SetState(675) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserDEFAULT, KuneiformParserNOT: + p.SetState(668) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserNOT: + { + p.SetState(665) + p.Match(KuneiformParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(666) + p.Match(KuneiformParserNULL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserDEFAULT: + { + p.SetState(667) + p.Match(KuneiformParserDEFAULT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + p.SetState(671) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843009216839680) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&31) != 0) { + { + p.SetState(670) + p.Literal() + } + + } + + case KuneiformParserCONSTRAINT: + { + p.SetState(673) + p.Match(KuneiformParserCONSTRAINT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(674) + p.Identifier() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } errorExit: if p.HasError() { @@ -6187,148 +11117,78 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IAction_declarationContext is an interface to support dynamic dispatch. -type IAction_declarationContext interface { +// IAdd_column_clauseContext is an interface to support dynamic dispatch. +type IAdd_column_clauseContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser + // GetColumn returns the column rule contexts. + GetColumn() IIdentifierContext + + // SetColumn sets the column rule contexts. + SetColumn(IIdentifierContext) + // Getter signatures - ACTION() antlr.TerminalNode - IDENTIFIER() antlr.TerminalNode - LPAREN() antlr.TerminalNode - RPAREN() antlr.TerminalNode - LBRACE() antlr.TerminalNode - Action_block() IAction_blockContext - RBRACE() antlr.TerminalNode - AllAnnotation() []IAnnotationContext - Annotation(i int) IAnnotationContext - Variable_list() IVariable_listContext - AllAccess_modifier() []IAccess_modifierContext - Access_modifier(i int) IAccess_modifierContext + ADD() antlr.TerminalNode + COLUMN() antlr.TerminalNode + Type_() ITypeContext + Identifier() IIdentifierContext - // IsAction_declarationContext differentiates from other interfaces. - IsAction_declarationContext() + // IsAdd_column_clauseContext differentiates from other interfaces. + IsAdd_column_clauseContext() } -type Action_declarationContext struct { +type Add_column_clauseContext struct { antlr.BaseParserRuleContext parser antlr.Parser + column IIdentifierContext } -func NewEmptyAction_declarationContext() *Action_declarationContext { - var p = new(Action_declarationContext) +func NewEmptyAdd_column_clauseContext() *Add_column_clauseContext { + var p = new(Add_column_clauseContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_action_declaration + p.RuleIndex = KuneiformParserRULE_add_column_clause return p } -func InitEmptyAction_declarationContext(p *Action_declarationContext) { +func InitEmptyAdd_column_clauseContext(p *Add_column_clauseContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_action_declaration + p.RuleIndex = KuneiformParserRULE_add_column_clause } -func (*Action_declarationContext) IsAction_declarationContext() {} +func (*Add_column_clauseContext) IsAdd_column_clauseContext() {} -func NewAction_declarationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Action_declarationContext { - var p = new(Action_declarationContext) +func NewAdd_column_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Add_column_clauseContext { + var p = new(Add_column_clauseContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_action_declaration + p.RuleIndex = KuneiformParserRULE_add_column_clause return p } -func (s *Action_declarationContext) GetParser() antlr.Parser { return s.parser } - -func (s *Action_declarationContext) ACTION() antlr.TerminalNode { - return s.GetToken(KuneiformParserACTION, 0) -} - -func (s *Action_declarationContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(KuneiformParserIDENTIFIER, 0) -} - -func (s *Action_declarationContext) LPAREN() antlr.TerminalNode { - return s.GetToken(KuneiformParserLPAREN, 0) -} - -func (s *Action_declarationContext) RPAREN() antlr.TerminalNode { - return s.GetToken(KuneiformParserRPAREN, 0) -} - -func (s *Action_declarationContext) LBRACE() antlr.TerminalNode { - return s.GetToken(KuneiformParserLBRACE, 0) -} - -func (s *Action_declarationContext) Action_block() IAction_blockContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAction_blockContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IAction_blockContext) -} - -func (s *Action_declarationContext) RBRACE() antlr.TerminalNode { - return s.GetToken(KuneiformParserRBRACE, 0) -} +func (s *Add_column_clauseContext) GetParser() antlr.Parser { return s.parser } -func (s *Action_declarationContext) AllAnnotation() []IAnnotationContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IAnnotationContext); ok { - len++ - } - } +func (s *Add_column_clauseContext) GetColumn() IIdentifierContext { return s.column } - tst := make([]IAnnotationContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IAnnotationContext); ok { - tst[i] = t.(IAnnotationContext) - i++ - } - } +func (s *Add_column_clauseContext) SetColumn(v IIdentifierContext) { s.column = v } - return tst +func (s *Add_column_clauseContext) ADD() antlr.TerminalNode { + return s.GetToken(KuneiformParserADD, 0) } -func (s *Action_declarationContext) Annotation(i int) IAnnotationContext { - var t antlr.RuleContext - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAnnotationContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IAnnotationContext) +func (s *Add_column_clauseContext) COLUMN() antlr.TerminalNode { + return s.GetToken(KuneiformParserCOLUMN, 0) } -func (s *Action_declarationContext) Variable_list() IVariable_listContext { +func (s *Add_column_clauseContext) Type_() ITypeContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IVariable_listContext); ok { + if _, ok := ctx.(ITypeContext); ok { t = ctx.(antlr.RuleContext) break } @@ -6338,40 +11198,15 @@ func (s *Action_declarationContext) Variable_list() IVariable_listContext { return nil } - return t.(IVariable_listContext) -} - -func (s *Action_declarationContext) AllAccess_modifier() []IAccess_modifierContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IAccess_modifierContext); ok { - len++ - } - } - - tst := make([]IAccess_modifierContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IAccess_modifierContext); ok { - tst[i] = t.(IAccess_modifierContext) - i++ - } - } - - return tst + return t.(ITypeContext) } -func (s *Action_declarationContext) Access_modifier(i int) IAccess_modifierContext { +func (s *Add_column_clauseContext) Identifier() IIdentifierContext { var t antlr.RuleContext - j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAccess_modifierContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break } } @@ -6379,138 +11214,57 @@ func (s *Action_declarationContext) Access_modifier(i int) IAccess_modifierConte return nil } - return t.(IAccess_modifierContext) + return t.(IIdentifierContext) } -func (s *Action_declarationContext) GetRuleContext() antlr.RuleContext { +func (s *Add_column_clauseContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Action_declarationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Add_column_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Action_declarationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Add_column_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitAction_declaration(s) + return t.VisitAdd_column_clause(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationContext) { - localctx = NewAction_declarationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 50, KuneiformParserRULE_action_declaration) - var _la int - +func (p *KuneiformParser) Add_column_clause() (localctx IAdd_column_clauseContext) { + localctx = NewAdd_column_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 84, KuneiformParserRULE_add_column_clause) p.EnterOuterAlt(localctx, 1) - p.SetState(373) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - for _la == KuneiformParserCONTEXTUAL_VARIABLE { - { - p.SetState(370) - p.Annotation() - } - - p.SetState(375) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(376) - p.Match(KuneiformParserACTION) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } { - p.SetState(377) - p.Match(KuneiformParserIDENTIFIER) + p.SetState(677) + p.Match(KuneiformParserADD) if p.HasError() { // Recognition error - abort rule goto errorExit } } { - p.SetState(378) - p.Match(KuneiformParserLPAREN) + p.SetState(678) + p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(380) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { - { - p.SetState(379) - p.Variable_list() - } - - } { - p.SetState(382) - p.Match(KuneiformParserRPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - p.SetState(384) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) + p.SetState(679) - for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { - { - p.SetState(383) - p.Access_modifier() - } + var _x = p.Identifier() - p.SetState(386) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(388) - p.Match(KuneiformParserLBRACE) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(389) - p.Action_block() + localctx.(*Add_column_clauseContext).column = _x } { - p.SetState(390) - p.Match(KuneiformParserRBRACE) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(680) + p.Type_() } errorExit: @@ -6526,88 +11280,77 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IProcedure_declarationContext is an interface to support dynamic dispatch. -type IProcedure_declarationContext interface { +// IDrop_column_clauseContext is an interface to support dynamic dispatch. +type IDrop_column_clauseContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser + // GetColumn returns the column rule contexts. + GetColumn() IIdentifierContext + + // SetColumn sets the column rule contexts. + SetColumn(IIdentifierContext) + // Getter signatures - PROCEDURE() antlr.TerminalNode - IDENTIFIER() antlr.TerminalNode - LPAREN() antlr.TerminalNode - RPAREN() antlr.TerminalNode - LBRACE() antlr.TerminalNode - Procedure_block() IProcedure_blockContext - RBRACE() antlr.TerminalNode - AllAnnotation() []IAnnotationContext - Annotation(i int) IAnnotationContext - Typed_variable_list() ITyped_variable_listContext - AllAccess_modifier() []IAccess_modifierContext - Access_modifier(i int) IAccess_modifierContext - Procedure_return() IProcedure_returnContext + DROP() antlr.TerminalNode + COLUMN() antlr.TerminalNode + Identifier() IIdentifierContext - // IsProcedure_declarationContext differentiates from other interfaces. - IsProcedure_declarationContext() + // IsDrop_column_clauseContext differentiates from other interfaces. + IsDrop_column_clauseContext() } -type Procedure_declarationContext struct { +type Drop_column_clauseContext struct { antlr.BaseParserRuleContext parser antlr.Parser + column IIdentifierContext } -func NewEmptyProcedure_declarationContext() *Procedure_declarationContext { - var p = new(Procedure_declarationContext) +func NewEmptyDrop_column_clauseContext() *Drop_column_clauseContext { + var p = new(Drop_column_clauseContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_procedure_declaration + p.RuleIndex = KuneiformParserRULE_drop_column_clause return p } -func InitEmptyProcedure_declarationContext(p *Procedure_declarationContext) { +func InitEmptyDrop_column_clauseContext(p *Drop_column_clauseContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_procedure_declaration + p.RuleIndex = KuneiformParserRULE_drop_column_clause } -func (*Procedure_declarationContext) IsProcedure_declarationContext() {} +func (*Drop_column_clauseContext) IsDrop_column_clauseContext() {} -func NewProcedure_declarationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Procedure_declarationContext { - var p = new(Procedure_declarationContext) +func NewDrop_column_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_column_clauseContext { + var p = new(Drop_column_clauseContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_procedure_declaration + p.RuleIndex = KuneiformParserRULE_drop_column_clause return p } -func (s *Procedure_declarationContext) GetParser() antlr.Parser { return s.parser } - -func (s *Procedure_declarationContext) PROCEDURE() antlr.TerminalNode { - return s.GetToken(KuneiformParserPROCEDURE, 0) -} +func (s *Drop_column_clauseContext) GetParser() antlr.Parser { return s.parser } -func (s *Procedure_declarationContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(KuneiformParserIDENTIFIER, 0) -} +func (s *Drop_column_clauseContext) GetColumn() IIdentifierContext { return s.column } -func (s *Procedure_declarationContext) LPAREN() antlr.TerminalNode { - return s.GetToken(KuneiformParserLPAREN, 0) -} +func (s *Drop_column_clauseContext) SetColumn(v IIdentifierContext) { s.column = v } -func (s *Procedure_declarationContext) RPAREN() antlr.TerminalNode { - return s.GetToken(KuneiformParserRPAREN, 0) +func (s *Drop_column_clauseContext) DROP() antlr.TerminalNode { + return s.GetToken(KuneiformParserDROP, 0) } -func (s *Procedure_declarationContext) LBRACE() antlr.TerminalNode { - return s.GetToken(KuneiformParserLBRACE, 0) +func (s *Drop_column_clauseContext) COLUMN() antlr.TerminalNode { + return s.GetToken(KuneiformParserCOLUMN, 0) } -func (s *Procedure_declarationContext) Procedure_block() IProcedure_blockContext { +func (s *Drop_column_clauseContext) Identifier() IIdentifierContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IProcedure_blockContext); ok { + if _, ok := ctx.(IIdentifierContext); ok { t = ctx.(antlr.RuleContext) break } @@ -6617,84 +11360,166 @@ func (s *Procedure_declarationContext) Procedure_block() IProcedure_blockContext return nil } - return t.(IProcedure_blockContext) + return t.(IIdentifierContext) } -func (s *Procedure_declarationContext) RBRACE() antlr.TerminalNode { - return s.GetToken(KuneiformParserRBRACE, 0) +func (s *Drop_column_clauseContext) GetRuleContext() antlr.RuleContext { + return s } -func (s *Procedure_declarationContext) AllAnnotation() []IAnnotationContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IAnnotationContext); ok { - len++ - } +func (s *Drop_column_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Drop_column_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitDrop_column_clause(s) + + default: + return t.VisitChildren(s) } +} - tst := make([]IAnnotationContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IAnnotationContext); ok { - tst[i] = t.(IAnnotationContext) - i++ +func (p *KuneiformParser) Drop_column_clause() (localctx IDrop_column_clauseContext) { + localctx = NewDrop_column_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 86, KuneiformParserRULE_drop_column_clause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(682) + p.Match(KuneiformParserDROP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(683) + p.Match(KuneiformParserCOLUMN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit } } + { + p.SetState(684) + + var _x = p.Identifier() + + localctx.(*Drop_column_clauseContext).column = _x + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IRename_column_clauseContext is an interface to support dynamic dispatch. +type IRename_column_clauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // GetOld_column returns the old_column rule contexts. + GetOld_column() IIdentifierContext + + // GetNew_column returns the new_column rule contexts. + GetNew_column() IIdentifierContext + + // SetOld_column sets the old_column rule contexts. + SetOld_column(IIdentifierContext) + + // SetNew_column sets the new_column rule contexts. + SetNew_column(IIdentifierContext) + + // Getter signatures + RENAME() antlr.TerminalNode + COLUMN() antlr.TerminalNode + TO() antlr.TerminalNode + AllIdentifier() []IIdentifierContext + Identifier(i int) IIdentifierContext + + // IsRename_column_clauseContext differentiates from other interfaces. + IsRename_column_clauseContext() +} + +type Rename_column_clauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser + old_column IIdentifierContext + new_column IIdentifierContext +} + +func NewEmptyRename_column_clauseContext() *Rename_column_clauseContext { + var p = new(Rename_column_clauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_rename_column_clause + return p +} - return tst +func InitEmptyRename_column_clauseContext(p *Rename_column_clauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_rename_column_clause } -func (s *Procedure_declarationContext) Annotation(i int) IAnnotationContext { - var t antlr.RuleContext - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAnnotationContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ - } - } +func (*Rename_column_clauseContext) IsRename_column_clauseContext() {} - if t == nil { - return nil - } +func NewRename_column_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Rename_column_clauseContext { + var p = new(Rename_column_clauseContext) - return t.(IAnnotationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_rename_column_clause + + return p } -func (s *Procedure_declarationContext) Typed_variable_list() ITyped_variable_listContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITyped_variable_listContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } +func (s *Rename_column_clauseContext) GetParser() antlr.Parser { return s.parser } - if t == nil { - return nil - } +func (s *Rename_column_clauseContext) GetOld_column() IIdentifierContext { return s.old_column } - return t.(ITyped_variable_listContext) +func (s *Rename_column_clauseContext) GetNew_column() IIdentifierContext { return s.new_column } + +func (s *Rename_column_clauseContext) SetOld_column(v IIdentifierContext) { s.old_column = v } + +func (s *Rename_column_clauseContext) SetNew_column(v IIdentifierContext) { s.new_column = v } + +func (s *Rename_column_clauseContext) RENAME() antlr.TerminalNode { + return s.GetToken(KuneiformParserRENAME, 0) } -func (s *Procedure_declarationContext) AllAccess_modifier() []IAccess_modifierContext { +func (s *Rename_column_clauseContext) COLUMN() antlr.TerminalNode { + return s.GetToken(KuneiformParserCOLUMN, 0) +} + +func (s *Rename_column_clauseContext) TO() antlr.TerminalNode { + return s.GetToken(KuneiformParserTO, 0) +} + +func (s *Rename_column_clauseContext) AllIdentifier() []IIdentifierContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(IAccess_modifierContext); ok { + if _, ok := ctx.(IIdentifierContext); ok { len++ } } - tst := make([]IAccess_modifierContext, len) + tst := make([]IIdentifierContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(IAccess_modifierContext); ok { - tst[i] = t.(IAccess_modifierContext) + if t, ok := ctx.(IIdentifierContext); ok { + tst[i] = t.(IIdentifierContext) i++ } } @@ -6702,11 +11527,11 @@ func (s *Procedure_declarationContext) AllAccess_modifier() []IAccess_modifierCo return tst } -func (s *Procedure_declarationContext) Access_modifier(i int) IAccess_modifierContext { +func (s *Rename_column_clauseContext) Identifier(i int) IIdentifierContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAccess_modifierContext); ok { + if _, ok := ctx.(IIdentifierContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -6719,169 +11544,211 @@ func (s *Procedure_declarationContext) Access_modifier(i int) IAccess_modifierCo return nil } - return t.(IAccess_modifierContext) -} - -func (s *Procedure_declarationContext) Procedure_return() IProcedure_returnContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IProcedure_returnContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IProcedure_returnContext) + return t.(IIdentifierContext) } -func (s *Procedure_declarationContext) GetRuleContext() antlr.RuleContext { +func (s *Rename_column_clauseContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Procedure_declarationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Rename_column_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Procedure_declarationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Rename_column_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitProcedure_declaration(s) + return t.VisitRename_column_clause(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarationContext) { - localctx = NewProcedure_declarationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 52, KuneiformParserRULE_procedure_declaration) - var _la int - +func (p *KuneiformParser) Rename_column_clause() (localctx IRename_column_clauseContext) { + localctx = NewRename_column_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 88, KuneiformParserRULE_rename_column_clause) p.EnterOuterAlt(localctx, 1) - p.SetState(395) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - for _la == KuneiformParserCONTEXTUAL_VARIABLE { - { - p.SetState(392) - p.Annotation() - } - - p.SetState(397) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - } { - p.SetState(398) - p.Match(KuneiformParserPROCEDURE) + p.SetState(686) + p.Match(KuneiformParserRENAME) if p.HasError() { // Recognition error - abort rule goto errorExit } } { - p.SetState(399) - p.Match(KuneiformParserIDENTIFIER) + p.SetState(687) + p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule goto errorExit } } { - p.SetState(400) - p.Match(KuneiformParserLPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - p.SetState(402) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) + p.SetState(688) - if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { - { - p.SetState(401) - p.Typed_variable_list() - } + var _x = p.Identifier() + localctx.(*Rename_column_clauseContext).old_column = _x } { - p.SetState(404) - p.Match(KuneiformParserRPAREN) + p.SetState(689) + p.Match(KuneiformParserTO) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(406) - p.GetErrorHandler().Sync(p) + { + p.SetState(690) + + var _x = p.Identifier() + + localctx.(*Rename_column_clauseContext).new_column = _x + } + +errorExit: if p.HasError() { - goto errorExit + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) } - _la = p.GetTokenStream().LA(1) + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} - for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { - { - p.SetState(405) - p.Access_modifier() - } +// IRename_table_clauseContext is an interface to support dynamic dispatch. +type IRename_table_clauseContext interface { + antlr.ParserRuleContext - p.SetState(408) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit + // GetParser returns the parser. + GetParser() antlr.Parser + + // GetNew_table returns the new_table rule contexts. + GetNew_table() IIdentifierContext + + // SetNew_table sets the new_table rule contexts. + SetNew_table(IIdentifierContext) + + // Getter signatures + RENAME() antlr.TerminalNode + TO() antlr.TerminalNode + Identifier() IIdentifierContext + + // IsRename_table_clauseContext differentiates from other interfaces. + IsRename_table_clauseContext() +} + +type Rename_table_clauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser + new_table IIdentifierContext +} + +func NewEmptyRename_table_clauseContext() *Rename_table_clauseContext { + var p = new(Rename_table_clauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_rename_table_clause + return p +} + +func InitEmptyRename_table_clauseContext(p *Rename_table_clauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_rename_table_clause +} + +func (*Rename_table_clauseContext) IsRename_table_clauseContext() {} + +func NewRename_table_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Rename_table_clauseContext { + var p = new(Rename_table_clauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_rename_table_clause + + return p +} + +func (s *Rename_table_clauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *Rename_table_clauseContext) GetNew_table() IIdentifierContext { return s.new_table } + +func (s *Rename_table_clauseContext) SetNew_table(v IIdentifierContext) { s.new_table = v } + +func (s *Rename_table_clauseContext) RENAME() antlr.TerminalNode { + return s.GetToken(KuneiformParserRENAME, 0) +} + +func (s *Rename_table_clauseContext) TO() antlr.TerminalNode { + return s.GetToken(KuneiformParserTO, 0) +} + +func (s *Rename_table_clauseContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break } - _la = p.GetTokenStream().LA(1) } - p.SetState(411) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit + + if t == nil { + return nil } - _la = p.GetTokenStream().LA(1) - if _la == KuneiformParserRETURNS { - { - p.SetState(410) - p.Procedure_return() - } + return t.(IIdentifierContext) +} + +func (s *Rename_table_clauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Rename_table_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} +func (s *Rename_table_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitRename_table_clause(s) + + default: + return t.VisitChildren(s) } +} + +func (p *KuneiformParser) Rename_table_clause() (localctx IRename_table_clauseContext) { + localctx = NewRename_table_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 90, KuneiformParserRULE_rename_table_clause) + p.EnterOuterAlt(localctx, 1) { - p.SetState(413) - p.Match(KuneiformParserLBRACE) + p.SetState(692) + p.Match(KuneiformParserRENAME) if p.HasError() { // Recognition error - abort rule goto errorExit } } { - p.SetState(414) - p.Procedure_block() - } - { - p.SetState(415) - p.Match(KuneiformParserRBRACE) + p.SetState(693) + p.Match(KuneiformParserTO) if p.HasError() { // Recognition error - abort rule goto errorExit } } + { + p.SetState(694) + + var _x = p.Identifier() + + localctx.(*Rename_table_clauseContext).new_table = _x + } errorExit: if p.HasError() { @@ -6896,101 +11763,78 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IProcedure_returnContext is an interface to support dynamic dispatch. -type IProcedure_returnContext interface { +// IAdd_fk_clauseContext is an interface to support dynamic dispatch. +type IAdd_fk_clauseContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser - // GetReturn_columns returns the return_columns rule contexts. - GetReturn_columns() INamed_type_listContext - - // GetUnnamed_return_types returns the unnamed_return_types rule contexts. - GetUnnamed_return_types() IType_listContext - - // SetReturn_columns sets the return_columns rule contexts. - SetReturn_columns(INamed_type_listContext) + // GetFk_name returns the fk_name rule contexts. + GetFk_name() IIdentifierContext - // SetUnnamed_return_types sets the unnamed_return_types rule contexts. - SetUnnamed_return_types(IType_listContext) + // SetFk_name sets the fk_name rule contexts. + SetFk_name(IIdentifierContext) // Getter signatures - RETURNS() antlr.TerminalNode - LPAREN() antlr.TerminalNode - RPAREN() antlr.TerminalNode - Named_type_list() INamed_type_listContext - Type_list() IType_listContext - TABLE() antlr.TerminalNode + ADD() antlr.TerminalNode + CONSTRAINT() antlr.TerminalNode + Unnamed_constraint() IUnnamed_constraintContext + Identifier() IIdentifierContext - // IsProcedure_returnContext differentiates from other interfaces. - IsProcedure_returnContext() + // IsAdd_fk_clauseContext differentiates from other interfaces. + IsAdd_fk_clauseContext() } -type Procedure_returnContext struct { +type Add_fk_clauseContext struct { antlr.BaseParserRuleContext - parser antlr.Parser - return_columns INamed_type_listContext - unnamed_return_types IType_listContext + parser antlr.Parser + fk_name IIdentifierContext } -func NewEmptyProcedure_returnContext() *Procedure_returnContext { - var p = new(Procedure_returnContext) +func NewEmptyAdd_fk_clauseContext() *Add_fk_clauseContext { + var p = new(Add_fk_clauseContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_procedure_return + p.RuleIndex = KuneiformParserRULE_add_fk_clause return p } -func InitEmptyProcedure_returnContext(p *Procedure_returnContext) { +func InitEmptyAdd_fk_clauseContext(p *Add_fk_clauseContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_procedure_return + p.RuleIndex = KuneiformParserRULE_add_fk_clause } -func (*Procedure_returnContext) IsProcedure_returnContext() {} +func (*Add_fk_clauseContext) IsAdd_fk_clauseContext() {} -func NewProcedure_returnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Procedure_returnContext { - var p = new(Procedure_returnContext) +func NewAdd_fk_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Add_fk_clauseContext { + var p = new(Add_fk_clauseContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_procedure_return + p.RuleIndex = KuneiformParserRULE_add_fk_clause return p } -func (s *Procedure_returnContext) GetParser() antlr.Parser { return s.parser } - -func (s *Procedure_returnContext) GetReturn_columns() INamed_type_listContext { - return s.return_columns -} - -func (s *Procedure_returnContext) GetUnnamed_return_types() IType_listContext { - return s.unnamed_return_types -} - -func (s *Procedure_returnContext) SetReturn_columns(v INamed_type_listContext) { s.return_columns = v } +func (s *Add_fk_clauseContext) GetParser() antlr.Parser { return s.parser } -func (s *Procedure_returnContext) SetUnnamed_return_types(v IType_listContext) { - s.unnamed_return_types = v -} +func (s *Add_fk_clauseContext) GetFk_name() IIdentifierContext { return s.fk_name } -func (s *Procedure_returnContext) RETURNS() antlr.TerminalNode { - return s.GetToken(KuneiformParserRETURNS, 0) -} +func (s *Add_fk_clauseContext) SetFk_name(v IIdentifierContext) { s.fk_name = v } -func (s *Procedure_returnContext) LPAREN() antlr.TerminalNode { - return s.GetToken(KuneiformParserLPAREN, 0) +func (s *Add_fk_clauseContext) ADD() antlr.TerminalNode { + return s.GetToken(KuneiformParserADD, 0) } -func (s *Procedure_returnContext) RPAREN() antlr.TerminalNode { - return s.GetToken(KuneiformParserRPAREN, 0) +func (s *Add_fk_clauseContext) CONSTRAINT() antlr.TerminalNode { + return s.GetToken(KuneiformParserCONSTRAINT, 0) } -func (s *Procedure_returnContext) Named_type_list() INamed_type_listContext { +func (s *Add_fk_clauseContext) Unnamed_constraint() IUnnamed_constraintContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INamed_type_listContext); ok { + if _, ok := ctx.(IUnnamed_constraintContext); ok { t = ctx.(antlr.RuleContext) break } @@ -7000,13 +11844,13 @@ func (s *Procedure_returnContext) Named_type_list() INamed_type_listContext { return nil } - return t.(INamed_type_listContext) + return t.(IUnnamed_constraintContext) } -func (s *Procedure_returnContext) Type_list() IType_listContext { +func (s *Add_fk_clauseContext) Identifier() IIdentifierContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IType_listContext); ok { + if _, ok := ctx.(IIdentifierContext); ok { t = ctx.(antlr.RuleContext) break } @@ -7016,122 +11860,57 @@ func (s *Procedure_returnContext) Type_list() IType_listContext { return nil } - return t.(IType_listContext) -} - -func (s *Procedure_returnContext) TABLE() antlr.TerminalNode { - return s.GetToken(KuneiformParserTABLE, 0) + return t.(IIdentifierContext) } -func (s *Procedure_returnContext) GetRuleContext() antlr.RuleContext { +func (s *Add_fk_clauseContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Procedure_returnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Add_fk_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Procedure_returnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Add_fk_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitProcedure_return(s) + return t.VisitAdd_fk_clause(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) { - localctx = NewProcedure_returnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 54, KuneiformParserRULE_procedure_return) - var _la int - +func (p *KuneiformParser) Add_fk_clause() (localctx IAdd_fk_clauseContext) { + localctx = NewAdd_fk_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 92, KuneiformParserRULE_add_fk_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(417) - p.Match(KuneiformParserRETURNS) + p.SetState(696) + p.Match(KuneiformParserADD) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(429) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 41, p.GetParserRuleContext()) { - case 1: - p.SetState(419) - p.GetErrorHandler().Sync(p) + { + p.SetState(697) + p.Match(KuneiformParserCONSTRAINT) if p.HasError() { + // Recognition error - abort rule goto errorExit } - _la = p.GetTokenStream().LA(1) - - if _la == KuneiformParserTABLE { - { - p.SetState(418) - p.Match(KuneiformParserTABLE) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - } - { - p.SetState(421) - p.Match(KuneiformParserLPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(422) - - var _x = p.Named_type_list() - - localctx.(*Procedure_returnContext).return_columns = _x - } - { - p.SetState(423) - p.Match(KuneiformParserRPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - - case 2: - { - p.SetState(425) - p.Match(KuneiformParserLPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(426) - - var _x = p.Type_list() + } + { + p.SetState(698) - localctx.(*Procedure_returnContext).unnamed_return_types = _x - } - { - p.SetState(427) - p.Match(KuneiformParserRPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } + var _x = p.Identifier() - case antlr.ATNInvalidAltNumber: - goto errorExit + localctx.(*Add_fk_clauseContext).fk_name = _x + } + { + p.SetState(699) + p.Unnamed_constraint() } errorExit: @@ -7147,57 +11926,77 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// ISqlContext is an interface to support dynamic dispatch. -type ISqlContext interface { +// IDrop_fk_clauseContext is an interface to support dynamic dispatch. +type IDrop_fk_clauseContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser + // GetFk_name returns the fk_name rule contexts. + GetFk_name() IIdentifierContext + + // SetFk_name sets the fk_name rule contexts. + SetFk_name(IIdentifierContext) + // Getter signatures - Sql_statement() ISql_statementContext - SCOL() antlr.TerminalNode + DROP() antlr.TerminalNode + CONSTRAINT() antlr.TerminalNode + Identifier() IIdentifierContext - // IsSqlContext differentiates from other interfaces. - IsSqlContext() + // IsDrop_fk_clauseContext differentiates from other interfaces. + IsDrop_fk_clauseContext() } -type SqlContext struct { +type Drop_fk_clauseContext struct { antlr.BaseParserRuleContext - parser antlr.Parser + parser antlr.Parser + fk_name IIdentifierContext } -func NewEmptySqlContext() *SqlContext { - var p = new(SqlContext) +func NewEmptyDrop_fk_clauseContext() *Drop_fk_clauseContext { + var p = new(Drop_fk_clauseContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_sql + p.RuleIndex = KuneiformParserRULE_drop_fk_clause return p } -func InitEmptySqlContext(p *SqlContext) { +func InitEmptyDrop_fk_clauseContext(p *Drop_fk_clauseContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_sql + p.RuleIndex = KuneiformParserRULE_drop_fk_clause } -func (*SqlContext) IsSqlContext() {} +func (*Drop_fk_clauseContext) IsDrop_fk_clauseContext() {} -func NewSqlContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SqlContext { - var p = new(SqlContext) +func NewDrop_fk_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_fk_clauseContext { + var p = new(Drop_fk_clauseContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_sql + p.RuleIndex = KuneiformParserRULE_drop_fk_clause return p } -func (s *SqlContext) GetParser() antlr.Parser { return s.parser } +func (s *Drop_fk_clauseContext) GetParser() antlr.Parser { return s.parser } -func (s *SqlContext) Sql_statement() ISql_statementContext { +func (s *Drop_fk_clauseContext) GetFk_name() IIdentifierContext { return s.fk_name } + +func (s *Drop_fk_clauseContext) SetFk_name(v IIdentifierContext) { s.fk_name = v } + +func (s *Drop_fk_clauseContext) DROP() antlr.TerminalNode { + return s.GetToken(KuneiformParserDROP, 0) +} + +func (s *Drop_fk_clauseContext) CONSTRAINT() antlr.TerminalNode { + return s.GetToken(KuneiformParserCONSTRAINT, 0) +} + +func (s *Drop_fk_clauseContext) Identifier() IIdentifierContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISql_statementContext); ok { + if _, ok := ctx.(IIdentifierContext); ok { t = ctx.(antlr.RuleContext) break } @@ -7207,47 +12006,54 @@ func (s *SqlContext) Sql_statement() ISql_statementContext { return nil } - return t.(ISql_statementContext) -} - -func (s *SqlContext) SCOL() antlr.TerminalNode { - return s.GetToken(KuneiformParserSCOL, 0) + return t.(IIdentifierContext) } -func (s *SqlContext) GetRuleContext() antlr.RuleContext { +func (s *Drop_fk_clauseContext) GetRuleContext() antlr.RuleContext { return s } -func (s *SqlContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Drop_fk_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *SqlContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Drop_fk_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitSql(s) + return t.VisitDrop_fk_clause(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Sql() (localctx ISqlContext) { - localctx = NewSqlContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 56, KuneiformParserRULE_sql) +func (p *KuneiformParser) Drop_fk_clause() (localctx IDrop_fk_clauseContext) { + localctx = NewDrop_fk_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 94, KuneiformParserRULE_drop_fk_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(431) - p.Sql_statement() + p.SetState(701) + p.Match(KuneiformParserDROP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } { - p.SetState(432) - p.Match(KuneiformParserSCOL) + p.SetState(702) + p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule goto errorExit } } + { + p.SetState(703) + + var _x = p.Identifier() + + localctx.(*Drop_fk_clauseContext).fk_name = _x + } errorExit: if p.HasError() { @@ -7262,143 +12068,127 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// ISql_statementContext is an interface to support dynamic dispatch. -type ISql_statementContext interface { +// ICreate_index_statementContext is an interface to support dynamic dispatch. +type ICreate_index_statementContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser + // GetName returns the name rule contexts. + GetName() IIdentifierContext + + // GetTable returns the table rule contexts. + GetTable() IIdentifierContext + + // GetColumns returns the columns rule contexts. + GetColumns() IIdentifier_listContext + + // SetName sets the name rule contexts. + SetName(IIdentifierContext) + + // SetTable sets the table rule contexts. + SetTable(IIdentifierContext) + + // SetColumns sets the columns rule contexts. + SetColumns(IIdentifier_listContext) + // Getter signatures - Select_statement() ISelect_statementContext - Update_statement() IUpdate_statementContext - Insert_statement() IInsert_statementContext - Delete_statement() IDelete_statementContext - WITH() antlr.TerminalNode - AllCommon_table_expression() []ICommon_table_expressionContext - Common_table_expression(i int) ICommon_table_expressionContext - RECURSIVE() antlr.TerminalNode - AllCOMMA() []antlr.TerminalNode - COMMA(i int) antlr.TerminalNode + CREATE() antlr.TerminalNode + INDEX() antlr.TerminalNode + ON() antlr.TerminalNode + LPAREN() antlr.TerminalNode + RPAREN() antlr.TerminalNode + AllIdentifier() []IIdentifierContext + Identifier(i int) IIdentifierContext + Identifier_list() IIdentifier_listContext + UNIQUE() antlr.TerminalNode - // IsSql_statementContext differentiates from other interfaces. - IsSql_statementContext() + // IsCreate_index_statementContext differentiates from other interfaces. + IsCreate_index_statementContext() } -type Sql_statementContext struct { +type Create_index_statementContext struct { antlr.BaseParserRuleContext - parser antlr.Parser + parser antlr.Parser + name IIdentifierContext + table IIdentifierContext + columns IIdentifier_listContext } -func NewEmptySql_statementContext() *Sql_statementContext { - var p = new(Sql_statementContext) +func NewEmptyCreate_index_statementContext() *Create_index_statementContext { + var p = new(Create_index_statementContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_sql_statement + p.RuleIndex = KuneiformParserRULE_create_index_statement return p } -func InitEmptySql_statementContext(p *Sql_statementContext) { +func InitEmptyCreate_index_statementContext(p *Create_index_statementContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_sql_statement + p.RuleIndex = KuneiformParserRULE_create_index_statement } -func (*Sql_statementContext) IsSql_statementContext() {} +func (*Create_index_statementContext) IsCreate_index_statementContext() {} -func NewSql_statementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_statementContext { - var p = new(Sql_statementContext) +func NewCreate_index_statementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_index_statementContext { + var p = new(Create_index_statementContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) - p.parser = parser - p.RuleIndex = KuneiformParserRULE_sql_statement - - return p -} - -func (s *Sql_statementContext) GetParser() antlr.Parser { return s.parser } - -func (s *Sql_statementContext) Select_statement() ISelect_statementContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_statementContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_statementContext) -} - -func (s *Sql_statementContext) Update_statement() IUpdate_statementContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUpdate_statementContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IUpdate_statementContext) + p.parser = parser + p.RuleIndex = KuneiformParserRULE_create_index_statement + + return p } -func (s *Sql_statementContext) Insert_statement() IInsert_statementContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IInsert_statementContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } +func (s *Create_index_statementContext) GetParser() antlr.Parser { return s.parser } - if t == nil { - return nil - } +func (s *Create_index_statementContext) GetName() IIdentifierContext { return s.name } - return t.(IInsert_statementContext) +func (s *Create_index_statementContext) GetTable() IIdentifierContext { return s.table } + +func (s *Create_index_statementContext) GetColumns() IIdentifier_listContext { return s.columns } + +func (s *Create_index_statementContext) SetName(v IIdentifierContext) { s.name = v } + +func (s *Create_index_statementContext) SetTable(v IIdentifierContext) { s.table = v } + +func (s *Create_index_statementContext) SetColumns(v IIdentifier_listContext) { s.columns = v } + +func (s *Create_index_statementContext) CREATE() antlr.TerminalNode { + return s.GetToken(KuneiformParserCREATE, 0) } -func (s *Sql_statementContext) Delete_statement() IDelete_statementContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDelete_statementContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } +func (s *Create_index_statementContext) INDEX() antlr.TerminalNode { + return s.GetToken(KuneiformParserINDEX, 0) +} - if t == nil { - return nil - } +func (s *Create_index_statementContext) ON() antlr.TerminalNode { + return s.GetToken(KuneiformParserON, 0) +} - return t.(IDelete_statementContext) +func (s *Create_index_statementContext) LPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserLPAREN, 0) } -func (s *Sql_statementContext) WITH() antlr.TerminalNode { - return s.GetToken(KuneiformParserWITH, 0) +func (s *Create_index_statementContext) RPAREN() antlr.TerminalNode { + return s.GetToken(KuneiformParserRPAREN, 0) } -func (s *Sql_statementContext) AllCommon_table_expression() []ICommon_table_expressionContext { +func (s *Create_index_statementContext) AllIdentifier() []IIdentifierContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(ICommon_table_expressionContext); ok { + if _, ok := ctx.(IIdentifierContext); ok { len++ } } - tst := make([]ICommon_table_expressionContext, len) + tst := make([]IIdentifierContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(ICommon_table_expressionContext); ok { - tst[i] = t.(ICommon_table_expressionContext) + if t, ok := ctx.(IIdentifierContext); ok { + tst[i] = t.(IIdentifierContext) i++ } } @@ -7406,11 +12196,11 @@ func (s *Sql_statementContext) AllCommon_table_expression() []ICommon_table_expr return tst } -func (s *Sql_statementContext) Common_table_expression(i int) ICommon_table_expressionContext { +func (s *Create_index_statementContext) Identifier(i int) IIdentifierContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommon_table_expressionContext); ok { + if _, ok := ctx.(IIdentifierContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -7423,147 +12213,131 @@ func (s *Sql_statementContext) Common_table_expression(i int) ICommon_table_expr return nil } - return t.(ICommon_table_expressionContext) + return t.(IIdentifierContext) } -func (s *Sql_statementContext) RECURSIVE() antlr.TerminalNode { - return s.GetToken(KuneiformParserRECURSIVE, 0) -} +func (s *Create_index_statementContext) Identifier_list() IIdentifier_listContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifier_listContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *Sql_statementContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserCOMMA) + if t == nil { + return nil + } + + return t.(IIdentifier_listContext) } -func (s *Sql_statementContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserCOMMA, i) +func (s *Create_index_statementContext) UNIQUE() antlr.TerminalNode { + return s.GetToken(KuneiformParserUNIQUE, 0) } -func (s *Sql_statementContext) GetRuleContext() antlr.RuleContext { +func (s *Create_index_statementContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Sql_statementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Create_index_statementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Sql_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Create_index_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitSql_statement(s) + return t.VisitCreate_index_statement(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { - localctx = NewSql_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 58, KuneiformParserRULE_sql_statement) +func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_statementContext) { + localctx = NewCreate_index_statementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 96, KuneiformParserRULE_create_index_statement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(446) + { + p.SetState(705) + p.Match(KuneiformParserCREATE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(707) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if _la == KuneiformParserWITH { + if _la == KuneiformParserUNIQUE { { - p.SetState(434) - p.Match(KuneiformParserWITH) + p.SetState(706) + p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(436) - p.GetErrorHandler().Sync(p) + + } + { + p.SetState(709) + p.Match(KuneiformParserINDEX) if p.HasError() { + // Recognition error - abort rule goto errorExit } - _la = p.GetTokenStream().LA(1) + } + { + p.SetState(710) - if _la == KuneiformParserRECURSIVE { - { - p.SetState(435) - p.Match(KuneiformParserRECURSIVE) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } + var _x = p.Identifier() - } - { - p.SetState(438) - p.Common_table_expression() - } - p.SetState(443) - p.GetErrorHandler().Sync(p) + localctx.(*Create_index_statementContext).name = _x + } + { + p.SetState(711) + p.Match(KuneiformParserON) if p.HasError() { + // Recognition error - abort rule goto errorExit } - _la = p.GetTokenStream().LA(1) - - for _la == KuneiformParserCOMMA { - { - p.SetState(439) - p.Match(KuneiformParserCOMMA) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(440) - p.Common_table_expression() - } - - p.SetState(445) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - } - - } - p.SetState(452) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit } + { + p.SetState(712) - switch p.GetTokenStream().LA(1) { - case KuneiformParserSELECT: - { - p.SetState(448) - p.Select_statement() - } + var _x = p.Identifier() - case KuneiformParserUPDATE: - { - p.SetState(449) - p.Update_statement() + localctx.(*Create_index_statementContext).table = _x + } + { + p.SetState(713) + p.Match(KuneiformParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit } + } + { + p.SetState(714) - case KuneiformParserINSERT: - { - p.SetState(450) - p.Insert_statement() - } + var _x = p.Identifier_list() - case KuneiformParserDELETE: - { - p.SetState(451) - p.Delete_statement() + localctx.(*Create_index_statementContext).columns = _x + } + { + p.SetState(715) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit } - - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - goto errorExit } errorExit: @@ -7579,118 +12353,79 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// ICommon_table_expressionContext is an interface to support dynamic dispatch. -type ICommon_table_expressionContext interface { +// IDrop_index_statementContext is an interface to support dynamic dispatch. +type IDrop_index_statementContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser + // GetName returns the name rule contexts. + GetName() IIdentifierContext + + // SetName sets the name rule contexts. + SetName(IIdentifierContext) + // Getter signatures - AllIdentifier() []IIdentifierContext - Identifier(i int) IIdentifierContext - AS() antlr.TerminalNode - AllLPAREN() []antlr.TerminalNode - LPAREN(i int) antlr.TerminalNode - Select_statement() ISelect_statementContext - AllRPAREN() []antlr.TerminalNode - RPAREN(i int) antlr.TerminalNode - AllCOMMA() []antlr.TerminalNode - COMMA(i int) antlr.TerminalNode + DROP() antlr.TerminalNode + INDEX() antlr.TerminalNode + Identifier() IIdentifierContext + IF() antlr.TerminalNode + EXISTS() antlr.TerminalNode - // IsCommon_table_expressionContext differentiates from other interfaces. - IsCommon_table_expressionContext() + // IsDrop_index_statementContext differentiates from other interfaces. + IsDrop_index_statementContext() } -type Common_table_expressionContext struct { +type Drop_index_statementContext struct { antlr.BaseParserRuleContext parser antlr.Parser + name IIdentifierContext } -func NewEmptyCommon_table_expressionContext() *Common_table_expressionContext { - var p = new(Common_table_expressionContext) +func NewEmptyDrop_index_statementContext() *Drop_index_statementContext { + var p = new(Drop_index_statementContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_common_table_expression + p.RuleIndex = KuneiformParserRULE_drop_index_statement return p } -func InitEmptyCommon_table_expressionContext(p *Common_table_expressionContext) { +func InitEmptyDrop_index_statementContext(p *Drop_index_statementContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_common_table_expression + p.RuleIndex = KuneiformParserRULE_drop_index_statement } -func (*Common_table_expressionContext) IsCommon_table_expressionContext() {} +func (*Drop_index_statementContext) IsDrop_index_statementContext() {} -func NewCommon_table_expressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Common_table_expressionContext { - var p = new(Common_table_expressionContext) +func NewDrop_index_statementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_index_statementContext { + var p = new(Drop_index_statementContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_common_table_expression + p.RuleIndex = KuneiformParserRULE_drop_index_statement return p } -func (s *Common_table_expressionContext) GetParser() antlr.Parser { return s.parser } - -func (s *Common_table_expressionContext) AllIdentifier() []IIdentifierContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIdentifierContext); ok { - len++ - } - } - - tst := make([]IIdentifierContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIdentifierContext); ok { - tst[i] = t.(IIdentifierContext) - i++ - } - } - - return tst -} - -func (s *Common_table_expressionContext) Identifier(i int) IIdentifierContext { - var t antlr.RuleContext - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIdentifierContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IIdentifierContext) -} - -func (s *Common_table_expressionContext) AS() antlr.TerminalNode { - return s.GetToken(KuneiformParserAS, 0) -} +func (s *Drop_index_statementContext) GetParser() antlr.Parser { return s.parser } -func (s *Common_table_expressionContext) AllLPAREN() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserLPAREN) +func (s *Drop_index_statementContext) GetName() IIdentifierContext { return s.name } + +func (s *Drop_index_statementContext) SetName(v IIdentifierContext) { s.name = v } + +func (s *Drop_index_statementContext) DROP() antlr.TerminalNode { + return s.GetToken(KuneiformParserDROP, 0) } -func (s *Common_table_expressionContext) LPAREN(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserLPAREN, i) +func (s *Drop_index_statementContext) INDEX() antlr.TerminalNode { + return s.GetToken(KuneiformParserINDEX, 0) } -func (s *Common_table_expressionContext) Select_statement() ISelect_statementContext { +func (s *Drop_index_statementContext) Identifier() IIdentifierContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_statementContext); ok { + if _, ok := ctx.(IIdentifierContext); ok { t = ctx.(antlr.RuleContext) break } @@ -7700,114 +12435,76 @@ func (s *Common_table_expressionContext) Select_statement() ISelect_statementCon return nil } - return t.(ISelect_statementContext) -} - -func (s *Common_table_expressionContext) AllRPAREN() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserRPAREN) -} - -func (s *Common_table_expressionContext) RPAREN(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserRPAREN, i) + return t.(IIdentifierContext) } -func (s *Common_table_expressionContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserCOMMA) +func (s *Drop_index_statementContext) IF() antlr.TerminalNode { + return s.GetToken(KuneiformParserIF, 0) } -func (s *Common_table_expressionContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserCOMMA, i) +func (s *Drop_index_statementContext) EXISTS() antlr.TerminalNode { + return s.GetToken(KuneiformParserEXISTS, 0) } -func (s *Common_table_expressionContext) GetRuleContext() antlr.RuleContext { +func (s *Drop_index_statementContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Common_table_expressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Drop_index_statementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Common_table_expressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Drop_index_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitCommon_table_expression(s) + return t.VisitDrop_index_statement(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expressionContext) { - localctx = NewCommon_table_expressionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 60, KuneiformParserRULE_common_table_expression) +func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statementContext) { + localctx = NewDrop_index_statementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 98, KuneiformParserRULE_drop_index_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(454) - p.Identifier() + p.SetState(717) + p.Match(KuneiformParserDROP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } - p.SetState(467) + { + p.SetState(718) + p.Match(KuneiformParserINDEX) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(721) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if _la == KuneiformParserLPAREN { + if _la == KuneiformParserIF { { - p.SetState(455) - p.Match(KuneiformParserLPAREN) + p.SetState(719) + p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(464) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { - { - p.SetState(456) - p.Identifier() - } - p.SetState(461) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - for _la == KuneiformParserCOMMA { - { - p.SetState(457) - p.Match(KuneiformParserCOMMA) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(458) - p.Identifier() - } - - p.SetState(463) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - } - - } { - p.SetState(466) - p.Match(KuneiformParserRPAREN) + p.SetState(720) + p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule goto errorExit @@ -7816,32 +12513,11 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } { - p.SetState(469) - p.Match(KuneiformParserAS) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(470) - p.Match(KuneiformParserLPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(471) - p.Select_statement() - } - { - p.SetState(472) - p.Match(KuneiformParserRPAREN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } + p.SetState(723) + + var _x = p.Identifier() + + localctx.(*Drop_index_statementContext).name = _x } errorExit: @@ -8146,39 +12822,39 @@ func (s *Select_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) { localctx = NewSelect_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 62, KuneiformParserRULE_select_statement) + p.EnterRule(localctx, 100, KuneiformParserRULE_select_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(474) + p.SetState(725) p.Select_core() } - p.SetState(480) + p.SetState(731) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for (int64((_la-97)) & ^0x3f) == 0 && ((int64(1)<<(_la-97))&7) != 0 { + for (int64((_la-106)) & ^0x3f) == 0 && ((int64(1)<<(_la-106))&7) != 0 { { - p.SetState(475) + p.SetState(726) p.Compound_operator() } { - p.SetState(476) + p.SetState(727) p.Select_core() } - p.SetState(482) + p.SetState(733) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(493) + p.SetState(744) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8187,7 +12863,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserORDER { { - p.SetState(483) + p.SetState(734) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -8195,7 +12871,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(484) + p.SetState(735) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -8203,10 +12879,10 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(485) + p.SetState(736) p.Ordering_term() } - p.SetState(490) + p.SetState(741) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8215,7 +12891,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(486) + p.SetState(737) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -8223,11 +12899,11 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(487) + p.SetState(738) p.Ordering_term() } - p.SetState(492) + p.SetState(743) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8236,7 +12912,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(497) + p.SetState(748) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8245,7 +12921,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserLIMIT { { - p.SetState(495) + p.SetState(746) p.Match(KuneiformParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -8253,7 +12929,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(496) + p.SetState(747) var _x = p.sql_expr(0) @@ -8261,7 +12937,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(501) + p.SetState(752) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8270,7 +12946,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserOFFSET { { - p.SetState(499) + p.SetState(750) p.Match(KuneiformParserOFFSET) if p.HasError() { // Recognition error - abort rule @@ -8278,7 +12954,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(500) + p.SetState(751) var _x = p.sql_expr(0) @@ -8385,10 +13061,10 @@ func (s *Compound_operatorContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContext) { localctx = NewCompound_operatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 64, KuneiformParserRULE_compound_operator) + p.EnterRule(localctx, 102, KuneiformParserRULE_compound_operator) var _la int - p.SetState(509) + p.SetState(760) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8398,14 +13074,14 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserUNION: p.EnterOuterAlt(localctx, 1) { - p.SetState(503) + p.SetState(754) p.Match(KuneiformParserUNION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(505) + p.SetState(756) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8414,7 +13090,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex if _la == KuneiformParserALL { { - p.SetState(504) + p.SetState(755) p.Match(KuneiformParserALL) if p.HasError() { // Recognition error - abort rule @@ -8427,7 +13103,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserINTERSECT: p.EnterOuterAlt(localctx, 2) { - p.SetState(507) + p.SetState(758) p.Match(KuneiformParserINTERSECT) if p.HasError() { // Recognition error - abort rule @@ -8438,7 +13114,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserEXCEPT: p.EnterOuterAlt(localctx, 3) { - p.SetState(508) + p.SetState(759) p.Match(KuneiformParserEXCEPT) if p.HasError() { // Recognition error - abort rule @@ -8571,15 +13247,15 @@ func (s *Ordering_termContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { localctx = NewOrdering_termContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 66, KuneiformParserRULE_ordering_term) + p.EnterRule(localctx, 104, KuneiformParserRULE_ordering_term) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(511) + p.SetState(762) p.sql_expr(0) } - p.SetState(513) + p.SetState(764) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8588,7 +13264,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserASC || _la == KuneiformParserDESC { { - p.SetState(512) + p.SetState(763) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserASC || _la == KuneiformParserDESC) { @@ -8600,7 +13276,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } - p.SetState(517) + p.SetState(768) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8609,7 +13285,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserNULLS { { - p.SetState(515) + p.SetState(766) p.Match(KuneiformParserNULLS) if p.HasError() { // Recognition error - abort rule @@ -8617,7 +13293,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } { - p.SetState(516) + p.SetState(767) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserFIRST || _la == KuneiformParserLAST) { @@ -9050,19 +13726,19 @@ func (s *Select_coreContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { localctx = NewSelect_coreContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 68, KuneiformParserRULE_select_core) + p.EnterRule(localctx, 106, KuneiformParserRULE_select_core) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(519) + p.SetState(770) p.Match(KuneiformParserSELECT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(521) + p.SetState(772) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9071,7 +13747,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserDISTINCT { { - p.SetState(520) + p.SetState(771) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -9081,10 +13757,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } { - p.SetState(523) + p.SetState(774) p.Result_column() } - p.SetState(528) + p.SetState(779) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9093,7 +13769,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(524) + p.SetState(775) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -9101,18 +13777,18 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(525) + p.SetState(776) p.Result_column() } - p.SetState(530) + p.SetState(781) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(539) + p.SetState(790) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9121,7 +13797,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserFROM { { - p.SetState(531) + p.SetState(782) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -9129,23 +13805,23 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(532) + p.SetState(783) p.Relation() } - p.SetState(536) + p.SetState(787) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for (int64((_la-69)) & ^0x3f) == 0 && ((int64(1)<<(_la-69))&134217743) != 0 { + for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(533) + p.SetState(784) p.Join() } - p.SetState(538) + p.SetState(789) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9154,7 +13830,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(543) + p.SetState(794) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9163,7 +13839,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWHERE { { - p.SetState(541) + p.SetState(792) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -9171,7 +13847,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(542) + p.SetState(793) var _x = p.sql_expr(0) @@ -9179,7 +13855,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(552) + p.SetState(803) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9188,7 +13864,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserGROUP { { - p.SetState(545) + p.SetState(796) p.Match(KuneiformParserGROUP) if p.HasError() { // Recognition error - abort rule @@ -9196,7 +13872,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(546) + p.SetState(797) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -9204,13 +13880,13 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(547) + p.SetState(798) var _x = p.Sql_expr_list() localctx.(*Select_coreContext).group_by = _x } - p.SetState(550) + p.SetState(801) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9219,7 +13895,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserHAVING { { - p.SetState(548) + p.SetState(799) p.Match(KuneiformParserHAVING) if p.HasError() { // Recognition error - abort rule @@ -9227,7 +13903,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(549) + p.SetState(800) var _x = p.sql_expr(0) @@ -9237,7 +13913,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(568) + p.SetState(819) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9246,7 +13922,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWINDOW { { - p.SetState(554) + p.SetState(805) p.Match(KuneiformParserWINDOW) if p.HasError() { // Recognition error - abort rule @@ -9254,11 +13930,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(555) + p.SetState(806) p.Identifier() } { - p.SetState(556) + p.SetState(807) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -9266,10 +13942,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(557) + p.SetState(808) p.Window() } - p.SetState(565) + p.SetState(816) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9278,7 +13954,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(558) + p.SetState(809) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -9286,11 +13962,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(559) + p.SetState(810) p.Identifier() } { - p.SetState(560) + p.SetState(811) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -9298,11 +13974,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(561) + p.SetState(812) p.Window() } - p.SetState(567) + p.SetState(818) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9541,10 +14217,10 @@ func (s *Subquery_relationContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewRelationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 70, KuneiformParserRULE_relation) + p.EnterRule(localctx, 108, KuneiformParserRULE_relation) var _la int - p.SetState(586) + p.SetState(837) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9555,13 +14231,13 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewTable_relationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(570) + p.SetState(821) var _x = p.Identifier() localctx.(*Table_relationContext).table_name = _x } - p.SetState(575) + p.SetState(826) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9569,7 +14245,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(572) + p.SetState(823) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9578,7 +14254,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(571) + p.SetState(822) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -9588,7 +14264,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(574) + p.SetState(825) var _x = p.Identifier() @@ -9601,7 +14277,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewSubquery_relationContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(577) + p.SetState(828) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -9609,18 +14285,18 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } } { - p.SetState(578) + p.SetState(829) p.Select_statement() } { - p.SetState(579) + p.SetState(830) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(584) + p.SetState(835) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9628,7 +14304,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(581) + p.SetState(832) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9637,7 +14313,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(580) + p.SetState(831) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -9647,7 +14323,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(583) + p.SetState(834) var _x = p.Identifier() @@ -9803,23 +14479,23 @@ func (s *JoinContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Join() (localctx IJoinContext) { localctx = NewJoinContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 72, KuneiformParserRULE_join) + p.EnterRule(localctx, 110, KuneiformParserRULE_join) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(589) + p.SetState(840) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if (int64((_la-70)) & ^0x3f) == 0 && ((int64(1)<<(_la-70))&67108871) != 0 { + if (int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0 { { - p.SetState(588) + p.SetState(839) _la = p.GetTokenStream().LA(1) - if !((int64((_la-70)) & ^0x3f) == 0 && ((int64(1)<<(_la-70))&67108871) != 0) { + if !((int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -9829,7 +14505,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } { - p.SetState(591) + p.SetState(842) p.Match(KuneiformParserJOIN) if p.HasError() { // Recognition error - abort rule @@ -9837,11 +14513,11 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(592) + p.SetState(843) p.Relation() } { - p.SetState(593) + p.SetState(844) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -9849,7 +14525,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(594) + p.SetState(845) p.sql_expr(0) } @@ -10043,24 +14719,24 @@ func (s *Wildcard_result_columnContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { localctx = NewResult_columnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 74, KuneiformParserRULE_result_column) + p.EnterRule(localctx, 112, KuneiformParserRULE_result_column) var _la int - p.SetState(609) + p.SetState(860) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 76, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 96, p.GetParserRuleContext()) { case 1: localctx = NewExpression_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(596) + p.SetState(847) p.sql_expr(0) } - p.SetState(601) + p.SetState(852) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10068,7 +14744,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(598) + p.SetState(849) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10077,7 +14753,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserAS { { - p.SetState(597) + p.SetState(848) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -10087,7 +14763,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(600) + p.SetState(851) p.Identifier() } @@ -10096,7 +14772,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { case 2: localctx = NewWildcard_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(606) + p.SetState(857) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10105,14 +14781,14 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(603) + p.SetState(854) var _x = p.Identifier() localctx.(*Wildcard_result_columnContext).table_name = _x } { - p.SetState(604) + p.SetState(855) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -10122,7 +14798,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(608) + p.SetState(859) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -10443,12 +15119,12 @@ func (s *Update_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) { localctx = NewUpdate_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 76, KuneiformParserRULE_update_statement) + p.EnterRule(localctx, 114, KuneiformParserRULE_update_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(611) + p.SetState(862) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -10456,13 +15132,13 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(612) + p.SetState(863) var _x = p.Identifier() localctx.(*Update_statementContext).table_name = _x } - p.SetState(617) + p.SetState(868) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10470,7 +15146,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(614) + p.SetState(865) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10479,7 +15155,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserAS { { - p.SetState(613) + p.SetState(864) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -10489,7 +15165,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(616) + p.SetState(867) var _x = p.Identifier() @@ -10498,7 +15174,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(619) + p.SetState(870) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -10506,10 +15182,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(620) + p.SetState(871) p.Update_set_clause() } - p.SetState(625) + p.SetState(876) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10518,7 +15194,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(621) + p.SetState(872) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -10526,18 +15202,18 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(622) + p.SetState(873) p.Update_set_clause() } - p.SetState(627) + p.SetState(878) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(636) + p.SetState(887) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10546,7 +15222,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserFROM { { - p.SetState(628) + p.SetState(879) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -10554,23 +15230,23 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(629) + p.SetState(880) p.Relation() } - p.SetState(633) + p.SetState(884) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for (int64((_la-69)) & ^0x3f) == 0 && ((int64(1)<<(_la-69))&134217743) != 0 { + for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(630) + p.SetState(881) p.Join() } - p.SetState(635) + p.SetState(886) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10579,7 +15255,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } - p.SetState(640) + p.SetState(891) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10588,7 +15264,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(638) + p.SetState(889) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -10596,7 +15272,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(639) + p.SetState(890) var _x = p.sql_expr(0) @@ -10733,17 +15409,17 @@ func (s *Update_set_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContext) { localctx = NewUpdate_set_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 78, KuneiformParserRULE_update_set_clause) + p.EnterRule(localctx, 116, KuneiformParserRULE_update_set_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(642) + p.SetState(893) var _x = p.Identifier() localctx.(*Update_set_clauseContext).column = _x } { - p.SetState(643) + p.SetState(894) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -10751,7 +15427,7 @@ func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContex } } { - p.SetState(644) + p.SetState(895) p.sql_expr(0) } @@ -11055,12 +15731,12 @@ func (s *Insert_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) { localctx = NewInsert_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 80, KuneiformParserRULE_insert_statement) + p.EnterRule(localctx, 118, KuneiformParserRULE_insert_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(646) + p.SetState(897) p.Match(KuneiformParserINSERT) if p.HasError() { // Recognition error - abort rule @@ -11068,7 +15744,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(647) + p.SetState(898) p.Match(KuneiformParserINTO) if p.HasError() { // Recognition error - abort rule @@ -11076,13 +15752,13 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(648) + p.SetState(899) var _x = p.Identifier() localctx.(*Insert_statementContext).table_name = _x } - p.SetState(653) + p.SetState(904) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11090,7 +15766,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(650) + p.SetState(901) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11099,7 +15775,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserAS { { - p.SetState(649) + p.SetState(900) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -11109,7 +15785,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } { - p.SetState(652) + p.SetState(903) var _x = p.Identifier() @@ -11117,7 +15793,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(659) + p.SetState(910) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11126,7 +15802,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserLPAREN { { - p.SetState(655) + p.SetState(906) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -11134,14 +15810,14 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(656) + p.SetState(907) var _x = p.Identifier_list() localctx.(*Insert_statementContext).target_columns = _x } { - p.SetState(657) + p.SetState(908) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -11150,7 +15826,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(676) + p.SetState(927) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11159,7 +15835,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) switch p.GetTokenStream().LA(1) { case KuneiformParserVALUES: { - p.SetState(661) + p.SetState(912) p.Match(KuneiformParserVALUES) if p.HasError() { // Recognition error - abort rule @@ -11167,7 +15843,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(662) + p.SetState(913) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -11175,18 +15851,18 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(663) + p.SetState(914) p.Sql_expr_list() } { - p.SetState(664) + p.SetState(915) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(672) + p.SetState(923) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11195,7 +15871,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(665) + p.SetState(916) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -11203,7 +15879,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(666) + p.SetState(917) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -11211,11 +15887,11 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(667) + p.SetState(918) p.Sql_expr_list() } { - p.SetState(668) + p.SetState(919) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -11223,7 +15899,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(674) + p.SetState(925) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11233,7 +15909,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) case KuneiformParserSELECT: { - p.SetState(675) + p.SetState(926) p.Select_statement() } @@ -11241,7 +15917,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(679) + p.SetState(930) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11250,7 +15926,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserON { { - p.SetState(678) + p.SetState(929) p.Upsert_clause() } @@ -11532,12 +16208,12 @@ func (s *Upsert_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { localctx = NewUpsert_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 82, KuneiformParserRULE_upsert_clause) + p.EnterRule(localctx, 120, KuneiformParserRULE_upsert_clause) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(681) + p.SetState(932) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -11545,14 +16221,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(682) + p.SetState(933) p.Match(KuneiformParserCONFLICT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(690) + p.SetState(941) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11561,7 +16237,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserLPAREN { { - p.SetState(683) + p.SetState(934) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -11569,21 +16245,21 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(684) + p.SetState(935) var _x = p.Identifier_list() localctx.(*Upsert_clauseContext).conflict_columns = _x } { - p.SetState(685) + p.SetState(936) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(688) + p.SetState(939) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11592,7 +16268,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(686) + p.SetState(937) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -11600,7 +16276,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(687) + p.SetState(938) var _x = p.sql_expr(0) @@ -11611,14 +16287,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } { - p.SetState(692) + p.SetState(943) p.Match(KuneiformParserDO) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(708) + p.SetState(959) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11627,7 +16303,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserNOTHING: { - p.SetState(693) + p.SetState(944) p.Match(KuneiformParserNOTHING) if p.HasError() { // Recognition error - abort rule @@ -11637,7 +16313,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { case KuneiformParserUPDATE: { - p.SetState(694) + p.SetState(945) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -11645,7 +16321,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(695) + p.SetState(946) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -11653,10 +16329,10 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(696) + p.SetState(947) p.Update_set_clause() } - p.SetState(701) + p.SetState(952) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11665,7 +16341,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { for _la == KuneiformParserCOMMA { { - p.SetState(697) + p.SetState(948) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -11673,18 +16349,18 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(698) + p.SetState(949) p.Update_set_clause() } - p.SetState(703) + p.SetState(954) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(706) + p.SetState(957) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11693,7 +16369,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(704) + p.SetState(955) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -11701,7 +16377,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(705) + p.SetState(956) var _x = p.sql_expr(0) @@ -11906,12 +16582,12 @@ func (s *Delete_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) { localctx = NewDelete_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 84, KuneiformParserRULE_delete_statement) + p.EnterRule(localctx, 122, KuneiformParserRULE_delete_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(710) + p.SetState(961) p.Match(KuneiformParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -11919,7 +16595,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(711) + p.SetState(962) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -11927,13 +16603,13 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(712) + p.SetState(963) var _x = p.Identifier() localctx.(*Delete_statementContext).table_name = _x } - p.SetState(717) + p.SetState(968) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11941,7 +16617,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(714) + p.SetState(965) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11950,7 +16626,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserAS { { - p.SetState(713) + p.SetState(964) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -11960,7 +16636,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } { - p.SetState(716) + p.SetState(967) var _x = p.Identifier() @@ -11968,7 +16644,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } - p.SetState(721) + p.SetState(972) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11977,7 +16653,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(719) + p.SetState(970) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -11985,7 +16661,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(720) + p.SetState(971) var _x = p.sql_expr(0) @@ -13727,27 +18403,27 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewSql_exprContext(p, p.GetParserRuleContext(), _parentState) var _prevctx ISql_exprContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 86 - p.EnterRecursionRule(localctx, 86, KuneiformParserRULE_sql_expr, _p) + _startState := 124 + p.EnterRecursionRule(localctx, 124, KuneiformParserRULE_sql_expr, _p) var _la int var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(796) + p.SetState(1047) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 111, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) { case 1: localctx = NewParen_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(724) + p.SetState(975) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -13755,23 +18431,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(725) + p.SetState(976) p.sql_expr(0) } { - p.SetState(726) + p.SetState(977) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(728) + p.SetState(979) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 97, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 117, p.GetParserRuleContext()) == 1 { { - p.SetState(727) + p.SetState(978) p.Type_cast() } @@ -13784,7 +18460,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(730) + p.SetState(981) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -13795,7 +18471,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(731) + p.SetState(982) p.sql_expr(20) } @@ -13804,15 +18480,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(732) + p.SetState(983) p.Literal() } - p.SetState(734) + p.SetState(985) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 98, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) == 1 { { - p.SetState(733) + p.SetState(984) p.Type_cast() } @@ -13825,10 +18501,10 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(736) + p.SetState(987) p.Sql_function_call() } - p.SetState(743) + p.SetState(994) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13837,7 +18513,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserFILTER { { - p.SetState(737) + p.SetState(988) p.Match(KuneiformParserFILTER) if p.HasError() { // Recognition error - abort rule @@ -13845,7 +18521,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(738) + p.SetState(989) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -13853,7 +18529,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(739) + p.SetState(990) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -13861,11 +18537,11 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(740) + p.SetState(991) p.sql_expr(0) } { - p.SetState(741) + p.SetState(992) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -13875,14 +18551,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(745) + p.SetState(996) p.Match(KuneiformParserOVER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(748) + p.SetState(999) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13891,13 +18567,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN: { - p.SetState(746) + p.SetState(997) p.Window() } case KuneiformParserIDENTIFIER: { - p.SetState(747) + p.SetState(998) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -13915,15 +18591,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(750) + p.SetState(1001) p.Sql_function_call() } - p.SetState(752) + p.SetState(1003) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 101, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { { - p.SetState(751) + p.SetState(1002) p.Type_cast() } @@ -13936,15 +18612,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(754) + p.SetState(1005) p.Variable() } - p.SetState(756) + p.SetState(1007) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 102, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 122, p.GetParserRuleContext()) == 1 { { - p.SetState(755) + p.SetState(1006) p.Type_cast() } @@ -13956,19 +18632,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewColumn_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(761) + p.SetState(1012) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 103, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 123, p.GetParserRuleContext()) == 1 { { - p.SetState(758) + p.SetState(1009) var _x = p.Identifier() localctx.(*Column_sql_exprContext).table = _x } { - p.SetState(759) + p.SetState(1010) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -13980,18 +18656,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(763) + p.SetState(1014) var _x = p.Identifier() localctx.(*Column_sql_exprContext).column = _x } - p.SetState(765) + p.SetState(1016) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 104, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 124, p.GetParserRuleContext()) == 1 { { - p.SetState(764) + p.SetState(1015) p.Type_cast() } @@ -14004,23 +18680,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(767) + p.SetState(1018) p.Match(KuneiformParserCASE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(769) + p.SetState(1020) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64((_la-7)) & ^0x3f) == 0 && ((int64(1)<<(_la-7))&577621836615933953) != 0) || ((int64((_la-85)) & ^0x3f) == 0 && ((int64(1)<<(_la-85))&246823180566529) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(768) + p.SetState(1019) var _x = p.sql_expr(0) @@ -14028,7 +18704,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(772) + p.SetState(1023) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14037,18 +18713,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { for ok := true; ok; ok = _la == KuneiformParserWHEN { { - p.SetState(771) + p.SetState(1022) p.When_then_clause() } - p.SetState(774) + p.SetState(1025) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(778) + p.SetState(1029) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14057,7 +18733,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserELSE { { - p.SetState(776) + p.SetState(1027) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -14065,7 +18741,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(777) + p.SetState(1028) var _x = p.sql_expr(0) @@ -14074,7 +18750,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(780) + p.SetState(1031) p.Match(KuneiformParserEND) if p.HasError() { // Recognition error - abort rule @@ -14086,7 +18762,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewSubquery_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(786) + p.SetState(1037) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14094,7 +18770,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserNOT || _la == KuneiformParserEXISTS { - p.SetState(783) + p.SetState(1034) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14103,7 +18779,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(782) + p.SetState(1033) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -14113,7 +18789,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(785) + p.SetState(1036) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -14123,7 +18799,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(788) + p.SetState(1039) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -14131,23 +18807,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(789) + p.SetState(1040) p.Select_statement() } { - p.SetState(790) + p.SetState(1041) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(792) + p.SetState(1043) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 110, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 130, p.GetParserRuleContext()) == 1 { { - p.SetState(791) + p.SetState(1042) p.Type_cast() } @@ -14161,7 +18837,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _prevctx = localctx { - p.SetState(794) + p.SetState(1045) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -14170,7 +18846,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(795) + p.SetState(1046) p.sql_expr(3) } @@ -14178,12 +18854,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(883) + p.SetState(1134) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 124, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 144, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -14193,26 +18869,26 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(881) + p.SetState(1132) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 123, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 143, p.GetParserRuleContext()) { case 1: localctx = NewArithmetic_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(798) + p.SetState(1049) if !(p.Precpred(p.GetParserRuleContext(), 18)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", "")) goto errorExit } { - p.SetState(799) + p.SetState(1050) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -14223,7 +18899,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(800) + p.SetState(1051) var _x = p.sql_expr(19) @@ -14235,14 +18911,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(801) + p.SetState(1052) if !(p.Precpred(p.GetParserRuleContext(), 17)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", "")) goto errorExit } { - p.SetState(802) + p.SetState(1053) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -14253,7 +18929,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(803) + p.SetState(1054) var _x = p.sql_expr(18) @@ -14265,14 +18941,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(804) + p.SetState(1055) if !(p.Precpred(p.GetParserRuleContext(), 9)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) goto errorExit } { - p.SetState(805) + p.SetState(1056) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -14280,7 +18956,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(806) + p.SetState(1057) var _x = p.sql_expr(10) @@ -14292,13 +18968,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Like_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(807) + p.SetState(1058) if !(p.Precpred(p.GetParserRuleContext(), 7)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) goto errorExit } - p.SetState(809) + p.SetState(1060) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14307,7 +18983,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(808) + p.SetState(1059) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -14317,7 +18993,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(811) + p.SetState(1062) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserLIKE || _la == KuneiformParserILIKE) { @@ -14328,7 +19004,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(812) + p.SetState(1063) var _x = p.sql_expr(8) @@ -14340,13 +19016,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Between_sql_exprContext).element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(813) + p.SetState(1064) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } - p.SetState(815) + p.SetState(1066) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14355,7 +19031,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(814) + p.SetState(1065) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -14365,7 +19041,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(817) + p.SetState(1068) p.Match(KuneiformParserBETWEEN) if p.HasError() { // Recognition error - abort rule @@ -14373,14 +19049,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(818) + p.SetState(1069) var _x = p.sql_expr(0) localctx.(*Between_sql_exprContext).lower = _x } { - p.SetState(819) + p.SetState(1070) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -14388,7 +19064,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(820) + p.SetState(1071) var _x = p.sql_expr(7) @@ -14400,14 +19076,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Comparison_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(822) + p.SetState(1073) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(823) + p.SetState(1074) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -14418,7 +19094,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(824) + p.SetState(1075) var _x = p.sql_expr(6) @@ -14430,14 +19106,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(825) + p.SetState(1076) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(826) + p.SetState(1077) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -14445,7 +19121,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(827) + p.SetState(1078) var _x = p.sql_expr(3) @@ -14457,14 +19133,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(828) + p.SetState(1079) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(829) + p.SetState(1080) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -14472,7 +19148,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(830) + p.SetState(1081) var _x = p.sql_expr(2) @@ -14482,14 +19158,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 9: localctx = NewField_access_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(831) + p.SetState(1082) if !(p.Precpred(p.GetParserRuleContext(), 22)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 22)", "")) goto errorExit } { - p.SetState(832) + p.SetState(1083) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -14497,15 +19173,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(833) + p.SetState(1084) p.Identifier() } - p.SetState(835) + p.SetState(1086) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 114, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 134, p.GetParserRuleContext()) == 1 { { - p.SetState(834) + p.SetState(1085) p.Type_cast() } @@ -14518,30 +19194,30 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Array_access_sql_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(837) + p.SetState(1088) if !(p.Precpred(p.GetParserRuleContext(), 21)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 21)", "")) goto errorExit } { - p.SetState(838) + p.SetState(1089) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(847) + p.SetState(1098) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 117, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 137, p.GetParserRuleContext()) { case 1: { - p.SetState(839) + p.SetState(1090) var _x = p.sql_expr(0) @@ -14549,16 +19225,16 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } case 2: - p.SetState(841) + p.SetState(1092) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64((_la-7)) & ^0x3f) == 0 && ((int64(1)<<(_la-7))&577621836615933953) != 0) || ((int64((_la-85)) & ^0x3f) == 0 && ((int64(1)<<(_la-85))&246823180566529) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(840) + p.SetState(1091) var _x = p.sql_expr(0) @@ -14567,23 +19243,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(843) + p.SetState(1094) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(845) + p.SetState(1096) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64((_la-7)) & ^0x3f) == 0 && ((int64(1)<<(_la-7))&577621836615933953) != 0) || ((int64((_la-85)) & ^0x3f) == 0 && ((int64(1)<<(_la-85))&246823180566529) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(844) + p.SetState(1095) var _x = p.sql_expr(0) @@ -14596,19 +19272,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(849) + p.SetState(1100) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(851) + p.SetState(1102) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 138, p.GetParserRuleContext()) == 1 { { - p.SetState(850) + p.SetState(1101) p.Type_cast() } @@ -14619,14 +19295,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 11: localctx = NewCollate_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(853) + p.SetState(1104) if !(p.Precpred(p.GetParserRuleContext(), 19)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", "")) goto errorExit } { - p.SetState(854) + p.SetState(1105) p.Match(KuneiformParserCOLLATE) if p.HasError() { // Recognition error - abort rule @@ -14634,20 +19310,20 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(855) + p.SetState(1106) p.Identifier() } case 12: localctx = NewIn_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(856) + p.SetState(1107) if !(p.Precpred(p.GetParserRuleContext(), 8)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) goto errorExit } - p.SetState(858) + p.SetState(1109) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14656,7 +19332,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(857) + p.SetState(1108) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -14666,7 +19342,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(860) + p.SetState(1111) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule @@ -14674,14 +19350,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(861) + p.SetState(1112) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(864) + p.SetState(1115) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14690,13 +19366,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(862) + p.SetState(1113) p.Sql_expr_list() } case KuneiformParserSELECT: { - p.SetState(863) + p.SetState(1114) p.Select_statement() } @@ -14705,7 +19381,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(866) + p.SetState(1117) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -14718,21 +19394,21 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Is_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(868) + p.SetState(1119) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(869) + p.SetState(1120) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(871) + p.SetState(1122) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14741,7 +19417,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(870) + p.SetState(1121) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -14750,7 +19426,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(879) + p.SetState(1130) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14759,7 +19435,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(873) + p.SetState(1124) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -14767,7 +19443,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(874) + p.SetState(1125) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -14775,7 +19451,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(875) + p.SetState(1126) var _x = p.sql_expr(0) @@ -14784,7 +19460,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserNULL: { - p.SetState(876) + p.SetState(1127) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -14794,7 +19470,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserTRUE: { - p.SetState(877) + p.SetState(1128) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -14804,7 +19480,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserFALSE: { - p.SetState(878) + p.SetState(1129) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -14822,12 +19498,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(885) + p.SetState(1136) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 124, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 144, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -15022,19 +19698,19 @@ func (s *WindowContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Window() (localctx IWindowContext) { localctx = NewWindowContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 88, KuneiformParserRULE_window) + p.EnterRule(localctx, 126, KuneiformParserRULE_window) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(886) + p.SetState(1137) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(890) + p.SetState(1141) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15043,7 +19719,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserPARTITION { { - p.SetState(887) + p.SetState(1138) p.Match(KuneiformParserPARTITION) if p.HasError() { // Recognition error - abort rule @@ -15051,7 +19727,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(888) + p.SetState(1139) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -15059,7 +19735,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(889) + p.SetState(1140) var _x = p.Sql_expr_list() @@ -15067,7 +19743,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } - p.SetState(902) + p.SetState(1153) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15076,7 +19752,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserORDER { { - p.SetState(892) + p.SetState(1143) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -15084,7 +19760,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(893) + p.SetState(1144) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -15092,10 +19768,10 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(894) + p.SetState(1145) p.Ordering_term() } - p.SetState(899) + p.SetState(1150) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15104,7 +19780,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { for _la == KuneiformParserCOMMA { { - p.SetState(895) + p.SetState(1146) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15112,11 +19788,11 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(896) + p.SetState(1147) p.Ordering_term() } - p.SetState(901) + p.SetState(1152) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15126,7 +19802,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } { - p.SetState(904) + p.SetState(1155) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15287,10 +19963,10 @@ func (s *When_then_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) { localctx = NewWhen_then_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 90, KuneiformParserRULE_when_then_clause) + p.EnterRule(localctx, 128, KuneiformParserRULE_when_then_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(906) + p.SetState(1157) p.Match(KuneiformParserWHEN) if p.HasError() { // Recognition error - abort rule @@ -15298,14 +19974,14 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(907) + p.SetState(1158) var _x = p.sql_expr(0) localctx.(*When_then_clauseContext).when_condition = _x } { - p.SetState(908) + p.SetState(1159) p.Match(KuneiformParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -15313,7 +19989,7 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(909) + p.SetState(1160) var _x = p.sql_expr(0) @@ -15451,15 +20127,15 @@ func (s *Sql_expr_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { localctx = NewSql_expr_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 92, KuneiformParserRULE_sql_expr_list) + p.EnterRule(localctx, 130, KuneiformParserRULE_sql_expr_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(911) + p.SetState(1162) p.sql_expr(0) } - p.SetState(916) + p.SetState(1167) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15468,7 +20144,7 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(912) + p.SetState(1163) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15476,11 +20152,11 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { } } { - p.SetState(913) + p.SetState(1164) p.sql_expr(0) } - p.SetState(918) + p.SetState(1169) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15633,31 +20309,31 @@ func (s *Normal_call_sqlContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContext) { localctx = NewSql_function_callContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 94, KuneiformParserRULE_sql_function_call) + p.EnterRule(localctx, 132, KuneiformParserRULE_sql_function_call) var _la int localctx = NewNormal_call_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(919) + p.SetState(1170) p.Identifier() } { - p.SetState(920) + p.SetState(1171) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(926) + p.SetState(1177) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserDISTINCT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: - p.SetState(922) + p.SetState(1173) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15666,7 +20342,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex if _la == KuneiformParserDISTINCT { { - p.SetState(921) + p.SetState(1172) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -15676,13 +20352,13 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex } { - p.SetState(924) + p.SetState(1175) p.Sql_expr_list() } case KuneiformParserSTAR: { - p.SetState(925) + p.SetState(1176) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -15695,7 +20371,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex default: } { - p.SetState(928) + p.SetState(1179) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15834,24 +20510,24 @@ func (s *Action_blockContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { localctx = NewAction_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 96, KuneiformParserRULE_action_block) + p.EnterRule(localctx, 134, KuneiformParserRULE_action_block) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(935) + p.SetState(1186) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for _la == KuneiformParserDELETE || _la == KuneiformParserUPDATE || ((int64((_la-84)) & ^0x3f) == 0 && ((int64(1)<<(_la-84))&492581209245185) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-4611602455543676928) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&492581209245185) != 0) { { - p.SetState(930) + p.SetState(1181) p.Action_statement() } { - p.SetState(931) + p.SetState(1182) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -15859,7 +20535,7 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { } } - p.SetState(937) + p.SetState(1188) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16120,21 +20796,21 @@ func (s *Sql_actionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) { localctx = NewAction_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 98, KuneiformParserRULE_action_statement) + p.EnterRule(localctx, 136, KuneiformParserRULE_action_statement) var _la int - p.SetState(958) + p.SetState(1209) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) { case 1: localctx = NewSql_actionContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(938) + p.SetState(1189) p.Sql_statement() } @@ -16142,7 +20818,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) localctx = NewLocal_actionContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(939) + p.SetState(1190) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -16150,29 +20826,29 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(940) + p.SetState(1191) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(942) + p.SetState(1193) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&148618787706374280) != 0) || ((int64((_la-119)) & ^0x3f) == 0 && ((int64(1)<<(_la-119))&14367) != 0) { + if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(941) + p.SetState(1192) p.Procedure_expr_list() } } { - p.SetState(944) + p.SetState(1195) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -16183,7 +20859,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) case 3: localctx = NewExtension_actionContext(p, localctx) p.EnterOuterAlt(localctx, 3) - p.SetState(948) + p.SetState(1199) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16192,11 +20868,11 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(945) + p.SetState(1196) p.Variable_list() } { - p.SetState(946) + p.SetState(1197) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -16206,7 +20882,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } { - p.SetState(950) + p.SetState(1201) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -16214,7 +20890,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(951) + p.SetState(1202) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -16222,7 +20898,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(952) + p.SetState(1203) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -16230,29 +20906,29 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(953) + p.SetState(1204) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(955) + p.SetState(1206) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&148618787706374280) != 0) || ((int64((_la-119)) & ^0x3f) == 0 && ((int64(1)<<(_la-119))&14367) != 0) { + if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(954) + p.SetState(1205) p.Procedure_expr_list() } } { - p.SetState(957) + p.SetState(1208) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -16385,24 +21061,24 @@ func (s *Procedure_blockContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Procedure_block() (localctx IProcedure_blockContext) { localctx = NewProcedure_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 100, KuneiformParserRULE_procedure_block) + p.EnterRule(localctx, 138, KuneiformParserRULE_procedure_block) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(963) + p.SetState(1214) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&175640386007468168) != 0) || ((int64((_la-84)) & ^0x3f) == 0 && ((int64(1)<<(_la-84))&493646788953601) != 0) { + for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(960) + p.SetState(1211) p.Proc_statement() } - p.SetState(965) + p.SetState(1216) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17427,27 +22103,27 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx = NewProcedure_exprContext(p, p.GetParserRuleContext(), _parentState) var _prevctx IProcedure_exprContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 102 - p.EnterRecursionRule(localctx, 102, KuneiformParserRULE_procedure_expr, _p) + _startState := 140 + p.EnterRecursionRule(localctx, 140, KuneiformParserRULE_procedure_expr, _p) var _la int var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(997) + p.SetState(1248) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 143, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 163, p.GetParserRuleContext()) { case 1: localctx = NewParen_procedure_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(967) + p.SetState(1218) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17455,23 +22131,23 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(968) + p.SetState(1219) p.procedure_expr(0) } { - p.SetState(969) + p.SetState(1220) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(971) + p.SetState(1222) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 137, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { { - p.SetState(970) + p.SetState(1221) p.Type_cast() } @@ -17484,7 +22160,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(973) + p.SetState(1224) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&3147776) != 0) { @@ -17495,7 +22171,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(974) + p.SetState(1225) p.procedure_expr(13) } @@ -17504,15 +22180,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(975) + p.SetState(1226) p.Literal() } - p.SetState(977) + p.SetState(1228) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 138, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 158, p.GetParserRuleContext()) == 1 { { - p.SetState(976) + p.SetState(1227) p.Type_cast() } @@ -17525,15 +22201,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(979) + p.SetState(1230) p.Procedure_function_call() } - p.SetState(981) + p.SetState(1232) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 139, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 159, p.GetParserRuleContext()) == 1 { { - p.SetState(980) + p.SetState(1231) p.Type_cast() } @@ -17546,15 +22222,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(983) + p.SetState(1234) p.Variable() } - p.SetState(985) + p.SetState(1236) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 140, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { { - p.SetState(984) + p.SetState(1235) p.Type_cast() } @@ -17567,41 +22243,41 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(987) + p.SetState(1238) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(989) + p.SetState(1240) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&148618787706374280) != 0) || ((int64((_la-119)) & ^0x3f) == 0 && ((int64(1)<<(_la-119))&14367) != 0) { + if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(988) + p.SetState(1239) p.Procedure_expr_list() } } { - p.SetState(991) + p.SetState(1242) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(993) + p.SetState(1244) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 142, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 162, p.GetParserRuleContext()) == 1 { { - p.SetState(992) + p.SetState(1243) p.Type_cast() } @@ -17615,7 +22291,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex _prevctx = localctx { - p.SetState(995) + p.SetState(1246) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -17624,7 +22300,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(996) + p.SetState(1247) p.procedure_expr(3) } @@ -17632,12 +22308,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1054) + p.SetState(1305) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 152, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 172, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -17647,24 +22323,24 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1052) + p.SetState(1303) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 151, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 171, p.GetParserRuleContext()) { case 1: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(999) + p.SetState(1250) if !(p.Precpred(p.GetParserRuleContext(), 12)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 12)", "")) goto errorExit } { - p.SetState(1000) + p.SetState(1251) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -17675,21 +22351,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1001) + p.SetState(1252) p.procedure_expr(13) } case 2: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1002) + p.SetState(1253) if !(p.Precpred(p.GetParserRuleContext(), 11)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 11)", "")) goto errorExit } { - p.SetState(1003) + p.SetState(1254) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -17700,21 +22376,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1004) + p.SetState(1255) p.procedure_expr(12) } case 3: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1005) + p.SetState(1256) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } { - p.SetState(1006) + p.SetState(1257) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -17722,21 +22398,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1007) + p.SetState(1258) p.procedure_expr(7) } case 4: localctx = NewComparison_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1008) + p.SetState(1259) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1009) + p.SetState(1260) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -17747,21 +22423,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1010) + p.SetState(1261) p.procedure_expr(6) } case 5: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1011) + p.SetState(1262) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1012) + p.SetState(1263) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -17769,21 +22445,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1013) + p.SetState(1264) p.procedure_expr(3) } case 6: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1014) + p.SetState(1265) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1015) + p.SetState(1266) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -17791,21 +22467,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1016) + p.SetState(1267) p.procedure_expr(2) } case 7: localctx = NewField_access_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1017) + p.SetState(1268) if !(p.Precpred(p.GetParserRuleContext(), 15)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", "")) goto errorExit } { - p.SetState(1018) + p.SetState(1269) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -17813,19 +22489,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1019) + p.SetState(1270) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1021) + p.SetState(1272) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 144, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 164, p.GetParserRuleContext()) == 1 { { - p.SetState(1020) + p.SetState(1271) p.Type_cast() } @@ -17838,30 +22514,30 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Array_access_procedure_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1023) + p.SetState(1274) if !(p.Precpred(p.GetParserRuleContext(), 14)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) goto errorExit } { - p.SetState(1024) + p.SetState(1275) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1033) + p.SetState(1284) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 147, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 167, p.GetParserRuleContext()) { case 1: { - p.SetState(1025) + p.SetState(1276) var _x = p.procedure_expr(0) @@ -17869,16 +22545,16 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } case 2: - p.SetState(1027) + p.SetState(1278) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&148618787706374280) != 0) || ((int64((_la-119)) & ^0x3f) == 0 && ((int64(1)<<(_la-119))&14367) != 0) { + if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1026) + p.SetState(1277) var _x = p.procedure_expr(0) @@ -17887,23 +22563,23 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1029) + p.SetState(1280) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1031) + p.SetState(1282) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&148618787706374280) != 0) || ((int64((_la-119)) & ^0x3f) == 0 && ((int64(1)<<(_la-119))&14367) != 0) { + if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1030) + p.SetState(1281) var _x = p.procedure_expr(0) @@ -17916,19 +22592,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } { - p.SetState(1035) + p.SetState(1286) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1037) + p.SetState(1288) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 148, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 168, p.GetParserRuleContext()) == 1 { { - p.SetState(1036) + p.SetState(1287) p.Type_cast() } @@ -17941,21 +22617,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Is_procedure_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1039) + p.SetState(1290) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1040) + p.SetState(1291) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1042) + p.SetState(1293) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17964,7 +22640,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if _la == KuneiformParserNOT { { - p.SetState(1041) + p.SetState(1292) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -17973,7 +22649,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1050) + p.SetState(1301) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17982,7 +22658,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1044) + p.SetState(1295) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -17990,7 +22666,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1045) + p.SetState(1296) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -17998,7 +22674,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1046) + p.SetState(1297) var _x = p.procedure_expr(0) @@ -18007,7 +22683,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserNULL: { - p.SetState(1047) + p.SetState(1298) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -18017,7 +22693,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserTRUE: { - p.SetState(1048) + p.SetState(1299) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -18027,7 +22703,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserFALSE: { - p.SetState(1049) + p.SetState(1300) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -18045,12 +22721,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1056) + p.SetState(1307) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 152, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 172, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -18187,15 +22863,15 @@ func (s *Procedure_expr_listContext) Accept(visitor antlr.ParseTreeVisitor) inte func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listContext) { localctx = NewProcedure_expr_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 104, KuneiformParserRULE_procedure_expr_list) + p.EnterRule(localctx, 142, KuneiformParserRULE_procedure_expr_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1057) + p.SetState(1308) p.procedure_expr(0) } - p.SetState(1062) + p.SetState(1313) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18204,7 +22880,7 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo for _la == KuneiformParserCOMMA { { - p.SetState(1058) + p.SetState(1309) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -18212,11 +22888,11 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo } } { - p.SetState(1059) + p.SetState(1310) p.procedure_expr(0) } - p.SetState(1064) + p.SetState(1315) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19028,21 +23704,21 @@ func (s *Stmt_sqlContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewProc_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 106, KuneiformParserRULE_proc_statement) + p.EnterRule(localctx, 144, KuneiformParserRULE_proc_statement) var _la int - p.SetState(1145) + p.SetState(1396) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 163, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 183, p.GetParserRuleContext()) { case 1: localctx = NewStmt_variable_declarationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1065) + p.SetState(1316) p.Match(KuneiformParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -19050,11 +23726,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1066) + p.SetState(1317) p.Type_() } { - p.SetState(1067) + p.SetState(1318) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19065,7 +23741,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 2: localctx = NewStmt_procedure_callContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(1079) + p.SetState(1330) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19074,11 +23750,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE { { - p.SetState(1069) + p.SetState(1320) p.Variable_or_underscore() } - p.SetState(1074) + p.SetState(1325) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19087,7 +23763,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1070) + p.SetState(1321) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -19096,11 +23772,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1071) + p.SetState(1322) p.Variable_or_underscore() } - p.SetState(1076) + p.SetState(1327) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19108,7 +23784,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1077) + p.SetState(1328) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -19118,11 +23794,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1081) + p.SetState(1332) p.Procedure_function_call() } { - p.SetState(1082) + p.SetState(1333) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19134,10 +23810,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_variable_assignmentContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(1084) + p.SetState(1335) p.procedure_expr(0) } - p.SetState(1086) + p.SetState(1337) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19146,13 +23822,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserIDENTIFIER { { - p.SetState(1085) + p.SetState(1336) p.Type_() } } { - p.SetState(1088) + p.SetState(1339) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -19160,11 +23836,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1089) + p.SetState(1340) p.procedure_expr(0) } { - p.SetState(1090) + p.SetState(1341) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19176,7 +23852,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_for_loopContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(1092) + p.SetState(1343) p.Match(KuneiformParserFOR) if p.HasError() { // Recognition error - abort rule @@ -19184,7 +23860,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1093) + p.SetState(1344) var _m = p.Match(KuneiformParserVARIABLE) @@ -19195,29 +23871,29 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1094) + p.SetState(1345) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1098) + p.SetState(1349) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 157, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 177, p.GetParserRuleContext()) { case 1: { - p.SetState(1095) + p.SetState(1346) p.Range_() } case 2: { - p.SetState(1096) + p.SetState(1347) var _x = p.Variable() @@ -19226,7 +23902,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 3: { - p.SetState(1097) + p.SetState(1348) p.Sql_statement() } @@ -19234,27 +23910,27 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { goto errorExit } { - p.SetState(1100) + p.SetState(1351) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1104) + p.SetState(1355) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&175640386007468168) != 0) || ((int64((_la-84)) & ^0x3f) == 0 && ((int64(1)<<(_la-84))&493646788953601) != 0) { + for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1101) + p.SetState(1352) p.Proc_statement() } - p.SetState(1106) + p.SetState(1357) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19262,7 +23938,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1107) + p.SetState(1358) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -19274,7 +23950,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_ifContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(1109) + p.SetState(1360) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -19282,10 +23958,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1110) + p.SetState(1361) p.If_then_block() } - p.SetState(1115) + p.SetState(1366) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19294,7 +23970,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserELSEIF { { - p.SetState(1111) + p.SetState(1362) p.Match(KuneiformParserELSEIF) if p.HasError() { // Recognition error - abort rule @@ -19302,18 +23978,18 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1112) + p.SetState(1363) p.If_then_block() } - p.SetState(1117) + p.SetState(1368) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(1127) + p.SetState(1378) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19322,7 +23998,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserELSE { { - p.SetState(1118) + p.SetState(1369) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -19330,27 +24006,27 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1119) + p.SetState(1370) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1123) + p.SetState(1374) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&175640386007468168) != 0) || ((int64((_la-84)) & ^0x3f) == 0 && ((int64(1)<<(_la-84))&493646788953601) != 0) { + for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1120) + p.SetState(1371) p.Proc_statement() } - p.SetState(1125) + p.SetState(1376) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19358,7 +24034,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1126) + p.SetState(1377) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -19372,11 +24048,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(1129) + p.SetState(1380) p.Sql_statement() } { - p.SetState(1130) + p.SetState(1381) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19388,7 +24064,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_breakContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(1132) + p.SetState(1383) p.Match(KuneiformParserBREAK) if p.HasError() { // Recognition error - abort rule @@ -19396,7 +24072,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1133) + p.SetState(1384) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19408,14 +24084,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_returnContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(1134) + p.SetState(1385) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1137) + p.SetState(1388) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19423,13 +24099,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLBRACKET, KuneiformParserLPAREN, KuneiformParserEXCL, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1135) + p.SetState(1386) p.Procedure_expr_list() } - case KuneiformParserDELETE, KuneiformParserUPDATE, KuneiformParserWITH, KuneiformParserSELECT, KuneiformParserINSERT: + case KuneiformParserCREATE, KuneiformParserALTER, KuneiformParserDROP, KuneiformParserDELETE, KuneiformParserUPDATE, KuneiformParserWITH, KuneiformParserSELECT, KuneiformParserINSERT: { - p.SetState(1136) + p.SetState(1387) p.Sql_statement() } @@ -19438,7 +24114,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { default: } { - p.SetState(1139) + p.SetState(1390) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19450,7 +24126,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_return_nextContext(p, localctx) p.EnterOuterAlt(localctx, 9) { - p.SetState(1140) + p.SetState(1391) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule @@ -19458,7 +24134,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1141) + p.SetState(1392) p.Match(KuneiformParserNEXT) if p.HasError() { // Recognition error - abort rule @@ -19466,11 +24142,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1142) + p.SetState(1393) p.Procedure_expr_list() } { - p.SetState(1143) + p.SetState(1394) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19570,12 +24246,12 @@ func (s *Variable_or_underscoreContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Variable_or_underscore() (localctx IVariable_or_underscoreContext) { localctx = NewVariable_or_underscoreContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 108, KuneiformParserRULE_variable_or_underscore) + p.EnterRule(localctx, 146, KuneiformParserRULE_variable_or_underscore) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1147) + p.SetState(1398) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE) { @@ -19711,13 +24387,13 @@ func (s *Normal_call_procedureContext) Accept(visitor antlr.ParseTreeVisitor) in func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_function_callContext) { localctx = NewProcedure_function_callContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 110, KuneiformParserRULE_procedure_function_call) + p.EnterRule(localctx, 148, KuneiformParserRULE_procedure_function_call) var _la int localctx = NewNormal_call_procedureContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1149) + p.SetState(1400) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -19725,29 +24401,29 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio } } { - p.SetState(1150) + p.SetState(1401) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1152) + p.SetState(1403) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&148618787706374280) != 0) || ((int64((_la-119)) & ^0x3f) == 0 && ((int64(1)<<(_la-119))&14367) != 0) { + if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1151) + p.SetState(1402) p.Procedure_expr_list() } } { - p.SetState(1154) + p.SetState(1405) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19903,36 +24579,36 @@ func (s *If_then_blockContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { localctx = NewIf_then_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 112, KuneiformParserRULE_if_then_block) + p.EnterRule(localctx, 150, KuneiformParserRULE_if_then_block) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1156) + p.SetState(1407) p.procedure_expr(0) } { - p.SetState(1157) + p.SetState(1408) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1161) + p.SetState(1412) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&175640386007468168) != 0) || ((int64((_la-84)) & ^0x3f) == 0 && ((int64(1)<<(_la-84))&493646788953601) != 0) { + for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1158) + p.SetState(1409) p.Proc_statement() } - p.SetState(1163) + p.SetState(1414) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19940,7 +24616,7 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1164) + p.SetState(1415) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -20074,14 +24750,14 @@ func (s *RangeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Range_() (localctx IRangeContext) { localctx = NewRangeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 114, KuneiformParserRULE_range) + p.EnterRule(localctx, 152, KuneiformParserRULE_range) p.EnterOuterAlt(localctx, 1) { - p.SetState(1166) + p.SetState(1417) p.procedure_expr(0) } { - p.SetState(1167) + p.SetState(1418) p.Match(KuneiformParserRANGE) if p.HasError() { // Recognition error - abort rule @@ -20089,7 +24765,7 @@ func (p *KuneiformParser) Range_() (localctx IRangeContext) { } } { - p.SetState(1168) + p.SetState(1419) p.procedure_expr(0) } @@ -20108,14 +24784,14 @@ errorExit: func (p *KuneiformParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { switch ruleIndex { - case 43: + case 62: var t *Sql_exprContext = nil if localctx != nil { t = localctx.(*Sql_exprContext) } return p.Sql_expr_Sempred(t, predIndex) - case 51: + case 70: var t *Procedure_exprContext = nil if localctx != nil { t = localctx.(*Procedure_exprContext) diff --git a/parse/gen/kuneiformparser_base_visitor.go b/parse/gen/kuneiformparser_base_visitor.go index 6890df882..772552f66 100644 --- a/parse/gen/kuneiformparser_base_visitor.go +++ b/parse/gen/kuneiformparser_base_visitor.go @@ -7,6 +7,10 @@ type BaseKuneiformParserVisitor struct { *antlr.BaseParseTreeVisitor } +func (v *BaseKuneiformParserVisitor) VisitSrc(ctx *SrcContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseKuneiformParserVisitor) VisitSchema_entry(ctx *Schema_entryContext) interface{} { return v.VisitChildren(ctx) } @@ -95,10 +99,18 @@ func (v *BaseKuneiformParserVisitor) VisitColumn_def(ctx *Column_defContext) int return v.VisitChildren(ctx) } +func (v *BaseKuneiformParserVisitor) VisitC_column_def(ctx *C_column_defContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseKuneiformParserVisitor) VisitIndex_def(ctx *Index_defContext) interface{} { return v.VisitChildren(ctx) } +func (v *BaseKuneiformParserVisitor) VisitC_index_def(ctx *C_index_defContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseKuneiformParserVisitor) VisitForeign_key_def(ctx *Foreign_key_defContext) interface{} { return v.VisitChildren(ctx) } @@ -123,6 +135,18 @@ func (v *BaseKuneiformParserVisitor) VisitConstraint(ctx *ConstraintContext) int return v.VisitChildren(ctx) } +func (v *BaseKuneiformParserVisitor) VisitInline_constraint(ctx *Inline_constraintContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitFk_action(ctx *Fk_actionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitFk_constraint(ctx *Fk_constraintContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseKuneiformParserVisitor) VisitAccess_modifier(ctx *Access_modifierContext) interface{} { return v.VisitChildren(ctx) } @@ -151,6 +175,58 @@ func (v *BaseKuneiformParserVisitor) VisitCommon_table_expression(ctx *Common_ta return v.VisitChildren(ctx) } +func (v *BaseKuneiformParserVisitor) VisitCreate_table_statement(ctx *Create_table_statementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitConstraint_def(ctx *Constraint_defContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitUnnamed_constraint(ctx *Unnamed_constraintContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitAlter_table_statement(ctx *Alter_table_statementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitAlter_column_clause(ctx *Alter_column_clauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitAdd_column_clause(ctx *Add_column_clauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitDrop_column_clause(ctx *Drop_column_clauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitRename_column_clause(ctx *Rename_column_clauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitRename_table_clause(ctx *Rename_table_clauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitAdd_fk_clause(ctx *Add_fk_clauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitDrop_fk_clause(ctx *Drop_fk_clauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitCreate_index_statement(ctx *Create_index_statementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitDrop_index_statement(ctx *Drop_index_statementContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseKuneiformParserVisitor) VisitSelect_statement(ctx *Select_statementContext) interface{} { return v.VisitChildren(ctx) } diff --git a/parse/gen/kuneiformparser_visitor.go b/parse/gen/kuneiformparser_visitor.go index 295e1494a..960709167 100644 --- a/parse/gen/kuneiformparser_visitor.go +++ b/parse/gen/kuneiformparser_visitor.go @@ -7,6 +7,9 @@ import "github.com/antlr4-go/antlr/v4" type KuneiformParserVisitor interface { antlr.ParseTreeVisitor + // Visit a parse tree produced by KuneiformParser#src. + VisitSrc(ctx *SrcContext) interface{} + // Visit a parse tree produced by KuneiformParser#schema_entry. VisitSchema_entry(ctx *Schema_entryContext) interface{} @@ -73,9 +76,15 @@ type KuneiformParserVisitor interface { // Visit a parse tree produced by KuneiformParser#column_def. VisitColumn_def(ctx *Column_defContext) interface{} + // Visit a parse tree produced by KuneiformParser#c_column_def. + VisitC_column_def(ctx *C_column_defContext) interface{} + // Visit a parse tree produced by KuneiformParser#index_def. VisitIndex_def(ctx *Index_defContext) interface{} + // Visit a parse tree produced by KuneiformParser#c_index_def. + VisitC_index_def(ctx *C_index_defContext) interface{} + // Visit a parse tree produced by KuneiformParser#foreign_key_def. VisitForeign_key_def(ctx *Foreign_key_defContext) interface{} @@ -94,6 +103,15 @@ type KuneiformParserVisitor interface { // Visit a parse tree produced by KuneiformParser#constraint. VisitConstraint(ctx *ConstraintContext) interface{} + // Visit a parse tree produced by KuneiformParser#inline_constraint. + VisitInline_constraint(ctx *Inline_constraintContext) interface{} + + // Visit a parse tree produced by KuneiformParser#fk_action. + VisitFk_action(ctx *Fk_actionContext) interface{} + + // Visit a parse tree produced by KuneiformParser#fk_constraint. + VisitFk_constraint(ctx *Fk_constraintContext) interface{} + // Visit a parse tree produced by KuneiformParser#access_modifier. VisitAccess_modifier(ctx *Access_modifierContext) interface{} @@ -115,6 +133,45 @@ type KuneiformParserVisitor interface { // Visit a parse tree produced by KuneiformParser#common_table_expression. VisitCommon_table_expression(ctx *Common_table_expressionContext) interface{} + // Visit a parse tree produced by KuneiformParser#create_table_statement. + VisitCreate_table_statement(ctx *Create_table_statementContext) interface{} + + // Visit a parse tree produced by KuneiformParser#constraint_def. + VisitConstraint_def(ctx *Constraint_defContext) interface{} + + // Visit a parse tree produced by KuneiformParser#unnamed_constraint. + VisitUnnamed_constraint(ctx *Unnamed_constraintContext) interface{} + + // Visit a parse tree produced by KuneiformParser#alter_table_statement. + VisitAlter_table_statement(ctx *Alter_table_statementContext) interface{} + + // Visit a parse tree produced by KuneiformParser#alter_column_clause. + VisitAlter_column_clause(ctx *Alter_column_clauseContext) interface{} + + // Visit a parse tree produced by KuneiformParser#add_column_clause. + VisitAdd_column_clause(ctx *Add_column_clauseContext) interface{} + + // Visit a parse tree produced by KuneiformParser#drop_column_clause. + VisitDrop_column_clause(ctx *Drop_column_clauseContext) interface{} + + // Visit a parse tree produced by KuneiformParser#rename_column_clause. + VisitRename_column_clause(ctx *Rename_column_clauseContext) interface{} + + // Visit a parse tree produced by KuneiformParser#rename_table_clause. + VisitRename_table_clause(ctx *Rename_table_clauseContext) interface{} + + // Visit a parse tree produced by KuneiformParser#add_fk_clause. + VisitAdd_fk_clause(ctx *Add_fk_clauseContext) interface{} + + // Visit a parse tree produced by KuneiformParser#drop_fk_clause. + VisitDrop_fk_clause(ctx *Drop_fk_clauseContext) interface{} + + // Visit a parse tree produced by KuneiformParser#create_index_statement. + VisitCreate_index_statement(ctx *Create_index_statementContext) interface{} + + // Visit a parse tree produced by KuneiformParser#drop_index_statement. + VisitDrop_index_statement(ctx *Drop_index_statementContext) interface{} + // Visit a parse tree produced by KuneiformParser#select_statement. VisitSelect_statement(ctx *Select_statementContext) interface{} diff --git a/parse/grammar/KuneiformLexer.g4 b/parse/grammar/KuneiformLexer.g4 index 496c6ccb7..af96e7972 100644 --- a/parse/grammar/KuneiformLexer.g4 +++ b/parse/grammar/KuneiformLexer.g4 @@ -55,6 +55,15 @@ VIEW: 'view'; OWNER: 'owner'; // keywords +CREATE: 'create'; +ALTER: 'alter'; +COLUMN: 'column'; +ADD: 'add'; +DROP: 'drop'; +RENAME: 'rename'; +TO: 'to'; +CONSTRAINT: 'constraint'; +CHECK: 'check'; FOREIGN: 'foreign'; PRIMARY: 'primary'; KEY: 'key'; diff --git a/parse/grammar/KuneiformParser.g4 b/parse/grammar/KuneiformParser.g4 index 276c10df5..17ee6309b 100644 --- a/parse/grammar/KuneiformParser.g4 +++ b/parse/grammar/KuneiformParser.g4 @@ -17,6 +17,11 @@ options { // can be ambiguous between the different types of entries. Callers will know // which entry to use based on when they are parsing. +src: + sql+ + EOF +; + schema_entry: schema EOF ; @@ -112,12 +117,21 @@ column_def: name=IDENTIFIER type constraint* ; +// TODO: rename to column_def once table_declaration is removed +c_column_def: + name=IDENTIFIER type inline_constraint* +; + index_def: HASH_IDENTIFIER (UNIQUE | INDEX | PRIMARY) LPAREN columns=identifier_list RPAREN ; +c_index_def: + UNIQUE? INDEX identifier LPAREN columns=identifier_list RPAREN +; + foreign_key_def: (FOREIGN KEY|LEGACY_FOREIGN_KEY) // for backwards compatibility LPAREN child_keys=identifier_list RPAREN @@ -147,6 +161,46 @@ constraint: (IDENTIFIER| PRIMARY KEY? | NOT NULL | DEFAULT | UNIQUE) (LPAREN literal RPAREN)? ; +//// TODO: rename to constraint once table_delcaration is removed +//c_constraint: +// (PRIMARY KEY | NOT NULL | DEFAULT literal| UNIQUE | CHECK | FOREIGN KEY) +// LPAREN sql_expr_list RPAREN +// fk_constraint? +//; + +// +//// TODO: rename to constraint once table_delcaration is removed +inline_constraint: + PRIMARY KEY + | UNIQUE + | NOT NULL + | DEFAULT literal + | fk_constraint + | CHECK (LPAREN sql_expr RPAREN) +; + +//inline_constraint: +// PRIMARY KEY #inline_constraint_pk +// | UNIQUE #inline_constraint_unique +// | NOT NULL #inline_constraint_not_null +// | DEFAULT literal #inline_constraint_default +// | fk_constraint #inline_constraint_fk +// | CHECK (LPAREN sql_expr RPAREN) #inline_constratin_check +//; + +fk_action: + ON (UPDATE|DELETE) + (SET NULL + | SET DEFAULT + | RESTRICT + | NO ACTION + | CASCADE) +; + +fk_constraint: + REFERENCES table=identifier (LPAREN column=identifier RPAREN) (fk_action (fk_action)*)? +; + access_modifier: PUBLIC | PRIVATE | VIEW | OWNER ; @@ -184,13 +238,100 @@ sql: sql_statement: (WITH RECURSIVE? common_table_expression (COMMA common_table_expression)*)? - (select_statement | update_statement | insert_statement | delete_statement) + (create_table_statement | alter_table_statement| create_index_statement | drop_index_statement // ddl + | select_statement | update_statement | insert_statement | delete_statement) // dml ; common_table_expression: identifier (LPAREN (identifier (COMMA identifier)*)? RPAREN)? AS LPAREN select_statement RPAREN ; +create_table_statement: + CREATE TABLE name=identifier + LPAREN + (c_column_def | constraint_def | c_index_def) + (COMMA (c_column_def | constraint_def | c_index_def))* + RPAREN +; + +constraint_def: + (CONSTRAINT name=identifier)? + unnamed_constraint +; + +unnamed_constraint: + PRIMARY KEY LPAREN identifier_list RPAREN + | UNIQUE LPAREN identifier_list RPAREN + | CHECK LPAREN sql_expr RPAREN + | FOREIGN KEY LPAREN identifier RPAREN fk_constraint +; + +//alter_table_statement: +// ALTER TABLE table=identifier +// alter_clause (COMMA alter_clause)* +//; +// +//alter_clause: +// ALTER COLUMN column=identifer +// op=(SET | DROP) +// ((NOT NULL | DEFAULT) literal | CONSTRAINT identifier) # alter_column +// | ADD COLUMN column=identifer # add_column +// | DROP COLUMN column=identifer # drop_column +// | RENAME COLUMN old_column=identifer TO new_column=identifer # rename_column +// | RENAME TO new_table=identifer # rename_table +//; + +alter_table_statement: + ALTER TABLE table=identifier + (alter_column_clause + | add_column_clause (COMMA add_column_clause)* + | drop_column_clause (COMMA drop_column_clause)* + | rename_column_clause + | rename_table_clause + | add_fk_clause + | drop_fk_clause + ) +; + +alter_column_clause: + ALTER COLUMN column=identifier + op=(SET | DROP) + ((NOT NULL | DEFAULT) literal? + | CONSTRAINT identifier) +; + +add_column_clause: + ADD COLUMN column=identifier type +; + +drop_column_clause: + DROP COLUMN column=identifier +; + +rename_column_clause: + RENAME COLUMN old_column=identifier TO new_column=identifier +; + +rename_table_clause: + RENAME TO new_table=identifier +; + +add_fk_clause: + ADD CONSTRAINT fk_name=identifier unnamed_constraint +; + +drop_fk_clause: + DROP CONSTRAINT fk_name=identifier +; + +create_index_statement: + CREATE UNIQUE? INDEX name=identifier ON table=identifier LPAREN columns=identifier_list RPAREN +; + +drop_index_statement: + DROP INDEX (IF EXISTS)? name=identifier +; + select_statement: select_core (compound_operator select_core)* @@ -279,31 +420,31 @@ sql_expr: // highest precedence: LPAREN sql_expr RPAREN type_cast? # paren_sql_expr | sql_expr PERIOD identifier type_cast? # field_access_sql_expr - | array_element=sql_expr LBRACKET ( - // can be arr[1], arr[1:2], arr[1:], arr[:2], arr[:] - single=sql_expr - | (left=sql_expr? COL right=sql_expr?) + | array_element=sql_expr LBRACKET ( + // can be arr[1], arr[1:2], arr[1:], arr[:2], arr[:] + single=sql_expr + | (left=sql_expr? COL right=sql_expr?) ) RBRACKET type_cast? # array_access_sql_expr | (PLUS|MINUS) sql_expr # unary_sql_expr | sql_expr COLLATE identifier # collate_sql_expr | left=sql_expr (STAR | DIV | MOD) right=sql_expr # arithmetic_sql_expr | left=sql_expr (PLUS | MINUS) right=sql_expr # arithmetic_sql_expr - // any unspecified operator: + // any unspecified operator: | literal type_cast? # literal_sql_expr // direct function calls can have a type cast, but window functions cannot | sql_function_call (FILTER LPAREN WHERE sql_expr RPAREN)? OVER (window|IDENTIFIER) # window_function_call_sql_expr | sql_function_call type_cast? # function_call_sql_expr | variable type_cast? # variable_sql_expr - | (table=identifier PERIOD)? column=identifier type_cast? # column_sql_expr - | CASE case_clause=sql_expr? - (when_then_clause)+ + | (table=identifier PERIOD)? column=identifier type_cast? # column_sql_expr + | CASE case_clause=sql_expr? + (when_then_clause)+ (ELSE else_clause=sql_expr)? END # case_expr | (NOT? EXISTS)? LPAREN select_statement RPAREN type_cast? # subquery_sql_expr - // setting precedence for arithmetic operations: + // setting precedence for arithmetic operations: | left=sql_expr CONCAT right=sql_expr # arithmetic_sql_expr - // the rest: + // the rest: | sql_expr NOT? IN LPAREN (sql_expr_list|select_statement) RPAREN # in_sql_expr | left=sql_expr NOT? (LIKE|ILIKE) right=sql_expr # like_sql_expr | element=sql_expr (NOT)? BETWEEN lower=sql_expr AND upper=sql_expr # between_sql_expr @@ -315,10 +456,10 @@ sql_expr: ; window: - LPAREN + LPAREN (PARTITION BY partition=sql_expr_list)? (ORDER BY ordering_term (COMMA ordering_term)*)? - RPAREN + RPAREN ; @@ -369,7 +510,7 @@ procedure_expr: | array_element=procedure_expr LBRACKET ( // can be arr[1], arr[1:2], arr[1:], arr[:2], arr[:] single=procedure_expr - | (left=procedure_expr? COL right=procedure_expr?) + | (left=procedure_expr? COL right=procedure_expr?) ) RBRACKET type_cast? # array_access_procedure_expr | (PLUS|MINUS|EXCL) procedure_expr # unary_procedure_expr | procedure_expr (STAR | DIV | MOD) procedure_expr # procedure_expr_arithmetic From aade82c47d27433eae17b57298a9918439cb4498 Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Thu, 24 Oct 2024 17:08:51 -0500 Subject: [PATCH 02/11] create table statement --- core/types/transactions/payloads.go | 2 +- internal/engine/generate/generate_test.go | 158 +++++++++++++ internal/engine/generate/plpgsql.go | 59 +++++ internal/engine/generate/sql.go | 18 ++ internal/sql/pg/query.go | 4 +- parse/analyze.go | 4 + parse/antlr.go | 257 +++++++++++++++++++--- parse/ast.go | 241 ++++++++++++++++++-- parse/errors.go | 1 + parse/parse_test.go | 133 +++++++++++ parse/postgres/parse.go | 2 +- 11 files changed, 827 insertions(+), 52 deletions(-) diff --git a/core/types/transactions/payloads.go b/core/types/transactions/payloads.go index f022b1bfb..d674bea56 100644 --- a/core/types/transactions/payloads.go +++ b/core/types/transactions/payloads.go @@ -64,7 +64,7 @@ func UnmarshalPayload(payloadType PayloadType, payload []byte) (Payload, error) } t := reflect.TypeOf(prototype).Elem() - elem := reflect.New(t) // reflect.Type => reflect.Value + elem := reflect.New(t) // reflect.Type => reflect.Param instance := elem.Interface() // reflect.Type => any err := serialize.Decode(payload, instance) diff --git a/internal/engine/generate/generate_test.go b/internal/engine/generate/generate_test.go index 3269ff7e2..542db80c7 100644 --- a/internal/engine/generate/generate_test.go +++ b/internal/engine/generate/generate_test.go @@ -7,10 +7,168 @@ import ( "github.com/kwilteam/kwil-db/core/types" "github.com/kwilteam/kwil-db/internal/engine/generate" + "github.com/kwilteam/kwil-db/parse" "github.com/kwilteam/kwil-db/parse/postgres" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) +func TestGenerateDDLStatement(t *testing.T) { + node := &parse.SQLStatement{ + SQL: &parse.CreateTableStatement{ + Name: "users", + Columns: []*parse.Column{ + { + Name: "id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintPrimaryKey{}, + }, + }, + { + Name: "name", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintCheck{ + Param: &parse.ExpressionComparison{ + Left: &parse.ExpressionFunctionCall{ + Name: "length", + Args: []parse.Expression{ + &parse.ExpressionColumn{ + Table: "", + Column: "name", + }, + }, + }, + Right: &parse.ExpressionLiteral{ + Type: types.IntType, + Value: int64(10), + }, + Operator: parse.ComparisonOperatorGreaterThan, + }, + }, + }, + }, + { + Name: "address", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintNotNull{}, + &parse.ConstraintDefault{ + Value: &parse.ExpressionLiteral{ + Type: types.TextType, + Value: "usa", + }, + }, + }, + }, + { + Name: "email", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintNotNull{}, + &parse.ConstraintUnique{}, + }, + }, + { + Name: "city_id", + Type: types.IntType, + }, + { + Name: "group_id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintForeignKey{ + RefTable: "groups", + RefColumn: "id", + Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, + }, + }, + }, + }, + Indexes: []*parse.Index{ + { + Name: "group_name_unique", + Columns: []string{"group_id", "name"}, + Type: parse.IndexTypeUnique, + }, + { + Name: "ithome", + Columns: []string{"name", "address"}, + Type: parse.IndexTypeBTree, + }, + }, + Constraints: []parse.Constraint{ + &parse.ConstraintForeignKey{ + Name: "city_fk", + RefTable: "cities", + RefColumn: "id", + Column: "city_id", + Ons: []parse.ForeignKeyActionOn{parse.ON_UPDATE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_NO_ACTION}, + }, + &parse.ConstraintCheck{ + Param: &parse.ExpressionComparison{ + Left: &parse.ExpressionFunctionCall{ + Name: "length", + Args: []parse.Expression{ + &parse.ExpressionColumn{ + Table: "", + Column: "email", + }, + }, + }, + Right: &parse.ExpressionLiteral{ + Type: types.IntType, + Value: int64(1), + }, + Operator: parse.ComparisonOperatorGreaterThan, + }, + }, + &parse.ConstraintUnique{ + Columns: []string{ + "city_id", + "address", + }, + }, + }, + }, + } + + got, err := generate.DDL(node) + require.NoError(t, err) + + // expect := `CREATE TABLE users ( + //id int primary key, + //name text check(length(name) > 10), + //address text not null default 'usa', + //email text not null unique, + //city_id int, + //group_id int references groups(id) on delete cascade, + //constraint city_fk foreign key (city_id) references cities(id) on update no action, + //check(length(email) > 1), + //unique(city_id, address), + //unique index group_name_unique (group_id, name), + //index ithome (name, address) + //);` + expect := `CREATE TABLE users ( + id int PRIMARY KEY, + name text CHECK(length(name) > 10), + address text NOT NULL DEFAULT 'usa', + email text NOT NULL UNIQUE, + city_id int, + group_id int REFERENCES groups(id) ON DELETE CASCADE, + CONSTRAINT city_fk FOREIGN KEY (city_id) REFERENCES cities(id) ON UPDATE NO ACTION, + CHECK(length(email) > 1), + UNIQUE (city_id, address), + UNIQUE INDEX group_name_unique (group_id, name), + INDEX ithome (name, address) +);` + + assert.Equal(t, expect, got) +} + func TestGenerateDDL(t *testing.T) { type args struct { table *types.Table diff --git a/internal/engine/generate/plpgsql.go b/internal/engine/generate/plpgsql.go index c45bf58c2..6f877d05b 100644 --- a/internal/engine/generate/plpgsql.go +++ b/internal/engine/generate/plpgsql.go @@ -790,6 +790,65 @@ func (s *sqlGenerator) VisitOrderingTerm(p0 *parse.OrderingTerm) any { return str.String() } +func (s *sqlGenerator) VisitCreateTableStatement(p0 *parse.CreateTableStatement) any { + str := strings.Builder{} + indent := " " + str.WriteString("CREATE TABLE ") + str.WriteString(p0.Name) + str.WriteString(" (\n") + for i, col := range p0.Columns { + str.WriteString(indent) + str.WriteString(col.Name) + str.WriteString(" ") + str.WriteString(col.Type.String()) + for _, con := range col.Constraints { + str.WriteString(" ") + if cc, ok := con.(*parse.ConstraintCheck); ok { + str.WriteString("CHECK(") + str.WriteString(cc.Param.Accept(s).(string)) + str.WriteString(")") + } else { + str.WriteString(con.ToSQL()) + } + } + if i < len(p0.Columns)-1 { + str.WriteString(",\n") + } + } + + if len(p0.Constraints) > 0 { + str.WriteString(",\n") + for i, con := range p0.Constraints { + str.WriteString(indent) + if cc, ok := con.(*parse.ConstraintCheck); ok { + str.WriteString("CHECK(") + str.WriteString(cc.Param.Accept(s).(string)) + str.WriteString(")") + } else { + str.WriteString(con.ToSQL()) + } + + if i < len(p0.Constraints)-1 { + str.WriteString(",\n") + } + } + } + + if len(p0.Indexes) > 0 { + str.WriteString(",\n") + for i, index := range p0.Indexes { + str.WriteString(indent) + str.WriteString(index.String()) + if i < len(p0.Indexes)-1 { + str.WriteString(",\n") + } + } + } + + str.WriteString("\n)") + return str.String() +} + // procedureGenerator is a visitor that generates plpgsql code. type procedureGenerator struct { sqlGenerator diff --git a/internal/engine/generate/sql.go b/internal/engine/generate/sql.go index 7fd2e188c..1b7930ba3 100644 --- a/internal/engine/generate/sql.go +++ b/internal/engine/generate/sql.go @@ -30,3 +30,21 @@ func WriteSQL(node *parse.SQLStatement, orderParams bool, pgSchema string) (stmt return stmt + ";", sqlGen.orderedParams, nil } + +func DDL(node *parse.SQLStatement) (stmt string, err error) { + if node == nil { + return "", fmt.Errorf("SQL parse node is nil") + } + + defer func() { + if e := recover(); e != nil { + err = fmt.Errorf("panic: %v", e) + } + }() + + sqlGen := &sqlGenerator{} + + stmt = node.Accept(sqlGen).(string) + // stmt[1:] remove the leading "\n" + return stmt[1:] + ";", nil +} diff --git a/internal/sql/pg/query.go b/internal/sql/pg/query.go index d9d7a9505..aac33eb97 100644 --- a/internal/sql/pg/query.go +++ b/internal/sql/pg/query.go @@ -7,8 +7,6 @@ import ( "time" "github.com/kwilteam/kwil-db/common/sql" - - "github.com/jackc/pgx/v5" ) func queryImpliedArgTypes(ctx context.Context, conn *pgx.Conn, stmt string, args ...any) (pgx.Rows, error) { @@ -305,7 +303,7 @@ func queryRowFuncAny(ctx context.Context, conn *pgx.Conn, stmt string, return err } - switch pgVal.(type) { // let native (sql/driver.Value) types pass + switch pgVal.(type) { // let native (sql/driver.Param) types pass case int64, float64, bool, []byte, string, time.Time, nil: default: // reject anything else unrecognized return err diff --git a/parse/analyze.go b/parse/analyze.go index 4241941d7..9e6e9975d 100644 --- a/parse/analyze.go +++ b/parse/analyze.go @@ -2051,6 +2051,10 @@ func (s *sqlAnalyzer) VisitOrderingTerm(p0 *OrderingTerm) any { return nil } +func (s *sqlAnalyzer) VisitCreateTableStatement(p0 *CreateTableStatement) any { + panic("sqlAnalyzer: not implemented") +} + // tableToRelation converts a table to a relation. func tableToRelation(t *types.Table) *Relation { attrs := make([]*Attribute, len(t.Columns)) diff --git a/parse/antlr.go b/parse/antlr.go index b5f806f07..e942cd0ac 100644 --- a/parse/antlr.go +++ b/parse/antlr.go @@ -39,17 +39,7 @@ type schemaVisitor struct { actions map[string][]ActionStmt } -func (s *schemaVisitor) VisitC_column_def(ctx *gen.C_column_defContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitC_index_def(ctx *gen.C_index_defContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitC_constraint(ctx *gen.C_constraintContext) interface{} { +func (s *schemaVisitor) VisitSrc(ctx *gen.SrcContext) interface{} { //TODO implement me panic("implement me") } @@ -59,21 +49,6 @@ func (s *schemaVisitor) VisitFk_action(ctx *gen.Fk_actionContext) interface{} { panic("implement me") } -func (s *schemaVisitor) VisitFk_constraint(ctx *gen.Fk_constraintContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitConstraint_def(ctx *gen.Constraint_defContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitUnnamed_constraint_def(ctx *gen.Unnamed_constraint_defContext) interface{} { - //TODO implement me - panic("implement me") -} - func (s *schemaVisitor) VisitAlter_table_statement(ctx *gen.Alter_table_statementContext) interface{} { //TODO implement me panic("implement me") @@ -1035,28 +1010,244 @@ func (s *schemaVisitor) VisitCreate_table_statement(ctx *gen.Create_table_statem stmt := &CreateTableStatement{ Name: ctx.GetName().Accept(s).(string), Columns: arr[*Column](len(ctx.AllC_column_def())), - Indexes: nil, - ForeignKeys: nil, + Constraints: arr[Constraint](len(ctx.AllConstraint_def())), + Indexes: arr[*Index](len(ctx.AllC_index_def())), } + for i, c := range ctx.AllC_column_def() { stmt.Columns[i] = c.Accept(s).(*Column) } - var allIndexes []*Index - var allForeignKeys []*ForeignKey + var primaryKey []string + + //for _, column := range stmt.Columns { + // for _, constraint := range column.Constraints { + // switch c := constraint.(type) { + // case *ConstraintPrimaryKey: + // c.Columns = []string{column.Name} + // primaryKey = c.Columns + // case *ConstraintUnique: + // c.Columns = []string{column.Name} + // case *ConstraintCheck: + // case *ConstraintForeignKey: + // c.Column = column.Name + // case *ConstraintDefault: + // c.Column = column.Name + // case *ConstraintNotNull: + // c.Column = column.Name + // default: + // panic("unknown constraint type") + // } + // } + //} + for _, column := range stmt.Columns { + for _, constraint := range column.Constraints { + switch constraint.(type) { + case *ConstraintPrimaryKey: + primaryKey = []string{column.Name} + } + } + } + + for i, c := range ctx.AllConstraint_def() { + constraint := c.Accept(s).(Constraint) + stmt.Constraints[i] = constraint + + switch cc := constraint.(type) { + case *ConstraintPrimaryKey: + if len(primaryKey) != 0 { + s.errs.RuleErr(c, ErrRedeclarePrimaryKey, "primary key redeclared") + continue + } - for _, c := range ctx.AllC_index_def() { - allIndexes = append(allIndexes, c.Accept(s).(*Index)) + primaryKey = cc.Columns + } } - for _, c := range ctx.AllConstraint_def() { + for i, c := range ctx.AllC_index_def() { + stmt.Indexes[i] = c.Accept(s).(*Index) + } + if len(primaryKey) == 0 { + s.errs.RuleErr(ctx, ErrNoPrimaryKey, "no primary key declared") } + //// TODO: improve + //if ctx.GetExtra_comma() != nil { + // s.errs.TokenErr(ctx.GetExtra_comma(), ErrSyntax, "extra comma") + //} + stmt.Set(ctx) return stmt } +func (s *schemaVisitor) VisitC_column_def(ctx *gen.C_column_defContext) interface{} { + column := &Column{ + Name: s.getIdent(ctx.IDENTIFIER()), + Type: ctx.Type_().Accept(s).(*types.DataType), + Constraints: arr[Constraint](len(ctx.AllInline_constraint())), + } + + // due to unfortunate lexing edge cases to support min/max, we + // have to parse the constraints here. Each constraint is a text, and should be + // one of: + // MIN/MAX/MINLEN/MAXLEN/MIN_LENGTH/MAX_LENGTH/NOTNULL/NOT/NULL/PRIMARY/KEY/PRIMARY_KEY/PK/DEFAULT/UNIQUE + // If NOT is present, it needs to be followed by NULL; similarly, if NULL is present, it needs to be preceded by NOT. + // If PRIMARY is present, it can be followed by key, but does not have to be. key must be preceded by primary. + // MIN, MAX, MINLEN, MAXLEN, MIN_LENGTH, MAX_LENGTH, and DEFAULT must also have a literal following them. + + //type constraint struct { + // ident string + // vals *types.DataType + //} + + for i, c := range ctx.AllInline_constraint() { + column.Constraints[i] = c.Accept(s).(Constraint) + } + + // TODO: basic validations, like default value should be same as column type + + column.Set(ctx) + return column +} + +func (s *schemaVisitor) VisitInline_constraint(ctx *gen.Inline_constraintContext) any { + switch { + case ctx.PRIMARY() != nil: + c := &ConstraintPrimaryKey{ + //inline: true, + } + c.Set(ctx) + return c + case ctx.UNIQUE() != nil: + c := &ConstraintUnique{ + //inline: true, + } + c.Set(ctx) + return c + case ctx.NOT() != nil: + c := &ConstraintNotNull{ + //inline: true, + } + c.Set(ctx) + return c + case ctx.DEFAULT() != nil: + c := &ConstraintDefault{ + //inline: true, + Value: ctx.Literal().Accept(s).(*ExpressionLiteral), + } + c.Set(ctx) + return c + case ctx.CHECK() != nil: + c := &ConstraintCheck{ + Param: ctx.Sql_expr().Accept(s).(Expression), + } + c.Set(ctx) + return c + case ctx.Fk_constraint() != nil: + c := ctx.Fk_constraint().Accept(s).(*ConstraintForeignKey) + //c.inline = true + return c + default: + panic("unknown constraint") + } +} + +func (s *schemaVisitor) VisitFk_constraint(ctx *gen.Fk_constraintContext) any { + c := &ConstraintForeignKey{ + RefTable: ctx.GetTable().Accept(s).(string), + RefColumn: ctx.GetColumn().Accept(s).(string), + Ons: arr[ForeignKeyActionOn](len(ctx.AllFk_action())), + Dos: arr[ForeignKeyActionDo](len(ctx.AllFk_action())), + } + + for i, a := range ctx.AllFk_action() { + switch { + case a.UPDATE() != nil: + c.Ons[i] = ON_UPDATE + case a.DELETE() != nil: + c.Ons[i] = ON_DELETE + default: + panic("unknown foreign key on condition") + } + + switch { + case a.NULL() != nil: + c.Dos[i] = DO_SET_NULL + case a.DEFAULT() != nil: + c.Dos[i] = DO_SET_DEFAULT + case a.RESTRICT() != nil: + c.Dos[i] = DO_RESTRICT + case a.ACTION() != nil: + c.Dos[i] = DO_NO_ACTION + case a.CASCADE() != nil: + c.Dos[i] = DO_CASCADE + return c + default: + panic("unknown foreign key action") + } + } + + c.Set(ctx) + return c +} + +func (s *schemaVisitor) VisitConstraint_def(ctx *gen.Constraint_defContext) any { + c := ctx.Unnamed_constraint().Accept(s).(Constraint) + if ctx.GetName() != nil { + c.SetName(ctx.GetName().Accept(s).(string)) + } + c.Set(ctx) + return c +} + +func (s *schemaVisitor) VisitUnnamed_constraint(ctx *gen.Unnamed_constraintContext) any { + switch { + case ctx.PRIMARY() != nil: + c := &ConstraintPrimaryKey{ + Columns: ctx.Identifier_list().Accept(s).([]string), + } + c.Set(ctx) + return c + case ctx.UNIQUE() != nil: + c := &ConstraintUnique{ + Columns: ctx.Identifier_list().Accept(s).([]string), + } + c.Set(ctx) + return c + case ctx.CHECK() != nil: + param := ctx.Sql_expr().Accept(s).(Expression) + c := &ConstraintCheck{ + Param: param, + } + c.Set(ctx) + return c + case ctx.FOREIGN() != nil: + c := ctx.Fk_constraint().Accept(s).(*ConstraintForeignKey) + c.Set(ctx) ////==== + c.Column = ctx.Identifier().Accept(s).(string) + return c + default: + panic("unknown constraint") + } +} + +func (s *schemaVisitor) VisitC_index_def(ctx *gen.C_index_defContext) any { + index := &Index{ + Name: ctx.Identifier().Accept(s).(string), + Columns: ctx.Identifier_list().Accept(s).([]string), + Type: IndexTypeBTree, + } + + if ctx.UNIQUE() != nil { + index.Type = IndexTypeUnique + } + + index.Set(ctx) + index.Set(ctx) + return index +} + func (s *schemaVisitor) VisitSelect_statement(ctx *gen.Select_statementContext) any { stmt := &SelectStatement{ SelectCores: arr[*SelectCore](len(ctx.AllSelect_core())), diff --git a/parse/ast.go b/parse/ast.go index 20a000e5d..7302bae3f 100644 --- a/parse/ast.go +++ b/parse/ast.go @@ -546,11 +546,21 @@ const ( type CreateTableStatement struct { Position - Name string - Columns []*Column - Indexes []*Index - ForeignKeys []*ForeignKey - PrimaryKey []string + Name string + Columns []*Column + // Indexes contains the non-inline indexes + Indexes []*Index + // Constraints contains the non-inline constraints + Constraints []Constraint +} + +func (c *CreateTableStatement) Accept(v Visitor) any { + return v.VisitCreateTableStatement(c) + +} + +func (c *CreateTableStatement) StmtType() SQLStatementType { + panic("implement me") } // Column represents a table column. @@ -560,20 +570,198 @@ type Column struct { Name string Type *types.DataType Constraints []Constraint - ForeignKey *ForeignKey - Index *Index } -//type Constraint interface { -// constraint() -//} +type ConstraintType string + +const ( + PRIMARY_KEY ConstraintType = "PRIMARY_KEY" + DEFAULT ConstraintType = "DEFAULT" + NOT_NULL ConstraintType = "NOT_NULL" + UNIQUE ConstraintType = "UNIQUE" + CHECK ConstraintType = "CHECK" + FOREIGN_KEY ConstraintType = "FOREIGN_KEY" + //CUSTOM ConstraintType = "CUSTOM" +) -// Constraint represents a table column constraint. -type Constraint struct { +type Constraint interface { + Node + + ConstraintType() ConstraintType + SetName(string) + ToSQL() string +} + +type ConstraintPrimaryKey struct { Position - Type string - Value *types.DataType + Columns []string + //inline bool +} + +func (c *ConstraintPrimaryKey) Accept(visitor Visitor) any { + panic("implement me") +} + +func (c *ConstraintPrimaryKey) ConstraintType() ConstraintType { + return PRIMARY_KEY +} + +func (c *ConstraintPrimaryKey) ToSQL() string { + if len(c.Columns) == 0 { + return "PRIMARY KEY" + } + + return "PRIMARY KEY (" + strings.Join(c.Columns, ", ") + ")" +} + +func (c *ConstraintPrimaryKey) SetName(name string) {} + +type ConstraintUnique struct { + Position + + Name string + Columns []string + //inline bool +} + +func (c *ConstraintUnique) Accept(visitor Visitor) any { + panic("implement me") +} + +func (c *ConstraintUnique) ConstraintType() ConstraintType { + return UNIQUE +} + +func (c *ConstraintUnique) ToSQL() string { + if len(c.Columns) == 0 { + return "UNIQUE" + } + + s := "UNIQUE (" + strings.Join(c.Columns, ", ") + ")" + if c.Name == "" { + return s + } + + return "CONSTRAINT " + c.Name + " " + s +} + +func (c *ConstraintUnique) SetName(name string) { + c.Name = name +} + +type ConstraintDefault struct { + Position + + Name string + Column string + Value *ExpressionLiteral + //inline bool +} + +func (c *ConstraintDefault) Accept(visitor Visitor) any { + panic("implement me") +} + +func (c *ConstraintDefault) ConstraintType() ConstraintType { + return DEFAULT +} + +func (c *ConstraintDefault) ToSQL() string { + return "DEFAULT " + c.Value.String() +} + +func (c *ConstraintDefault) SetName(name string) { + c.Name = name +} + +type ConstraintNotNull struct { + Position + + Name string + Column string + //inline bool +} + +func (c *ConstraintNotNull) Accept(visitor Visitor) any { + panic("implement me") +} + +func (c *ConstraintNotNull) ConstraintType() ConstraintType { + return NOT_NULL +} + +func (c *ConstraintNotNull) ToSQL() string { + return "NOT NULL" +} + +func (c *ConstraintNotNull) SetName(name string) { + c.Name = name +} + +type ConstraintCheck struct { + Position + + Name string + Param Expression + //inline bool +} + +func (c *ConstraintCheck) Accept(visitor Visitor) any { + panic("implement me") +} + +func (c *ConstraintCheck) ConstraintType() ConstraintType { + return CHECK +} + +func (c *ConstraintCheck) ToSQL() string { + return "" +} + +func (c *ConstraintCheck) SetName(name string) { + c.Name = name +} + +type ConstraintForeignKey struct { + Position + + Name string + RefTable string + RefColumn string + Column string + Ons []ForeignKeyActionOn + Dos []ForeignKeyActionDo + //inline bool +} + +func (c *ConstraintForeignKey) Accept(visitor Visitor) any { + panic("implement me") +} + +func (c *ConstraintForeignKey) ConstraintType() ConstraintType { + return FOREIGN_KEY +} + +func (c *ConstraintForeignKey) ToSQL() string { + s := "REFERENCES " + c.RefTable + "(" + c.RefColumn + ")" + if len(c.Ons) == 0 { + return s + } + + for i, on := range c.Ons { + s += " ON " + string(on) + " " + string(c.Dos[i]) + } + + if c.Name == "" { + return s + } + + return "CONSTRAINT " + c.Name + " FOREIGN KEY (" + c.Column + ") " + s +} + +func (c *ConstraintForeignKey) SetName(name string) { + c.Name = name } type IndexType string @@ -588,14 +776,32 @@ const ( IndexTypeUnique IndexType = "unique" ) +// Index represents non-inline index declaration. type Index struct { Position + //Constraint Name string Columns []string Type IndexType } +func (i *Index) String() string { + if i.Type == IndexTypeUnique && i.Name == "" { //inline + return "UNIQUE" + } + + switch i.Type { + case IndexTypeBTree: + return "INDEX " + i.Name + " (" + strings.Join(i.Columns, ", ") + ")" + case IndexTypeUnique: + return "UNIQUE INDEX " + i.Name + " (" + strings.Join(i.Columns, ", ") + ")" + default: + // should not happen + panic("unknown index type") + } +} + // ForeignKey is a foreign key in a table. type ForeignKey struct { // ChildKeys are the columns that are referencing another. @@ -1223,6 +1429,13 @@ type SQLVisitor interface { VisitInsertStatement(*InsertStatement) any VisitUpsertClause(*OnConflict) any VisitOrderingTerm(*OrderingTerm) any + // DDL + VisitCreateTableStatement(*CreateTableStatement) any + //VisitConstraintPrimaryKey(*ConstraintPrimaryKey) any + //VisitConstraintDefault(*ConstraintDefault) any + //VisitConstraintCheck(*ConstraintCheck) any + //VisitConstraintUnique(*ConstraintCheck) any + //VisitConstraintForeignKey(*ConstraintForeignKey) any } // UnimplementedSqlVisitor is meant to be used when an implementing visitor only intends diff --git a/parse/errors.go b/parse/errors.go index eb8b34c89..3d6ab4de6 100644 --- a/parse/errors.go +++ b/parse/errors.go @@ -257,5 +257,6 @@ var ( ErrAmbiguousConflictTable = errors.New("ambiguous conflict table") ErrCollation = errors.New("collation error") ErrNoPrimaryKey = errors.New("missing primary key") + ErrRedeclarePrimaryKey = errors.New("redeclare primary key") ErrReservedKeyword = errors.New("reserved keyword") ) diff --git a/parse/parse_test.go b/parse/parse_test.go index 1928c0d17..dd42aec73 100644 --- a/parse/parse_test.go +++ b/parse/parse_test.go @@ -2,6 +2,7 @@ package parse_test import ( "encoding/json" + "fmt" "testing" "github.com/google/go-cmp/cmp" @@ -874,6 +875,7 @@ func Test_Kuneiform(t *testing.T) { func assertPositionsAreSet(t *testing.T, v any) { parse.RecursivelyVisitPositions(v, func(gp parse.GetPositioner) { pos := gp.GetPosition() + fmt.Printf("%T: %+v\n", gp, pos) // if not set, this will tell us the struct assert.True(t, pos.IsSet, "position is not set. struct type: %T", gp) }) @@ -2024,6 +2026,137 @@ func Test_SQL(t *testing.T) { } tests := []testCase{ + { + name: "create table", + sql: `CREATE TABLE users ( +id int PRIMARY KEY, +name text CHECK(LENGTH(name) > 10), +address text NOT NULL DEFAULT 'usa', +email text NOT NULL UNIQUE , +city_id int, +group_id int REFERENCES groups(id) ON DELETE CASCADE, +CONSTRAINT city_fk FOREIGN KEY (city_id) REFERENCES cities(id) ON UPDATE NO ACTION , +CHECK(LENGTH(email) > 1), +UNIQUE (city_id, address), +UNIQUE INDEX group_name_unique (group_id, name), +INDEX ithome (name, address) +);`, + want: &parse.SQLStatement{ + SQL: &parse.CreateTableStatement{ + Name: "users", + Columns: []*parse.Column{ + { + Name: "id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintPrimaryKey{}, + }, + }, + { + Name: "name", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintCheck{ + Param: &parse.ExpressionComparison{ + Left: exprFunctionCall("length", exprColumn("", "name")), + Right: exprLit(10), + Operator: parse.ComparisonOperatorGreaterThan, + }, + }, + }, + }, + { + Name: "address", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintNotNull{}, + &parse.ConstraintDefault{ + Value: &parse.ExpressionLiteral{ + Type: types.TextType, + Value: "usa", + Typecastable: parse.Typecastable{ + TypeCast: types.TextType, + }, + }, + }, + }, + }, + { + Name: "email", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintNotNull{}, + &parse.ConstraintUnique{}, + }, + }, + { + Name: "city_id", + Type: types.IntType, + }, + { + Name: "group_id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintForeignKey{ + RefTable: "groups", + RefColumn: "id", + Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, + }, + }, + }, + }, + Indexes: []*parse.Index{ + { + Name: "group_name_unique", + Columns: []string{"group_id", "name"}, + Type: parse.IndexTypeUnique, + }, + { + Name: "ithome", + Columns: []string{"name", "address"}, + Type: parse.IndexTypeBTree, + }, + }, + Constraints: []parse.Constraint{ + &parse.ConstraintForeignKey{ + Name: "city_fk", + RefTable: "cities", + RefColumn: "id", + Column: "city_id", + Ons: []parse.ForeignKeyActionOn{parse.ON_UPDATE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_NO_ACTION}, + }, + &parse.ConstraintCheck{ + Param: &parse.ExpressionComparison{ + Left: exprFunctionCall("length", exprColumn("", "email")), + Right: exprLit(1), + Operator: parse.ComparisonOperatorGreaterThan, + }, + }, + &parse.ConstraintUnique{ + Columns: []string{ + "city_id", + "address", + }, + }, + }, + }, + }, + }, + //{ + // name: "create table with extra comma", + // sql: `CREATE TABLE users (id int primary key,);`, + // err: parse.ErrSyntax, + //}, + { + name: "create table with redeclare primary", + sql: `CREATE TABLE users (id int primary key, +name text check(length(name) > 10), +primary key (name) +);`, + err: parse.ErrRedeclarePrimaryKey, + }, { name: "simple select", sql: "select *, id i, length(username) as name_len from users u where u.id = 1;", diff --git a/parse/postgres/parse.go b/parse/postgres/parse.go index c6016e253..29f66c206 100644 --- a/parse/postgres/parse.go +++ b/parse/postgres/parse.go @@ -15,7 +15,7 @@ func doNothing(_ string) error { // CheckSyntaxReplaceDollar replaces all bind parameters($x) with 1 to bypass // syntax check errors. -// ToSQL() method doesn't convert bind parameters to $1, $2, etc. so we need to +// () method doesn't convert bind parameters to $1, $2, etc. so we need to // replace them manually, just so we can do the syntax check. func CheckSyntaxReplaceDollar(query string) error { // Replace all bind parameters($x) with 1 to bypass syntax check errors From db540b715a8c7dce4d30c0180b8601f434037e49 Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Fri, 25 Oct 2024 13:37:56 -0500 Subject: [PATCH 03/11] grammar change --- parse/gen/kuneiform_parser.go | 5197 +++++++++------------ parse/gen/kuneiformparser_base_visitor.go | 18 +- parse/gen/kuneiformparser_visitor.go | 31 +- parse/grammar/KuneiformParser.g4 | 85 +- 4 files changed, 2347 insertions(+), 2984 deletions(-) diff --git a/parse/gen/kuneiform_parser.go b/parse/gen/kuneiform_parser.go index ad794af07..23d35f886 100644 --- a/parse/gen/kuneiform_parser.go +++ b/parse/gen/kuneiform_parser.go @@ -85,19 +85,18 @@ func kuneiformparserParserInit() { "fk_constraint", "access_modifier", "action_declaration", "procedure_declaration", "procedure_return", "sql", "sql_statement", "common_table_expression", "create_table_statement", "constraint_def", "unnamed_constraint", "alter_table_statement", - "alter_column_clause", "add_column_clause", "drop_column_clause", "rename_column_clause", - "rename_table_clause", "add_fk_clause", "drop_fk_clause", "create_index_statement", - "drop_index_statement", "select_statement", "compound_operator", "ordering_term", - "select_core", "relation", "join", "result_column", "update_statement", - "update_set_clause", "insert_statement", "upsert_clause", "delete_statement", - "sql_expr", "window", "when_then_clause", "sql_expr_list", "sql_function_call", + "alter_table_action", "create_index_statement", "drop_index_statement", + "select_statement", "compound_operator", "ordering_term", "select_core", + "relation", "join", "result_column", "update_statement", "update_set_clause", + "insert_statement", "upsert_clause", "delete_statement", "sql_expr", + "window", "when_then_clause", "sql_expr_list", "sql_function_call", "action_block", "action_statement", "procedure_block", "procedure_expr", "procedure_expr_list", "proc_statement", "variable_or_underscore", "procedure_function_call", "if_then_block", "range", } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 145, 1422, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, + 4, 1, 145, 1390, 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, @@ -110,686 +109,672 @@ func kuneiformparserParserInit() { 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, - 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, - 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 1, 0, 4, 0, 156, 8, 0, - 11, 0, 12, 0, 157, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, - 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 3, 5, 176, 8, 5, 1, 5, 1, 5, - 3, 5, 180, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 188, 8, 5, 1, - 6, 1, 6, 1, 6, 1, 6, 3, 6, 194, 8, 6, 1, 7, 1, 7, 1, 7, 5, 7, 199, 8, 7, - 10, 7, 12, 7, 202, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 210, - 8, 8, 1, 8, 1, 8, 3, 8, 214, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, - 1, 11, 1, 11, 5, 11, 224, 8, 11, 10, 11, 12, 11, 227, 9, 11, 1, 12, 1, - 12, 1, 12, 1, 12, 1, 12, 5, 12, 234, 8, 12, 10, 12, 12, 12, 237, 9, 12, - 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 248, - 8, 13, 10, 13, 12, 13, 251, 9, 13, 3, 13, 253, 8, 13, 1, 13, 1, 13, 1, + 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 1, 0, 4, 0, 144, 8, 0, 11, 0, 12, + 0, 145, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, + 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 3, 5, 164, 8, 5, 1, 5, 1, 5, 3, 5, 168, + 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 176, 8, 5, 1, 6, 1, 6, + 1, 6, 1, 6, 3, 6, 182, 8, 6, 1, 7, 1, 7, 1, 7, 5, 7, 187, 8, 7, 10, 7, + 12, 7, 190, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 198, 8, 8, + 1, 8, 1, 8, 3, 8, 202, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, + 11, 1, 11, 5, 11, 212, 8, 11, 10, 11, 12, 11, 215, 9, 11, 1, 12, 1, 12, + 1, 12, 1, 12, 1, 12, 5, 12, 222, 8, 12, 10, 12, 12, 12, 225, 9, 12, 1, + 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 236, + 8, 13, 10, 13, 12, 13, 239, 9, 13, 3, 13, 241, 8, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, - 1, 15, 1, 15, 1, 15, 5, 15, 271, 8, 15, 10, 15, 12, 15, 274, 9, 15, 1, - 15, 1, 15, 3, 15, 278, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, - 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 292, 8, 16, 5, 16, 294, - 8, 16, 10, 16, 12, 16, 297, 9, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, - 17, 304, 8, 17, 10, 17, 12, 17, 307, 9, 17, 1, 18, 1, 18, 1, 18, 5, 18, - 312, 8, 18, 10, 18, 12, 18, 315, 9, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, - 19, 1, 19, 1, 20, 3, 20, 324, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, - 1, 20, 1, 21, 1, 21, 1, 21, 3, 21, 335, 8, 21, 1, 21, 1, 21, 1, 21, 1, - 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 346, 8, 21, 10, 21, 12, 21, - 349, 9, 21, 1, 22, 1, 22, 1, 22, 3, 22, 354, 8, 22, 1, 22, 1, 22, 1, 22, - 3, 22, 359, 8, 22, 3, 22, 361, 8, 22, 1, 22, 3, 22, 364, 8, 22, 1, 22, - 1, 22, 1, 22, 3, 22, 369, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 375, - 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 380, 8, 22, 1, 22, 3, 22, 383, 8, 22, - 1, 23, 1, 23, 1, 23, 5, 23, 388, 8, 23, 10, 23, 12, 23, 391, 9, 23, 1, - 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 398, 8, 24, 10, 24, 12, 24, 401, - 9, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 409, 8, 25, 10, - 25, 12, 25, 412, 9, 25, 1, 26, 1, 26, 1, 26, 3, 26, 417, 8, 26, 1, 26, - 1, 26, 1, 26, 1, 26, 3, 26, 423, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, - 26, 429, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, - 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 444, 8, 27, 1, 28, 1, 28, 1, - 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 456, 8, 28, - 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 466, 8, - 29, 10, 29, 12, 29, 469, 9, 29, 3, 29, 471, 8, 29, 1, 30, 1, 30, 1, 31, - 5, 31, 476, 8, 31, 10, 31, 12, 31, 479, 9, 31, 1, 31, 1, 31, 1, 31, 1, - 31, 3, 31, 485, 8, 31, 1, 31, 1, 31, 4, 31, 489, 8, 31, 11, 31, 12, 31, - 490, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 5, 32, 498, 8, 32, 10, 32, 12, - 32, 501, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 507, 8, 32, 1, 32, 1, - 32, 4, 32, 511, 8, 32, 11, 32, 12, 32, 512, 1, 32, 3, 32, 516, 8, 32, 1, - 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 524, 8, 33, 1, 33, 1, 33, - 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 534, 8, 33, 1, 34, 1, - 34, 1, 34, 1, 35, 1, 35, 3, 35, 541, 8, 35, 1, 35, 1, 35, 1, 35, 5, 35, - 546, 8, 35, 10, 35, 12, 35, 549, 9, 35, 3, 35, 551, 8, 35, 1, 35, 1, 35, - 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 561, 8, 35, 1, 36, 1, - 36, 1, 36, 1, 36, 1, 36, 5, 36, 568, 8, 36, 10, 36, 12, 36, 571, 9, 36, - 3, 36, 573, 8, 36, 1, 36, 3, 36, 576, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, - 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 590, 8, - 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 596, 8, 37, 5, 37, 598, 8, 37, 10, - 37, 12, 37, 601, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 607, 8, 38, + 1, 15, 1, 15, 1, 15, 5, 15, 259, 8, 15, 10, 15, 12, 15, 262, 9, 15, 1, + 15, 1, 15, 3, 15, 266, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, + 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 280, 8, 16, 5, 16, 282, + 8, 16, 10, 16, 12, 16, 285, 9, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, + 17, 292, 8, 17, 10, 17, 12, 17, 295, 9, 17, 1, 18, 1, 18, 1, 18, 5, 18, + 300, 8, 18, 10, 18, 12, 18, 303, 9, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, + 19, 1, 19, 1, 20, 3, 20, 312, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, + 1, 20, 1, 21, 1, 21, 1, 21, 3, 21, 323, 8, 21, 1, 21, 1, 21, 1, 21, 1, + 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 334, 8, 21, 10, 21, 12, 21, + 337, 9, 21, 1, 22, 1, 22, 1, 22, 3, 22, 342, 8, 22, 1, 22, 1, 22, 1, 22, + 3, 22, 347, 8, 22, 3, 22, 349, 8, 22, 1, 22, 3, 22, 352, 8, 22, 1, 22, + 1, 22, 1, 22, 3, 22, 357, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 363, + 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 368, 8, 22, 1, 22, 3, 22, 371, 8, 22, + 1, 23, 1, 23, 1, 23, 5, 23, 376, 8, 23, 10, 23, 12, 23, 379, 9, 23, 1, + 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 386, 8, 24, 10, 24, 12, 24, 389, + 9, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 397, 8, 25, 10, + 25, 12, 25, 400, 9, 25, 1, 26, 1, 26, 1, 26, 3, 26, 405, 8, 26, 1, 26, + 1, 26, 1, 26, 1, 26, 3, 26, 411, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, + 26, 417, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, + 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 432, 8, 27, 1, 28, 1, 28, 1, + 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 444, 8, 28, + 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 454, 8, + 29, 10, 29, 12, 29, 457, 9, 29, 3, 29, 459, 8, 29, 1, 30, 1, 30, 1, 31, + 5, 31, 464, 8, 31, 10, 31, 12, 31, 467, 9, 31, 1, 31, 1, 31, 1, 31, 1, + 31, 3, 31, 473, 8, 31, 1, 31, 1, 31, 4, 31, 477, 8, 31, 11, 31, 12, 31, + 478, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 5, 32, 486, 8, 32, 10, 32, 12, + 32, 489, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 495, 8, 32, 1, 32, 1, + 32, 4, 32, 499, 8, 32, 11, 32, 12, 32, 500, 1, 32, 3, 32, 504, 8, 32, 1, + 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 512, 8, 33, 1, 33, 1, 33, + 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 522, 8, 33, 1, 34, 1, + 34, 1, 34, 1, 35, 1, 35, 3, 35, 529, 8, 35, 1, 35, 1, 35, 1, 35, 5, 35, + 534, 8, 35, 10, 35, 12, 35, 537, 9, 35, 3, 35, 539, 8, 35, 1, 35, 1, 35, + 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 549, 8, 35, 1, 36, 1, + 36, 1, 36, 1, 36, 1, 36, 5, 36, 556, 8, 36, 10, 36, 12, 36, 559, 9, 36, + 3, 36, 561, 8, 36, 1, 36, 3, 36, 564, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, + 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 578, 8, + 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 584, 8, 37, 5, 37, 586, 8, 37, 10, + 37, 12, 37, 589, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 595, 8, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, - 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 634, 8, 39, 1, 40, 1, 40, 1, 40, 1, - 40, 1, 40, 1, 40, 1, 40, 5, 40, 643, 8, 40, 10, 40, 12, 40, 646, 9, 40, - 1, 40, 1, 40, 1, 40, 5, 40, 651, 8, 40, 10, 40, 12, 40, 654, 9, 40, 1, - 40, 1, 40, 1, 40, 1, 40, 3, 40, 660, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, - 1, 41, 1, 41, 1, 41, 3, 41, 669, 8, 41, 1, 41, 3, 41, 672, 8, 41, 1, 41, - 1, 41, 3, 41, 676, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, - 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, - 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 48, 1, 48, 3, 48, 708, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, - 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 722, 8, 49, 1, - 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 730, 8, 50, 10, 50, 12, 50, - 733, 9, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 740, 8, 50, 10, 50, - 12, 50, 743, 9, 50, 3, 50, 745, 8, 50, 1, 50, 1, 50, 3, 50, 749, 8, 50, - 1, 50, 1, 50, 3, 50, 753, 8, 50, 1, 51, 1, 51, 3, 51, 757, 8, 51, 1, 51, - 1, 51, 3, 51, 761, 8, 51, 1, 52, 1, 52, 3, 52, 765, 8, 52, 1, 52, 1, 52, - 3, 52, 769, 8, 52, 1, 53, 1, 53, 3, 53, 773, 8, 53, 1, 53, 1, 53, 1, 53, - 5, 53, 778, 8, 53, 10, 53, 12, 53, 781, 9, 53, 1, 53, 1, 53, 1, 53, 5, - 53, 786, 8, 53, 10, 53, 12, 53, 789, 9, 53, 3, 53, 791, 8, 53, 1, 53, 1, - 53, 3, 53, 795, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 802, 8, - 53, 3, 53, 804, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, - 1, 53, 1, 53, 5, 53, 815, 8, 53, 10, 53, 12, 53, 818, 9, 53, 3, 53, 820, - 8, 53, 1, 54, 1, 54, 3, 54, 824, 8, 54, 1, 54, 3, 54, 827, 8, 54, 1, 54, - 1, 54, 1, 54, 1, 54, 3, 54, 833, 8, 54, 1, 54, 3, 54, 836, 8, 54, 3, 54, - 838, 8, 54, 1, 55, 3, 55, 841, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, - 1, 56, 1, 56, 3, 56, 850, 8, 56, 1, 56, 3, 56, 853, 8, 56, 1, 56, 1, 56, - 1, 56, 3, 56, 858, 8, 56, 1, 56, 3, 56, 861, 8, 56, 1, 57, 1, 57, 1, 57, - 3, 57, 866, 8, 57, 1, 57, 3, 57, 869, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, - 5, 57, 875, 8, 57, 10, 57, 12, 57, 878, 9, 57, 1, 57, 1, 57, 1, 57, 5, - 57, 883, 8, 57, 10, 57, 12, 57, 886, 9, 57, 3, 57, 888, 8, 57, 1, 57, 1, - 57, 3, 57, 892, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, - 1, 59, 3, 59, 902, 8, 59, 1, 59, 3, 59, 905, 8, 59, 1, 59, 1, 59, 1, 59, - 1, 59, 3, 59, 911, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, - 59, 1, 59, 1, 59, 5, 59, 922, 8, 59, 10, 59, 12, 59, 925, 9, 59, 1, 59, - 3, 59, 928, 8, 59, 1, 59, 3, 59, 931, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, - 1, 60, 1, 60, 1, 60, 3, 60, 940, 8, 60, 3, 60, 942, 8, 60, 1, 60, 1, 60, - 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 951, 8, 60, 10, 60, 12, 60, 954, - 9, 60, 1, 60, 1, 60, 3, 60, 958, 8, 60, 3, 60, 960, 8, 60, 1, 61, 1, 61, - 1, 61, 1, 61, 3, 61, 966, 8, 61, 1, 61, 3, 61, 969, 8, 61, 1, 61, 1, 61, - 3, 61, 973, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 980, 8, 62, - 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 986, 8, 62, 1, 62, 1, 62, 1, 62, 1, - 62, 1, 62, 1, 62, 1, 62, 3, 62, 995, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, - 1000, 8, 62, 1, 62, 1, 62, 3, 62, 1004, 8, 62, 1, 62, 1, 62, 3, 62, 1008, - 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1013, 8, 62, 1, 62, 1, 62, 3, 62, 1017, - 8, 62, 1, 62, 1, 62, 3, 62, 1021, 8, 62, 1, 62, 4, 62, 1024, 8, 62, 11, - 62, 12, 62, 1025, 1, 62, 1, 62, 3, 62, 1030, 8, 62, 1, 62, 1, 62, 1, 62, - 3, 62, 1035, 8, 62, 1, 62, 3, 62, 1038, 8, 62, 1, 62, 1, 62, 1, 62, 1, - 62, 3, 62, 1044, 8, 62, 1, 62, 1, 62, 3, 62, 1048, 8, 62, 1, 62, 1, 62, - 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1061, - 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1067, 8, 62, 1, 62, 1, 62, 1, - 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, - 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1087, 8, 62, 1, 62, 1, 62, 1, - 62, 1, 62, 3, 62, 1093, 8, 62, 1, 62, 1, 62, 3, 62, 1097, 8, 62, 3, 62, - 1099, 8, 62, 1, 62, 1, 62, 3, 62, 1103, 8, 62, 1, 62, 1, 62, 1, 62, 1, - 62, 1, 62, 3, 62, 1110, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1116, - 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1123, 8, 62, 1, 62, 1, - 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1131, 8, 62, 5, 62, 1133, 8, 62, - 10, 62, 12, 62, 1136, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1142, 8, - 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 5, 63, 1149, 8, 63, 10, 63, 12, - 63, 1152, 9, 63, 3, 63, 1154, 8, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, - 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 5, 65, 1166, 8, 65, 10, 65, 12, 65, - 1169, 9, 65, 1, 66, 1, 66, 1, 66, 3, 66, 1174, 8, 66, 1, 66, 1, 66, 3, - 66, 1178, 8, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 5, 67, 1185, 8, 67, - 10, 67, 12, 67, 1188, 9, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1194, 8, - 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1200, 8, 68, 1, 68, 1, 68, 1, 68, - 1, 68, 1, 68, 3, 68, 1207, 8, 68, 1, 68, 3, 68, 1210, 8, 68, 1, 69, 5, - 69, 1213, 8, 69, 10, 69, 12, 69, 1216, 9, 69, 1, 70, 1, 70, 1, 70, 1, 70, - 1, 70, 3, 70, 1223, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1229, 8, - 70, 1, 70, 1, 70, 3, 70, 1233, 8, 70, 1, 70, 1, 70, 3, 70, 1237, 8, 70, - 1, 70, 1, 70, 3, 70, 1241, 8, 70, 1, 70, 1, 70, 3, 70, 1245, 8, 70, 1, - 70, 1, 70, 3, 70, 1249, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, - 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, - 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1273, 8, 70, 1, 70, 1, 70, - 1, 70, 1, 70, 3, 70, 1279, 8, 70, 1, 70, 1, 70, 3, 70, 1283, 8, 70, 3, - 70, 1285, 8, 70, 1, 70, 1, 70, 3, 70, 1289, 8, 70, 1, 70, 1, 70, 1, 70, - 3, 70, 1294, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1302, - 8, 70, 5, 70, 1304, 8, 70, 10, 70, 12, 70, 1307, 9, 70, 1, 71, 1, 71, 1, - 71, 5, 71, 1312, 8, 71, 10, 71, 12, 71, 1315, 9, 71, 1, 72, 1, 72, 1, 72, - 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 1324, 8, 72, 10, 72, 12, 72, 1327, 9, - 72, 1, 72, 1, 72, 3, 72, 1331, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, - 3, 72, 1338, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, - 72, 1, 72, 1, 72, 3, 72, 1350, 8, 72, 1, 72, 1, 72, 5, 72, 1354, 8, 72, - 10, 72, 12, 72, 1357, 9, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, - 5, 72, 1365, 8, 72, 10, 72, 12, 72, 1368, 9, 72, 1, 72, 1, 72, 1, 72, 5, - 72, 1373, 8, 72, 10, 72, 12, 72, 1376, 9, 72, 1, 72, 3, 72, 1379, 8, 72, - 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1389, 8, - 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1397, 8, 72, 1, 73, - 1, 73, 1, 74, 1, 74, 1, 74, 3, 74, 1404, 8, 74, 1, 74, 1, 74, 1, 75, 1, - 75, 1, 75, 5, 75, 1411, 8, 75, 10, 75, 12, 75, 1414, 9, 75, 1, 75, 1, 75, - 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 0, 2, 124, 140, 77, 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, 0, 16, 1, 0, 20, 21, 1, 0, 129, 130, 1, 0, 140, 141, + 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 622, 8, 39, 1, 40, 1, 40, 1, 40, 1, + 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, + 637, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, + 41, 3, 41, 648, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, + 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, + 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 672, 8, 41, 1, 42, 1, 42, 3, 42, + 676, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, + 43, 1, 43, 1, 43, 1, 43, 3, 43, 690, 8, 43, 1, 43, 1, 43, 1, 44, 1, 44, + 1, 44, 1, 44, 5, 44, 698, 8, 44, 10, 44, 12, 44, 701, 9, 44, 1, 44, 1, + 44, 1, 44, 1, 44, 1, 44, 5, 44, 708, 8, 44, 10, 44, 12, 44, 711, 9, 44, + 3, 44, 713, 8, 44, 1, 44, 1, 44, 3, 44, 717, 8, 44, 1, 44, 1, 44, 3, 44, + 721, 8, 44, 1, 45, 1, 45, 3, 45, 725, 8, 45, 1, 45, 1, 45, 3, 45, 729, + 8, 45, 1, 46, 1, 46, 3, 46, 733, 8, 46, 1, 46, 1, 46, 3, 46, 737, 8, 46, + 1, 47, 1, 47, 3, 47, 741, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 746, 8, 47, + 10, 47, 12, 47, 749, 9, 47, 1, 47, 1, 47, 1, 47, 5, 47, 754, 8, 47, 10, + 47, 12, 47, 757, 9, 47, 3, 47, 759, 8, 47, 1, 47, 1, 47, 3, 47, 763, 8, + 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 770, 8, 47, 3, 47, 772, 8, + 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, + 783, 8, 47, 10, 47, 12, 47, 786, 9, 47, 3, 47, 788, 8, 47, 1, 48, 1, 48, + 3, 48, 792, 8, 48, 1, 48, 3, 48, 795, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, + 3, 48, 801, 8, 48, 1, 48, 3, 48, 804, 8, 48, 3, 48, 806, 8, 48, 1, 49, + 3, 49, 809, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 3, + 50, 818, 8, 50, 1, 50, 3, 50, 821, 8, 50, 1, 50, 1, 50, 1, 50, 3, 50, 826, + 8, 50, 1, 50, 3, 50, 829, 8, 50, 1, 51, 1, 51, 1, 51, 3, 51, 834, 8, 51, + 1, 51, 3, 51, 837, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 843, 8, 51, + 10, 51, 12, 51, 846, 9, 51, 1, 51, 1, 51, 1, 51, 5, 51, 851, 8, 51, 10, + 51, 12, 51, 854, 9, 51, 3, 51, 856, 8, 51, 1, 51, 1, 51, 3, 51, 860, 8, + 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 870, + 8, 53, 1, 53, 3, 53, 873, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 879, + 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, + 53, 890, 8, 53, 10, 53, 12, 53, 893, 9, 53, 1, 53, 3, 53, 896, 8, 53, 1, + 53, 3, 53, 899, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, + 3, 54, 908, 8, 54, 3, 54, 910, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, + 1, 54, 1, 54, 5, 54, 919, 8, 54, 10, 54, 12, 54, 922, 9, 54, 1, 54, 1, + 54, 3, 54, 926, 8, 54, 3, 54, 928, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 3, + 55, 934, 8, 55, 1, 55, 3, 55, 937, 8, 55, 1, 55, 1, 55, 3, 55, 941, 8, + 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 948, 8, 56, 1, 56, 1, 56, + 1, 56, 1, 56, 3, 56, 954, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, + 56, 1, 56, 3, 56, 963, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 968, 8, 56, 1, + 56, 1, 56, 3, 56, 972, 8, 56, 1, 56, 1, 56, 3, 56, 976, 8, 56, 1, 56, 1, + 56, 1, 56, 3, 56, 981, 8, 56, 1, 56, 1, 56, 3, 56, 985, 8, 56, 1, 56, 1, + 56, 3, 56, 989, 8, 56, 1, 56, 4, 56, 992, 8, 56, 11, 56, 12, 56, 993, 1, + 56, 1, 56, 3, 56, 998, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1003, 8, 56, + 1, 56, 3, 56, 1006, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1012, 8, + 56, 1, 56, 1, 56, 3, 56, 1016, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, + 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1029, 8, 56, 1, 56, 1, + 56, 1, 56, 1, 56, 3, 56, 1035, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, + 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, + 56, 1, 56, 1, 56, 3, 56, 1055, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, + 1061, 8, 56, 1, 56, 1, 56, 3, 56, 1065, 8, 56, 3, 56, 1067, 8, 56, 1, 56, + 1, 56, 3, 56, 1071, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1078, + 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1084, 8, 56, 1, 56, 1, 56, 1, + 56, 1, 56, 1, 56, 3, 56, 1091, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, + 1, 56, 3, 56, 1099, 8, 56, 5, 56, 1101, 8, 56, 10, 56, 12, 56, 1104, 9, + 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1110, 8, 57, 1, 57, 1, 57, 1, 57, + 1, 57, 1, 57, 5, 57, 1117, 8, 57, 10, 57, 12, 57, 1120, 9, 57, 3, 57, 1122, + 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, + 59, 5, 59, 1134, 8, 59, 10, 59, 12, 59, 1137, 9, 59, 1, 60, 1, 60, 1, 60, + 3, 60, 1142, 8, 60, 1, 60, 1, 60, 3, 60, 1146, 8, 60, 1, 60, 1, 60, 1, + 61, 1, 61, 1, 61, 5, 61, 1153, 8, 61, 10, 61, 12, 61, 1156, 9, 61, 1, 62, + 1, 62, 1, 62, 1, 62, 3, 62, 1162, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, + 62, 1168, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1175, 8, 62, + 1, 62, 3, 62, 1178, 8, 62, 1, 63, 5, 63, 1181, 8, 63, 10, 63, 12, 63, 1184, + 9, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1191, 8, 64, 1, 64, 1, + 64, 1, 64, 1, 64, 3, 64, 1197, 8, 64, 1, 64, 1, 64, 3, 64, 1201, 8, 64, + 1, 64, 1, 64, 3, 64, 1205, 8, 64, 1, 64, 1, 64, 3, 64, 1209, 8, 64, 1, + 64, 1, 64, 3, 64, 1213, 8, 64, 1, 64, 1, 64, 3, 64, 1217, 8, 64, 1, 64, + 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, + 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, + 3, 64, 1241, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1247, 8, 64, 1, + 64, 1, 64, 3, 64, 1251, 8, 64, 3, 64, 1253, 8, 64, 1, 64, 1, 64, 3, 64, + 1257, 8, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1262, 8, 64, 1, 64, 1, 64, 1, + 64, 1, 64, 1, 64, 1, 64, 3, 64, 1270, 8, 64, 5, 64, 1272, 8, 64, 10, 64, + 12, 64, 1275, 9, 64, 1, 65, 1, 65, 1, 65, 5, 65, 1280, 8, 65, 10, 65, 12, + 65, 1283, 9, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, + 1292, 8, 66, 10, 66, 12, 66, 1295, 9, 66, 1, 66, 1, 66, 3, 66, 1299, 8, + 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1306, 8, 66, 1, 66, 1, 66, + 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1318, 8, + 66, 1, 66, 1, 66, 5, 66, 1322, 8, 66, 10, 66, 12, 66, 1325, 9, 66, 1, 66, + 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 1333, 8, 66, 10, 66, 12, 66, + 1336, 9, 66, 1, 66, 1, 66, 1, 66, 5, 66, 1341, 8, 66, 10, 66, 12, 66, 1344, + 9, 66, 1, 66, 3, 66, 1347, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, + 66, 1, 66, 1, 66, 3, 66, 1357, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, + 1, 66, 3, 66, 1365, 8, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 3, 68, 1372, + 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 5, 69, 1379, 8, 69, 10, 69, 12, + 69, 1382, 9, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 0, 2, + 112, 128, 71, 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, 0, 15, 1, 0, 20, 21, 1, 0, 129, 130, 1, 0, 140, 141, 3, 0, 52, 52, 56, 56, 67, 67, 1, 0, 64, 65, 1, 0, 62, 63, 1, 0, 38, 41, - 2, 0, 46, 46, 59, 59, 1, 0, 83, 84, 1, 0, 110, 111, 2, 0, 79, 81, 105, - 105, 3, 0, 14, 14, 19, 19, 22, 22, 1, 0, 70, 71, 2, 0, 15, 16, 23, 27, - 2, 0, 11, 11, 20, 21, 2, 0, 29, 29, 140, 140, 1612, 0, 155, 1, 0, 0, 0, - 2, 161, 1, 0, 0, 0, 4, 164, 1, 0, 0, 0, 6, 167, 1, 0, 0, 0, 8, 170, 1, - 0, 0, 0, 10, 187, 1, 0, 0, 0, 12, 193, 1, 0, 0, 0, 14, 195, 1, 0, 0, 0, - 16, 203, 1, 0, 0, 0, 18, 215, 1, 0, 0, 0, 20, 218, 1, 0, 0, 0, 22, 220, - 1, 0, 0, 0, 24, 228, 1, 0, 0, 0, 26, 238, 1, 0, 0, 0, 28, 256, 1, 0, 0, - 0, 30, 260, 1, 0, 0, 0, 32, 283, 1, 0, 0, 0, 34, 300, 1, 0, 0, 0, 36, 308, - 1, 0, 0, 0, 38, 316, 1, 0, 0, 0, 40, 323, 1, 0, 0, 0, 42, 334, 1, 0, 0, - 0, 44, 360, 1, 0, 0, 0, 46, 384, 1, 0, 0, 0, 48, 392, 1, 0, 0, 0, 50, 402, - 1, 0, 0, 0, 52, 422, 1, 0, 0, 0, 54, 443, 1, 0, 0, 0, 56, 445, 1, 0, 0, - 0, 58, 457, 1, 0, 0, 0, 60, 472, 1, 0, 0, 0, 62, 477, 1, 0, 0, 0, 64, 499, - 1, 0, 0, 0, 66, 521, 1, 0, 0, 0, 68, 535, 1, 0, 0, 0, 70, 550, 1, 0, 0, - 0, 72, 562, 1, 0, 0, 0, 74, 582, 1, 0, 0, 0, 76, 606, 1, 0, 0, 0, 78, 633, - 1, 0, 0, 0, 80, 635, 1, 0, 0, 0, 82, 661, 1, 0, 0, 0, 84, 677, 1, 0, 0, - 0, 86, 682, 1, 0, 0, 0, 88, 686, 1, 0, 0, 0, 90, 692, 1, 0, 0, 0, 92, 696, - 1, 0, 0, 0, 94, 701, 1, 0, 0, 0, 96, 705, 1, 0, 0, 0, 98, 717, 1, 0, 0, - 0, 100, 725, 1, 0, 0, 0, 102, 760, 1, 0, 0, 0, 104, 762, 1, 0, 0, 0, 106, - 770, 1, 0, 0, 0, 108, 837, 1, 0, 0, 0, 110, 840, 1, 0, 0, 0, 112, 860, - 1, 0, 0, 0, 114, 862, 1, 0, 0, 0, 116, 893, 1, 0, 0, 0, 118, 897, 1, 0, - 0, 0, 120, 932, 1, 0, 0, 0, 122, 961, 1, 0, 0, 0, 124, 1047, 1, 0, 0, 0, - 126, 1137, 1, 0, 0, 0, 128, 1157, 1, 0, 0, 0, 130, 1162, 1, 0, 0, 0, 132, - 1170, 1, 0, 0, 0, 134, 1186, 1, 0, 0, 0, 136, 1209, 1, 0, 0, 0, 138, 1214, - 1, 0, 0, 0, 140, 1248, 1, 0, 0, 0, 142, 1308, 1, 0, 0, 0, 144, 1396, 1, - 0, 0, 0, 146, 1398, 1, 0, 0, 0, 148, 1400, 1, 0, 0, 0, 150, 1407, 1, 0, - 0, 0, 152, 1417, 1, 0, 0, 0, 154, 156, 3, 68, 34, 0, 155, 154, 1, 0, 0, - 0, 156, 157, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, - 159, 1, 0, 0, 0, 159, 160, 5, 0, 0, 1, 160, 1, 1, 0, 0, 0, 161, 162, 3, - 24, 12, 0, 162, 163, 5, 0, 0, 1, 163, 3, 1, 0, 0, 0, 164, 165, 3, 68, 34, - 0, 165, 166, 5, 0, 0, 1, 166, 5, 1, 0, 0, 0, 167, 168, 3, 134, 67, 0, 168, - 169, 5, 0, 0, 1, 169, 7, 1, 0, 0, 0, 170, 171, 3, 138, 69, 0, 171, 172, - 5, 0, 0, 1, 172, 9, 1, 0, 0, 0, 173, 188, 5, 128, 0, 0, 174, 176, 7, 0, - 0, 0, 175, 174, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, - 177, 188, 5, 131, 0, 0, 178, 180, 7, 0, 0, 0, 179, 178, 1, 0, 0, 0, 179, - 180, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 182, 5, 131, 0, 0, 182, 183, - 5, 12, 0, 0, 183, 188, 5, 131, 0, 0, 184, 188, 7, 1, 0, 0, 185, 188, 5, - 61, 0, 0, 186, 188, 5, 132, 0, 0, 187, 173, 1, 0, 0, 0, 187, 175, 1, 0, - 0, 0, 187, 179, 1, 0, 0, 0, 187, 184, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, - 187, 186, 1, 0, 0, 0, 188, 11, 1, 0, 0, 0, 189, 190, 5, 32, 0, 0, 190, - 191, 5, 139, 0, 0, 191, 194, 5, 32, 0, 0, 192, 194, 5, 139, 0, 0, 193, - 189, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 13, 1, 0, 0, 0, 195, 200, 3, - 12, 6, 0, 196, 197, 5, 9, 0, 0, 197, 199, 3, 12, 6, 0, 198, 196, 1, 0, - 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, - 201, 15, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 209, 5, 139, 0, 0, 204, - 205, 5, 7, 0, 0, 205, 206, 5, 131, 0, 0, 206, 207, 5, 9, 0, 0, 207, 208, - 5, 131, 0, 0, 208, 210, 5, 8, 0, 0, 209, 204, 1, 0, 0, 0, 209, 210, 1, - 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 212, 5, 3, 0, 0, 212, 214, 5, 4, 0, - 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 17, 1, 0, 0, 0, 215, - 216, 5, 28, 0, 0, 216, 217, 3, 16, 8, 0, 217, 19, 1, 0, 0, 0, 218, 219, - 7, 2, 0, 0, 219, 21, 1, 0, 0, 0, 220, 225, 3, 20, 10, 0, 221, 222, 5, 9, - 0, 0, 222, 224, 3, 20, 10, 0, 223, 221, 1, 0, 0, 0, 224, 227, 1, 0, 0, - 0, 225, 223, 1, 0, 0, 0, 225, 226, 1, 0, 0, 0, 226, 23, 1, 0, 0, 0, 227, - 225, 1, 0, 0, 0, 228, 235, 3, 28, 14, 0, 229, 234, 3, 30, 15, 0, 230, 234, - 3, 32, 16, 0, 231, 234, 3, 62, 31, 0, 232, 234, 3, 64, 32, 0, 233, 229, - 1, 0, 0, 0, 233, 230, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 233, 232, 1, 0, - 0, 0, 234, 237, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, - 236, 25, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 238, 239, 5, 141, 0, 0, 239, - 252, 5, 7, 0, 0, 240, 241, 5, 139, 0, 0, 241, 242, 5, 15, 0, 0, 242, 249, - 3, 10, 5, 0, 243, 244, 5, 9, 0, 0, 244, 245, 5, 139, 0, 0, 245, 246, 5, - 15, 0, 0, 246, 248, 3, 10, 5, 0, 247, 243, 1, 0, 0, 0, 248, 251, 1, 0, - 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 253, 1, 0, 0, 0, - 251, 249, 1, 0, 0, 0, 252, 240, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, - 254, 1, 0, 0, 0, 254, 255, 5, 8, 0, 0, 255, 27, 1, 0, 0, 0, 256, 257, 5, - 33, 0, 0, 257, 258, 5, 139, 0, 0, 258, 259, 5, 6, 0, 0, 259, 29, 1, 0, - 0, 0, 260, 261, 5, 34, 0, 0, 261, 277, 5, 139, 0, 0, 262, 263, 5, 1, 0, - 0, 263, 264, 5, 139, 0, 0, 264, 265, 5, 5, 0, 0, 265, 272, 3, 10, 5, 0, - 266, 267, 5, 9, 0, 0, 267, 268, 5, 139, 0, 0, 268, 269, 5, 5, 0, 0, 269, - 271, 3, 10, 5, 0, 270, 266, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272, 270, - 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 275, 1, 0, 0, 0, 274, 272, 1, 0, - 0, 0, 275, 276, 5, 2, 0, 0, 276, 278, 1, 0, 0, 0, 277, 262, 1, 0, 0, 0, - 277, 278, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 280, 5, 82, 0, 0, 280, - 281, 5, 139, 0, 0, 281, 282, 5, 6, 0, 0, 282, 31, 1, 0, 0, 0, 283, 284, - 5, 35, 0, 0, 284, 285, 5, 139, 0, 0, 285, 286, 5, 1, 0, 0, 286, 295, 3, - 34, 17, 0, 287, 291, 5, 9, 0, 0, 288, 292, 3, 34, 17, 0, 289, 292, 3, 38, - 19, 0, 290, 292, 3, 42, 21, 0, 291, 288, 1, 0, 0, 0, 291, 289, 1, 0, 0, - 0, 291, 290, 1, 0, 0, 0, 292, 294, 1, 0, 0, 0, 293, 287, 1, 0, 0, 0, 294, - 297, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, - 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, 299, 5, 2, 0, 0, 299, 33, 1, 0, - 0, 0, 300, 301, 5, 139, 0, 0, 301, 305, 3, 16, 8, 0, 302, 304, 3, 52, 26, - 0, 303, 302, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, - 306, 1, 0, 0, 0, 306, 35, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 309, 5, - 139, 0, 0, 309, 313, 3, 16, 8, 0, 310, 312, 3, 54, 27, 0, 311, 310, 1, - 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, - 0, 314, 37, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 142, 0, 0, 317, - 318, 7, 3, 0, 0, 318, 319, 5, 7, 0, 0, 319, 320, 3, 14, 7, 0, 320, 321, - 5, 8, 0, 0, 321, 39, 1, 0, 0, 0, 322, 324, 5, 56, 0, 0, 323, 322, 1, 0, - 0, 0, 323, 324, 1, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 326, 5, 67, 0, 0, - 326, 327, 3, 12, 6, 0, 327, 328, 5, 7, 0, 0, 328, 329, 3, 14, 7, 0, 329, - 330, 5, 8, 0, 0, 330, 41, 1, 0, 0, 0, 331, 332, 5, 51, 0, 0, 332, 335, - 5, 53, 0, 0, 333, 335, 5, 133, 0, 0, 334, 331, 1, 0, 0, 0, 334, 333, 1, - 0, 0, 0, 335, 336, 1, 0, 0, 0, 336, 337, 5, 7, 0, 0, 337, 338, 3, 14, 7, - 0, 338, 339, 5, 8, 0, 0, 339, 340, 7, 4, 0, 0, 340, 341, 5, 139, 0, 0, - 341, 342, 5, 7, 0, 0, 342, 343, 3, 14, 7, 0, 343, 347, 5, 8, 0, 0, 344, - 346, 3, 44, 22, 0, 345, 344, 1, 0, 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, - 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 43, 1, 0, 0, 0, 349, 347, 1, 0, - 0, 0, 350, 351, 5, 54, 0, 0, 351, 354, 5, 63, 0, 0, 352, 354, 5, 134, 0, - 0, 353, 350, 1, 0, 0, 0, 353, 352, 1, 0, 0, 0, 354, 361, 1, 0, 0, 0, 355, - 356, 5, 54, 0, 0, 356, 359, 5, 62, 0, 0, 357, 359, 5, 135, 0, 0, 358, 355, - 1, 0, 0, 0, 358, 357, 1, 0, 0, 0, 359, 361, 1, 0, 0, 0, 360, 353, 1, 0, - 0, 0, 360, 358, 1, 0, 0, 0, 361, 363, 1, 0, 0, 0, 362, 364, 5, 55, 0, 0, - 363, 362, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 382, 1, 0, 0, 0, 365, - 366, 5, 92, 0, 0, 366, 369, 5, 36, 0, 0, 367, 369, 5, 138, 0, 0, 368, 365, - 1, 0, 0, 0, 368, 367, 1, 0, 0, 0, 369, 383, 1, 0, 0, 0, 370, 383, 5, 57, - 0, 0, 371, 372, 5, 59, 0, 0, 372, 375, 5, 61, 0, 0, 373, 375, 5, 137, 0, - 0, 374, 371, 1, 0, 0, 0, 374, 373, 1, 0, 0, 0, 375, 383, 1, 0, 0, 0, 376, - 377, 5, 59, 0, 0, 377, 380, 5, 60, 0, 0, 378, 380, 5, 136, 0, 0, 379, 376, - 1, 0, 0, 0, 379, 378, 1, 0, 0, 0, 380, 383, 1, 0, 0, 0, 381, 383, 5, 58, - 0, 0, 382, 368, 1, 0, 0, 0, 382, 370, 1, 0, 0, 0, 382, 374, 1, 0, 0, 0, - 382, 379, 1, 0, 0, 0, 382, 381, 1, 0, 0, 0, 383, 45, 1, 0, 0, 0, 384, 389, - 3, 16, 8, 0, 385, 386, 5, 9, 0, 0, 386, 388, 3, 16, 8, 0, 387, 385, 1, - 0, 0, 0, 388, 391, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 389, 390, 1, 0, 0, - 0, 390, 47, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 392, 393, 5, 139, 0, 0, 393, - 399, 3, 16, 8, 0, 394, 395, 5, 9, 0, 0, 395, 396, 5, 139, 0, 0, 396, 398, - 3, 16, 8, 0, 397, 394, 1, 0, 0, 0, 398, 401, 1, 0, 0, 0, 399, 397, 1, 0, - 0, 0, 399, 400, 1, 0, 0, 0, 400, 49, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, - 402, 403, 3, 20, 10, 0, 403, 410, 3, 16, 8, 0, 404, 405, 5, 9, 0, 0, 405, - 406, 3, 20, 10, 0, 406, 407, 3, 16, 8, 0, 407, 409, 1, 0, 0, 0, 408, 404, - 1, 0, 0, 0, 409, 412, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, - 0, 0, 411, 51, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 413, 423, 5, 139, 0, 0, - 414, 416, 5, 52, 0, 0, 415, 417, 5, 53, 0, 0, 416, 415, 1, 0, 0, 0, 416, - 417, 1, 0, 0, 0, 417, 423, 1, 0, 0, 0, 418, 419, 5, 66, 0, 0, 419, 423, - 5, 61, 0, 0, 420, 423, 5, 60, 0, 0, 421, 423, 5, 56, 0, 0, 422, 413, 1, - 0, 0, 0, 422, 414, 1, 0, 0, 0, 422, 418, 1, 0, 0, 0, 422, 420, 1, 0, 0, - 0, 422, 421, 1, 0, 0, 0, 423, 428, 1, 0, 0, 0, 424, 425, 5, 7, 0, 0, 425, - 426, 3, 10, 5, 0, 426, 427, 5, 8, 0, 0, 427, 429, 1, 0, 0, 0, 428, 424, - 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 53, 1, 0, 0, 0, 430, 431, 5, 52, - 0, 0, 431, 444, 5, 53, 0, 0, 432, 444, 5, 56, 0, 0, 433, 434, 5, 66, 0, - 0, 434, 444, 5, 61, 0, 0, 435, 436, 5, 60, 0, 0, 436, 444, 3, 10, 5, 0, - 437, 444, 3, 58, 29, 0, 438, 439, 5, 50, 0, 0, 439, 440, 5, 7, 0, 0, 440, - 441, 3, 124, 62, 0, 441, 442, 5, 8, 0, 0, 442, 444, 1, 0, 0, 0, 443, 430, - 1, 0, 0, 0, 443, 432, 1, 0, 0, 0, 443, 433, 1, 0, 0, 0, 443, 435, 1, 0, - 0, 0, 443, 437, 1, 0, 0, 0, 443, 438, 1, 0, 0, 0, 444, 55, 1, 0, 0, 0, - 445, 446, 5, 54, 0, 0, 446, 455, 7, 5, 0, 0, 447, 448, 5, 59, 0, 0, 448, - 456, 5, 61, 0, 0, 449, 450, 5, 59, 0, 0, 450, 456, 5, 60, 0, 0, 451, 456, - 5, 58, 0, 0, 452, 453, 5, 92, 0, 0, 453, 456, 5, 36, 0, 0, 454, 456, 5, - 57, 0, 0, 455, 447, 1, 0, 0, 0, 455, 449, 1, 0, 0, 0, 455, 451, 1, 0, 0, - 0, 455, 452, 1, 0, 0, 0, 455, 454, 1, 0, 0, 0, 456, 57, 1, 0, 0, 0, 457, - 458, 5, 64, 0, 0, 458, 459, 3, 12, 6, 0, 459, 460, 5, 7, 0, 0, 460, 461, - 3, 12, 6, 0, 461, 462, 5, 8, 0, 0, 462, 470, 1, 0, 0, 0, 463, 467, 3, 56, - 28, 0, 464, 466, 3, 56, 28, 0, 465, 464, 1, 0, 0, 0, 466, 469, 1, 0, 0, - 0, 467, 465, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 471, 1, 0, 0, 0, 469, - 467, 1, 0, 0, 0, 470, 463, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 59, 1, - 0, 0, 0, 472, 473, 7, 6, 0, 0, 473, 61, 1, 0, 0, 0, 474, 476, 3, 26, 13, - 0, 475, 474, 1, 0, 0, 0, 476, 479, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 477, - 478, 1, 0, 0, 0, 478, 480, 1, 0, 0, 0, 479, 477, 1, 0, 0, 0, 480, 481, - 5, 36, 0, 0, 481, 482, 5, 139, 0, 0, 482, 484, 5, 7, 0, 0, 483, 485, 3, - 22, 11, 0, 484, 483, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 486, 1, 0, - 0, 0, 486, 488, 5, 8, 0, 0, 487, 489, 3, 60, 30, 0, 488, 487, 1, 0, 0, - 0, 489, 490, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, - 492, 1, 0, 0, 0, 492, 493, 5, 1, 0, 0, 493, 494, 3, 134, 67, 0, 494, 495, - 5, 2, 0, 0, 495, 63, 1, 0, 0, 0, 496, 498, 3, 26, 13, 0, 497, 496, 1, 0, - 0, 0, 498, 501, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, - 500, 502, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 502, 503, 5, 37, 0, 0, 503, - 504, 5, 139, 0, 0, 504, 506, 5, 7, 0, 0, 505, 507, 3, 50, 25, 0, 506, 505, - 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 510, 5, 8, - 0, 0, 509, 511, 3, 60, 30, 0, 510, 509, 1, 0, 0, 0, 511, 512, 1, 0, 0, - 0, 512, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 515, 1, 0, 0, 0, 514, - 516, 3, 66, 33, 0, 515, 514, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 517, - 1, 0, 0, 0, 517, 518, 5, 1, 0, 0, 518, 519, 3, 138, 69, 0, 519, 520, 5, - 2, 0, 0, 520, 65, 1, 0, 0, 0, 521, 533, 5, 91, 0, 0, 522, 524, 5, 35, 0, - 0, 523, 522, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, - 526, 5, 7, 0, 0, 526, 527, 3, 48, 24, 0, 527, 528, 5, 8, 0, 0, 528, 534, - 1, 0, 0, 0, 529, 530, 5, 7, 0, 0, 530, 531, 3, 46, 23, 0, 531, 532, 5, - 8, 0, 0, 532, 534, 1, 0, 0, 0, 533, 523, 1, 0, 0, 0, 533, 529, 1, 0, 0, - 0, 534, 67, 1, 0, 0, 0, 535, 536, 3, 70, 35, 0, 536, 537, 5, 6, 0, 0, 537, - 69, 1, 0, 0, 0, 538, 540, 5, 93, 0, 0, 539, 541, 5, 127, 0, 0, 540, 539, - 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 547, 3, 72, - 36, 0, 543, 544, 5, 9, 0, 0, 544, 546, 3, 72, 36, 0, 545, 543, 1, 0, 0, - 0, 546, 549, 1, 0, 0, 0, 547, 545, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, - 551, 1, 0, 0, 0, 549, 547, 1, 0, 0, 0, 550, 538, 1, 0, 0, 0, 550, 551, - 1, 0, 0, 0, 551, 560, 1, 0, 0, 0, 552, 561, 3, 74, 37, 0, 553, 561, 3, - 80, 40, 0, 554, 561, 3, 96, 48, 0, 555, 561, 3, 98, 49, 0, 556, 561, 3, - 100, 50, 0, 557, 561, 3, 114, 57, 0, 558, 561, 3, 118, 59, 0, 559, 561, - 3, 122, 61, 0, 560, 552, 1, 0, 0, 0, 560, 553, 1, 0, 0, 0, 560, 554, 1, - 0, 0, 0, 560, 555, 1, 0, 0, 0, 560, 556, 1, 0, 0, 0, 560, 557, 1, 0, 0, - 0, 560, 558, 1, 0, 0, 0, 560, 559, 1, 0, 0, 0, 561, 71, 1, 0, 0, 0, 562, - 575, 3, 12, 6, 0, 563, 572, 5, 7, 0, 0, 564, 569, 3, 12, 6, 0, 565, 566, - 5, 9, 0, 0, 566, 568, 3, 12, 6, 0, 567, 565, 1, 0, 0, 0, 568, 571, 1, 0, - 0, 0, 569, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, - 571, 569, 1, 0, 0, 0, 572, 564, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, - 574, 1, 0, 0, 0, 574, 576, 5, 8, 0, 0, 575, 563, 1, 0, 0, 0, 575, 576, - 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 5, 82, 0, 0, 578, 579, 5, 7, - 0, 0, 579, 580, 3, 100, 50, 0, 580, 581, 5, 8, 0, 0, 581, 73, 1, 0, 0, - 0, 582, 583, 5, 42, 0, 0, 583, 584, 5, 35, 0, 0, 584, 585, 3, 12, 6, 0, - 585, 589, 5, 7, 0, 0, 586, 590, 3, 36, 18, 0, 587, 590, 3, 76, 38, 0, 588, - 590, 3, 40, 20, 0, 589, 586, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 588, - 1, 0, 0, 0, 590, 599, 1, 0, 0, 0, 591, 595, 5, 9, 0, 0, 592, 596, 3, 36, - 18, 0, 593, 596, 3, 76, 38, 0, 594, 596, 3, 40, 20, 0, 595, 592, 1, 0, - 0, 0, 595, 593, 1, 0, 0, 0, 595, 594, 1, 0, 0, 0, 596, 598, 1, 0, 0, 0, - 597, 591, 1, 0, 0, 0, 598, 601, 1, 0, 0, 0, 599, 597, 1, 0, 0, 0, 599, - 600, 1, 0, 0, 0, 600, 602, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 602, 603, - 5, 8, 0, 0, 603, 75, 1, 0, 0, 0, 604, 605, 5, 49, 0, 0, 605, 607, 3, 12, - 6, 0, 606, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, - 608, 609, 3, 78, 39, 0, 609, 77, 1, 0, 0, 0, 610, 611, 5, 52, 0, 0, 611, - 612, 5, 53, 0, 0, 612, 613, 5, 7, 0, 0, 613, 614, 3, 14, 7, 0, 614, 615, - 5, 8, 0, 0, 615, 634, 1, 0, 0, 0, 616, 617, 5, 56, 0, 0, 617, 618, 5, 7, - 0, 0, 618, 619, 3, 14, 7, 0, 619, 620, 5, 8, 0, 0, 620, 634, 1, 0, 0, 0, - 621, 622, 5, 50, 0, 0, 622, 623, 5, 7, 0, 0, 623, 624, 3, 124, 62, 0, 624, - 625, 5, 8, 0, 0, 625, 634, 1, 0, 0, 0, 626, 627, 5, 51, 0, 0, 627, 628, - 5, 53, 0, 0, 628, 629, 5, 7, 0, 0, 629, 630, 3, 12, 6, 0, 630, 631, 5, - 8, 0, 0, 631, 632, 3, 58, 29, 0, 632, 634, 1, 0, 0, 0, 633, 610, 1, 0, - 0, 0, 633, 616, 1, 0, 0, 0, 633, 621, 1, 0, 0, 0, 633, 626, 1, 0, 0, 0, - 634, 79, 1, 0, 0, 0, 635, 636, 5, 43, 0, 0, 636, 637, 5, 35, 0, 0, 637, - 659, 3, 12, 6, 0, 638, 660, 3, 82, 41, 0, 639, 644, 3, 84, 42, 0, 640, - 641, 5, 9, 0, 0, 641, 643, 3, 84, 42, 0, 642, 640, 1, 0, 0, 0, 643, 646, - 1, 0, 0, 0, 644, 642, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 660, 1, 0, - 0, 0, 646, 644, 1, 0, 0, 0, 647, 652, 3, 86, 43, 0, 648, 649, 5, 9, 0, - 0, 649, 651, 3, 86, 43, 0, 650, 648, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, - 652, 650, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 660, 1, 0, 0, 0, 654, - 652, 1, 0, 0, 0, 655, 660, 3, 88, 44, 0, 656, 660, 3, 90, 45, 0, 657, 660, - 3, 92, 46, 0, 658, 660, 3, 94, 47, 0, 659, 638, 1, 0, 0, 0, 659, 639, 1, - 0, 0, 0, 659, 647, 1, 0, 0, 0, 659, 655, 1, 0, 0, 0, 659, 656, 1, 0, 0, - 0, 659, 657, 1, 0, 0, 0, 659, 658, 1, 0, 0, 0, 660, 81, 1, 0, 0, 0, 661, - 662, 5, 43, 0, 0, 662, 663, 5, 44, 0, 0, 663, 664, 3, 12, 6, 0, 664, 675, - 7, 7, 0, 0, 665, 666, 5, 66, 0, 0, 666, 669, 5, 61, 0, 0, 667, 669, 5, - 60, 0, 0, 668, 665, 1, 0, 0, 0, 668, 667, 1, 0, 0, 0, 669, 671, 1, 0, 0, - 0, 670, 672, 3, 10, 5, 0, 671, 670, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, - 676, 1, 0, 0, 0, 673, 674, 5, 49, 0, 0, 674, 676, 3, 12, 6, 0, 675, 668, - 1, 0, 0, 0, 675, 673, 1, 0, 0, 0, 676, 83, 1, 0, 0, 0, 677, 678, 5, 45, - 0, 0, 678, 679, 5, 44, 0, 0, 679, 680, 3, 12, 6, 0, 680, 681, 3, 16, 8, - 0, 681, 85, 1, 0, 0, 0, 682, 683, 5, 46, 0, 0, 683, 684, 5, 44, 0, 0, 684, - 685, 3, 12, 6, 0, 685, 87, 1, 0, 0, 0, 686, 687, 5, 47, 0, 0, 687, 688, - 5, 44, 0, 0, 688, 689, 3, 12, 6, 0, 689, 690, 5, 48, 0, 0, 690, 691, 3, - 12, 6, 0, 691, 89, 1, 0, 0, 0, 692, 693, 5, 47, 0, 0, 693, 694, 5, 48, - 0, 0, 694, 695, 3, 12, 6, 0, 695, 91, 1, 0, 0, 0, 696, 697, 5, 45, 0, 0, - 697, 698, 5, 49, 0, 0, 698, 699, 3, 12, 6, 0, 699, 700, 3, 78, 39, 0, 700, - 93, 1, 0, 0, 0, 701, 702, 5, 46, 0, 0, 702, 703, 5, 49, 0, 0, 703, 704, - 3, 12, 6, 0, 704, 95, 1, 0, 0, 0, 705, 707, 5, 42, 0, 0, 706, 708, 5, 56, - 0, 0, 707, 706, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, - 709, 710, 5, 67, 0, 0, 710, 711, 3, 12, 6, 0, 711, 712, 5, 54, 0, 0, 712, - 713, 3, 12, 6, 0, 713, 714, 5, 7, 0, 0, 714, 715, 3, 14, 7, 0, 715, 716, - 5, 8, 0, 0, 716, 97, 1, 0, 0, 0, 717, 718, 5, 46, 0, 0, 718, 721, 5, 67, - 0, 0, 719, 720, 5, 117, 0, 0, 720, 722, 5, 75, 0, 0, 721, 719, 1, 0, 0, - 0, 721, 722, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 724, 3, 12, 6, 0, 724, - 99, 1, 0, 0, 0, 725, 731, 3, 106, 53, 0, 726, 727, 3, 102, 51, 0, 727, - 728, 3, 106, 53, 0, 728, 730, 1, 0, 0, 0, 729, 726, 1, 0, 0, 0, 730, 733, - 1, 0, 0, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 744, 1, 0, - 0, 0, 733, 731, 1, 0, 0, 0, 734, 735, 5, 87, 0, 0, 735, 736, 5, 88, 0, - 0, 736, 741, 3, 104, 52, 0, 737, 738, 5, 9, 0, 0, 738, 740, 3, 104, 52, - 0, 739, 737, 1, 0, 0, 0, 740, 743, 1, 0, 0, 0, 741, 739, 1, 0, 0, 0, 741, - 742, 1, 0, 0, 0, 742, 745, 1, 0, 0, 0, 743, 741, 1, 0, 0, 0, 744, 734, - 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 748, 1, 0, 0, 0, 746, 747, 5, 85, - 0, 0, 747, 749, 3, 124, 62, 0, 748, 746, 1, 0, 0, 0, 748, 749, 1, 0, 0, - 0, 749, 752, 1, 0, 0, 0, 750, 751, 5, 86, 0, 0, 751, 753, 3, 124, 62, 0, - 752, 750, 1, 0, 0, 0, 752, 753, 1, 0, 0, 0, 753, 101, 1, 0, 0, 0, 754, - 756, 5, 106, 0, 0, 755, 757, 5, 76, 0, 0, 756, 755, 1, 0, 0, 0, 756, 757, - 1, 0, 0, 0, 757, 761, 1, 0, 0, 0, 758, 761, 5, 107, 0, 0, 759, 761, 5, - 108, 0, 0, 760, 754, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 760, 759, 1, 0, - 0, 0, 761, 103, 1, 0, 0, 0, 762, 764, 3, 124, 62, 0, 763, 765, 7, 8, 0, - 0, 764, 763, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 768, 1, 0, 0, 0, 766, - 767, 5, 109, 0, 0, 767, 769, 7, 9, 0, 0, 768, 766, 1, 0, 0, 0, 768, 769, - 1, 0, 0, 0, 769, 105, 1, 0, 0, 0, 770, 772, 5, 102, 0, 0, 771, 773, 5, - 98, 0, 0, 772, 771, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 774, 1, 0, 0, - 0, 774, 779, 3, 112, 56, 0, 775, 776, 5, 9, 0, 0, 776, 778, 3, 112, 56, - 0, 777, 775, 1, 0, 0, 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, - 780, 1, 0, 0, 0, 780, 790, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 783, - 5, 99, 0, 0, 783, 787, 3, 108, 54, 0, 784, 786, 3, 110, 55, 0, 785, 784, - 1, 0, 0, 0, 786, 789, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 787, 788, 1, 0, - 0, 0, 788, 791, 1, 0, 0, 0, 789, 787, 1, 0, 0, 0, 790, 782, 1, 0, 0, 0, - 790, 791, 1, 0, 0, 0, 791, 794, 1, 0, 0, 0, 792, 793, 5, 100, 0, 0, 793, - 795, 3, 124, 62, 0, 794, 792, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 803, - 1, 0, 0, 0, 796, 797, 5, 89, 0, 0, 797, 798, 5, 88, 0, 0, 798, 801, 3, - 130, 65, 0, 799, 800, 5, 90, 0, 0, 800, 802, 3, 124, 62, 0, 801, 799, 1, - 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 804, 1, 0, 0, 0, 803, 796, 1, 0, 0, - 0, 803, 804, 1, 0, 0, 0, 804, 819, 1, 0, 0, 0, 805, 806, 5, 125, 0, 0, - 806, 807, 3, 12, 6, 0, 807, 808, 5, 82, 0, 0, 808, 816, 3, 126, 63, 0, - 809, 810, 5, 9, 0, 0, 810, 811, 3, 12, 6, 0, 811, 812, 5, 82, 0, 0, 812, - 813, 3, 126, 63, 0, 813, 815, 1, 0, 0, 0, 814, 809, 1, 0, 0, 0, 815, 818, - 1, 0, 0, 0, 816, 814, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 820, 1, 0, - 0, 0, 818, 816, 1, 0, 0, 0, 819, 805, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, - 820, 107, 1, 0, 0, 0, 821, 826, 3, 12, 6, 0, 822, 824, 5, 82, 0, 0, 823, - 822, 1, 0, 0, 0, 823, 824, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 827, - 3, 12, 6, 0, 826, 823, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 838, 1, 0, - 0, 0, 828, 829, 5, 7, 0, 0, 829, 830, 3, 100, 50, 0, 830, 835, 5, 8, 0, - 0, 831, 833, 5, 82, 0, 0, 832, 831, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, - 834, 1, 0, 0, 0, 834, 836, 3, 12, 6, 0, 835, 832, 1, 0, 0, 0, 835, 836, - 1, 0, 0, 0, 836, 838, 1, 0, 0, 0, 837, 821, 1, 0, 0, 0, 837, 828, 1, 0, - 0, 0, 838, 109, 1, 0, 0, 0, 839, 841, 7, 10, 0, 0, 840, 839, 1, 0, 0, 0, - 840, 841, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 843, 5, 78, 0, 0, 843, - 844, 3, 108, 54, 0, 844, 845, 5, 54, 0, 0, 845, 846, 3, 124, 62, 0, 846, - 111, 1, 0, 0, 0, 847, 852, 3, 124, 62, 0, 848, 850, 5, 82, 0, 0, 849, 848, - 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 853, 3, 12, - 6, 0, 852, 849, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 861, 1, 0, 0, 0, - 854, 855, 3, 12, 6, 0, 855, 856, 5, 12, 0, 0, 856, 858, 1, 0, 0, 0, 857, - 854, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 861, - 5, 14, 0, 0, 860, 847, 1, 0, 0, 0, 860, 857, 1, 0, 0, 0, 861, 113, 1, 0, - 0, 0, 862, 863, 5, 63, 0, 0, 863, 868, 3, 12, 6, 0, 864, 866, 5, 82, 0, - 0, 865, 864, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, - 869, 3, 12, 6, 0, 868, 865, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 870, - 1, 0, 0, 0, 870, 871, 5, 59, 0, 0, 871, 876, 3, 116, 58, 0, 872, 873, 5, - 9, 0, 0, 873, 875, 3, 116, 58, 0, 874, 872, 1, 0, 0, 0, 875, 878, 1, 0, - 0, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 887, 1, 0, 0, 0, - 878, 876, 1, 0, 0, 0, 879, 880, 5, 99, 0, 0, 880, 884, 3, 108, 54, 0, 881, - 883, 3, 110, 55, 0, 882, 881, 1, 0, 0, 0, 883, 886, 1, 0, 0, 0, 884, 882, - 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 888, 1, 0, 0, 0, 886, 884, 1, 0, - 0, 0, 887, 879, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 891, 1, 0, 0, 0, - 889, 890, 5, 100, 0, 0, 890, 892, 3, 124, 62, 0, 891, 889, 1, 0, 0, 0, - 891, 892, 1, 0, 0, 0, 892, 115, 1, 0, 0, 0, 893, 894, 3, 12, 6, 0, 894, - 895, 5, 15, 0, 0, 895, 896, 3, 124, 62, 0, 896, 117, 1, 0, 0, 0, 897, 898, - 5, 103, 0, 0, 898, 899, 5, 113, 0, 0, 899, 904, 3, 12, 6, 0, 900, 902, - 5, 82, 0, 0, 901, 900, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 903, 1, 0, - 0, 0, 903, 905, 3, 12, 6, 0, 904, 901, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, - 905, 910, 1, 0, 0, 0, 906, 907, 5, 7, 0, 0, 907, 908, 3, 14, 7, 0, 908, - 909, 5, 8, 0, 0, 909, 911, 1, 0, 0, 0, 910, 906, 1, 0, 0, 0, 910, 911, - 1, 0, 0, 0, 911, 927, 1, 0, 0, 0, 912, 913, 5, 104, 0, 0, 913, 914, 5, - 7, 0, 0, 914, 915, 3, 130, 65, 0, 915, 923, 5, 8, 0, 0, 916, 917, 5, 9, - 0, 0, 917, 918, 5, 7, 0, 0, 918, 919, 3, 130, 65, 0, 919, 920, 5, 8, 0, - 0, 920, 922, 1, 0, 0, 0, 921, 916, 1, 0, 0, 0, 922, 925, 1, 0, 0, 0, 923, - 921, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 928, 1, 0, 0, 0, 925, 923, - 1, 0, 0, 0, 926, 928, 3, 100, 50, 0, 927, 912, 1, 0, 0, 0, 927, 926, 1, - 0, 0, 0, 928, 930, 1, 0, 0, 0, 929, 931, 3, 120, 60, 0, 930, 929, 1, 0, - 0, 0, 930, 931, 1, 0, 0, 0, 931, 119, 1, 0, 0, 0, 932, 933, 5, 54, 0, 0, - 933, 941, 5, 114, 0, 0, 934, 935, 5, 7, 0, 0, 935, 936, 3, 14, 7, 0, 936, - 939, 5, 8, 0, 0, 937, 938, 5, 100, 0, 0, 938, 940, 3, 124, 62, 0, 939, - 937, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 942, 1, 0, 0, 0, 941, 934, - 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 959, 5, 55, - 0, 0, 944, 960, 5, 115, 0, 0, 945, 946, 5, 63, 0, 0, 946, 947, 5, 59, 0, - 0, 947, 952, 3, 116, 58, 0, 948, 949, 5, 9, 0, 0, 949, 951, 3, 116, 58, - 0, 950, 948, 1, 0, 0, 0, 951, 954, 1, 0, 0, 0, 952, 950, 1, 0, 0, 0, 952, - 953, 1, 0, 0, 0, 953, 957, 1, 0, 0, 0, 954, 952, 1, 0, 0, 0, 955, 956, - 5, 100, 0, 0, 956, 958, 3, 124, 62, 0, 957, 955, 1, 0, 0, 0, 957, 958, - 1, 0, 0, 0, 958, 960, 1, 0, 0, 0, 959, 944, 1, 0, 0, 0, 959, 945, 1, 0, - 0, 0, 960, 121, 1, 0, 0, 0, 961, 962, 5, 62, 0, 0, 962, 963, 5, 99, 0, - 0, 963, 968, 3, 12, 6, 0, 964, 966, 5, 82, 0, 0, 965, 964, 1, 0, 0, 0, - 965, 966, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 969, 3, 12, 6, 0, 968, - 965, 1, 0, 0, 0, 968, 969, 1, 0, 0, 0, 969, 972, 1, 0, 0, 0, 970, 971, - 5, 100, 0, 0, 971, 973, 3, 124, 62, 0, 972, 970, 1, 0, 0, 0, 972, 973, - 1, 0, 0, 0, 973, 123, 1, 0, 0, 0, 974, 975, 6, 62, -1, 0, 975, 976, 5, - 7, 0, 0, 976, 977, 3, 124, 62, 0, 977, 979, 5, 8, 0, 0, 978, 980, 3, 18, - 9, 0, 979, 978, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 1048, 1, 0, 0, 0, - 981, 982, 7, 0, 0, 0, 982, 1048, 3, 124, 62, 20, 983, 985, 3, 10, 5, 0, - 984, 986, 3, 18, 9, 0, 985, 984, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, - 1048, 1, 0, 0, 0, 987, 994, 3, 132, 66, 0, 988, 989, 5, 126, 0, 0, 989, - 990, 5, 7, 0, 0, 990, 991, 5, 100, 0, 0, 991, 992, 3, 124, 62, 0, 992, - 993, 5, 8, 0, 0, 993, 995, 1, 0, 0, 0, 994, 988, 1, 0, 0, 0, 994, 995, - 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 999, 5, 123, 0, 0, 997, 1000, 3, - 126, 63, 0, 998, 1000, 5, 139, 0, 0, 999, 997, 1, 0, 0, 0, 999, 998, 1, - 0, 0, 0, 1000, 1048, 1, 0, 0, 0, 1001, 1003, 3, 132, 66, 0, 1002, 1004, - 3, 18, 9, 0, 1003, 1002, 1, 0, 0, 0, 1003, 1004, 1, 0, 0, 0, 1004, 1048, - 1, 0, 0, 0, 1005, 1007, 3, 20, 10, 0, 1006, 1008, 3, 18, 9, 0, 1007, 1006, - 1, 0, 0, 0, 1007, 1008, 1, 0, 0, 0, 1008, 1048, 1, 0, 0, 0, 1009, 1010, - 3, 12, 6, 0, 1010, 1011, 5, 12, 0, 0, 1011, 1013, 1, 0, 0, 0, 1012, 1009, - 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1016, - 3, 12, 6, 0, 1015, 1017, 3, 18, 9, 0, 1016, 1015, 1, 0, 0, 0, 1016, 1017, - 1, 0, 0, 0, 1017, 1048, 1, 0, 0, 0, 1018, 1020, 5, 94, 0, 0, 1019, 1021, - 3, 124, 62, 0, 1020, 1019, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1023, - 1, 0, 0, 0, 1022, 1024, 3, 128, 64, 0, 1023, 1022, 1, 0, 0, 0, 1024, 1025, - 1, 0, 0, 0, 1025, 1023, 1, 0, 0, 0, 1025, 1026, 1, 0, 0, 0, 1026, 1029, - 1, 0, 0, 0, 1027, 1028, 5, 119, 0, 0, 1028, 1030, 3, 124, 62, 0, 1029, - 1027, 1, 0, 0, 0, 1029, 1030, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, - 1032, 5, 97, 0, 0, 1032, 1048, 1, 0, 0, 0, 1033, 1035, 5, 66, 0, 0, 1034, - 1033, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, - 1038, 5, 75, 0, 0, 1037, 1034, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, - 1039, 1, 0, 0, 0, 1039, 1040, 5, 7, 0, 0, 1040, 1041, 3, 100, 50, 0, 1041, - 1043, 5, 8, 0, 0, 1042, 1044, 3, 18, 9, 0, 1043, 1042, 1, 0, 0, 0, 1043, - 1044, 1, 0, 0, 0, 1044, 1048, 1, 0, 0, 0, 1045, 1046, 5, 66, 0, 0, 1046, - 1048, 3, 124, 62, 3, 1047, 974, 1, 0, 0, 0, 1047, 981, 1, 0, 0, 0, 1047, - 983, 1, 0, 0, 0, 1047, 987, 1, 0, 0, 0, 1047, 1001, 1, 0, 0, 0, 1047, 1005, - 1, 0, 0, 0, 1047, 1012, 1, 0, 0, 0, 1047, 1018, 1, 0, 0, 0, 1047, 1037, - 1, 0, 0, 0, 1047, 1045, 1, 0, 0, 0, 1048, 1134, 1, 0, 0, 0, 1049, 1050, - 10, 18, 0, 0, 1050, 1051, 7, 11, 0, 0, 1051, 1133, 3, 124, 62, 19, 1052, - 1053, 10, 17, 0, 0, 1053, 1054, 7, 0, 0, 0, 1054, 1133, 3, 124, 62, 18, - 1055, 1056, 10, 9, 0, 0, 1056, 1057, 5, 13, 0, 0, 1057, 1133, 3, 124, 62, - 10, 1058, 1060, 10, 7, 0, 0, 1059, 1061, 5, 66, 0, 0, 1060, 1059, 1, 0, - 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 7, 12, - 0, 0, 1063, 1133, 3, 124, 62, 8, 1064, 1066, 10, 6, 0, 0, 1065, 1067, 5, - 66, 0, 0, 1066, 1065, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 1, - 0, 0, 0, 1068, 1069, 5, 73, 0, 0, 1069, 1070, 3, 124, 62, 0, 1070, 1071, - 5, 68, 0, 0, 1071, 1072, 3, 124, 62, 7, 1072, 1133, 1, 0, 0, 0, 1073, 1074, - 10, 5, 0, 0, 1074, 1075, 7, 13, 0, 0, 1075, 1133, 3, 124, 62, 6, 1076, - 1077, 10, 2, 0, 0, 1077, 1078, 5, 68, 0, 0, 1078, 1133, 3, 124, 62, 3, - 1079, 1080, 10, 1, 0, 0, 1080, 1081, 5, 69, 0, 0, 1081, 1133, 3, 124, 62, - 2, 1082, 1083, 10, 22, 0, 0, 1083, 1084, 5, 12, 0, 0, 1084, 1086, 3, 12, - 6, 0, 1085, 1087, 3, 18, 9, 0, 1086, 1085, 1, 0, 0, 0, 1086, 1087, 1, 0, - 0, 0, 1087, 1133, 1, 0, 0, 0, 1088, 1089, 10, 21, 0, 0, 1089, 1098, 5, - 3, 0, 0, 1090, 1099, 3, 124, 62, 0, 1091, 1093, 3, 124, 62, 0, 1092, 1091, - 1, 0, 0, 0, 1092, 1093, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1096, - 5, 5, 0, 0, 1095, 1097, 3, 124, 62, 0, 1096, 1095, 1, 0, 0, 0, 1096, 1097, - 1, 0, 0, 0, 1097, 1099, 1, 0, 0, 0, 1098, 1090, 1, 0, 0, 0, 1098, 1092, - 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1102, 5, 4, 0, 0, 1101, 1103, - 3, 18, 9, 0, 1102, 1101, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1133, - 1, 0, 0, 0, 1104, 1105, 10, 19, 0, 0, 1105, 1106, 5, 101, 0, 0, 1106, 1133, - 3, 12, 6, 0, 1107, 1109, 10, 8, 0, 0, 1108, 1110, 5, 66, 0, 0, 1109, 1108, - 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1112, - 5, 72, 0, 0, 1112, 1115, 5, 7, 0, 0, 1113, 1116, 3, 130, 65, 0, 1114, 1116, - 3, 100, 50, 0, 1115, 1113, 1, 0, 0, 0, 1115, 1114, 1, 0, 0, 0, 1116, 1117, - 1, 0, 0, 0, 1117, 1118, 5, 8, 0, 0, 1118, 1133, 1, 0, 0, 0, 1119, 1120, - 10, 4, 0, 0, 1120, 1122, 5, 74, 0, 0, 1121, 1123, 5, 66, 0, 0, 1122, 1121, - 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1130, 1, 0, 0, 0, 1124, 1125, - 5, 98, 0, 0, 1125, 1126, 5, 99, 0, 0, 1126, 1131, 3, 124, 62, 0, 1127, - 1131, 5, 61, 0, 0, 1128, 1131, 5, 129, 0, 0, 1129, 1131, 5, 130, 0, 0, - 1130, 1124, 1, 0, 0, 0, 1130, 1127, 1, 0, 0, 0, 1130, 1128, 1, 0, 0, 0, - 1130, 1129, 1, 0, 0, 0, 1131, 1133, 1, 0, 0, 0, 1132, 1049, 1, 0, 0, 0, - 1132, 1052, 1, 0, 0, 0, 1132, 1055, 1, 0, 0, 0, 1132, 1058, 1, 0, 0, 0, - 1132, 1064, 1, 0, 0, 0, 1132, 1073, 1, 0, 0, 0, 1132, 1076, 1, 0, 0, 0, - 1132, 1079, 1, 0, 0, 0, 1132, 1082, 1, 0, 0, 0, 1132, 1088, 1, 0, 0, 0, - 1132, 1104, 1, 0, 0, 0, 1132, 1107, 1, 0, 0, 0, 1132, 1119, 1, 0, 0, 0, - 1133, 1136, 1, 0, 0, 0, 1134, 1132, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, - 1135, 125, 1, 0, 0, 0, 1136, 1134, 1, 0, 0, 0, 1137, 1141, 5, 7, 0, 0, - 1138, 1139, 5, 124, 0, 0, 1139, 1140, 5, 88, 0, 0, 1140, 1142, 3, 130, - 65, 0, 1141, 1138, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1153, 1, 0, - 0, 0, 1143, 1144, 5, 87, 0, 0, 1144, 1145, 5, 88, 0, 0, 1145, 1150, 3, - 104, 52, 0, 1146, 1147, 5, 9, 0, 0, 1147, 1149, 3, 104, 52, 0, 1148, 1146, - 1, 0, 0, 0, 1149, 1152, 1, 0, 0, 0, 1150, 1148, 1, 0, 0, 0, 1150, 1151, - 1, 0, 0, 0, 1151, 1154, 1, 0, 0, 0, 1152, 1150, 1, 0, 0, 0, 1153, 1143, - 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1156, - 5, 8, 0, 0, 1156, 127, 1, 0, 0, 0, 1157, 1158, 5, 95, 0, 0, 1158, 1159, - 3, 124, 62, 0, 1159, 1160, 5, 96, 0, 0, 1160, 1161, 3, 124, 62, 0, 1161, - 129, 1, 0, 0, 0, 1162, 1167, 3, 124, 62, 0, 1163, 1164, 5, 9, 0, 0, 1164, - 1166, 3, 124, 62, 0, 1165, 1163, 1, 0, 0, 0, 1166, 1169, 1, 0, 0, 0, 1167, - 1165, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 131, 1, 0, 0, 0, 1169, - 1167, 1, 0, 0, 0, 1170, 1171, 3, 12, 6, 0, 1171, 1177, 5, 7, 0, 0, 1172, - 1174, 5, 98, 0, 0, 1173, 1172, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, - 1175, 1, 0, 0, 0, 1175, 1178, 3, 130, 65, 0, 1176, 1178, 5, 14, 0, 0, 1177, - 1173, 1, 0, 0, 0, 1177, 1176, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, - 1179, 1, 0, 0, 0, 1179, 1180, 5, 8, 0, 0, 1180, 133, 1, 0, 0, 0, 1181, - 1182, 3, 136, 68, 0, 1182, 1183, 5, 6, 0, 0, 1183, 1185, 1, 0, 0, 0, 1184, - 1181, 1, 0, 0, 0, 1185, 1188, 1, 0, 0, 0, 1186, 1184, 1, 0, 0, 0, 1186, - 1187, 1, 0, 0, 0, 1187, 135, 1, 0, 0, 0, 1188, 1186, 1, 0, 0, 0, 1189, - 1210, 3, 70, 35, 0, 1190, 1191, 5, 139, 0, 0, 1191, 1193, 5, 7, 0, 0, 1192, - 1194, 3, 142, 71, 0, 1193, 1192, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, - 1195, 1, 0, 0, 0, 1195, 1210, 5, 8, 0, 0, 1196, 1197, 3, 22, 11, 0, 1197, - 1198, 5, 15, 0, 0, 1198, 1200, 1, 0, 0, 0, 1199, 1196, 1, 0, 0, 0, 1199, - 1200, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1202, 5, 139, 0, 0, 1202, - 1203, 5, 12, 0, 0, 1203, 1204, 5, 139, 0, 0, 1204, 1206, 5, 7, 0, 0, 1205, - 1207, 3, 142, 71, 0, 1206, 1205, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, - 1208, 1, 0, 0, 0, 1208, 1210, 5, 8, 0, 0, 1209, 1189, 1, 0, 0, 0, 1209, - 1190, 1, 0, 0, 0, 1209, 1199, 1, 0, 0, 0, 1210, 137, 1, 0, 0, 0, 1211, - 1213, 3, 144, 72, 0, 1212, 1211, 1, 0, 0, 0, 1213, 1216, 1, 0, 0, 0, 1214, - 1212, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 139, 1, 0, 0, 0, 1216, - 1214, 1, 0, 0, 0, 1217, 1218, 6, 70, -1, 0, 1218, 1219, 5, 7, 0, 0, 1219, - 1220, 3, 140, 70, 0, 1220, 1222, 5, 8, 0, 0, 1221, 1223, 3, 18, 9, 0, 1222, - 1221, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1249, 1, 0, 0, 0, 1224, - 1225, 7, 14, 0, 0, 1225, 1249, 3, 140, 70, 13, 1226, 1228, 3, 10, 5, 0, - 1227, 1229, 3, 18, 9, 0, 1228, 1227, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, - 1229, 1249, 1, 0, 0, 0, 1230, 1232, 3, 148, 74, 0, 1231, 1233, 3, 18, 9, - 0, 1232, 1231, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1249, 1, 0, 0, - 0, 1234, 1236, 3, 20, 10, 0, 1235, 1237, 3, 18, 9, 0, 1236, 1235, 1, 0, - 0, 0, 1236, 1237, 1, 0, 0, 0, 1237, 1249, 1, 0, 0, 0, 1238, 1240, 5, 3, - 0, 0, 1239, 1241, 3, 142, 71, 0, 1240, 1239, 1, 0, 0, 0, 1240, 1241, 1, - 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1244, 5, 4, 0, 0, 1243, 1245, 3, - 18, 9, 0, 1244, 1243, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1249, 1, - 0, 0, 0, 1246, 1247, 5, 66, 0, 0, 1247, 1249, 3, 140, 70, 3, 1248, 1217, - 1, 0, 0, 0, 1248, 1224, 1, 0, 0, 0, 1248, 1226, 1, 0, 0, 0, 1248, 1230, - 1, 0, 0, 0, 1248, 1234, 1, 0, 0, 0, 1248, 1238, 1, 0, 0, 0, 1248, 1246, - 1, 0, 0, 0, 1249, 1305, 1, 0, 0, 0, 1250, 1251, 10, 12, 0, 0, 1251, 1252, - 7, 11, 0, 0, 1252, 1304, 3, 140, 70, 13, 1253, 1254, 10, 11, 0, 0, 1254, - 1255, 7, 0, 0, 0, 1255, 1304, 3, 140, 70, 12, 1256, 1257, 10, 6, 0, 0, - 1257, 1258, 5, 13, 0, 0, 1258, 1304, 3, 140, 70, 7, 1259, 1260, 10, 5, - 0, 0, 1260, 1261, 7, 13, 0, 0, 1261, 1304, 3, 140, 70, 6, 1262, 1263, 10, - 2, 0, 0, 1263, 1264, 5, 68, 0, 0, 1264, 1304, 3, 140, 70, 3, 1265, 1266, - 10, 1, 0, 0, 1266, 1267, 5, 69, 0, 0, 1267, 1304, 3, 140, 70, 2, 1268, - 1269, 10, 15, 0, 0, 1269, 1270, 5, 12, 0, 0, 1270, 1272, 5, 139, 0, 0, - 1271, 1273, 3, 18, 9, 0, 1272, 1271, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, - 1273, 1304, 1, 0, 0, 0, 1274, 1275, 10, 14, 0, 0, 1275, 1284, 5, 3, 0, - 0, 1276, 1285, 3, 140, 70, 0, 1277, 1279, 3, 140, 70, 0, 1278, 1277, 1, - 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1282, 5, - 5, 0, 0, 1281, 1283, 3, 140, 70, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, - 1, 0, 0, 0, 1283, 1285, 1, 0, 0, 0, 1284, 1276, 1, 0, 0, 0, 1284, 1278, - 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1288, 5, 4, 0, 0, 1287, 1289, - 3, 18, 9, 0, 1288, 1287, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1304, - 1, 0, 0, 0, 1290, 1291, 10, 4, 0, 0, 1291, 1293, 5, 74, 0, 0, 1292, 1294, - 5, 66, 0, 0, 1293, 1292, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, 1301, - 1, 0, 0, 0, 1295, 1296, 5, 98, 0, 0, 1296, 1297, 5, 99, 0, 0, 1297, 1302, - 3, 140, 70, 0, 1298, 1302, 5, 61, 0, 0, 1299, 1302, 5, 129, 0, 0, 1300, - 1302, 5, 130, 0, 0, 1301, 1295, 1, 0, 0, 0, 1301, 1298, 1, 0, 0, 0, 1301, - 1299, 1, 0, 0, 0, 1301, 1300, 1, 0, 0, 0, 1302, 1304, 1, 0, 0, 0, 1303, - 1250, 1, 0, 0, 0, 1303, 1253, 1, 0, 0, 0, 1303, 1256, 1, 0, 0, 0, 1303, - 1259, 1, 0, 0, 0, 1303, 1262, 1, 0, 0, 0, 1303, 1265, 1, 0, 0, 0, 1303, - 1268, 1, 0, 0, 0, 1303, 1274, 1, 0, 0, 0, 1303, 1290, 1, 0, 0, 0, 1304, - 1307, 1, 0, 0, 0, 1305, 1303, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, - 141, 1, 0, 0, 0, 1307, 1305, 1, 0, 0, 0, 1308, 1313, 3, 140, 70, 0, 1309, - 1310, 5, 9, 0, 0, 1310, 1312, 3, 140, 70, 0, 1311, 1309, 1, 0, 0, 0, 1312, - 1315, 1, 0, 0, 0, 1313, 1311, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, - 143, 1, 0, 0, 0, 1315, 1313, 1, 0, 0, 0, 1316, 1317, 5, 140, 0, 0, 1317, - 1318, 3, 16, 8, 0, 1318, 1319, 5, 6, 0, 0, 1319, 1397, 1, 0, 0, 0, 1320, - 1325, 3, 146, 73, 0, 1321, 1322, 5, 9, 0, 0, 1322, 1324, 3, 146, 73, 0, - 1323, 1321, 1, 0, 0, 0, 1324, 1327, 1, 0, 0, 0, 1325, 1323, 1, 0, 0, 0, - 1325, 1326, 1, 0, 0, 0, 1326, 1328, 1, 0, 0, 0, 1327, 1325, 1, 0, 0, 0, - 1328, 1329, 5, 30, 0, 0, 1329, 1331, 1, 0, 0, 0, 1330, 1320, 1, 0, 0, 0, - 1330, 1331, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1333, 3, 148, 74, - 0, 1333, 1334, 5, 6, 0, 0, 1334, 1397, 1, 0, 0, 0, 1335, 1337, 3, 140, - 70, 0, 1336, 1338, 3, 16, 8, 0, 1337, 1336, 1, 0, 0, 0, 1337, 1338, 1, - 0, 0, 0, 1338, 1339, 1, 0, 0, 0, 1339, 1340, 5, 30, 0, 0, 1340, 1341, 3, - 140, 70, 0, 1341, 1342, 5, 6, 0, 0, 1342, 1397, 1, 0, 0, 0, 1343, 1344, - 5, 116, 0, 0, 1344, 1345, 5, 140, 0, 0, 1345, 1349, 5, 72, 0, 0, 1346, - 1350, 3, 152, 76, 0, 1347, 1350, 3, 20, 10, 0, 1348, 1350, 3, 70, 35, 0, - 1349, 1346, 1, 0, 0, 0, 1349, 1347, 1, 0, 0, 0, 1349, 1348, 1, 0, 0, 0, - 1350, 1351, 1, 0, 0, 0, 1351, 1355, 5, 1, 0, 0, 1352, 1354, 3, 144, 72, - 0, 1353, 1352, 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, 1359, 5, 2, 0, 0, 1359, 1397, 1, 0, 0, 0, 1360, 1361, 5, 117, - 0, 0, 1361, 1366, 3, 150, 75, 0, 1362, 1363, 5, 118, 0, 0, 1363, 1365, - 3, 150, 75, 0, 1364, 1362, 1, 0, 0, 0, 1365, 1368, 1, 0, 0, 0, 1366, 1364, - 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1378, 1, 0, 0, 0, 1368, 1366, - 1, 0, 0, 0, 1369, 1370, 5, 119, 0, 0, 1370, 1374, 5, 1, 0, 0, 1371, 1373, - 3, 144, 72, 0, 1372, 1371, 1, 0, 0, 0, 1373, 1376, 1, 0, 0, 0, 1374, 1372, - 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1377, 1, 0, 0, 0, 1376, 1374, - 1, 0, 0, 0, 1377, 1379, 5, 2, 0, 0, 1378, 1369, 1, 0, 0, 0, 1378, 1379, - 1, 0, 0, 0, 1379, 1397, 1, 0, 0, 0, 1380, 1381, 3, 70, 35, 0, 1381, 1382, - 5, 6, 0, 0, 1382, 1397, 1, 0, 0, 0, 1383, 1384, 5, 120, 0, 0, 1384, 1397, - 5, 6, 0, 0, 1385, 1388, 5, 121, 0, 0, 1386, 1389, 3, 142, 71, 0, 1387, - 1389, 3, 70, 35, 0, 1388, 1386, 1, 0, 0, 0, 1388, 1387, 1, 0, 0, 0, 1388, - 1389, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1397, 5, 6, 0, 0, 1391, - 1392, 5, 121, 0, 0, 1392, 1393, 5, 122, 0, 0, 1393, 1394, 3, 142, 71, 0, - 1394, 1395, 5, 6, 0, 0, 1395, 1397, 1, 0, 0, 0, 1396, 1316, 1, 0, 0, 0, - 1396, 1330, 1, 0, 0, 0, 1396, 1335, 1, 0, 0, 0, 1396, 1343, 1, 0, 0, 0, - 1396, 1360, 1, 0, 0, 0, 1396, 1380, 1, 0, 0, 0, 1396, 1383, 1, 0, 0, 0, - 1396, 1385, 1, 0, 0, 0, 1396, 1391, 1, 0, 0, 0, 1397, 145, 1, 0, 0, 0, - 1398, 1399, 7, 15, 0, 0, 1399, 147, 1, 0, 0, 0, 1400, 1401, 5, 139, 0, - 0, 1401, 1403, 5, 7, 0, 0, 1402, 1404, 3, 142, 71, 0, 1403, 1402, 1, 0, - 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 5, 8, - 0, 0, 1406, 149, 1, 0, 0, 0, 1407, 1408, 3, 140, 70, 0, 1408, 1412, 5, - 1, 0, 0, 1409, 1411, 3, 144, 72, 0, 1410, 1409, 1, 0, 0, 0, 1411, 1414, - 1, 0, 0, 0, 1412, 1410, 1, 0, 0, 0, 1412, 1413, 1, 0, 0, 0, 1413, 1415, - 1, 0, 0, 0, 1414, 1412, 1, 0, 0, 0, 1415, 1416, 5, 2, 0, 0, 1416, 151, - 1, 0, 0, 0, 1417, 1418, 3, 140, 70, 0, 1418, 1419, 5, 31, 0, 0, 1419, 1420, - 3, 140, 70, 0, 1420, 153, 1, 0, 0, 0, 186, 157, 175, 179, 187, 193, 200, - 209, 213, 225, 233, 235, 249, 252, 272, 277, 291, 295, 305, 313, 323, 334, - 347, 353, 358, 360, 363, 368, 374, 379, 382, 389, 399, 410, 416, 422, 428, - 443, 455, 467, 470, 477, 484, 490, 499, 506, 512, 515, 523, 533, 540, 547, - 550, 560, 569, 572, 575, 589, 595, 599, 606, 633, 644, 652, 659, 668, 671, - 675, 707, 721, 731, 741, 744, 748, 752, 756, 760, 764, 768, 772, 779, 787, - 790, 794, 801, 803, 816, 819, 823, 826, 832, 835, 837, 840, 849, 852, 857, - 860, 865, 868, 876, 884, 887, 891, 901, 904, 910, 923, 927, 930, 939, 941, - 952, 957, 959, 965, 968, 972, 979, 985, 994, 999, 1003, 1007, 1012, 1016, - 1020, 1025, 1029, 1034, 1037, 1043, 1047, 1060, 1066, 1086, 1092, 1096, - 1098, 1102, 1109, 1115, 1122, 1130, 1132, 1134, 1141, 1150, 1153, 1167, - 1173, 1177, 1186, 1193, 1199, 1206, 1209, 1214, 1222, 1228, 1232, 1236, - 1240, 1244, 1248, 1272, 1278, 1282, 1284, 1288, 1293, 1301, 1303, 1305, - 1313, 1325, 1330, 1337, 1349, 1355, 1366, 1374, 1378, 1388, 1396, 1403, - 1412, + 1, 0, 83, 84, 1, 0, 110, 111, 2, 0, 79, 81, 105, 105, 3, 0, 14, 14, 19, + 19, 22, 22, 1, 0, 70, 71, 2, 0, 15, 16, 23, 27, 2, 0, 11, 11, 20, 21, 2, + 0, 29, 29, 140, 140, 1585, 0, 143, 1, 0, 0, 0, 2, 149, 1, 0, 0, 0, 4, 152, + 1, 0, 0, 0, 6, 155, 1, 0, 0, 0, 8, 158, 1, 0, 0, 0, 10, 175, 1, 0, 0, 0, + 12, 181, 1, 0, 0, 0, 14, 183, 1, 0, 0, 0, 16, 191, 1, 0, 0, 0, 18, 203, + 1, 0, 0, 0, 20, 206, 1, 0, 0, 0, 22, 208, 1, 0, 0, 0, 24, 216, 1, 0, 0, + 0, 26, 226, 1, 0, 0, 0, 28, 244, 1, 0, 0, 0, 30, 248, 1, 0, 0, 0, 32, 271, + 1, 0, 0, 0, 34, 288, 1, 0, 0, 0, 36, 296, 1, 0, 0, 0, 38, 304, 1, 0, 0, + 0, 40, 311, 1, 0, 0, 0, 42, 322, 1, 0, 0, 0, 44, 348, 1, 0, 0, 0, 46, 372, + 1, 0, 0, 0, 48, 380, 1, 0, 0, 0, 50, 390, 1, 0, 0, 0, 52, 410, 1, 0, 0, + 0, 54, 431, 1, 0, 0, 0, 56, 433, 1, 0, 0, 0, 58, 445, 1, 0, 0, 0, 60, 460, + 1, 0, 0, 0, 62, 465, 1, 0, 0, 0, 64, 487, 1, 0, 0, 0, 66, 509, 1, 0, 0, + 0, 68, 523, 1, 0, 0, 0, 70, 538, 1, 0, 0, 0, 72, 550, 1, 0, 0, 0, 74, 570, + 1, 0, 0, 0, 76, 594, 1, 0, 0, 0, 78, 621, 1, 0, 0, 0, 80, 623, 1, 0, 0, + 0, 82, 671, 1, 0, 0, 0, 84, 673, 1, 0, 0, 0, 86, 685, 1, 0, 0, 0, 88, 693, + 1, 0, 0, 0, 90, 728, 1, 0, 0, 0, 92, 730, 1, 0, 0, 0, 94, 738, 1, 0, 0, + 0, 96, 805, 1, 0, 0, 0, 98, 808, 1, 0, 0, 0, 100, 828, 1, 0, 0, 0, 102, + 830, 1, 0, 0, 0, 104, 861, 1, 0, 0, 0, 106, 865, 1, 0, 0, 0, 108, 900, + 1, 0, 0, 0, 110, 929, 1, 0, 0, 0, 112, 1015, 1, 0, 0, 0, 114, 1105, 1, + 0, 0, 0, 116, 1125, 1, 0, 0, 0, 118, 1130, 1, 0, 0, 0, 120, 1138, 1, 0, + 0, 0, 122, 1154, 1, 0, 0, 0, 124, 1177, 1, 0, 0, 0, 126, 1182, 1, 0, 0, + 0, 128, 1216, 1, 0, 0, 0, 130, 1276, 1, 0, 0, 0, 132, 1364, 1, 0, 0, 0, + 134, 1366, 1, 0, 0, 0, 136, 1368, 1, 0, 0, 0, 138, 1375, 1, 0, 0, 0, 140, + 1385, 1, 0, 0, 0, 142, 144, 3, 68, 34, 0, 143, 142, 1, 0, 0, 0, 144, 145, + 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, 1, 0, + 0, 0, 147, 148, 5, 0, 0, 1, 148, 1, 1, 0, 0, 0, 149, 150, 3, 24, 12, 0, + 150, 151, 5, 0, 0, 1, 151, 3, 1, 0, 0, 0, 152, 153, 3, 68, 34, 0, 153, + 154, 5, 0, 0, 1, 154, 5, 1, 0, 0, 0, 155, 156, 3, 122, 61, 0, 156, 157, + 5, 0, 0, 1, 157, 7, 1, 0, 0, 0, 158, 159, 3, 126, 63, 0, 159, 160, 5, 0, + 0, 1, 160, 9, 1, 0, 0, 0, 161, 176, 5, 128, 0, 0, 162, 164, 7, 0, 0, 0, + 163, 162, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, + 176, 5, 131, 0, 0, 166, 168, 7, 0, 0, 0, 167, 166, 1, 0, 0, 0, 167, 168, + 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 170, 5, 131, 0, 0, 170, 171, 5, + 12, 0, 0, 171, 176, 5, 131, 0, 0, 172, 176, 7, 1, 0, 0, 173, 176, 5, 61, + 0, 0, 174, 176, 5, 132, 0, 0, 175, 161, 1, 0, 0, 0, 175, 163, 1, 0, 0, + 0, 175, 167, 1, 0, 0, 0, 175, 172, 1, 0, 0, 0, 175, 173, 1, 0, 0, 0, 175, + 174, 1, 0, 0, 0, 176, 11, 1, 0, 0, 0, 177, 178, 5, 32, 0, 0, 178, 179, + 5, 139, 0, 0, 179, 182, 5, 32, 0, 0, 180, 182, 5, 139, 0, 0, 181, 177, + 1, 0, 0, 0, 181, 180, 1, 0, 0, 0, 182, 13, 1, 0, 0, 0, 183, 188, 3, 12, + 6, 0, 184, 185, 5, 9, 0, 0, 185, 187, 3, 12, 6, 0, 186, 184, 1, 0, 0, 0, + 187, 190, 1, 0, 0, 0, 188, 186, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, + 15, 1, 0, 0, 0, 190, 188, 1, 0, 0, 0, 191, 197, 5, 139, 0, 0, 192, 193, + 5, 7, 0, 0, 193, 194, 5, 131, 0, 0, 194, 195, 5, 9, 0, 0, 195, 196, 5, + 131, 0, 0, 196, 198, 5, 8, 0, 0, 197, 192, 1, 0, 0, 0, 197, 198, 1, 0, + 0, 0, 198, 201, 1, 0, 0, 0, 199, 200, 5, 3, 0, 0, 200, 202, 5, 4, 0, 0, + 201, 199, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 17, 1, 0, 0, 0, 203, 204, + 5, 28, 0, 0, 204, 205, 3, 16, 8, 0, 205, 19, 1, 0, 0, 0, 206, 207, 7, 2, + 0, 0, 207, 21, 1, 0, 0, 0, 208, 213, 3, 20, 10, 0, 209, 210, 5, 9, 0, 0, + 210, 212, 3, 20, 10, 0, 211, 209, 1, 0, 0, 0, 212, 215, 1, 0, 0, 0, 213, + 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 23, 1, 0, 0, 0, 215, 213, 1, + 0, 0, 0, 216, 223, 3, 28, 14, 0, 217, 222, 3, 30, 15, 0, 218, 222, 3, 32, + 16, 0, 219, 222, 3, 62, 31, 0, 220, 222, 3, 64, 32, 0, 221, 217, 1, 0, + 0, 0, 221, 218, 1, 0, 0, 0, 221, 219, 1, 0, 0, 0, 221, 220, 1, 0, 0, 0, + 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, + 25, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 227, 5, 141, 0, 0, 227, 240, + 5, 7, 0, 0, 228, 229, 5, 139, 0, 0, 229, 230, 5, 15, 0, 0, 230, 237, 3, + 10, 5, 0, 231, 232, 5, 9, 0, 0, 232, 233, 5, 139, 0, 0, 233, 234, 5, 15, + 0, 0, 234, 236, 3, 10, 5, 0, 235, 231, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, + 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 241, 1, 0, 0, 0, 239, + 237, 1, 0, 0, 0, 240, 228, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 242, + 1, 0, 0, 0, 242, 243, 5, 8, 0, 0, 243, 27, 1, 0, 0, 0, 244, 245, 5, 33, + 0, 0, 245, 246, 5, 139, 0, 0, 246, 247, 5, 6, 0, 0, 247, 29, 1, 0, 0, 0, + 248, 249, 5, 34, 0, 0, 249, 265, 5, 139, 0, 0, 250, 251, 5, 1, 0, 0, 251, + 252, 5, 139, 0, 0, 252, 253, 5, 5, 0, 0, 253, 260, 3, 10, 5, 0, 254, 255, + 5, 9, 0, 0, 255, 256, 5, 139, 0, 0, 256, 257, 5, 5, 0, 0, 257, 259, 3, + 10, 5, 0, 258, 254, 1, 0, 0, 0, 259, 262, 1, 0, 0, 0, 260, 258, 1, 0, 0, + 0, 260, 261, 1, 0, 0, 0, 261, 263, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, + 264, 5, 2, 0, 0, 264, 266, 1, 0, 0, 0, 265, 250, 1, 0, 0, 0, 265, 266, + 1, 0, 0, 0, 266, 267, 1, 0, 0, 0, 267, 268, 5, 82, 0, 0, 268, 269, 5, 139, + 0, 0, 269, 270, 5, 6, 0, 0, 270, 31, 1, 0, 0, 0, 271, 272, 5, 35, 0, 0, + 272, 273, 5, 139, 0, 0, 273, 274, 5, 1, 0, 0, 274, 283, 3, 34, 17, 0, 275, + 279, 5, 9, 0, 0, 276, 280, 3, 34, 17, 0, 277, 280, 3, 38, 19, 0, 278, 280, + 3, 42, 21, 0, 279, 276, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 278, 1, + 0, 0, 0, 280, 282, 1, 0, 0, 0, 281, 275, 1, 0, 0, 0, 282, 285, 1, 0, 0, + 0, 283, 281, 1, 0, 0, 0, 283, 284, 1, 0, 0, 0, 284, 286, 1, 0, 0, 0, 285, + 283, 1, 0, 0, 0, 286, 287, 5, 2, 0, 0, 287, 33, 1, 0, 0, 0, 288, 289, 5, + 139, 0, 0, 289, 293, 3, 16, 8, 0, 290, 292, 3, 52, 26, 0, 291, 290, 1, + 0, 0, 0, 292, 295, 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 293, 294, 1, 0, 0, + 0, 294, 35, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 296, 297, 5, 139, 0, 0, 297, + 301, 3, 16, 8, 0, 298, 300, 3, 54, 27, 0, 299, 298, 1, 0, 0, 0, 300, 303, + 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 37, 1, 0, + 0, 0, 303, 301, 1, 0, 0, 0, 304, 305, 5, 142, 0, 0, 305, 306, 7, 3, 0, + 0, 306, 307, 5, 7, 0, 0, 307, 308, 3, 14, 7, 0, 308, 309, 5, 8, 0, 0, 309, + 39, 1, 0, 0, 0, 310, 312, 5, 56, 0, 0, 311, 310, 1, 0, 0, 0, 311, 312, + 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 314, 5, 67, 0, 0, 314, 315, 3, 12, + 6, 0, 315, 316, 5, 7, 0, 0, 316, 317, 3, 14, 7, 0, 317, 318, 5, 8, 0, 0, + 318, 41, 1, 0, 0, 0, 319, 320, 5, 51, 0, 0, 320, 323, 5, 53, 0, 0, 321, + 323, 5, 133, 0, 0, 322, 319, 1, 0, 0, 0, 322, 321, 1, 0, 0, 0, 323, 324, + 1, 0, 0, 0, 324, 325, 5, 7, 0, 0, 325, 326, 3, 14, 7, 0, 326, 327, 5, 8, + 0, 0, 327, 328, 7, 4, 0, 0, 328, 329, 5, 139, 0, 0, 329, 330, 5, 7, 0, + 0, 330, 331, 3, 14, 7, 0, 331, 335, 5, 8, 0, 0, 332, 334, 3, 44, 22, 0, + 333, 332, 1, 0, 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 335, + 336, 1, 0, 0, 0, 336, 43, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 338, 339, 5, + 54, 0, 0, 339, 342, 5, 63, 0, 0, 340, 342, 5, 134, 0, 0, 341, 338, 1, 0, + 0, 0, 341, 340, 1, 0, 0, 0, 342, 349, 1, 0, 0, 0, 343, 344, 5, 54, 0, 0, + 344, 347, 5, 62, 0, 0, 345, 347, 5, 135, 0, 0, 346, 343, 1, 0, 0, 0, 346, + 345, 1, 0, 0, 0, 347, 349, 1, 0, 0, 0, 348, 341, 1, 0, 0, 0, 348, 346, + 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 352, 5, 55, 0, 0, 351, 350, 1, 0, + 0, 0, 351, 352, 1, 0, 0, 0, 352, 370, 1, 0, 0, 0, 353, 354, 5, 92, 0, 0, + 354, 357, 5, 36, 0, 0, 355, 357, 5, 138, 0, 0, 356, 353, 1, 0, 0, 0, 356, + 355, 1, 0, 0, 0, 357, 371, 1, 0, 0, 0, 358, 371, 5, 57, 0, 0, 359, 360, + 5, 59, 0, 0, 360, 363, 5, 61, 0, 0, 361, 363, 5, 137, 0, 0, 362, 359, 1, + 0, 0, 0, 362, 361, 1, 0, 0, 0, 363, 371, 1, 0, 0, 0, 364, 365, 5, 59, 0, + 0, 365, 368, 5, 60, 0, 0, 366, 368, 5, 136, 0, 0, 367, 364, 1, 0, 0, 0, + 367, 366, 1, 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 371, 5, 58, 0, 0, 370, + 356, 1, 0, 0, 0, 370, 358, 1, 0, 0, 0, 370, 362, 1, 0, 0, 0, 370, 367, + 1, 0, 0, 0, 370, 369, 1, 0, 0, 0, 371, 45, 1, 0, 0, 0, 372, 377, 3, 16, + 8, 0, 373, 374, 5, 9, 0, 0, 374, 376, 3, 16, 8, 0, 375, 373, 1, 0, 0, 0, + 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, + 47, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 381, 5, 139, 0, 0, 381, 387, + 3, 16, 8, 0, 382, 383, 5, 9, 0, 0, 383, 384, 5, 139, 0, 0, 384, 386, 3, + 16, 8, 0, 385, 382, 1, 0, 0, 0, 386, 389, 1, 0, 0, 0, 387, 385, 1, 0, 0, + 0, 387, 388, 1, 0, 0, 0, 388, 49, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 390, + 391, 3, 20, 10, 0, 391, 398, 3, 16, 8, 0, 392, 393, 5, 9, 0, 0, 393, 394, + 3, 20, 10, 0, 394, 395, 3, 16, 8, 0, 395, 397, 1, 0, 0, 0, 396, 392, 1, + 0, 0, 0, 397, 400, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 398, 399, 1, 0, 0, + 0, 399, 51, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 401, 411, 5, 139, 0, 0, 402, + 404, 5, 52, 0, 0, 403, 405, 5, 53, 0, 0, 404, 403, 1, 0, 0, 0, 404, 405, + 1, 0, 0, 0, 405, 411, 1, 0, 0, 0, 406, 407, 5, 66, 0, 0, 407, 411, 5, 61, + 0, 0, 408, 411, 5, 60, 0, 0, 409, 411, 5, 56, 0, 0, 410, 401, 1, 0, 0, + 0, 410, 402, 1, 0, 0, 0, 410, 406, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, + 409, 1, 0, 0, 0, 411, 416, 1, 0, 0, 0, 412, 413, 5, 7, 0, 0, 413, 414, + 3, 10, 5, 0, 414, 415, 5, 8, 0, 0, 415, 417, 1, 0, 0, 0, 416, 412, 1, 0, + 0, 0, 416, 417, 1, 0, 0, 0, 417, 53, 1, 0, 0, 0, 418, 419, 5, 52, 0, 0, + 419, 432, 5, 53, 0, 0, 420, 432, 5, 56, 0, 0, 421, 422, 5, 66, 0, 0, 422, + 432, 5, 61, 0, 0, 423, 424, 5, 60, 0, 0, 424, 432, 3, 10, 5, 0, 425, 432, + 3, 58, 29, 0, 426, 427, 5, 50, 0, 0, 427, 428, 5, 7, 0, 0, 428, 429, 3, + 112, 56, 0, 429, 430, 5, 8, 0, 0, 430, 432, 1, 0, 0, 0, 431, 418, 1, 0, + 0, 0, 431, 420, 1, 0, 0, 0, 431, 421, 1, 0, 0, 0, 431, 423, 1, 0, 0, 0, + 431, 425, 1, 0, 0, 0, 431, 426, 1, 0, 0, 0, 432, 55, 1, 0, 0, 0, 433, 434, + 5, 54, 0, 0, 434, 443, 7, 5, 0, 0, 435, 436, 5, 59, 0, 0, 436, 444, 5, + 61, 0, 0, 437, 438, 5, 59, 0, 0, 438, 444, 5, 60, 0, 0, 439, 444, 5, 58, + 0, 0, 440, 441, 5, 92, 0, 0, 441, 444, 5, 36, 0, 0, 442, 444, 5, 57, 0, + 0, 443, 435, 1, 0, 0, 0, 443, 437, 1, 0, 0, 0, 443, 439, 1, 0, 0, 0, 443, + 440, 1, 0, 0, 0, 443, 442, 1, 0, 0, 0, 444, 57, 1, 0, 0, 0, 445, 446, 5, + 64, 0, 0, 446, 447, 3, 12, 6, 0, 447, 448, 5, 7, 0, 0, 448, 449, 3, 12, + 6, 0, 449, 450, 5, 8, 0, 0, 450, 458, 1, 0, 0, 0, 451, 455, 3, 56, 28, + 0, 452, 454, 3, 56, 28, 0, 453, 452, 1, 0, 0, 0, 454, 457, 1, 0, 0, 0, + 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 459, 1, 0, 0, 0, 457, + 455, 1, 0, 0, 0, 458, 451, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 59, 1, + 0, 0, 0, 460, 461, 7, 6, 0, 0, 461, 61, 1, 0, 0, 0, 462, 464, 3, 26, 13, + 0, 463, 462, 1, 0, 0, 0, 464, 467, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, + 466, 1, 0, 0, 0, 466, 468, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 468, 469, + 5, 36, 0, 0, 469, 470, 5, 139, 0, 0, 470, 472, 5, 7, 0, 0, 471, 473, 3, + 22, 11, 0, 472, 471, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, + 0, 0, 474, 476, 5, 8, 0, 0, 475, 477, 3, 60, 30, 0, 476, 475, 1, 0, 0, + 0, 477, 478, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, + 480, 1, 0, 0, 0, 480, 481, 5, 1, 0, 0, 481, 482, 3, 122, 61, 0, 482, 483, + 5, 2, 0, 0, 483, 63, 1, 0, 0, 0, 484, 486, 3, 26, 13, 0, 485, 484, 1, 0, + 0, 0, 486, 489, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, + 488, 490, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 490, 491, 5, 37, 0, 0, 491, + 492, 5, 139, 0, 0, 492, 494, 5, 7, 0, 0, 493, 495, 3, 50, 25, 0, 494, 493, + 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 5, 8, + 0, 0, 497, 499, 3, 60, 30, 0, 498, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, + 0, 500, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 503, 1, 0, 0, 0, 502, + 504, 3, 66, 33, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, + 1, 0, 0, 0, 505, 506, 5, 1, 0, 0, 506, 507, 3, 126, 63, 0, 507, 508, 5, + 2, 0, 0, 508, 65, 1, 0, 0, 0, 509, 521, 5, 91, 0, 0, 510, 512, 5, 35, 0, + 0, 511, 510, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, + 514, 5, 7, 0, 0, 514, 515, 3, 48, 24, 0, 515, 516, 5, 8, 0, 0, 516, 522, + 1, 0, 0, 0, 517, 518, 5, 7, 0, 0, 518, 519, 3, 46, 23, 0, 519, 520, 5, + 8, 0, 0, 520, 522, 1, 0, 0, 0, 521, 511, 1, 0, 0, 0, 521, 517, 1, 0, 0, + 0, 522, 67, 1, 0, 0, 0, 523, 524, 3, 70, 35, 0, 524, 525, 5, 6, 0, 0, 525, + 69, 1, 0, 0, 0, 526, 528, 5, 93, 0, 0, 527, 529, 5, 127, 0, 0, 528, 527, + 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 535, 3, 72, + 36, 0, 531, 532, 5, 9, 0, 0, 532, 534, 3, 72, 36, 0, 533, 531, 1, 0, 0, + 0, 534, 537, 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, + 539, 1, 0, 0, 0, 537, 535, 1, 0, 0, 0, 538, 526, 1, 0, 0, 0, 538, 539, + 1, 0, 0, 0, 539, 548, 1, 0, 0, 0, 540, 549, 3, 74, 37, 0, 541, 549, 3, + 80, 40, 0, 542, 549, 3, 84, 42, 0, 543, 549, 3, 86, 43, 0, 544, 549, 3, + 88, 44, 0, 545, 549, 3, 102, 51, 0, 546, 549, 3, 106, 53, 0, 547, 549, + 3, 110, 55, 0, 548, 540, 1, 0, 0, 0, 548, 541, 1, 0, 0, 0, 548, 542, 1, + 0, 0, 0, 548, 543, 1, 0, 0, 0, 548, 544, 1, 0, 0, 0, 548, 545, 1, 0, 0, + 0, 548, 546, 1, 0, 0, 0, 548, 547, 1, 0, 0, 0, 549, 71, 1, 0, 0, 0, 550, + 563, 3, 12, 6, 0, 551, 560, 5, 7, 0, 0, 552, 557, 3, 12, 6, 0, 553, 554, + 5, 9, 0, 0, 554, 556, 3, 12, 6, 0, 555, 553, 1, 0, 0, 0, 556, 559, 1, 0, + 0, 0, 557, 555, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 561, 1, 0, 0, 0, + 559, 557, 1, 0, 0, 0, 560, 552, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, + 562, 1, 0, 0, 0, 562, 564, 5, 8, 0, 0, 563, 551, 1, 0, 0, 0, 563, 564, + 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 5, 82, 0, 0, 566, 567, 5, 7, + 0, 0, 567, 568, 3, 88, 44, 0, 568, 569, 5, 8, 0, 0, 569, 73, 1, 0, 0, 0, + 570, 571, 5, 42, 0, 0, 571, 572, 5, 35, 0, 0, 572, 573, 3, 12, 6, 0, 573, + 577, 5, 7, 0, 0, 574, 578, 3, 36, 18, 0, 575, 578, 3, 76, 38, 0, 576, 578, + 3, 40, 20, 0, 577, 574, 1, 0, 0, 0, 577, 575, 1, 0, 0, 0, 577, 576, 1, + 0, 0, 0, 578, 587, 1, 0, 0, 0, 579, 583, 5, 9, 0, 0, 580, 584, 3, 36, 18, + 0, 581, 584, 3, 76, 38, 0, 582, 584, 3, 40, 20, 0, 583, 580, 1, 0, 0, 0, + 583, 581, 1, 0, 0, 0, 583, 582, 1, 0, 0, 0, 584, 586, 1, 0, 0, 0, 585, + 579, 1, 0, 0, 0, 586, 589, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 587, 588, + 1, 0, 0, 0, 588, 590, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 590, 591, 5, 8, + 0, 0, 591, 75, 1, 0, 0, 0, 592, 593, 5, 49, 0, 0, 593, 595, 3, 12, 6, 0, + 594, 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, + 597, 3, 78, 39, 0, 597, 77, 1, 0, 0, 0, 598, 599, 5, 52, 0, 0, 599, 600, + 5, 53, 0, 0, 600, 601, 5, 7, 0, 0, 601, 602, 3, 14, 7, 0, 602, 603, 5, + 8, 0, 0, 603, 622, 1, 0, 0, 0, 604, 605, 5, 56, 0, 0, 605, 606, 5, 7, 0, + 0, 606, 607, 3, 14, 7, 0, 607, 608, 5, 8, 0, 0, 608, 622, 1, 0, 0, 0, 609, + 610, 5, 50, 0, 0, 610, 611, 5, 7, 0, 0, 611, 612, 3, 112, 56, 0, 612, 613, + 5, 8, 0, 0, 613, 622, 1, 0, 0, 0, 614, 615, 5, 51, 0, 0, 615, 616, 5, 53, + 0, 0, 616, 617, 5, 7, 0, 0, 617, 618, 3, 12, 6, 0, 618, 619, 5, 8, 0, 0, + 619, 620, 3, 58, 29, 0, 620, 622, 1, 0, 0, 0, 621, 598, 1, 0, 0, 0, 621, + 604, 1, 0, 0, 0, 621, 609, 1, 0, 0, 0, 621, 614, 1, 0, 0, 0, 622, 79, 1, + 0, 0, 0, 623, 624, 5, 43, 0, 0, 624, 625, 5, 35, 0, 0, 625, 626, 3, 12, + 6, 0, 626, 627, 3, 82, 41, 0, 627, 81, 1, 0, 0, 0, 628, 629, 5, 43, 0, + 0, 629, 630, 5, 44, 0, 0, 630, 631, 3, 12, 6, 0, 631, 636, 5, 59, 0, 0, + 632, 633, 5, 66, 0, 0, 633, 637, 5, 61, 0, 0, 634, 635, 5, 60, 0, 0, 635, + 637, 3, 10, 5, 0, 636, 632, 1, 0, 0, 0, 636, 634, 1, 0, 0, 0, 637, 672, + 1, 0, 0, 0, 638, 639, 5, 43, 0, 0, 639, 640, 5, 44, 0, 0, 640, 641, 3, + 12, 6, 0, 641, 647, 5, 46, 0, 0, 642, 643, 5, 66, 0, 0, 643, 648, 5, 61, + 0, 0, 644, 648, 5, 60, 0, 0, 645, 646, 5, 49, 0, 0, 646, 648, 3, 12, 6, + 0, 647, 642, 1, 0, 0, 0, 647, 644, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, + 672, 1, 0, 0, 0, 649, 650, 5, 45, 0, 0, 650, 651, 5, 44, 0, 0, 651, 652, + 3, 12, 6, 0, 652, 653, 3, 16, 8, 0, 653, 672, 1, 0, 0, 0, 654, 655, 5, + 46, 0, 0, 655, 656, 5, 44, 0, 0, 656, 672, 3, 12, 6, 0, 657, 658, 5, 47, + 0, 0, 658, 659, 5, 44, 0, 0, 659, 660, 3, 12, 6, 0, 660, 661, 5, 48, 0, + 0, 661, 662, 3, 12, 6, 0, 662, 672, 1, 0, 0, 0, 663, 664, 5, 47, 0, 0, + 664, 665, 5, 48, 0, 0, 665, 672, 3, 12, 6, 0, 666, 667, 5, 45, 0, 0, 667, + 672, 3, 76, 38, 0, 668, 669, 5, 46, 0, 0, 669, 670, 5, 49, 0, 0, 670, 672, + 3, 12, 6, 0, 671, 628, 1, 0, 0, 0, 671, 638, 1, 0, 0, 0, 671, 649, 1, 0, + 0, 0, 671, 654, 1, 0, 0, 0, 671, 657, 1, 0, 0, 0, 671, 663, 1, 0, 0, 0, + 671, 666, 1, 0, 0, 0, 671, 668, 1, 0, 0, 0, 672, 83, 1, 0, 0, 0, 673, 675, + 5, 42, 0, 0, 674, 676, 5, 56, 0, 0, 675, 674, 1, 0, 0, 0, 675, 676, 1, + 0, 0, 0, 676, 677, 1, 0, 0, 0, 677, 678, 5, 67, 0, 0, 678, 679, 3, 12, + 6, 0, 679, 680, 5, 54, 0, 0, 680, 681, 3, 12, 6, 0, 681, 682, 5, 7, 0, + 0, 682, 683, 3, 14, 7, 0, 683, 684, 5, 8, 0, 0, 684, 85, 1, 0, 0, 0, 685, + 686, 5, 46, 0, 0, 686, 689, 5, 67, 0, 0, 687, 688, 5, 117, 0, 0, 688, 690, + 5, 75, 0, 0, 689, 687, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 691, 1, 0, + 0, 0, 691, 692, 3, 12, 6, 0, 692, 87, 1, 0, 0, 0, 693, 699, 3, 94, 47, + 0, 694, 695, 3, 90, 45, 0, 695, 696, 3, 94, 47, 0, 696, 698, 1, 0, 0, 0, + 697, 694, 1, 0, 0, 0, 698, 701, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, + 700, 1, 0, 0, 0, 700, 712, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 702, 703, + 5, 87, 0, 0, 703, 704, 5, 88, 0, 0, 704, 709, 3, 92, 46, 0, 705, 706, 5, + 9, 0, 0, 706, 708, 3, 92, 46, 0, 707, 705, 1, 0, 0, 0, 708, 711, 1, 0, + 0, 0, 709, 707, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, + 711, 709, 1, 0, 0, 0, 712, 702, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 713, + 716, 1, 0, 0, 0, 714, 715, 5, 85, 0, 0, 715, 717, 3, 112, 56, 0, 716, 714, + 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 720, 1, 0, 0, 0, 718, 719, 5, 86, + 0, 0, 719, 721, 3, 112, 56, 0, 720, 718, 1, 0, 0, 0, 720, 721, 1, 0, 0, + 0, 721, 89, 1, 0, 0, 0, 722, 724, 5, 106, 0, 0, 723, 725, 5, 76, 0, 0, + 724, 723, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 729, 1, 0, 0, 0, 726, + 729, 5, 107, 0, 0, 727, 729, 5, 108, 0, 0, 728, 722, 1, 0, 0, 0, 728, 726, + 1, 0, 0, 0, 728, 727, 1, 0, 0, 0, 729, 91, 1, 0, 0, 0, 730, 732, 3, 112, + 56, 0, 731, 733, 7, 7, 0, 0, 732, 731, 1, 0, 0, 0, 732, 733, 1, 0, 0, 0, + 733, 736, 1, 0, 0, 0, 734, 735, 5, 109, 0, 0, 735, 737, 7, 8, 0, 0, 736, + 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 93, 1, 0, 0, 0, 738, 740, 5, + 102, 0, 0, 739, 741, 5, 98, 0, 0, 740, 739, 1, 0, 0, 0, 740, 741, 1, 0, + 0, 0, 741, 742, 1, 0, 0, 0, 742, 747, 3, 100, 50, 0, 743, 744, 5, 9, 0, + 0, 744, 746, 3, 100, 50, 0, 745, 743, 1, 0, 0, 0, 746, 749, 1, 0, 0, 0, + 747, 745, 1, 0, 0, 0, 747, 748, 1, 0, 0, 0, 748, 758, 1, 0, 0, 0, 749, + 747, 1, 0, 0, 0, 750, 751, 5, 99, 0, 0, 751, 755, 3, 96, 48, 0, 752, 754, + 3, 98, 49, 0, 753, 752, 1, 0, 0, 0, 754, 757, 1, 0, 0, 0, 755, 753, 1, + 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 759, 1, 0, 0, 0, 757, 755, 1, 0, 0, + 0, 758, 750, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 762, 1, 0, 0, 0, 760, + 761, 5, 100, 0, 0, 761, 763, 3, 112, 56, 0, 762, 760, 1, 0, 0, 0, 762, + 763, 1, 0, 0, 0, 763, 771, 1, 0, 0, 0, 764, 765, 5, 89, 0, 0, 765, 766, + 5, 88, 0, 0, 766, 769, 3, 118, 59, 0, 767, 768, 5, 90, 0, 0, 768, 770, + 3, 112, 56, 0, 769, 767, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 772, 1, + 0, 0, 0, 771, 764, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 787, 1, 0, 0, + 0, 773, 774, 5, 125, 0, 0, 774, 775, 3, 12, 6, 0, 775, 776, 5, 82, 0, 0, + 776, 784, 3, 114, 57, 0, 777, 778, 5, 9, 0, 0, 778, 779, 3, 12, 6, 0, 779, + 780, 5, 82, 0, 0, 780, 781, 3, 114, 57, 0, 781, 783, 1, 0, 0, 0, 782, 777, + 1, 0, 0, 0, 783, 786, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, + 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 787, 773, 1, 0, 0, 0, + 787, 788, 1, 0, 0, 0, 788, 95, 1, 0, 0, 0, 789, 794, 3, 12, 6, 0, 790, + 792, 5, 82, 0, 0, 791, 790, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 793, + 1, 0, 0, 0, 793, 795, 3, 12, 6, 0, 794, 791, 1, 0, 0, 0, 794, 795, 1, 0, + 0, 0, 795, 806, 1, 0, 0, 0, 796, 797, 5, 7, 0, 0, 797, 798, 3, 88, 44, + 0, 798, 803, 5, 8, 0, 0, 799, 801, 5, 82, 0, 0, 800, 799, 1, 0, 0, 0, 800, + 801, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 804, 3, 12, 6, 0, 803, 800, + 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 806, 1, 0, 0, 0, 805, 789, 1, 0, + 0, 0, 805, 796, 1, 0, 0, 0, 806, 97, 1, 0, 0, 0, 807, 809, 7, 9, 0, 0, + 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, + 811, 5, 78, 0, 0, 811, 812, 3, 96, 48, 0, 812, 813, 5, 54, 0, 0, 813, 814, + 3, 112, 56, 0, 814, 99, 1, 0, 0, 0, 815, 820, 3, 112, 56, 0, 816, 818, + 5, 82, 0, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 819, 1, 0, + 0, 0, 819, 821, 3, 12, 6, 0, 820, 817, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, + 821, 829, 1, 0, 0, 0, 822, 823, 3, 12, 6, 0, 823, 824, 5, 12, 0, 0, 824, + 826, 1, 0, 0, 0, 825, 822, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, + 1, 0, 0, 0, 827, 829, 5, 14, 0, 0, 828, 815, 1, 0, 0, 0, 828, 825, 1, 0, + 0, 0, 829, 101, 1, 0, 0, 0, 830, 831, 5, 63, 0, 0, 831, 836, 3, 12, 6, + 0, 832, 834, 5, 82, 0, 0, 833, 832, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, + 835, 1, 0, 0, 0, 835, 837, 3, 12, 6, 0, 836, 833, 1, 0, 0, 0, 836, 837, + 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 5, 59, 0, 0, 839, 844, 3, 104, + 52, 0, 840, 841, 5, 9, 0, 0, 841, 843, 3, 104, 52, 0, 842, 840, 1, 0, 0, + 0, 843, 846, 1, 0, 0, 0, 844, 842, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, + 855, 1, 0, 0, 0, 846, 844, 1, 0, 0, 0, 847, 848, 5, 99, 0, 0, 848, 852, + 3, 96, 48, 0, 849, 851, 3, 98, 49, 0, 850, 849, 1, 0, 0, 0, 851, 854, 1, + 0, 0, 0, 852, 850, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 856, 1, 0, 0, + 0, 854, 852, 1, 0, 0, 0, 855, 847, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, + 859, 1, 0, 0, 0, 857, 858, 5, 100, 0, 0, 858, 860, 3, 112, 56, 0, 859, + 857, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 103, 1, 0, 0, 0, 861, 862, + 3, 12, 6, 0, 862, 863, 5, 15, 0, 0, 863, 864, 3, 112, 56, 0, 864, 105, + 1, 0, 0, 0, 865, 866, 5, 103, 0, 0, 866, 867, 5, 113, 0, 0, 867, 872, 3, + 12, 6, 0, 868, 870, 5, 82, 0, 0, 869, 868, 1, 0, 0, 0, 869, 870, 1, 0, + 0, 0, 870, 871, 1, 0, 0, 0, 871, 873, 3, 12, 6, 0, 872, 869, 1, 0, 0, 0, + 872, 873, 1, 0, 0, 0, 873, 878, 1, 0, 0, 0, 874, 875, 5, 7, 0, 0, 875, + 876, 3, 14, 7, 0, 876, 877, 5, 8, 0, 0, 877, 879, 1, 0, 0, 0, 878, 874, + 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 895, 1, 0, 0, 0, 880, 881, 5, 104, + 0, 0, 881, 882, 5, 7, 0, 0, 882, 883, 3, 118, 59, 0, 883, 891, 5, 8, 0, + 0, 884, 885, 5, 9, 0, 0, 885, 886, 5, 7, 0, 0, 886, 887, 3, 118, 59, 0, + 887, 888, 5, 8, 0, 0, 888, 890, 1, 0, 0, 0, 889, 884, 1, 0, 0, 0, 890, + 893, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 896, + 1, 0, 0, 0, 893, 891, 1, 0, 0, 0, 894, 896, 3, 88, 44, 0, 895, 880, 1, + 0, 0, 0, 895, 894, 1, 0, 0, 0, 896, 898, 1, 0, 0, 0, 897, 899, 3, 108, + 54, 0, 898, 897, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 107, 1, 0, 0, 0, + 900, 901, 5, 54, 0, 0, 901, 909, 5, 114, 0, 0, 902, 903, 5, 7, 0, 0, 903, + 904, 3, 14, 7, 0, 904, 907, 5, 8, 0, 0, 905, 906, 5, 100, 0, 0, 906, 908, + 3, 112, 56, 0, 907, 905, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 910, 1, + 0, 0, 0, 909, 902, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 911, 1, 0, 0, + 0, 911, 927, 5, 55, 0, 0, 912, 928, 5, 115, 0, 0, 913, 914, 5, 63, 0, 0, + 914, 915, 5, 59, 0, 0, 915, 920, 3, 104, 52, 0, 916, 917, 5, 9, 0, 0, 917, + 919, 3, 104, 52, 0, 918, 916, 1, 0, 0, 0, 919, 922, 1, 0, 0, 0, 920, 918, + 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 925, 1, 0, 0, 0, 922, 920, 1, 0, + 0, 0, 923, 924, 5, 100, 0, 0, 924, 926, 3, 112, 56, 0, 925, 923, 1, 0, + 0, 0, 925, 926, 1, 0, 0, 0, 926, 928, 1, 0, 0, 0, 927, 912, 1, 0, 0, 0, + 927, 913, 1, 0, 0, 0, 928, 109, 1, 0, 0, 0, 929, 930, 5, 62, 0, 0, 930, + 931, 5, 99, 0, 0, 931, 936, 3, 12, 6, 0, 932, 934, 5, 82, 0, 0, 933, 932, + 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 935, 1, 0, 0, 0, 935, 937, 3, 12, + 6, 0, 936, 933, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 940, 1, 0, 0, 0, + 938, 939, 5, 100, 0, 0, 939, 941, 3, 112, 56, 0, 940, 938, 1, 0, 0, 0, + 940, 941, 1, 0, 0, 0, 941, 111, 1, 0, 0, 0, 942, 943, 6, 56, -1, 0, 943, + 944, 5, 7, 0, 0, 944, 945, 3, 112, 56, 0, 945, 947, 5, 8, 0, 0, 946, 948, + 3, 18, 9, 0, 947, 946, 1, 0, 0, 0, 947, 948, 1, 0, 0, 0, 948, 1016, 1, + 0, 0, 0, 949, 950, 7, 0, 0, 0, 950, 1016, 3, 112, 56, 20, 951, 953, 3, + 10, 5, 0, 952, 954, 3, 18, 9, 0, 953, 952, 1, 0, 0, 0, 953, 954, 1, 0, + 0, 0, 954, 1016, 1, 0, 0, 0, 955, 962, 3, 120, 60, 0, 956, 957, 5, 126, + 0, 0, 957, 958, 5, 7, 0, 0, 958, 959, 5, 100, 0, 0, 959, 960, 3, 112, 56, + 0, 960, 961, 5, 8, 0, 0, 961, 963, 1, 0, 0, 0, 962, 956, 1, 0, 0, 0, 962, + 963, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 967, 5, 123, 0, 0, 965, 968, + 3, 114, 57, 0, 966, 968, 5, 139, 0, 0, 967, 965, 1, 0, 0, 0, 967, 966, + 1, 0, 0, 0, 968, 1016, 1, 0, 0, 0, 969, 971, 3, 120, 60, 0, 970, 972, 3, + 18, 9, 0, 971, 970, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 1016, 1, 0, + 0, 0, 973, 975, 3, 20, 10, 0, 974, 976, 3, 18, 9, 0, 975, 974, 1, 0, 0, + 0, 975, 976, 1, 0, 0, 0, 976, 1016, 1, 0, 0, 0, 977, 978, 3, 12, 6, 0, + 978, 979, 5, 12, 0, 0, 979, 981, 1, 0, 0, 0, 980, 977, 1, 0, 0, 0, 980, + 981, 1, 0, 0, 0, 981, 982, 1, 0, 0, 0, 982, 984, 3, 12, 6, 0, 983, 985, + 3, 18, 9, 0, 984, 983, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, 1016, 1, + 0, 0, 0, 986, 988, 5, 94, 0, 0, 987, 989, 3, 112, 56, 0, 988, 987, 1, 0, + 0, 0, 988, 989, 1, 0, 0, 0, 989, 991, 1, 0, 0, 0, 990, 992, 3, 116, 58, + 0, 991, 990, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993, 991, 1, 0, 0, 0, 993, + 994, 1, 0, 0, 0, 994, 997, 1, 0, 0, 0, 995, 996, 5, 119, 0, 0, 996, 998, + 3, 112, 56, 0, 997, 995, 1, 0, 0, 0, 997, 998, 1, 0, 0, 0, 998, 999, 1, + 0, 0, 0, 999, 1000, 5, 97, 0, 0, 1000, 1016, 1, 0, 0, 0, 1001, 1003, 5, + 66, 0, 0, 1002, 1001, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1004, 1, + 0, 0, 0, 1004, 1006, 5, 75, 0, 0, 1005, 1002, 1, 0, 0, 0, 1005, 1006, 1, + 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1008, 5, 7, 0, 0, 1008, 1009, 3, + 88, 44, 0, 1009, 1011, 5, 8, 0, 0, 1010, 1012, 3, 18, 9, 0, 1011, 1010, + 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1016, 1, 0, 0, 0, 1013, 1014, + 5, 66, 0, 0, 1014, 1016, 3, 112, 56, 3, 1015, 942, 1, 0, 0, 0, 1015, 949, + 1, 0, 0, 0, 1015, 951, 1, 0, 0, 0, 1015, 955, 1, 0, 0, 0, 1015, 969, 1, + 0, 0, 0, 1015, 973, 1, 0, 0, 0, 1015, 980, 1, 0, 0, 0, 1015, 986, 1, 0, + 0, 0, 1015, 1005, 1, 0, 0, 0, 1015, 1013, 1, 0, 0, 0, 1016, 1102, 1, 0, + 0, 0, 1017, 1018, 10, 18, 0, 0, 1018, 1019, 7, 10, 0, 0, 1019, 1101, 3, + 112, 56, 19, 1020, 1021, 10, 17, 0, 0, 1021, 1022, 7, 0, 0, 0, 1022, 1101, + 3, 112, 56, 18, 1023, 1024, 10, 9, 0, 0, 1024, 1025, 5, 13, 0, 0, 1025, + 1101, 3, 112, 56, 10, 1026, 1028, 10, 7, 0, 0, 1027, 1029, 5, 66, 0, 0, + 1028, 1027, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1030, 1, 0, 0, 0, + 1030, 1031, 7, 11, 0, 0, 1031, 1101, 3, 112, 56, 8, 1032, 1034, 10, 6, + 0, 0, 1033, 1035, 5, 66, 0, 0, 1034, 1033, 1, 0, 0, 0, 1034, 1035, 1, 0, + 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 5, 73, 0, 0, 1037, 1038, 3, 112, + 56, 0, 1038, 1039, 5, 68, 0, 0, 1039, 1040, 3, 112, 56, 7, 1040, 1101, + 1, 0, 0, 0, 1041, 1042, 10, 5, 0, 0, 1042, 1043, 7, 12, 0, 0, 1043, 1101, + 3, 112, 56, 6, 1044, 1045, 10, 2, 0, 0, 1045, 1046, 5, 68, 0, 0, 1046, + 1101, 3, 112, 56, 3, 1047, 1048, 10, 1, 0, 0, 1048, 1049, 5, 69, 0, 0, + 1049, 1101, 3, 112, 56, 2, 1050, 1051, 10, 22, 0, 0, 1051, 1052, 5, 12, + 0, 0, 1052, 1054, 3, 12, 6, 0, 1053, 1055, 3, 18, 9, 0, 1054, 1053, 1, + 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 1101, 1, 0, 0, 0, 1056, 1057, 10, + 21, 0, 0, 1057, 1066, 5, 3, 0, 0, 1058, 1067, 3, 112, 56, 0, 1059, 1061, + 3, 112, 56, 0, 1060, 1059, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1062, + 1, 0, 0, 0, 1062, 1064, 5, 5, 0, 0, 1063, 1065, 3, 112, 56, 0, 1064, 1063, + 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1067, 1, 0, 0, 0, 1066, 1058, + 1, 0, 0, 0, 1066, 1060, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1070, + 5, 4, 0, 0, 1069, 1071, 3, 18, 9, 0, 1070, 1069, 1, 0, 0, 0, 1070, 1071, + 1, 0, 0, 0, 1071, 1101, 1, 0, 0, 0, 1072, 1073, 10, 19, 0, 0, 1073, 1074, + 5, 101, 0, 0, 1074, 1101, 3, 12, 6, 0, 1075, 1077, 10, 8, 0, 0, 1076, 1078, + 5, 66, 0, 0, 1077, 1076, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1079, + 1, 0, 0, 0, 1079, 1080, 5, 72, 0, 0, 1080, 1083, 5, 7, 0, 0, 1081, 1084, + 3, 118, 59, 0, 1082, 1084, 3, 88, 44, 0, 1083, 1081, 1, 0, 0, 0, 1083, + 1082, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1086, 5, 8, 0, 0, 1086, + 1101, 1, 0, 0, 0, 1087, 1088, 10, 4, 0, 0, 1088, 1090, 5, 74, 0, 0, 1089, + 1091, 5, 66, 0, 0, 1090, 1089, 1, 0, 0, 0, 1090, 1091, 1, 0, 0, 0, 1091, + 1098, 1, 0, 0, 0, 1092, 1093, 5, 98, 0, 0, 1093, 1094, 5, 99, 0, 0, 1094, + 1099, 3, 112, 56, 0, 1095, 1099, 5, 61, 0, 0, 1096, 1099, 5, 129, 0, 0, + 1097, 1099, 5, 130, 0, 0, 1098, 1092, 1, 0, 0, 0, 1098, 1095, 1, 0, 0, + 0, 1098, 1096, 1, 0, 0, 0, 1098, 1097, 1, 0, 0, 0, 1099, 1101, 1, 0, 0, + 0, 1100, 1017, 1, 0, 0, 0, 1100, 1020, 1, 0, 0, 0, 1100, 1023, 1, 0, 0, + 0, 1100, 1026, 1, 0, 0, 0, 1100, 1032, 1, 0, 0, 0, 1100, 1041, 1, 0, 0, + 0, 1100, 1044, 1, 0, 0, 0, 1100, 1047, 1, 0, 0, 0, 1100, 1050, 1, 0, 0, + 0, 1100, 1056, 1, 0, 0, 0, 1100, 1072, 1, 0, 0, 0, 1100, 1075, 1, 0, 0, + 0, 1100, 1087, 1, 0, 0, 0, 1101, 1104, 1, 0, 0, 0, 1102, 1100, 1, 0, 0, + 0, 1102, 1103, 1, 0, 0, 0, 1103, 113, 1, 0, 0, 0, 1104, 1102, 1, 0, 0, + 0, 1105, 1109, 5, 7, 0, 0, 1106, 1107, 5, 124, 0, 0, 1107, 1108, 5, 88, + 0, 0, 1108, 1110, 3, 118, 59, 0, 1109, 1106, 1, 0, 0, 0, 1109, 1110, 1, + 0, 0, 0, 1110, 1121, 1, 0, 0, 0, 1111, 1112, 5, 87, 0, 0, 1112, 1113, 5, + 88, 0, 0, 1113, 1118, 3, 92, 46, 0, 1114, 1115, 5, 9, 0, 0, 1115, 1117, + 3, 92, 46, 0, 1116, 1114, 1, 0, 0, 0, 1117, 1120, 1, 0, 0, 0, 1118, 1116, + 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1122, 1, 0, 0, 0, 1120, 1118, + 1, 0, 0, 0, 1121, 1111, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1123, + 1, 0, 0, 0, 1123, 1124, 5, 8, 0, 0, 1124, 115, 1, 0, 0, 0, 1125, 1126, + 5, 95, 0, 0, 1126, 1127, 3, 112, 56, 0, 1127, 1128, 5, 96, 0, 0, 1128, + 1129, 3, 112, 56, 0, 1129, 117, 1, 0, 0, 0, 1130, 1135, 3, 112, 56, 0, + 1131, 1132, 5, 9, 0, 0, 1132, 1134, 3, 112, 56, 0, 1133, 1131, 1, 0, 0, + 0, 1134, 1137, 1, 0, 0, 0, 1135, 1133, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, + 0, 1136, 119, 1, 0, 0, 0, 1137, 1135, 1, 0, 0, 0, 1138, 1139, 3, 12, 6, + 0, 1139, 1145, 5, 7, 0, 0, 1140, 1142, 5, 98, 0, 0, 1141, 1140, 1, 0, 0, + 0, 1141, 1142, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1146, 3, 118, + 59, 0, 1144, 1146, 5, 14, 0, 0, 1145, 1141, 1, 0, 0, 0, 1145, 1144, 1, + 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1148, 5, + 8, 0, 0, 1148, 121, 1, 0, 0, 0, 1149, 1150, 3, 124, 62, 0, 1150, 1151, + 5, 6, 0, 0, 1151, 1153, 1, 0, 0, 0, 1152, 1149, 1, 0, 0, 0, 1153, 1156, + 1, 0, 0, 0, 1154, 1152, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 123, + 1, 0, 0, 0, 1156, 1154, 1, 0, 0, 0, 1157, 1178, 3, 70, 35, 0, 1158, 1159, + 5, 139, 0, 0, 1159, 1161, 5, 7, 0, 0, 1160, 1162, 3, 130, 65, 0, 1161, + 1160, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, + 1178, 5, 8, 0, 0, 1164, 1165, 3, 22, 11, 0, 1165, 1166, 5, 15, 0, 0, 1166, + 1168, 1, 0, 0, 0, 1167, 1164, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, + 1169, 1, 0, 0, 0, 1169, 1170, 5, 139, 0, 0, 1170, 1171, 5, 12, 0, 0, 1171, + 1172, 5, 139, 0, 0, 1172, 1174, 5, 7, 0, 0, 1173, 1175, 3, 130, 65, 0, + 1174, 1173, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, + 1176, 1178, 5, 8, 0, 0, 1177, 1157, 1, 0, 0, 0, 1177, 1158, 1, 0, 0, 0, + 1177, 1167, 1, 0, 0, 0, 1178, 125, 1, 0, 0, 0, 1179, 1181, 3, 132, 66, + 0, 1180, 1179, 1, 0, 0, 0, 1181, 1184, 1, 0, 0, 0, 1182, 1180, 1, 0, 0, + 0, 1182, 1183, 1, 0, 0, 0, 1183, 127, 1, 0, 0, 0, 1184, 1182, 1, 0, 0, + 0, 1185, 1186, 6, 64, -1, 0, 1186, 1187, 5, 7, 0, 0, 1187, 1188, 3, 128, + 64, 0, 1188, 1190, 5, 8, 0, 0, 1189, 1191, 3, 18, 9, 0, 1190, 1189, 1, + 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1217, 1, 0, 0, 0, 1192, 1193, 7, + 13, 0, 0, 1193, 1217, 3, 128, 64, 13, 1194, 1196, 3, 10, 5, 0, 1195, 1197, + 3, 18, 9, 0, 1196, 1195, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1217, + 1, 0, 0, 0, 1198, 1200, 3, 136, 68, 0, 1199, 1201, 3, 18, 9, 0, 1200, 1199, + 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1217, 1, 0, 0, 0, 1202, 1204, + 3, 20, 10, 0, 1203, 1205, 3, 18, 9, 0, 1204, 1203, 1, 0, 0, 0, 1204, 1205, + 1, 0, 0, 0, 1205, 1217, 1, 0, 0, 0, 1206, 1208, 5, 3, 0, 0, 1207, 1209, + 3, 130, 65, 0, 1208, 1207, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1210, + 1, 0, 0, 0, 1210, 1212, 5, 4, 0, 0, 1211, 1213, 3, 18, 9, 0, 1212, 1211, + 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1217, 1, 0, 0, 0, 1214, 1215, + 5, 66, 0, 0, 1215, 1217, 3, 128, 64, 3, 1216, 1185, 1, 0, 0, 0, 1216, 1192, + 1, 0, 0, 0, 1216, 1194, 1, 0, 0, 0, 1216, 1198, 1, 0, 0, 0, 1216, 1202, + 1, 0, 0, 0, 1216, 1206, 1, 0, 0, 0, 1216, 1214, 1, 0, 0, 0, 1217, 1273, + 1, 0, 0, 0, 1218, 1219, 10, 12, 0, 0, 1219, 1220, 7, 10, 0, 0, 1220, 1272, + 3, 128, 64, 13, 1221, 1222, 10, 11, 0, 0, 1222, 1223, 7, 0, 0, 0, 1223, + 1272, 3, 128, 64, 12, 1224, 1225, 10, 6, 0, 0, 1225, 1226, 5, 13, 0, 0, + 1226, 1272, 3, 128, 64, 7, 1227, 1228, 10, 5, 0, 0, 1228, 1229, 7, 12, + 0, 0, 1229, 1272, 3, 128, 64, 6, 1230, 1231, 10, 2, 0, 0, 1231, 1232, 5, + 68, 0, 0, 1232, 1272, 3, 128, 64, 3, 1233, 1234, 10, 1, 0, 0, 1234, 1235, + 5, 69, 0, 0, 1235, 1272, 3, 128, 64, 2, 1236, 1237, 10, 15, 0, 0, 1237, + 1238, 5, 12, 0, 0, 1238, 1240, 5, 139, 0, 0, 1239, 1241, 3, 18, 9, 0, 1240, + 1239, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1272, 1, 0, 0, 0, 1242, + 1243, 10, 14, 0, 0, 1243, 1252, 5, 3, 0, 0, 1244, 1253, 3, 128, 64, 0, + 1245, 1247, 3, 128, 64, 0, 1246, 1245, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, + 0, 1247, 1248, 1, 0, 0, 0, 1248, 1250, 5, 5, 0, 0, 1249, 1251, 3, 128, + 64, 0, 1250, 1249, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1253, 1, 0, + 0, 0, 1252, 1244, 1, 0, 0, 0, 1252, 1246, 1, 0, 0, 0, 1253, 1254, 1, 0, + 0, 0, 1254, 1256, 5, 4, 0, 0, 1255, 1257, 3, 18, 9, 0, 1256, 1255, 1, 0, + 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1272, 1, 0, 0, 0, 1258, 1259, 10, 4, + 0, 0, 1259, 1261, 5, 74, 0, 0, 1260, 1262, 5, 66, 0, 0, 1261, 1260, 1, + 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1269, 1, 0, 0, 0, 1263, 1264, 5, + 98, 0, 0, 1264, 1265, 5, 99, 0, 0, 1265, 1270, 3, 128, 64, 0, 1266, 1270, + 5, 61, 0, 0, 1267, 1270, 5, 129, 0, 0, 1268, 1270, 5, 130, 0, 0, 1269, + 1263, 1, 0, 0, 0, 1269, 1266, 1, 0, 0, 0, 1269, 1267, 1, 0, 0, 0, 1269, + 1268, 1, 0, 0, 0, 1270, 1272, 1, 0, 0, 0, 1271, 1218, 1, 0, 0, 0, 1271, + 1221, 1, 0, 0, 0, 1271, 1224, 1, 0, 0, 0, 1271, 1227, 1, 0, 0, 0, 1271, + 1230, 1, 0, 0, 0, 1271, 1233, 1, 0, 0, 0, 1271, 1236, 1, 0, 0, 0, 1271, + 1242, 1, 0, 0, 0, 1271, 1258, 1, 0, 0, 0, 1272, 1275, 1, 0, 0, 0, 1273, + 1271, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 129, 1, 0, 0, 0, 1275, + 1273, 1, 0, 0, 0, 1276, 1281, 3, 128, 64, 0, 1277, 1278, 5, 9, 0, 0, 1278, + 1280, 3, 128, 64, 0, 1279, 1277, 1, 0, 0, 0, 1280, 1283, 1, 0, 0, 0, 1281, + 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 131, 1, 0, 0, 0, 1283, + 1281, 1, 0, 0, 0, 1284, 1285, 5, 140, 0, 0, 1285, 1286, 3, 16, 8, 0, 1286, + 1287, 5, 6, 0, 0, 1287, 1365, 1, 0, 0, 0, 1288, 1293, 3, 134, 67, 0, 1289, + 1290, 5, 9, 0, 0, 1290, 1292, 3, 134, 67, 0, 1291, 1289, 1, 0, 0, 0, 1292, + 1295, 1, 0, 0, 0, 1293, 1291, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, + 1296, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1296, 1297, 5, 30, 0, 0, 1297, + 1299, 1, 0, 0, 0, 1298, 1288, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, + 1300, 1, 0, 0, 0, 1300, 1301, 3, 136, 68, 0, 1301, 1302, 5, 6, 0, 0, 1302, + 1365, 1, 0, 0, 0, 1303, 1305, 3, 128, 64, 0, 1304, 1306, 3, 16, 8, 0, 1305, + 1304, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, + 1308, 5, 30, 0, 0, 1308, 1309, 3, 128, 64, 0, 1309, 1310, 5, 6, 0, 0, 1310, + 1365, 1, 0, 0, 0, 1311, 1312, 5, 116, 0, 0, 1312, 1313, 5, 140, 0, 0, 1313, + 1317, 5, 72, 0, 0, 1314, 1318, 3, 140, 70, 0, 1315, 1318, 3, 20, 10, 0, + 1316, 1318, 3, 70, 35, 0, 1317, 1314, 1, 0, 0, 0, 1317, 1315, 1, 0, 0, + 0, 1317, 1316, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1323, 5, 1, 0, + 0, 1320, 1322, 3, 132, 66, 0, 1321, 1320, 1, 0, 0, 0, 1322, 1325, 1, 0, + 0, 0, 1323, 1321, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1326, 1, 0, + 0, 0, 1325, 1323, 1, 0, 0, 0, 1326, 1327, 5, 2, 0, 0, 1327, 1365, 1, 0, + 0, 0, 1328, 1329, 5, 117, 0, 0, 1329, 1334, 3, 138, 69, 0, 1330, 1331, + 5, 118, 0, 0, 1331, 1333, 3, 138, 69, 0, 1332, 1330, 1, 0, 0, 0, 1333, + 1336, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, + 1346, 1, 0, 0, 0, 1336, 1334, 1, 0, 0, 0, 1337, 1338, 5, 119, 0, 0, 1338, + 1342, 5, 1, 0, 0, 1339, 1341, 3, 132, 66, 0, 1340, 1339, 1, 0, 0, 0, 1341, + 1344, 1, 0, 0, 0, 1342, 1340, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, + 1345, 1, 0, 0, 0, 1344, 1342, 1, 0, 0, 0, 1345, 1347, 5, 2, 0, 0, 1346, + 1337, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1365, 1, 0, 0, 0, 1348, + 1349, 3, 70, 35, 0, 1349, 1350, 5, 6, 0, 0, 1350, 1365, 1, 0, 0, 0, 1351, + 1352, 5, 120, 0, 0, 1352, 1365, 5, 6, 0, 0, 1353, 1356, 5, 121, 0, 0, 1354, + 1357, 3, 130, 65, 0, 1355, 1357, 3, 70, 35, 0, 1356, 1354, 1, 0, 0, 0, + 1356, 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1358, 1, 0, 0, 0, + 1358, 1365, 5, 6, 0, 0, 1359, 1360, 5, 121, 0, 0, 1360, 1361, 5, 122, 0, + 0, 1361, 1362, 3, 130, 65, 0, 1362, 1363, 5, 6, 0, 0, 1363, 1365, 1, 0, + 0, 0, 1364, 1284, 1, 0, 0, 0, 1364, 1298, 1, 0, 0, 0, 1364, 1303, 1, 0, + 0, 0, 1364, 1311, 1, 0, 0, 0, 1364, 1328, 1, 0, 0, 0, 1364, 1348, 1, 0, + 0, 0, 1364, 1351, 1, 0, 0, 0, 1364, 1353, 1, 0, 0, 0, 1364, 1359, 1, 0, + 0, 0, 1365, 133, 1, 0, 0, 0, 1366, 1367, 7, 14, 0, 0, 1367, 135, 1, 0, + 0, 0, 1368, 1369, 5, 139, 0, 0, 1369, 1371, 5, 7, 0, 0, 1370, 1372, 3, + 130, 65, 0, 1371, 1370, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, + 1, 0, 0, 0, 1373, 1374, 5, 8, 0, 0, 1374, 137, 1, 0, 0, 0, 1375, 1376, + 3, 128, 64, 0, 1376, 1380, 5, 1, 0, 0, 1377, 1379, 3, 132, 66, 0, 1378, + 1377, 1, 0, 0, 0, 1379, 1382, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1380, + 1381, 1, 0, 0, 0, 1381, 1383, 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1383, + 1384, 5, 2, 0, 0, 1384, 139, 1, 0, 0, 0, 1385, 1386, 3, 128, 64, 0, 1386, + 1387, 5, 31, 0, 0, 1387, 1388, 3, 128, 64, 0, 1388, 141, 1, 0, 0, 0, 183, + 145, 163, 167, 175, 181, 188, 197, 201, 213, 221, 223, 237, 240, 260, 265, + 279, 283, 293, 301, 311, 322, 335, 341, 346, 348, 351, 356, 362, 367, 370, + 377, 387, 398, 404, 410, 416, 431, 443, 455, 458, 465, 472, 478, 487, 494, + 500, 503, 511, 521, 528, 535, 538, 548, 557, 560, 563, 577, 583, 587, 594, + 621, 636, 647, 671, 675, 689, 699, 709, 712, 716, 720, 724, 728, 732, 736, + 740, 747, 755, 758, 762, 769, 771, 784, 787, 791, 794, 800, 803, 805, 808, + 817, 820, 825, 828, 833, 836, 844, 852, 855, 859, 869, 872, 878, 891, 895, + 898, 907, 909, 920, 925, 927, 933, 936, 940, 947, 953, 962, 967, 971, 975, + 980, 984, 988, 993, 997, 1002, 1005, 1011, 1015, 1028, 1034, 1054, 1060, + 1064, 1066, 1070, 1077, 1083, 1090, 1098, 1100, 1102, 1109, 1118, 1121, + 1135, 1141, 1145, 1154, 1161, 1167, 1174, 1177, 1182, 1190, 1196, 1200, + 1204, 1208, 1212, 1216, 1240, 1246, 1250, 1252, 1256, 1261, 1269, 1271, + 1273, 1281, 1293, 1298, 1305, 1317, 1323, 1334, 1342, 1346, 1356, 1364, + 1371, 1380, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -1018,42 +1003,36 @@ const ( KuneiformParserRULE_constraint_def = 38 KuneiformParserRULE_unnamed_constraint = 39 KuneiformParserRULE_alter_table_statement = 40 - KuneiformParserRULE_alter_column_clause = 41 - KuneiformParserRULE_add_column_clause = 42 - KuneiformParserRULE_drop_column_clause = 43 - KuneiformParserRULE_rename_column_clause = 44 - KuneiformParserRULE_rename_table_clause = 45 - KuneiformParserRULE_add_fk_clause = 46 - KuneiformParserRULE_drop_fk_clause = 47 - KuneiformParserRULE_create_index_statement = 48 - KuneiformParserRULE_drop_index_statement = 49 - KuneiformParserRULE_select_statement = 50 - KuneiformParserRULE_compound_operator = 51 - KuneiformParserRULE_ordering_term = 52 - KuneiformParserRULE_select_core = 53 - KuneiformParserRULE_relation = 54 - KuneiformParserRULE_join = 55 - KuneiformParserRULE_result_column = 56 - KuneiformParserRULE_update_statement = 57 - KuneiformParserRULE_update_set_clause = 58 - KuneiformParserRULE_insert_statement = 59 - KuneiformParserRULE_upsert_clause = 60 - KuneiformParserRULE_delete_statement = 61 - KuneiformParserRULE_sql_expr = 62 - KuneiformParserRULE_window = 63 - KuneiformParserRULE_when_then_clause = 64 - KuneiformParserRULE_sql_expr_list = 65 - KuneiformParserRULE_sql_function_call = 66 - KuneiformParserRULE_action_block = 67 - KuneiformParserRULE_action_statement = 68 - KuneiformParserRULE_procedure_block = 69 - KuneiformParserRULE_procedure_expr = 70 - KuneiformParserRULE_procedure_expr_list = 71 - KuneiformParserRULE_proc_statement = 72 - KuneiformParserRULE_variable_or_underscore = 73 - KuneiformParserRULE_procedure_function_call = 74 - KuneiformParserRULE_if_then_block = 75 - KuneiformParserRULE_range = 76 + KuneiformParserRULE_alter_table_action = 41 + KuneiformParserRULE_create_index_statement = 42 + KuneiformParserRULE_drop_index_statement = 43 + KuneiformParserRULE_select_statement = 44 + KuneiformParserRULE_compound_operator = 45 + KuneiformParserRULE_ordering_term = 46 + KuneiformParserRULE_select_core = 47 + KuneiformParserRULE_relation = 48 + KuneiformParserRULE_join = 49 + KuneiformParserRULE_result_column = 50 + KuneiformParserRULE_update_statement = 51 + KuneiformParserRULE_update_set_clause = 52 + KuneiformParserRULE_insert_statement = 53 + KuneiformParserRULE_upsert_clause = 54 + KuneiformParserRULE_delete_statement = 55 + KuneiformParserRULE_sql_expr = 56 + KuneiformParserRULE_window = 57 + KuneiformParserRULE_when_then_clause = 58 + KuneiformParserRULE_sql_expr_list = 59 + KuneiformParserRULE_sql_function_call = 60 + KuneiformParserRULE_action_block = 61 + KuneiformParserRULE_action_statement = 62 + KuneiformParserRULE_procedure_block = 63 + KuneiformParserRULE_procedure_expr = 64 + KuneiformParserRULE_procedure_expr_list = 65 + KuneiformParserRULE_proc_statement = 66 + KuneiformParserRULE_variable_or_underscore = 67 + KuneiformParserRULE_procedure_function_call = 68 + KuneiformParserRULE_if_then_block = 69 + KuneiformParserRULE_range = 70 ) // ISrcContext is an interface to support dynamic dispatch. @@ -1173,7 +1152,7 @@ func (p *KuneiformParser) Src() (localctx ISrcContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(155) + p.SetState(143) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1182,11 +1161,11 @@ func (p *KuneiformParser) Src() (localctx ISrcContext) { for ok := true; ok; ok = ((int64((_la-42)) & ^0x3f) == 0 && ((int64(1)<<(_la-42))&3461016313637371923) != 0) { { - p.SetState(154) + p.SetState(142) p.Sql() } - p.SetState(157) + p.SetState(145) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1194,7 +1173,7 @@ func (p *KuneiformParser) Src() (localctx ISrcContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(159) + p.SetState(147) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1305,11 +1284,11 @@ func (p *KuneiformParser) Schema_entry() (localctx ISchema_entryContext) { p.EnterRule(localctx, 2, KuneiformParserRULE_schema_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(161) + p.SetState(149) p.Schema() } { - p.SetState(162) + p.SetState(150) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1420,11 +1399,11 @@ func (p *KuneiformParser) Sql_entry() (localctx ISql_entryContext) { p.EnterRule(localctx, 4, KuneiformParserRULE_sql_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(164) + p.SetState(152) p.Sql() } { - p.SetState(165) + p.SetState(153) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1535,11 +1514,11 @@ func (p *KuneiformParser) Action_entry() (localctx IAction_entryContext) { p.EnterRule(localctx, 6, KuneiformParserRULE_action_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(167) + p.SetState(155) p.Action_block() } { - p.SetState(168) + p.SetState(156) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1650,11 +1629,11 @@ func (p *KuneiformParser) Procedure_entry() (localctx IProcedure_entryContext) { p.EnterRule(localctx, 8, KuneiformParserRULE_procedure_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(170) + p.SetState(158) p.Procedure_block() } { - p.SetState(171) + p.SetState(159) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1954,7 +1933,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { p.EnterRule(localctx, 10, KuneiformParserRULE_literal) var _la int - p.SetState(187) + p.SetState(175) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1965,7 +1944,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewString_literalContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(173) + p.SetState(161) p.Match(KuneiformParserSTRING_) if p.HasError() { // Recognition error - abort rule @@ -1976,7 +1955,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { case 2: localctx = NewInteger_literalContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(175) + p.SetState(163) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1985,7 +1964,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { if _la == KuneiformParserPLUS || _la == KuneiformParserMINUS { { - p.SetState(174) + p.SetState(162) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -1998,7 +1977,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } { - p.SetState(177) + p.SetState(165) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2009,7 +1988,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { case 3: localctx = NewDecimal_literalContext(p, localctx) p.EnterOuterAlt(localctx, 3) - p.SetState(179) + p.SetState(167) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2018,7 +1997,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { if _la == KuneiformParserPLUS || _la == KuneiformParserMINUS { { - p.SetState(178) + p.SetState(166) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -2031,7 +2010,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } { - p.SetState(181) + p.SetState(169) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2039,7 +2018,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } } { - p.SetState(182) + p.SetState(170) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -2047,7 +2026,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } } { - p.SetState(183) + p.SetState(171) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2059,7 +2038,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewBoolean_literalContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(184) + p.SetState(172) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserTRUE || _la == KuneiformParserFALSE) { @@ -2074,7 +2053,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewNull_literalContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(185) + p.SetState(173) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -2086,7 +2065,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewBinary_literalContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(186) + p.SetState(174) p.Match(KuneiformParserBINARY_) if p.HasError() { // Recognition error - abort rule @@ -2192,7 +2171,7 @@ func (s *IdentifierContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { localctx = NewIdentifierContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 12, KuneiformParserRULE_identifier) - p.SetState(193) + p.SetState(181) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2202,7 +2181,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { case KuneiformParserDOUBLE_QUOTE: p.EnterOuterAlt(localctx, 1) { - p.SetState(189) + p.SetState(177) p.Match(KuneiformParserDOUBLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -2210,7 +2189,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { } } { - p.SetState(190) + p.SetState(178) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -2218,7 +2197,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { } } { - p.SetState(191) + p.SetState(179) p.Match(KuneiformParserDOUBLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -2229,7 +2208,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { case KuneiformParserIDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(192) + p.SetState(180) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -2378,10 +2357,10 @@ func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(195) + p.SetState(183) p.Identifier() } - p.SetState(200) + p.SetState(188) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2390,7 +2369,7 @@ func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(196) + p.SetState(184) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2398,11 +2377,11 @@ func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { } } { - p.SetState(197) + p.SetState(185) p.Identifier() } - p.SetState(202) + p.SetState(190) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2531,19 +2510,19 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { p.EnterRule(localctx, 16, KuneiformParserRULE_type) p.EnterOuterAlt(localctx, 1) { - p.SetState(203) + p.SetState(191) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(209) + p.SetState(197) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 6, p.GetParserRuleContext()) == 1 { { - p.SetState(204) + p.SetState(192) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -2551,7 +2530,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(205) + p.SetState(193) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2559,7 +2538,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(206) + p.SetState(194) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2567,7 +2546,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(207) + p.SetState(195) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2575,7 +2554,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(208) + p.SetState(196) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -2586,12 +2565,12 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } else if p.HasError() { // JIM goto errorExit } - p.SetState(213) + p.SetState(201) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 7, p.GetParserRuleContext()) == 1 { { - p.SetState(211) + p.SetState(199) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -2599,7 +2578,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(212) + p.SetState(200) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -2714,7 +2693,7 @@ func (p *KuneiformParser) Type_cast() (localctx IType_castContext) { p.EnterRule(localctx, 18, KuneiformParserRULE_type_cast) p.EnterOuterAlt(localctx, 1) { - p.SetState(215) + p.SetState(203) p.Match(KuneiformParserTYPE_CAST) if p.HasError() { // Recognition error - abort rule @@ -2722,7 +2701,7 @@ func (p *KuneiformParser) Type_cast() (localctx IType_castContext) { } } { - p.SetState(216) + p.SetState(204) p.Type_() } @@ -2819,7 +2798,7 @@ func (p *KuneiformParser) Variable() (localctx IVariableContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(218) + p.SetState(206) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE) { @@ -2966,10 +2945,10 @@ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(220) + p.SetState(208) p.Variable() } - p.SetState(225) + p.SetState(213) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2978,7 +2957,7 @@ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(221) + p.SetState(209) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2986,11 +2965,11 @@ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { } } { - p.SetState(222) + p.SetState(210) p.Variable() } - p.SetState(227) + p.SetState(215) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3270,10 +3249,10 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(228) + p.SetState(216) p.Database_declaration() } - p.SetState(235) + p.SetState(223) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3281,7 +3260,7 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { _la = p.GetTokenStream().LA(1) for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&257698037760) != 0) || _la == KuneiformParserCONTEXTUAL_VARIABLE { - p.SetState(233) + p.SetState(221) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3290,25 +3269,25 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 9, p.GetParserRuleContext()) { case 1: { - p.SetState(229) + p.SetState(217) p.Use_declaration() } case 2: { - p.SetState(230) + p.SetState(218) p.Table_declaration() } case 3: { - p.SetState(231) + p.SetState(219) p.Action_declaration() } case 4: { - p.SetState(232) + p.SetState(220) p.Procedure_declaration() } @@ -3316,7 +3295,7 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { goto errorExit } - p.SetState(237) + p.SetState(225) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3495,7 +3474,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(238) + p.SetState(226) p.Match(KuneiformParserCONTEXTUAL_VARIABLE) if p.HasError() { // Recognition error - abort rule @@ -3503,14 +3482,14 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(239) + p.SetState(227) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(252) + p.SetState(240) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3519,7 +3498,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { if _la == KuneiformParserIDENTIFIER { { - p.SetState(240) + p.SetState(228) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3527,7 +3506,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(241) + p.SetState(229) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -3535,10 +3514,10 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(242) + p.SetState(230) p.Literal() } - p.SetState(249) + p.SetState(237) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3547,7 +3526,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { for _la == KuneiformParserCOMMA { { - p.SetState(243) + p.SetState(231) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -3555,7 +3534,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(244) + p.SetState(232) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3563,7 +3542,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(245) + p.SetState(233) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -3571,11 +3550,11 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(246) + p.SetState(234) p.Literal() } - p.SetState(251) + p.SetState(239) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3585,7 +3564,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } { - p.SetState(254) + p.SetState(242) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -3689,7 +3668,7 @@ func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declaration p.EnterRule(localctx, 28, KuneiformParserRULE_database_declaration) p.EnterOuterAlt(localctx, 1) { - p.SetState(256) + p.SetState(244) p.Match(KuneiformParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -3697,7 +3676,7 @@ func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declaration } } { - p.SetState(257) + p.SetState(245) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3705,7 +3684,7 @@ func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declaration } } { - p.SetState(258) + p.SetState(246) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -3894,7 +3873,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(260) + p.SetState(248) p.Match(KuneiformParserUSE) if p.HasError() { // Recognition error - abort rule @@ -3902,14 +3881,14 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(261) + p.SetState(249) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(277) + p.SetState(265) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3918,7 +3897,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { if _la == KuneiformParserLBRACE { { - p.SetState(262) + p.SetState(250) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -3926,7 +3905,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(263) + p.SetState(251) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3934,7 +3913,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(264) + p.SetState(252) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule @@ -3942,10 +3921,10 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(265) + p.SetState(253) p.Literal() } - p.SetState(272) + p.SetState(260) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3954,7 +3933,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { for _la == KuneiformParserCOMMA { { - p.SetState(266) + p.SetState(254) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -3962,7 +3941,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(267) + p.SetState(255) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3970,7 +3949,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(268) + p.SetState(256) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule @@ -3978,11 +3957,11 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(269) + p.SetState(257) p.Literal() } - p.SetState(274) + p.SetState(262) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3990,7 +3969,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(275) + p.SetState(263) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -4000,7 +3979,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } { - p.SetState(279) + p.SetState(267) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -4008,7 +3987,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(280) + p.SetState(268) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -4016,7 +3995,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(281) + p.SetState(269) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -4266,7 +4245,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex p.EnterOuterAlt(localctx, 1) { - p.SetState(283) + p.SetState(271) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -4274,7 +4253,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(284) + p.SetState(272) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -4282,7 +4261,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(285) + p.SetState(273) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -4290,10 +4269,10 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(286) + p.SetState(274) p.Column_def() } - p.SetState(295) + p.SetState(283) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4302,14 +4281,14 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex for _la == KuneiformParserCOMMA { { - p.SetState(287) + p.SetState(275) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(291) + p.SetState(279) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4318,19 +4297,19 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex switch p.GetTokenStream().LA(1) { case KuneiformParserIDENTIFIER: { - p.SetState(288) + p.SetState(276) p.Column_def() } case KuneiformParserHASH_IDENTIFIER: { - p.SetState(289) + p.SetState(277) p.Index_def() } case KuneiformParserFOREIGN, KuneiformParserLEGACY_FOREIGN_KEY: { - p.SetState(290) + p.SetState(278) p.Foreign_key_def() } @@ -4339,7 +4318,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex goto errorExit } - p.SetState(297) + p.SetState(285) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4347,7 +4326,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex _la = p.GetTokenStream().LA(1) } { - p.SetState(298) + p.SetState(286) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -4514,7 +4493,7 @@ func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(300) + p.SetState(288) var _m = p.Match(KuneiformParserIDENTIFIER) @@ -4525,10 +4504,10 @@ func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { } } { - p.SetState(301) + p.SetState(289) p.Type_() } - p.SetState(305) + p.SetState(293) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4537,11 +4516,11 @@ func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { for ((int64((_la-52)) & ^0x3f) == 0 && ((int64(1)<<(_la-52))&16657) != 0) || _la == KuneiformParserIDENTIFIER { { - p.SetState(302) + p.SetState(290) p.Constraint() } - p.SetState(307) + p.SetState(295) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4708,7 +4687,7 @@ func (p *KuneiformParser) C_column_def() (localctx IC_column_defContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(308) + p.SetState(296) var _m = p.Match(KuneiformParserIDENTIFIER) @@ -4719,10 +4698,10 @@ func (p *KuneiformParser) C_column_def() (localctx IC_column_defContext) { } } { - p.SetState(309) + p.SetState(297) p.Type_() } - p.SetState(313) + p.SetState(301) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4731,11 +4710,11 @@ func (p *KuneiformParser) C_column_def() (localctx IC_column_defContext) { for (int64((_la-50)) & ^0x3f) == 0 && ((int64(1)<<(_la-50))&83013) != 0 { { - p.SetState(310) + p.SetState(298) p.Inline_constraint() } - p.SetState(315) + p.SetState(303) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4884,7 +4863,7 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(316) + p.SetState(304) p.Match(KuneiformParserHASH_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -4892,7 +4871,7 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { } } { - p.SetState(317) + p.SetState(305) _la = p.GetTokenStream().LA(1) if !((int64((_la-52)) & ^0x3f) == 0 && ((int64(1)<<(_la-52))&32785) != 0) { @@ -4903,7 +4882,7 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { } } { - p.SetState(318) + p.SetState(306) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -4911,14 +4890,14 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { } } { - p.SetState(319) + p.SetState(307) var _x = p.Identifier_list() localctx.(*Index_defContext).columns = _x } { - p.SetState(320) + p.SetState(308) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -5073,7 +5052,7 @@ func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(323) + p.SetState(311) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5082,7 +5061,7 @@ func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { if _la == KuneiformParserUNIQUE { { - p.SetState(322) + p.SetState(310) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -5092,7 +5071,7 @@ func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { } { - p.SetState(325) + p.SetState(313) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule @@ -5100,11 +5079,11 @@ func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { } } { - p.SetState(326) + p.SetState(314) p.Identifier() } { - p.SetState(327) + p.SetState(315) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -5112,14 +5091,14 @@ func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { } } { - p.SetState(328) + p.SetState(316) var _x = p.Identifier_list() localctx.(*C_index_defContext).columns = _x } { - p.SetState(329) + p.SetState(317) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -5378,7 +5357,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(334) + p.SetState(322) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5387,7 +5366,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserFOREIGN: { - p.SetState(331) + p.SetState(319) p.Match(KuneiformParserFOREIGN) if p.HasError() { // Recognition error - abort rule @@ -5395,7 +5374,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(332) + p.SetState(320) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -5405,7 +5384,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { case KuneiformParserLEGACY_FOREIGN_KEY: { - p.SetState(333) + p.SetState(321) p.Match(KuneiformParserLEGACY_FOREIGN_KEY) if p.HasError() { // Recognition error - abort rule @@ -5418,7 +5397,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { goto errorExit } { - p.SetState(336) + p.SetState(324) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -5426,14 +5405,14 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(337) + p.SetState(325) var _x = p.Identifier_list() localctx.(*Foreign_key_defContext).child_keys = _x } { - p.SetState(338) + p.SetState(326) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -5441,7 +5420,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(339) + p.SetState(327) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserREFERENCES || _la == KuneiformParserREF) { @@ -5452,7 +5431,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(340) + p.SetState(328) var _m = p.Match(KuneiformParserIDENTIFIER) @@ -5463,7 +5442,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(341) + p.SetState(329) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -5471,21 +5450,21 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(342) + p.SetState(330) var _x = p.Identifier_list() localctx.(*Foreign_key_defContext).parent_keys = _x } { - p.SetState(343) + p.SetState(331) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(347) + p.SetState(335) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5494,11 +5473,11 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { for _la == KuneiformParserON || _la == KuneiformParserLEGACY_ON_UPDATE || _la == KuneiformParserLEGACY_ON_DELETE { { - p.SetState(344) + p.SetState(332) p.Foreign_key_action() } - p.SetState(349) + p.SetState(337) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5668,7 +5647,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(360) + p.SetState(348) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5676,7 +5655,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 24, p.GetParserRuleContext()) { case 1: - p.SetState(353) + p.SetState(341) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5685,7 +5664,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserON: { - p.SetState(350) + p.SetState(338) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -5693,7 +5672,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(351) + p.SetState(339) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -5703,7 +5682,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_ON_UPDATE: { - p.SetState(352) + p.SetState(340) p.Match(KuneiformParserLEGACY_ON_UPDATE) if p.HasError() { // Recognition error - abort rule @@ -5717,7 +5696,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } case 2: - p.SetState(358) + p.SetState(346) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5726,7 +5705,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserON: { - p.SetState(355) + p.SetState(343) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -5734,7 +5713,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(356) + p.SetState(344) p.Match(KuneiformParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -5744,7 +5723,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_ON_DELETE: { - p.SetState(357) + p.SetState(345) p.Match(KuneiformParserLEGACY_ON_DELETE) if p.HasError() { // Recognition error - abort rule @@ -5760,7 +5739,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(363) + p.SetState(351) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5769,7 +5748,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont if _la == KuneiformParserDO { { - p.SetState(362) + p.SetState(350) p.Match(KuneiformParserDO) if p.HasError() { // Recognition error - abort rule @@ -5778,7 +5757,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } - p.SetState(382) + p.SetState(370) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5786,7 +5765,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 29, p.GetParserRuleContext()) { case 1: - p.SetState(368) + p.SetState(356) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5795,7 +5774,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserNO: { - p.SetState(365) + p.SetState(353) p.Match(KuneiformParserNO) if p.HasError() { // Recognition error - abort rule @@ -5803,7 +5782,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(366) + p.SetState(354) p.Match(KuneiformParserACTION) if p.HasError() { // Recognition error - abort rule @@ -5813,7 +5792,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_NO_ACTION: { - p.SetState(367) + p.SetState(355) p.Match(KuneiformParserLEGACY_NO_ACTION) if p.HasError() { // Recognition error - abort rule @@ -5828,7 +5807,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case 2: { - p.SetState(370) + p.SetState(358) p.Match(KuneiformParserCASCADE) if p.HasError() { // Recognition error - abort rule @@ -5837,7 +5816,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } case 3: - p.SetState(374) + p.SetState(362) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5846,7 +5825,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserSET: { - p.SetState(371) + p.SetState(359) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -5854,7 +5833,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(372) + p.SetState(360) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -5864,7 +5843,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_SET_NULL: { - p.SetState(373) + p.SetState(361) p.Match(KuneiformParserLEGACY_SET_NULL) if p.HasError() { // Recognition error - abort rule @@ -5878,7 +5857,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } case 4: - p.SetState(379) + p.SetState(367) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5887,7 +5866,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserSET: { - p.SetState(376) + p.SetState(364) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -5895,7 +5874,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(377) + p.SetState(365) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -5905,7 +5884,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_SET_DEFAULT: { - p.SetState(378) + p.SetState(366) p.Match(KuneiformParserLEGACY_SET_DEFAULT) if p.HasError() { // Recognition error - abort rule @@ -5920,7 +5899,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case 5: { - p.SetState(381) + p.SetState(369) p.Match(KuneiformParserRESTRICT) if p.HasError() { // Recognition error - abort rule @@ -6068,10 +6047,10 @@ func (p *KuneiformParser) Type_list() (localctx IType_listContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(384) + p.SetState(372) p.Type_() } - p.SetState(389) + p.SetState(377) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6080,7 +6059,7 @@ func (p *KuneiformParser) Type_list() (localctx IType_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(385) + p.SetState(373) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -6088,11 +6067,11 @@ func (p *KuneiformParser) Type_list() (localctx IType_listContext) { } } { - p.SetState(386) + p.SetState(374) p.Type_() } - p.SetState(391) + p.SetState(379) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6246,7 +6225,7 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(392) + p.SetState(380) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -6254,10 +6233,10 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { } } { - p.SetState(393) + p.SetState(381) p.Type_() } - p.SetState(399) + p.SetState(387) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6266,7 +6245,7 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(394) + p.SetState(382) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -6274,7 +6253,7 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { } } { - p.SetState(395) + p.SetState(383) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -6282,11 +6261,11 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { } } { - p.SetState(396) + p.SetState(384) p.Type_() } - p.SetState(401) + p.SetState(389) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6473,14 +6452,14 @@ func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listCo p.EnterOuterAlt(localctx, 1) { - p.SetState(402) + p.SetState(390) p.Variable() } { - p.SetState(403) + p.SetState(391) p.Type_() } - p.SetState(410) + p.SetState(398) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6489,7 +6468,7 @@ func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listCo for _la == KuneiformParserCOMMA { { - p.SetState(404) + p.SetState(392) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -6497,15 +6476,15 @@ func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listCo } } { - p.SetState(405) + p.SetState(393) p.Variable() } { - p.SetState(406) + p.SetState(394) p.Type_() } - p.SetState(412) + p.SetState(400) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6657,7 +6636,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(422) + p.SetState(410) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6666,7 +6645,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserIDENTIFIER: { - p.SetState(413) + p.SetState(401) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -6676,14 +6655,14 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserPRIMARY: { - p.SetState(414) + p.SetState(402) p.Match(KuneiformParserPRIMARY) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(416) + p.SetState(404) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6692,7 +6671,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { if _la == KuneiformParserKEY { { - p.SetState(415) + p.SetState(403) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -6704,7 +6683,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserNOT: { - p.SetState(418) + p.SetState(406) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -6712,7 +6691,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { } } { - p.SetState(419) + p.SetState(407) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -6722,7 +6701,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserDEFAULT: { - p.SetState(420) + p.SetState(408) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -6732,7 +6711,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserUNIQUE: { - p.SetState(421) + p.SetState(409) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -6744,7 +6723,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(428) + p.SetState(416) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6753,7 +6732,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { if _la == KuneiformParserLPAREN { { - p.SetState(424) + p.SetState(412) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -6761,11 +6740,11 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { } } { - p.SetState(425) + p.SetState(413) p.Literal() } { - p.SetState(426) + p.SetState(414) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -6950,7 +6929,7 @@ func (s *Inline_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContext) { localctx = NewInline_constraintContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 54, KuneiformParserRULE_inline_constraint) - p.SetState(443) + p.SetState(431) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6960,7 +6939,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserPRIMARY: p.EnterOuterAlt(localctx, 1) { - p.SetState(430) + p.SetState(418) p.Match(KuneiformParserPRIMARY) if p.HasError() { // Recognition error - abort rule @@ -6968,7 +6947,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(431) + p.SetState(419) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -6979,7 +6958,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserUNIQUE: p.EnterOuterAlt(localctx, 2) { - p.SetState(432) + p.SetState(420) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -6990,7 +6969,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserNOT: p.EnterOuterAlt(localctx, 3) { - p.SetState(433) + p.SetState(421) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -6998,7 +6977,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(434) + p.SetState(422) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -7009,7 +6988,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserDEFAULT: p.EnterOuterAlt(localctx, 4) { - p.SetState(435) + p.SetState(423) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -7017,21 +6996,21 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(436) + p.SetState(424) p.Literal() } case KuneiformParserREFERENCES: p.EnterOuterAlt(localctx, 5) { - p.SetState(437) + p.SetState(425) p.Fk_constraint() } case KuneiformParserCHECK: p.EnterOuterAlt(localctx, 6) { - p.SetState(438) + p.SetState(426) p.Match(KuneiformParserCHECK) if p.HasError() { // Recognition error - abort rule @@ -7040,7 +7019,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } { - p.SetState(439) + p.SetState(427) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -7048,11 +7027,11 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(440) + p.SetState(428) p.sql_expr(0) } { - p.SetState(441) + p.SetState(429) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -7198,7 +7177,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(445) + p.SetState(433) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -7206,7 +7185,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(446) + p.SetState(434) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserDELETE || _la == KuneiformParserUPDATE) { @@ -7216,7 +7195,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { p.Consume() } } - p.SetState(455) + p.SetState(443) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7225,7 +7204,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 37, p.GetParserRuleContext()) { case 1: { - p.SetState(447) + p.SetState(435) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -7233,7 +7212,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(448) + p.SetState(436) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -7243,7 +7222,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 2: { - p.SetState(449) + p.SetState(437) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -7251,7 +7230,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(450) + p.SetState(438) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -7261,7 +7240,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 3: { - p.SetState(451) + p.SetState(439) p.Match(KuneiformParserRESTRICT) if p.HasError() { // Recognition error - abort rule @@ -7271,7 +7250,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 4: { - p.SetState(452) + p.SetState(440) p.Match(KuneiformParserNO) if p.HasError() { // Recognition error - abort rule @@ -7279,7 +7258,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(453) + p.SetState(441) p.Match(KuneiformParserACTION) if p.HasError() { // Recognition error - abort rule @@ -7289,7 +7268,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 5: { - p.SetState(454) + p.SetState(442) p.Match(KuneiformParserCASCADE) if p.HasError() { // Recognition error - abort rule @@ -7507,7 +7486,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(457) + p.SetState(445) p.Match(KuneiformParserREFERENCES) if p.HasError() { // Recognition error - abort rule @@ -7515,7 +7494,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } } { - p.SetState(458) + p.SetState(446) var _x = p.Identifier() @@ -7523,7 +7502,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } { - p.SetState(459) + p.SetState(447) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -7531,14 +7510,14 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } } { - p.SetState(460) + p.SetState(448) var _x = p.Identifier() localctx.(*Fk_constraintContext).column = _x } { - p.SetState(461) + p.SetState(449) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -7546,7 +7525,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } } - p.SetState(470) + p.SetState(458) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7555,10 +7534,10 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { if _la == KuneiformParserON { { - p.SetState(463) + p.SetState(451) p.Fk_action() } - p.SetState(467) + p.SetState(455) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7567,11 +7546,11 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { for _la == KuneiformParserON { { - p.SetState(464) + p.SetState(452) p.Fk_action() } - p.SetState(469) + p.SetState(457) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7684,7 +7663,7 @@ func (p *KuneiformParser) Access_modifier() (localctx IAccess_modifierContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(472) + p.SetState(460) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { @@ -7927,7 +7906,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(477) + p.SetState(465) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7936,11 +7915,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont for _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(474) + p.SetState(462) p.Annotation() } - p.SetState(479) + p.SetState(467) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7948,7 +7927,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont _la = p.GetTokenStream().LA(1) } { - p.SetState(480) + p.SetState(468) p.Match(KuneiformParserACTION) if p.HasError() { // Recognition error - abort rule @@ -7956,7 +7935,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(481) + p.SetState(469) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -7964,14 +7943,14 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(482) + p.SetState(470) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(484) + p.SetState(472) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7980,20 +7959,20 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(483) + p.SetState(471) p.Variable_list() } } { - p.SetState(486) + p.SetState(474) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(488) + p.SetState(476) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8002,11 +7981,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { { - p.SetState(487) + p.SetState(475) p.Access_modifier() } - p.SetState(490) + p.SetState(478) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8014,7 +7993,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont _la = p.GetTokenStream().LA(1) } { - p.SetState(492) + p.SetState(480) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -8022,11 +8001,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(493) + p.SetState(481) p.Action_block() } { - p.SetState(494) + p.SetState(482) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -8283,7 +8262,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(499) + p.SetState(487) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8292,11 +8271,11 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati for _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(496) + p.SetState(484) p.Annotation() } - p.SetState(501) + p.SetState(489) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8304,7 +8283,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati _la = p.GetTokenStream().LA(1) } { - p.SetState(502) + p.SetState(490) p.Match(KuneiformParserPROCEDURE) if p.HasError() { // Recognition error - abort rule @@ -8312,7 +8291,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(503) + p.SetState(491) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -8320,14 +8299,14 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(504) + p.SetState(492) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(506) + p.SetState(494) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8336,20 +8315,20 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(505) + p.SetState(493) p.Typed_variable_list() } } { - p.SetState(508) + p.SetState(496) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(510) + p.SetState(498) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8358,18 +8337,18 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { { - p.SetState(509) + p.SetState(497) p.Access_modifier() } - p.SetState(512) + p.SetState(500) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(515) + p.SetState(503) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8378,13 +8357,13 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati if _la == KuneiformParserRETURNS { { - p.SetState(514) + p.SetState(502) p.Procedure_return() } } { - p.SetState(517) + p.SetState(505) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -8392,11 +8371,11 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(518) + p.SetState(506) p.Procedure_block() } { - p.SetState(519) + p.SetState(507) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -8569,14 +8548,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(521) + p.SetState(509) p.Match(KuneiformParserRETURNS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(533) + p.SetState(521) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8584,7 +8563,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 48, p.GetParserRuleContext()) { case 1: - p.SetState(523) + p.SetState(511) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8593,7 +8572,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) if _la == KuneiformParserTABLE { { - p.SetState(522) + p.SetState(510) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -8603,7 +8582,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } { - p.SetState(525) + p.SetState(513) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -8611,14 +8590,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } } { - p.SetState(526) + p.SetState(514) var _x = p.Named_type_list() localctx.(*Procedure_returnContext).return_columns = _x } { - p.SetState(527) + p.SetState(515) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -8628,7 +8607,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) case 2: { - p.SetState(529) + p.SetState(517) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -8636,14 +8615,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } } { - p.SetState(530) + p.SetState(518) var _x = p.Type_list() localctx.(*Procedure_returnContext).unnamed_return_types = _x } { - p.SetState(531) + p.SetState(519) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -8758,11 +8737,11 @@ func (p *KuneiformParser) Sql() (localctx ISqlContext) { p.EnterRule(localctx, 68, KuneiformParserRULE_sql) p.EnterOuterAlt(localctx, 1) { - p.SetState(535) + p.SetState(523) p.Sql_statement() } { - p.SetState(536) + p.SetState(524) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -9051,7 +9030,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(550) + p.SetState(538) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9060,14 +9039,14 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { if _la == KuneiformParserWITH { { - p.SetState(538) + p.SetState(526) p.Match(KuneiformParserWITH) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(540) + p.SetState(528) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9076,7 +9055,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { if _la == KuneiformParserRECURSIVE { { - p.SetState(539) + p.SetState(527) p.Match(KuneiformParserRECURSIVE) if p.HasError() { // Recognition error - abort rule @@ -9086,10 +9065,10 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } { - p.SetState(542) + p.SetState(530) p.Common_table_expression() } - p.SetState(547) + p.SetState(535) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9098,7 +9077,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { for _la == KuneiformParserCOMMA { { - p.SetState(543) + p.SetState(531) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -9106,11 +9085,11 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } } { - p.SetState(544) + p.SetState(532) p.Common_table_expression() } - p.SetState(549) + p.SetState(537) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9119,7 +9098,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } } - p.SetState(560) + p.SetState(548) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9128,49 +9107,49 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 52, p.GetParserRuleContext()) { case 1: { - p.SetState(552) + p.SetState(540) p.Create_table_statement() } case 2: { - p.SetState(553) + p.SetState(541) p.Alter_table_statement() } case 3: { - p.SetState(554) + p.SetState(542) p.Create_index_statement() } case 4: { - p.SetState(555) + p.SetState(543) p.Drop_index_statement() } case 5: { - p.SetState(556) + p.SetState(544) p.Select_statement() } case 6: { - p.SetState(557) + p.SetState(545) p.Update_statement() } case 7: { - p.SetState(558) + p.SetState(546) p.Insert_statement() } case 8: { - p.SetState(559) + p.SetState(547) p.Delete_statement() } @@ -9356,10 +9335,10 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr p.EnterOuterAlt(localctx, 1) { - p.SetState(562) + p.SetState(550) p.Identifier() } - p.SetState(575) + p.SetState(563) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9368,14 +9347,14 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr if _la == KuneiformParserLPAREN { { - p.SetState(563) + p.SetState(551) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(572) + p.SetState(560) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9384,10 +9363,10 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(564) + p.SetState(552) p.Identifier() } - p.SetState(569) + p.SetState(557) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9396,7 +9375,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr for _la == KuneiformParserCOMMA { { - p.SetState(565) + p.SetState(553) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -9404,11 +9383,11 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(566) + p.SetState(554) p.Identifier() } - p.SetState(571) + p.SetState(559) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9418,7 +9397,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } { - p.SetState(574) + p.SetState(562) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9428,7 +9407,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } { - p.SetState(577) + p.SetState(565) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -9436,7 +9415,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(578) + p.SetState(566) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -9444,11 +9423,11 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(579) + p.SetState(567) p.Select_statement() } { - p.SetState(580) + p.SetState(568) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9726,7 +9705,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state p.EnterOuterAlt(localctx, 1) { - p.SetState(582) + p.SetState(570) p.Match(KuneiformParserCREATE) if p.HasError() { // Recognition error - abort rule @@ -9734,7 +9713,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state } } { - p.SetState(583) + p.SetState(571) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -9742,21 +9721,21 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state } } { - p.SetState(584) + p.SetState(572) var _x = p.Identifier() localctx.(*Create_table_statementContext).name = _x } { - p.SetState(585) + p.SetState(573) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(589) + p.SetState(577) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9765,26 +9744,26 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 56, p.GetParserRuleContext()) { case 1: { - p.SetState(586) + p.SetState(574) p.C_column_def() } case 2: { - p.SetState(587) + p.SetState(575) p.Constraint_def() } case 3: { - p.SetState(588) + p.SetState(576) p.C_index_def() } case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(599) + p.SetState(587) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9793,14 +9772,14 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state for _la == KuneiformParserCOMMA { { - p.SetState(591) + p.SetState(579) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(595) + p.SetState(583) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9809,19 +9788,19 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 57, p.GetParserRuleContext()) { case 1: { - p.SetState(592) + p.SetState(580) p.C_column_def() } case 2: { - p.SetState(593) + p.SetState(581) p.Constraint_def() } case 3: { - p.SetState(594) + p.SetState(582) p.C_index_def() } @@ -9829,7 +9808,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state goto errorExit } - p.SetState(601) + p.SetState(589) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9837,7 +9816,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state _la = p.GetTokenStream().LA(1) } { - p.SetState(602) + p.SetState(590) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9977,7 +9956,7 @@ func (p *KuneiformParser) Constraint_def() (localctx IConstraint_defContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(606) + p.SetState(594) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9986,7 +9965,7 @@ func (p *KuneiformParser) Constraint_def() (localctx IConstraint_defContext) { if _la == KuneiformParserCONSTRAINT { { - p.SetState(604) + p.SetState(592) p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule @@ -9994,7 +9973,7 @@ func (p *KuneiformParser) Constraint_def() (localctx IConstraint_defContext) { } } { - p.SetState(605) + p.SetState(593) var _x = p.Identifier() @@ -10003,7 +9982,7 @@ func (p *KuneiformParser) Constraint_def() (localctx IConstraint_defContext) { } { - p.SetState(608) + p.SetState(596) p.Unnamed_constraint() } @@ -10189,7 +10168,7 @@ func (s *Unnamed_constraintContext) Accept(visitor antlr.ParseTreeVisitor) inter func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintContext) { localctx = NewUnnamed_constraintContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 78, KuneiformParserRULE_unnamed_constraint) - p.SetState(633) + p.SetState(621) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10199,7 +10178,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont case KuneiformParserPRIMARY: p.EnterOuterAlt(localctx, 1) { - p.SetState(610) + p.SetState(598) p.Match(KuneiformParserPRIMARY) if p.HasError() { // Recognition error - abort rule @@ -10207,7 +10186,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(611) + p.SetState(599) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -10215,7 +10194,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(612) + p.SetState(600) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10223,11 +10202,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(613) + p.SetState(601) p.Identifier_list() } { - p.SetState(614) + p.SetState(602) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10238,7 +10217,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont case KuneiformParserUNIQUE: p.EnterOuterAlt(localctx, 2) { - p.SetState(616) + p.SetState(604) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -10246,7 +10225,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(617) + p.SetState(605) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10254,11 +10233,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(618) + p.SetState(606) p.Identifier_list() } { - p.SetState(619) + p.SetState(607) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10269,7 +10248,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont case KuneiformParserCHECK: p.EnterOuterAlt(localctx, 3) { - p.SetState(621) + p.SetState(609) p.Match(KuneiformParserCHECK) if p.HasError() { // Recognition error - abort rule @@ -10277,7 +10256,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(622) + p.SetState(610) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10285,11 +10264,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(623) + p.SetState(611) p.sql_expr(0) } { - p.SetState(624) + p.SetState(612) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10300,7 +10279,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont case KuneiformParserFOREIGN: p.EnterOuterAlt(localctx, 4) { - p.SetState(626) + p.SetState(614) p.Match(KuneiformParserFOREIGN) if p.HasError() { // Recognition error - abort rule @@ -10308,7 +10287,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(627) + p.SetState(615) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -10316,7 +10295,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(628) + p.SetState(616) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10324,11 +10303,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(629) + p.SetState(617) p.Identifier() } { - p.SetState(630) + p.SetState(618) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10336,7 +10315,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(631) + p.SetState(619) p.Fk_constraint() } @@ -10374,18 +10353,8 @@ type IAlter_table_statementContext interface { // Getter signatures ALTER() antlr.TerminalNode TABLE() antlr.TerminalNode + Alter_table_action() IAlter_table_actionContext Identifier() IIdentifierContext - Alter_column_clause() IAlter_column_clauseContext - AllAdd_column_clause() []IAdd_column_clauseContext - Add_column_clause(i int) IAdd_column_clauseContext - AllDrop_column_clause() []IDrop_column_clauseContext - Drop_column_clause(i int) IDrop_column_clauseContext - Rename_column_clause() IRename_column_clauseContext - Rename_table_clause() IRename_table_clauseContext - Add_fk_clause() IAdd_fk_clauseContext - Drop_fk_clause() IDrop_fk_clauseContext - AllCOMMA() []antlr.TerminalNode - COMMA(i int) antlr.TerminalNode // IsAlter_table_statementContext differentiates from other interfaces. IsAlter_table_statementContext() @@ -10436,10 +10405,10 @@ func (s *Alter_table_statementContext) TABLE() antlr.TerminalNode { return s.GetToken(KuneiformParserTABLE, 0) } -func (s *Alter_table_statementContext) Identifier() IIdentifierContext { +func (s *Alter_table_statementContext) Alter_table_action() IAlter_table_actionContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIdentifierContext); ok { + if _, ok := ctx.(IAlter_table_actionContext); ok { t = ctx.(antlr.RuleContext) break } @@ -10449,13 +10418,13 @@ func (s *Alter_table_statementContext) Identifier() IIdentifierContext { return nil } - return t.(IIdentifierContext) + return t.(IAlter_table_actionContext) } -func (s *Alter_table_statementContext) Alter_column_clause() IAlter_column_clauseContext { +func (s *Alter_table_statementContext) Identifier() IIdentifierContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAlter_column_clauseContext); ok { + if _, ok := ctx.(IIdentifierContext); ok { t = ctx.(antlr.RuleContext) break } @@ -10465,197 +10434,41 @@ func (s *Alter_table_statementContext) Alter_column_clause() IAlter_column_claus return nil } - return t.(IAlter_column_clauseContext) + return t.(IIdentifierContext) } -func (s *Alter_table_statementContext) AllAdd_column_clause() []IAdd_column_clauseContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IAdd_column_clauseContext); ok { - len++ - } - } - - tst := make([]IAdd_column_clauseContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IAdd_column_clauseContext); ok { - tst[i] = t.(IAdd_column_clauseContext) - i++ - } - } +func (s *Alter_table_statementContext) GetRuleContext() antlr.RuleContext { + return s +} - return tst +func (s *Alter_table_statementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Alter_table_statementContext) Add_column_clause(i int) IAdd_column_clauseContext { - var t antlr.RuleContext - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAdd_column_clauseContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ - } - } +func (s *Alter_table_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitAlter_table_statement(s) - if t == nil { - return nil + default: + return t.VisitChildren(s) } - - return t.(IAdd_column_clauseContext) } -func (s *Alter_table_statementContext) AllDrop_column_clause() []IDrop_column_clauseContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IDrop_column_clauseContext); ok { - len++ - } - } - - tst := make([]IDrop_column_clauseContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IDrop_column_clauseContext); ok { - tst[i] = t.(IDrop_column_clauseContext) - i++ - } - } - - return tst -} - -func (s *Alter_table_statementContext) Drop_column_clause(i int) IDrop_column_clauseContext { - var t antlr.RuleContext - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDrop_column_clauseContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IDrop_column_clauseContext) -} - -func (s *Alter_table_statementContext) Rename_column_clause() IRename_column_clauseContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IRename_column_clauseContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IRename_column_clauseContext) -} - -func (s *Alter_table_statementContext) Rename_table_clause() IRename_table_clauseContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IRename_table_clauseContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IRename_table_clauseContext) -} - -func (s *Alter_table_statementContext) Add_fk_clause() IAdd_fk_clauseContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAdd_fk_clauseContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IAdd_fk_clauseContext) -} - -func (s *Alter_table_statementContext) Drop_fk_clause() IDrop_fk_clauseContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDrop_fk_clauseContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IDrop_fk_clauseContext) -} - -func (s *Alter_table_statementContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(KuneiformParserCOMMA) -} - -func (s *Alter_table_statementContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(KuneiformParserCOMMA, i) -} - -func (s *Alter_table_statementContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Alter_table_statementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *Alter_table_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case KuneiformParserVisitor: - return t.VisitAlter_table_statement(s) - - default: - return t.VisitChildren(s) - } -} - -func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_statementContext) { - localctx = NewAlter_table_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 80, KuneiformParserRULE_alter_table_statement) - var _la int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(635) - p.Match(KuneiformParserALTER) - if p.HasError() { - // Recognition error - abort rule - goto errorExit +func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_statementContext) { + localctx = NewAlter_table_statementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 80, KuneiformParserRULE_alter_table_statement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(623) + p.Match(KuneiformParserALTER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit } } { - p.SetState(636) + p.SetState(624) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -10663,119 +10476,15 @@ func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_stateme } } { - p.SetState(637) + p.SetState(625) var _x = p.Identifier() localctx.(*Alter_table_statementContext).table = _x } - p.SetState(659) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 63, p.GetParserRuleContext()) { - case 1: - { - p.SetState(638) - p.Alter_column_clause() - } - - case 2: - { - p.SetState(639) - p.Add_column_clause() - } - p.SetState(644) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - for _la == KuneiformParserCOMMA { - { - p.SetState(640) - p.Match(KuneiformParserCOMMA) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(641) - p.Add_column_clause() - } - - p.SetState(646) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - } - - case 3: - { - p.SetState(647) - p.Drop_column_clause() - } - p.SetState(652) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - for _la == KuneiformParserCOMMA { - { - p.SetState(648) - p.Match(KuneiformParserCOMMA) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(649) - p.Drop_column_clause() - } - - p.SetState(654) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - } - - case 4: - { - p.SetState(655) - p.Rename_column_clause() - } - - case 5: - { - p.SetState(656) - p.Rename_table_clause() - } - - case 6: - { - p.SetState(657) - p.Add_fk_clause() - } - - case 7: - { - p.SetState(658) - p.Drop_fk_clause() - } - - case antlr.ATNInvalidAltNumber: - goto errorExit + { + p.SetState(626) + p.Alter_table_action() } errorExit: @@ -10791,93 +10500,96 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IAlter_column_clauseContext is an interface to support dynamic dispatch. -type IAlter_column_clauseContext interface { +// IAlter_table_actionContext is an interface to support dynamic dispatch. +type IAlter_table_actionContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser - - // GetOp returns the op token. - GetOp() antlr.Token - - // SetOp sets the op token. - SetOp(antlr.Token) - - // GetColumn returns the column rule contexts. - GetColumn() IIdentifierContext - - // SetColumn sets the column rule contexts. - SetColumn(IIdentifierContext) - - // Getter signatures - ALTER() antlr.TerminalNode - COLUMN() antlr.TerminalNode - AllIdentifier() []IIdentifierContext - Identifier(i int) IIdentifierContext - SET() antlr.TerminalNode - DROP() antlr.TerminalNode - CONSTRAINT() antlr.TerminalNode - NOT() antlr.TerminalNode - NULL() antlr.TerminalNode - DEFAULT() antlr.TerminalNode - Literal() ILiteralContext - - // IsAlter_column_clauseContext differentiates from other interfaces. - IsAlter_column_clauseContext() + // IsAlter_table_actionContext differentiates from other interfaces. + IsAlter_table_actionContext() } -type Alter_column_clauseContext struct { +type Alter_table_actionContext struct { antlr.BaseParserRuleContext parser antlr.Parser - column IIdentifierContext - op antlr.Token } -func NewEmptyAlter_column_clauseContext() *Alter_column_clauseContext { - var p = new(Alter_column_clauseContext) +func NewEmptyAlter_table_actionContext() *Alter_table_actionContext { + var p = new(Alter_table_actionContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_alter_column_clause + p.RuleIndex = KuneiformParserRULE_alter_table_action return p } -func InitEmptyAlter_column_clauseContext(p *Alter_column_clauseContext) { +func InitEmptyAlter_table_actionContext(p *Alter_table_actionContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_alter_column_clause + p.RuleIndex = KuneiformParserRULE_alter_table_action } -func (*Alter_column_clauseContext) IsAlter_column_clauseContext() {} +func (*Alter_table_actionContext) IsAlter_table_actionContext() {} -func NewAlter_column_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_column_clauseContext { - var p = new(Alter_column_clauseContext) +func NewAlter_table_actionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_actionContext { + var p = new(Alter_table_actionContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_alter_column_clause + p.RuleIndex = KuneiformParserRULE_alter_table_action return p } -func (s *Alter_column_clauseContext) GetParser() antlr.Parser { return s.parser } +func (s *Alter_table_actionContext) GetParser() antlr.Parser { return s.parser } + +func (s *Alter_table_actionContext) CopyAll(ctx *Alter_table_actionContext) { + s.CopyFrom(&ctx.BaseParserRuleContext) +} + +func (s *Alter_table_actionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Alter_table_actionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type Drop_column_constraintContext struct { + Alter_table_actionContext + column IIdentifierContext +} + +func NewDrop_column_constraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *Drop_column_constraintContext { + var p = new(Drop_column_constraintContext) -func (s *Alter_column_clauseContext) GetOp() antlr.Token { return s.op } + InitEmptyAlter_table_actionContext(&p.Alter_table_actionContext) + p.parser = parser + p.CopyAll(ctx.(*Alter_table_actionContext)) + + return p +} -func (s *Alter_column_clauseContext) SetOp(v antlr.Token) { s.op = v } +func (s *Drop_column_constraintContext) GetColumn() IIdentifierContext { return s.column } -func (s *Alter_column_clauseContext) GetColumn() IIdentifierContext { return s.column } +func (s *Drop_column_constraintContext) SetColumn(v IIdentifierContext) { s.column = v } -func (s *Alter_column_clauseContext) SetColumn(v IIdentifierContext) { s.column = v } +func (s *Drop_column_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} -func (s *Alter_column_clauseContext) ALTER() antlr.TerminalNode { +func (s *Drop_column_constraintContext) ALTER() antlr.TerminalNode { return s.GetToken(KuneiformParserALTER, 0) } -func (s *Alter_column_clauseContext) COLUMN() antlr.TerminalNode { +func (s *Drop_column_constraintContext) COLUMN() antlr.TerminalNode { return s.GetToken(KuneiformParserCOLUMN, 0) } -func (s *Alter_column_clauseContext) AllIdentifier() []IIdentifierContext { +func (s *Drop_column_constraintContext) DROP() antlr.TerminalNode { + return s.GetToken(KuneiformParserDROP, 0) +} + +func (s *Drop_column_constraintContext) AllIdentifier() []IIdentifierContext { children := s.GetChildren() len := 0 for _, ctx := range children { @@ -10898,7 +10610,7 @@ func (s *Alter_column_clauseContext) AllIdentifier() []IIdentifierContext { return tst } -func (s *Alter_column_clauseContext) Identifier(i int) IIdentifierContext { +func (s *Drop_column_constraintContext) Identifier(i int) IIdentifierContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { @@ -10918,34 +10630,67 @@ func (s *Alter_column_clauseContext) Identifier(i int) IIdentifierContext { return t.(IIdentifierContext) } -func (s *Alter_column_clauseContext) SET() antlr.TerminalNode { - return s.GetToken(KuneiformParserSET, 0) +func (s *Drop_column_constraintContext) NOT() antlr.TerminalNode { + return s.GetToken(KuneiformParserNOT, 0) } -func (s *Alter_column_clauseContext) DROP() antlr.TerminalNode { - return s.GetToken(KuneiformParserDROP, 0) +func (s *Drop_column_constraintContext) NULL() antlr.TerminalNode { + return s.GetToken(KuneiformParserNULL, 0) +} + +func (s *Drop_column_constraintContext) DEFAULT() antlr.TerminalNode { + return s.GetToken(KuneiformParserDEFAULT, 0) } -func (s *Alter_column_clauseContext) CONSTRAINT() antlr.TerminalNode { +func (s *Drop_column_constraintContext) CONSTRAINT() antlr.TerminalNode { return s.GetToken(KuneiformParserCONSTRAINT, 0) } -func (s *Alter_column_clauseContext) NOT() antlr.TerminalNode { - return s.GetToken(KuneiformParserNOT, 0) +func (s *Drop_column_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitDrop_column_constraint(s) + + default: + return t.VisitChildren(s) + } } -func (s *Alter_column_clauseContext) NULL() antlr.TerminalNode { - return s.GetToken(KuneiformParserNULL, 0) +type Add_columnContext struct { + Alter_table_actionContext + column IIdentifierContext } -func (s *Alter_column_clauseContext) DEFAULT() antlr.TerminalNode { - return s.GetToken(KuneiformParserDEFAULT, 0) +func NewAdd_columnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *Add_columnContext { + var p = new(Add_columnContext) + + InitEmptyAlter_table_actionContext(&p.Alter_table_actionContext) + p.parser = parser + p.CopyAll(ctx.(*Alter_table_actionContext)) + + return p +} + +func (s *Add_columnContext) GetColumn() IIdentifierContext { return s.column } + +func (s *Add_columnContext) SetColumn(v IIdentifierContext) { s.column = v } + +func (s *Add_columnContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Add_columnContext) ADD() antlr.TerminalNode { + return s.GetToken(KuneiformParserADD, 0) +} + +func (s *Add_columnContext) COLUMN() antlr.TerminalNode { + return s.GetToken(KuneiformParserCOLUMN, 0) } -func (s *Alter_column_clauseContext) Literal() ILiteralContext { +func (s *Add_columnContext) Type_() ITypeContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ILiteralContext); ok { + if _, ok := ctx.(ITypeContext); ok { t = ctx.(antlr.RuleContext) break } @@ -10955,240 +10700,213 @@ func (s *Alter_column_clauseContext) Literal() ILiteralContext { return nil } - return t.(ILiteralContext) + return t.(ITypeContext) } -func (s *Alter_column_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} +func (s *Add_columnContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *Alter_column_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) + if t == nil { + return nil + } + + return t.(IIdentifierContext) } -func (s *Alter_column_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Add_columnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitAlter_column_clause(s) + return t.VisitAdd_column(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Alter_column_clause() (localctx IAlter_column_clauseContext) { - localctx = NewAlter_column_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 82, KuneiformParserRULE_alter_column_clause) - var _la int +type Rename_columnContext struct { + Alter_table_actionContext + old_column IIdentifierContext + new_column IIdentifierContext +} - p.EnterOuterAlt(localctx, 1) - { - p.SetState(661) - p.Match(KuneiformParserALTER) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(662) - p.Match(KuneiformParserCOLUMN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(663) +func NewRename_columnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *Rename_columnContext { + var p = new(Rename_columnContext) - var _x = p.Identifier() + InitEmptyAlter_table_actionContext(&p.Alter_table_actionContext) + p.parser = parser + p.CopyAll(ctx.(*Alter_table_actionContext)) - localctx.(*Alter_column_clauseContext).column = _x - } - { - p.SetState(664) + return p +} - var _lt = p.GetTokenStream().LT(1) +func (s *Rename_columnContext) GetOld_column() IIdentifierContext { return s.old_column } - localctx.(*Alter_column_clauseContext).op = _lt +func (s *Rename_columnContext) GetNew_column() IIdentifierContext { return s.new_column } - _la = p.GetTokenStream().LA(1) +func (s *Rename_columnContext) SetOld_column(v IIdentifierContext) { s.old_column = v } - if !(_la == KuneiformParserDROP || _la == KuneiformParserSET) { - var _ri = p.GetErrorHandler().RecoverInline(p) +func (s *Rename_columnContext) SetNew_column(v IIdentifierContext) { s.new_column = v } - localctx.(*Alter_column_clauseContext).op = _ri - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - p.SetState(675) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } +func (s *Rename_columnContext) GetRuleContext() antlr.RuleContext { + return s +} - switch p.GetTokenStream().LA(1) { - case KuneiformParserDEFAULT, KuneiformParserNOT: - p.SetState(668) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } +func (s *Rename_columnContext) RENAME() antlr.TerminalNode { + return s.GetToken(KuneiformParserRENAME, 0) +} - switch p.GetTokenStream().LA(1) { - case KuneiformParserNOT: - { - p.SetState(665) - p.Match(KuneiformParserNOT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(666) - p.Match(KuneiformParserNULL) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } +func (s *Rename_columnContext) COLUMN() antlr.TerminalNode { + return s.GetToken(KuneiformParserCOLUMN, 0) +} - case KuneiformParserDEFAULT: - { - p.SetState(667) - p.Match(KuneiformParserDEFAULT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } +func (s *Rename_columnContext) TO() antlr.TerminalNode { + return s.GetToken(KuneiformParserTO, 0) +} - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - goto errorExit - } - p.SetState(671) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit +func (s *Rename_columnContext) AllIdentifier() []IIdentifierContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIdentifierContext); ok { + len++ } - _la = p.GetTokenStream().LA(1) - - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843009216839680) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&31) != 0) { - { - p.SetState(670) - p.Literal() - } + } + tst := make([]IIdentifierContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIdentifierContext); ok { + tst[i] = t.(IIdentifierContext) + i++ } + } - case KuneiformParserCONSTRAINT: - { - p.SetState(673) - p.Match(KuneiformParserCONSTRAINT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit + return tst +} + +func (s *Rename_columnContext) Identifier(i int) IIdentifierContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break } + j++ } - { - p.SetState(674) - p.Identifier() - } - - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - goto errorExit } -errorExit: - if p.HasError() { - v := p.GetError() - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - p.SetError(nil) + if t == nil { + return nil } - p.ExitRule() - return localctx - goto errorExit // Trick to prevent compiler error if the label is not used + + return t.(IIdentifierContext) } -// IAdd_column_clauseContext is an interface to support dynamic dispatch. -type IAdd_column_clauseContext interface { - antlr.ParserRuleContext +func (s *Rename_columnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitRename_column(s) - // GetParser returns the parser. - GetParser() antlr.Parser + default: + return t.VisitChildren(s) + } +} - // GetColumn returns the column rule contexts. - GetColumn() IIdentifierContext +type Add_table_constraintContext struct { + Alter_table_actionContext +} - // SetColumn sets the column rule contexts. - SetColumn(IIdentifierContext) +func NewAdd_table_constraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *Add_table_constraintContext { + var p = new(Add_table_constraintContext) - // Getter signatures - ADD() antlr.TerminalNode - COLUMN() antlr.TerminalNode - Type_() ITypeContext - Identifier() IIdentifierContext + InitEmptyAlter_table_actionContext(&p.Alter_table_actionContext) + p.parser = parser + p.CopyAll(ctx.(*Alter_table_actionContext)) - // IsAdd_column_clauseContext differentiates from other interfaces. - IsAdd_column_clauseContext() + return p } -type Add_column_clauseContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser - column IIdentifierContext +func (s *Add_table_constraintContext) GetRuleContext() antlr.RuleContext { + return s } -func NewEmptyAdd_column_clauseContext() *Add_column_clauseContext { - var p = new(Add_column_clauseContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_add_column_clause - return p +func (s *Add_table_constraintContext) ADD() antlr.TerminalNode { + return s.GetToken(KuneiformParserADD, 0) } -func InitEmptyAdd_column_clauseContext(p *Add_column_clauseContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_add_column_clause +func (s *Add_table_constraintContext) Constraint_def() IConstraint_defContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConstraint_defContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IConstraint_defContext) } -func (*Add_column_clauseContext) IsAdd_column_clauseContext() {} +func (s *Add_table_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitAdd_table_constraint(s) + + default: + return t.VisitChildren(s) + } +} -func NewAdd_column_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Add_column_clauseContext { - var p = new(Add_column_clauseContext) +type Add_column_constraintContext struct { + Alter_table_actionContext + column IIdentifierContext +} - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) +func NewAdd_column_constraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *Add_column_constraintContext { + var p = new(Add_column_constraintContext) + InitEmptyAlter_table_actionContext(&p.Alter_table_actionContext) p.parser = parser - p.RuleIndex = KuneiformParserRULE_add_column_clause + p.CopyAll(ctx.(*Alter_table_actionContext)) return p } -func (s *Add_column_clauseContext) GetParser() antlr.Parser { return s.parser } +func (s *Add_column_constraintContext) GetColumn() IIdentifierContext { return s.column } -func (s *Add_column_clauseContext) GetColumn() IIdentifierContext { return s.column } +func (s *Add_column_constraintContext) SetColumn(v IIdentifierContext) { s.column = v } -func (s *Add_column_clauseContext) SetColumn(v IIdentifierContext) { s.column = v } +func (s *Add_column_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} -func (s *Add_column_clauseContext) ADD() antlr.TerminalNode { - return s.GetToken(KuneiformParserADD, 0) +func (s *Add_column_constraintContext) ALTER() antlr.TerminalNode { + return s.GetToken(KuneiformParserALTER, 0) } -func (s *Add_column_clauseContext) COLUMN() antlr.TerminalNode { +func (s *Add_column_constraintContext) COLUMN() antlr.TerminalNode { return s.GetToken(KuneiformParserCOLUMN, 0) } -func (s *Add_column_clauseContext) Type_() ITypeContext { +func (s *Add_column_constraintContext) SET() antlr.TerminalNode { + return s.GetToken(KuneiformParserSET, 0) +} + +func (s *Add_column_constraintContext) Identifier() IIdentifierContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITypeContext); ok { + if _, ok := ctx.(IIdentifierContext); ok { t = ctx.(antlr.RuleContext) break } @@ -11198,13 +10916,25 @@ func (s *Add_column_clauseContext) Type_() ITypeContext { return nil } - return t.(ITypeContext) + return t.(IIdentifierContext) +} + +func (s *Add_column_constraintContext) NOT() antlr.TerminalNode { + return s.GetToken(KuneiformParserNOT, 0) +} + +func (s *Add_column_constraintContext) NULL() antlr.TerminalNode { + return s.GetToken(KuneiformParserNULL, 0) +} + +func (s *Add_column_constraintContext) DEFAULT() antlr.TerminalNode { + return s.GetToken(KuneiformParserDEFAULT, 0) } -func (s *Add_column_clauseContext) Identifier() IIdentifierContext { +func (s *Add_column_constraintContext) Literal() ILiteralContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIdentifierContext); ok { + if _, ok := ctx.(ILiteralContext); ok { t = ctx.(antlr.RuleContext) break } @@ -11214,140 +10944,51 @@ func (s *Add_column_clauseContext) Identifier() IIdentifierContext { return nil } - return t.(IIdentifierContext) + return t.(ILiteralContext) } -func (s *Add_column_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Add_column_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *Add_column_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Add_column_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitAdd_column_clause(s) + return t.VisitAdd_column_constraint(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Add_column_clause() (localctx IAdd_column_clauseContext) { - localctx = NewAdd_column_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 84, KuneiformParserRULE_add_column_clause) - p.EnterOuterAlt(localctx, 1) - { - p.SetState(677) - p.Match(KuneiformParserADD) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(678) - p.Match(KuneiformParserCOLUMN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(679) - - var _x = p.Identifier() - - localctx.(*Add_column_clauseContext).column = _x - } - { - p.SetState(680) - p.Type_() - } - -errorExit: - if p.HasError() { - v := p.GetError() - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - p.SetError(nil) - } - p.ExitRule() - return localctx - goto errorExit // Trick to prevent compiler error if the label is not used -} - -// IDrop_column_clauseContext is an interface to support dynamic dispatch. -type IDrop_column_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // GetColumn returns the column rule contexts. - GetColumn() IIdentifierContext - - // SetColumn sets the column rule contexts. - SetColumn(IIdentifierContext) - - // Getter signatures - DROP() antlr.TerminalNode - COLUMN() antlr.TerminalNode - Identifier() IIdentifierContext - - // IsDrop_column_clauseContext differentiates from other interfaces. - IsDrop_column_clauseContext() -} - -type Drop_column_clauseContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser - column IIdentifierContext -} - -func NewEmptyDrop_column_clauseContext() *Drop_column_clauseContext { - var p = new(Drop_column_clauseContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_drop_column_clause - return p -} - -func InitEmptyDrop_column_clauseContext(p *Drop_column_clauseContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_drop_column_clause +type Rename_tableContext struct { + Alter_table_actionContext + new_table IIdentifierContext } -func (*Drop_column_clauseContext) IsDrop_column_clauseContext() {} - -func NewDrop_column_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_column_clauseContext { - var p = new(Drop_column_clauseContext) - - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) +func NewRename_tableContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *Rename_tableContext { + var p = new(Rename_tableContext) + InitEmptyAlter_table_actionContext(&p.Alter_table_actionContext) p.parser = parser - p.RuleIndex = KuneiformParserRULE_drop_column_clause + p.CopyAll(ctx.(*Alter_table_actionContext)) return p } -func (s *Drop_column_clauseContext) GetParser() antlr.Parser { return s.parser } +func (s *Rename_tableContext) GetNew_table() IIdentifierContext { return s.new_table } -func (s *Drop_column_clauseContext) GetColumn() IIdentifierContext { return s.column } +func (s *Rename_tableContext) SetNew_table(v IIdentifierContext) { s.new_table = v } -func (s *Drop_column_clauseContext) SetColumn(v IIdentifierContext) { s.column = v } +func (s *Rename_tableContext) GetRuleContext() antlr.RuleContext { + return s +} -func (s *Drop_column_clauseContext) DROP() antlr.TerminalNode { - return s.GetToken(KuneiformParserDROP, 0) +func (s *Rename_tableContext) RENAME() antlr.TerminalNode { + return s.GetToken(KuneiformParserRENAME, 0) } -func (s *Drop_column_clauseContext) COLUMN() antlr.TerminalNode { - return s.GetToken(KuneiformParserCOLUMN, 0) +func (s *Rename_tableContext) TO() antlr.TerminalNode { + return s.GetToken(KuneiformParserTO, 0) } -func (s *Drop_column_clauseContext) Identifier() IIdentifierContext { +func (s *Rename_tableContext) Identifier() IIdentifierContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(IIdentifierContext); ok { @@ -11363,180 +11004,105 @@ func (s *Drop_column_clauseContext) Identifier() IIdentifierContext { return t.(IIdentifierContext) } -func (s *Drop_column_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Drop_column_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *Drop_column_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Rename_tableContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitDrop_column_clause(s) + return t.VisitRename_table(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Drop_column_clause() (localctx IDrop_column_clauseContext) { - localctx = NewDrop_column_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 86, KuneiformParserRULE_drop_column_clause) - p.EnterOuterAlt(localctx, 1) - { - p.SetState(682) - p.Match(KuneiformParserDROP) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(683) - p.Match(KuneiformParserCOLUMN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(684) +type Drop_table_constraintContext struct { + Alter_table_actionContext +} - var _x = p.Identifier() +func NewDrop_table_constraintContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *Drop_table_constraintContext { + var p = new(Drop_table_constraintContext) - localctx.(*Drop_column_clauseContext).column = _x - } + InitEmptyAlter_table_actionContext(&p.Alter_table_actionContext) + p.parser = parser + p.CopyAll(ctx.(*Alter_table_actionContext)) -errorExit: - if p.HasError() { - v := p.GetError() - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - p.SetError(nil) - } - p.ExitRule() - return localctx - goto errorExit // Trick to prevent compiler error if the label is not used + return p } -// IRename_column_clauseContext is an interface to support dynamic dispatch. -type IRename_column_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // GetOld_column returns the old_column rule contexts. - GetOld_column() IIdentifierContext +func (s *Drop_table_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} - // GetNew_column returns the new_column rule contexts. - GetNew_column() IIdentifierContext +func (s *Drop_table_constraintContext) DROP() antlr.TerminalNode { + return s.GetToken(KuneiformParserDROP, 0) +} - // SetOld_column sets the old_column rule contexts. - SetOld_column(IIdentifierContext) +func (s *Drop_table_constraintContext) CONSTRAINT() antlr.TerminalNode { + return s.GetToken(KuneiformParserCONSTRAINT, 0) +} - // SetNew_column sets the new_column rule contexts. - SetNew_column(IIdentifierContext) +func (s *Drop_table_constraintContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } - // Getter signatures - RENAME() antlr.TerminalNode - COLUMN() antlr.TerminalNode - TO() antlr.TerminalNode - AllIdentifier() []IIdentifierContext - Identifier(i int) IIdentifierContext + if t == nil { + return nil + } - // IsRename_column_clauseContext differentiates from other interfaces. - IsRename_column_clauseContext() + return t.(IIdentifierContext) } -type Rename_column_clauseContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser - old_column IIdentifierContext - new_column IIdentifierContext -} +func (s *Drop_table_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitDrop_table_constraint(s) -func NewEmptyRename_column_clauseContext() *Rename_column_clauseContext { - var p = new(Rename_column_clauseContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_rename_column_clause - return p + default: + return t.VisitChildren(s) + } } -func InitEmptyRename_column_clauseContext(p *Rename_column_clauseContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_rename_column_clause +type Drop_columnContext struct { + Alter_table_actionContext + column IIdentifierContext } -func (*Rename_column_clauseContext) IsRename_column_clauseContext() {} - -func NewRename_column_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Rename_column_clauseContext { - var p = new(Rename_column_clauseContext) - - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) +func NewDrop_columnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *Drop_columnContext { + var p = new(Drop_columnContext) + InitEmptyAlter_table_actionContext(&p.Alter_table_actionContext) p.parser = parser - p.RuleIndex = KuneiformParserRULE_rename_column_clause + p.CopyAll(ctx.(*Alter_table_actionContext)) return p } -func (s *Rename_column_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *Rename_column_clauseContext) GetOld_column() IIdentifierContext { return s.old_column } - -func (s *Rename_column_clauseContext) GetNew_column() IIdentifierContext { return s.new_column } - -func (s *Rename_column_clauseContext) SetOld_column(v IIdentifierContext) { s.old_column = v } +func (s *Drop_columnContext) GetColumn() IIdentifierContext { return s.column } -func (s *Rename_column_clauseContext) SetNew_column(v IIdentifierContext) { s.new_column = v } +func (s *Drop_columnContext) SetColumn(v IIdentifierContext) { s.column = v } -func (s *Rename_column_clauseContext) RENAME() antlr.TerminalNode { - return s.GetToken(KuneiformParserRENAME, 0) -} - -func (s *Rename_column_clauseContext) COLUMN() antlr.TerminalNode { - return s.GetToken(KuneiformParserCOLUMN, 0) +func (s *Drop_columnContext) GetRuleContext() antlr.RuleContext { + return s } -func (s *Rename_column_clauseContext) TO() antlr.TerminalNode { - return s.GetToken(KuneiformParserTO, 0) +func (s *Drop_columnContext) DROP() antlr.TerminalNode { + return s.GetToken(KuneiformParserDROP, 0) } -func (s *Rename_column_clauseContext) AllIdentifier() []IIdentifierContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIdentifierContext); ok { - len++ - } - } - - tst := make([]IIdentifierContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIdentifierContext); ok { - tst[i] = t.(IIdentifierContext) - i++ - } - } - - return tst +func (s *Drop_columnContext) COLUMN() antlr.TerminalNode { + return s.GetToken(KuneiformParserCOLUMN, 0) } -func (s *Rename_column_clauseContext) Identifier(i int) IIdentifierContext { +func (s *Drop_columnContext) Identifier() IIdentifierContext { var t antlr.RuleContext - j := 0 for _, ctx := range s.GetChildren() { if _, ok := ctx.(IIdentifierContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ + t = ctx.(antlr.RuleContext) + break } } @@ -11547,512 +11113,361 @@ func (s *Rename_column_clauseContext) Identifier(i int) IIdentifierContext { return t.(IIdentifierContext) } -func (s *Rename_column_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Rename_column_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *Rename_column_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Drop_columnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitRename_column_clause(s) + return t.VisitDrop_column(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Rename_column_clause() (localctx IRename_column_clauseContext) { - localctx = NewRename_column_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 88, KuneiformParserRULE_rename_column_clause) - p.EnterOuterAlt(localctx, 1) - { - p.SetState(686) - p.Match(KuneiformParserRENAME) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } +func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionContext) { + localctx = NewAlter_table_actionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 82, KuneiformParserRULE_alter_table_action) + p.SetState(671) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit } - { - p.SetState(687) - p.Match(KuneiformParserCOLUMN) - if p.HasError() { - // Recognition error - abort rule - goto errorExit + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 63, p.GetParserRuleContext()) { + case 1: + localctx = NewAdd_column_constraintContext(p, localctx) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(628) + p.Match(KuneiformParserALTER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } - } - { - p.SetState(688) + { + p.SetState(629) + p.Match(KuneiformParserCOLUMN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(630) - var _x = p.Identifier() + var _x = p.Identifier() - localctx.(*Rename_column_clauseContext).old_column = _x - } - { - p.SetState(689) - p.Match(KuneiformParserTO) + localctx.(*Add_column_constraintContext).column = _x + } + { + p.SetState(631) + p.Match(KuneiformParserSET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(636) + p.GetErrorHandler().Sync(p) if p.HasError() { - // Recognition error - abort rule goto errorExit } - } - { - p.SetState(690) - - var _x = p.Identifier() - - localctx.(*Rename_column_clauseContext).new_column = _x - } - -errorExit: - if p.HasError() { - v := p.GetError() - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - p.SetError(nil) - } - p.ExitRule() - return localctx - goto errorExit // Trick to prevent compiler error if the label is not used -} - -// IRename_table_clauseContext is an interface to support dynamic dispatch. -type IRename_table_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // GetNew_table returns the new_table rule contexts. - GetNew_table() IIdentifierContext - - // SetNew_table sets the new_table rule contexts. - SetNew_table(IIdentifierContext) - - // Getter signatures - RENAME() antlr.TerminalNode - TO() antlr.TerminalNode - Identifier() IIdentifierContext - - // IsRename_table_clauseContext differentiates from other interfaces. - IsRename_table_clauseContext() -} - -type Rename_table_clauseContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser - new_table IIdentifierContext -} - -func NewEmptyRename_table_clauseContext() *Rename_table_clauseContext { - var p = new(Rename_table_clauseContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_rename_table_clause - return p -} - -func InitEmptyRename_table_clauseContext(p *Rename_table_clauseContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_rename_table_clause -} - -func (*Rename_table_clauseContext) IsRename_table_clauseContext() {} - -func NewRename_table_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Rename_table_clauseContext { - var p = new(Rename_table_clauseContext) - - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) - - p.parser = parser - p.RuleIndex = KuneiformParserRULE_rename_table_clause - - return p -} - -func (s *Rename_table_clauseContext) GetParser() antlr.Parser { return s.parser } -func (s *Rename_table_clauseContext) GetNew_table() IIdentifierContext { return s.new_table } - -func (s *Rename_table_clauseContext) SetNew_table(v IIdentifierContext) { s.new_table = v } - -func (s *Rename_table_clauseContext) RENAME() antlr.TerminalNode { - return s.GetToken(KuneiformParserRENAME, 0) -} + switch p.GetTokenStream().LA(1) { + case KuneiformParserNOT: + { + p.SetState(632) + p.Match(KuneiformParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(633) + p.Match(KuneiformParserNULL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } -func (s *Rename_table_clauseContext) TO() antlr.TerminalNode { - return s.GetToken(KuneiformParserTO, 0) -} + case KuneiformParserDEFAULT: + { + p.SetState(634) + p.Match(KuneiformParserDEFAULT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(635) + p.Literal() + } -func (s *Rename_table_clauseContext) Identifier() IIdentifierContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIdentifierContext); ok { - t = ctx.(antlr.RuleContext) - break + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit } - } - - if t == nil { - return nil - } - - return t.(IIdentifierContext) -} - -func (s *Rename_table_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} -func (s *Rename_table_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *Rename_table_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case KuneiformParserVisitor: - return t.VisitRename_table_clause(s) + case 2: + localctx = NewDrop_column_constraintContext(p, localctx) + p.EnterOuterAlt(localctx, 2) + { + p.SetState(638) + p.Match(KuneiformParserALTER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(639) + p.Match(KuneiformParserCOLUMN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(640) - default: - return t.VisitChildren(s) - } -} + var _x = p.Identifier() -func (p *KuneiformParser) Rename_table_clause() (localctx IRename_table_clauseContext) { - localctx = NewRename_table_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 90, KuneiformParserRULE_rename_table_clause) - p.EnterOuterAlt(localctx, 1) - { - p.SetState(692) - p.Match(KuneiformParserRENAME) - if p.HasError() { - // Recognition error - abort rule - goto errorExit + localctx.(*Drop_column_constraintContext).column = _x } - } - { - p.SetState(693) - p.Match(KuneiformParserTO) + { + p.SetState(641) + p.Match(KuneiformParserDROP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(647) + p.GetErrorHandler().Sync(p) if p.HasError() { - // Recognition error - abort rule goto errorExit } - } - { - p.SetState(694) - var _x = p.Identifier() - - localctx.(*Rename_table_clauseContext).new_table = _x - } - -errorExit: - if p.HasError() { - v := p.GetError() - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - p.SetError(nil) - } - p.ExitRule() - return localctx - goto errorExit // Trick to prevent compiler error if the label is not used -} - -// IAdd_fk_clauseContext is an interface to support dynamic dispatch. -type IAdd_fk_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // GetFk_name returns the fk_name rule contexts. - GetFk_name() IIdentifierContext - - // SetFk_name sets the fk_name rule contexts. - SetFk_name(IIdentifierContext) - - // Getter signatures - ADD() antlr.TerminalNode - CONSTRAINT() antlr.TerminalNode - Unnamed_constraint() IUnnamed_constraintContext - Identifier() IIdentifierContext - - // IsAdd_fk_clauseContext differentiates from other interfaces. - IsAdd_fk_clauseContext() -} - -type Add_fk_clauseContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser - fk_name IIdentifierContext -} - -func NewEmptyAdd_fk_clauseContext() *Add_fk_clauseContext { - var p = new(Add_fk_clauseContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_add_fk_clause - return p -} - -func InitEmptyAdd_fk_clauseContext(p *Add_fk_clauseContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_add_fk_clause -} - -func (*Add_fk_clauseContext) IsAdd_fk_clauseContext() {} - -func NewAdd_fk_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Add_fk_clauseContext { - var p = new(Add_fk_clauseContext) - - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) - - p.parser = parser - p.RuleIndex = KuneiformParserRULE_add_fk_clause - - return p -} - -func (s *Add_fk_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *Add_fk_clauseContext) GetFk_name() IIdentifierContext { return s.fk_name } - -func (s *Add_fk_clauseContext) SetFk_name(v IIdentifierContext) { s.fk_name = v } + switch p.GetTokenStream().LA(1) { + case KuneiformParserNOT: + { + p.SetState(642) + p.Match(KuneiformParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(643) + p.Match(KuneiformParserNULL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } -func (s *Add_fk_clauseContext) ADD() antlr.TerminalNode { - return s.GetToken(KuneiformParserADD, 0) -} + case KuneiformParserDEFAULT: + { + p.SetState(644) + p.Match(KuneiformParserDEFAULT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } -func (s *Add_fk_clauseContext) CONSTRAINT() antlr.TerminalNode { - return s.GetToken(KuneiformParserCONSTRAINT, 0) -} + case KuneiformParserCONSTRAINT: + { + p.SetState(645) + p.Match(KuneiformParserCONSTRAINT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(646) + p.Identifier() + } -func (s *Add_fk_clauseContext) Unnamed_constraint() IUnnamed_constraintContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUnnamed_constraintContext); ok { - t = ctx.(antlr.RuleContext) - break + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit } - } - if t == nil { - return nil - } - - return t.(IUnnamed_constraintContext) -} - -func (s *Add_fk_clauseContext) Identifier() IIdentifierContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIdentifierContext); ok { - t = ctx.(antlr.RuleContext) - break + case 3: + localctx = NewAdd_columnContext(p, localctx) + p.EnterOuterAlt(localctx, 3) + { + p.SetState(649) + p.Match(KuneiformParserADD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } - } - - if t == nil { - return nil - } - - return t.(IIdentifierContext) -} - -func (s *Add_fk_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Add_fk_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *Add_fk_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case KuneiformParserVisitor: - return t.VisitAdd_fk_clause(s) + { + p.SetState(650) + p.Match(KuneiformParserCOLUMN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(651) - default: - return t.VisitChildren(s) - } -} + var _x = p.Identifier() -func (p *KuneiformParser) Add_fk_clause() (localctx IAdd_fk_clauseContext) { - localctx = NewAdd_fk_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 92, KuneiformParserRULE_add_fk_clause) - p.EnterOuterAlt(localctx, 1) - { - p.SetState(696) - p.Match(KuneiformParserADD) - if p.HasError() { - // Recognition error - abort rule - goto errorExit + localctx.(*Add_columnContext).column = _x } - } - { - p.SetState(697) - p.Match(KuneiformParserCONSTRAINT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit + { + p.SetState(652) + p.Type_() } - } - { - p.SetState(698) - var _x = p.Identifier() - - localctx.(*Add_fk_clauseContext).fk_name = _x - } - { - p.SetState(699) - p.Unnamed_constraint() - } - -errorExit: - if p.HasError() { - v := p.GetError() - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - p.SetError(nil) - } - p.ExitRule() - return localctx - goto errorExit // Trick to prevent compiler error if the label is not used -} - -// IDrop_fk_clauseContext is an interface to support dynamic dispatch. -type IDrop_fk_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // GetFk_name returns the fk_name rule contexts. - GetFk_name() IIdentifierContext - - // SetFk_name sets the fk_name rule contexts. - SetFk_name(IIdentifierContext) - - // Getter signatures - DROP() antlr.TerminalNode - CONSTRAINT() antlr.TerminalNode - Identifier() IIdentifierContext - - // IsDrop_fk_clauseContext differentiates from other interfaces. - IsDrop_fk_clauseContext() -} - -type Drop_fk_clauseContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser - fk_name IIdentifierContext -} - -func NewEmptyDrop_fk_clauseContext() *Drop_fk_clauseContext { - var p = new(Drop_fk_clauseContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_drop_fk_clause - return p -} - -func InitEmptyDrop_fk_clauseContext(p *Drop_fk_clauseContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_drop_fk_clause -} - -func (*Drop_fk_clauseContext) IsDrop_fk_clauseContext() {} - -func NewDrop_fk_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_fk_clauseContext { - var p = new(Drop_fk_clauseContext) - - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) - - p.parser = parser - p.RuleIndex = KuneiformParserRULE_drop_fk_clause - - return p -} - -func (s *Drop_fk_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *Drop_fk_clauseContext) GetFk_name() IIdentifierContext { return s.fk_name } - -func (s *Drop_fk_clauseContext) SetFk_name(v IIdentifierContext) { s.fk_name = v } + case 4: + localctx = NewDrop_columnContext(p, localctx) + p.EnterOuterAlt(localctx, 4) + { + p.SetState(654) + p.Match(KuneiformParserDROP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(655) + p.Match(KuneiformParserCOLUMN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(656) -func (s *Drop_fk_clauseContext) DROP() antlr.TerminalNode { - return s.GetToken(KuneiformParserDROP, 0) -} + var _x = p.Identifier() -func (s *Drop_fk_clauseContext) CONSTRAINT() antlr.TerminalNode { - return s.GetToken(KuneiformParserCONSTRAINT, 0) -} + localctx.(*Drop_columnContext).column = _x + } -func (s *Drop_fk_clauseContext) Identifier() IIdentifierContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIdentifierContext); ok { - t = ctx.(antlr.RuleContext) - break + case 5: + localctx = NewRename_columnContext(p, localctx) + p.EnterOuterAlt(localctx, 5) + { + p.SetState(657) + p.Match(KuneiformParserRENAME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } - } + { + p.SetState(658) + p.Match(KuneiformParserCOLUMN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(659) + + var _x = p.Identifier() - if t == nil { - return nil - } + localctx.(*Rename_columnContext).old_column = _x + } + { + p.SetState(660) + p.Match(KuneiformParserTO) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(661) - return t.(IIdentifierContext) -} + var _x = p.Identifier() -func (s *Drop_fk_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} + localctx.(*Rename_columnContext).new_column = _x + } -func (s *Drop_fk_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} + case 6: + localctx = NewRename_tableContext(p, localctx) + p.EnterOuterAlt(localctx, 6) + { + p.SetState(663) + p.Match(KuneiformParserRENAME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(664) + p.Match(KuneiformParserTO) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(665) -func (s *Drop_fk_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case KuneiformParserVisitor: - return t.VisitDrop_fk_clause(s) + var _x = p.Identifier() - default: - return t.VisitChildren(s) - } -} + localctx.(*Rename_tableContext).new_table = _x + } -func (p *KuneiformParser) Drop_fk_clause() (localctx IDrop_fk_clauseContext) { - localctx = NewDrop_fk_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 94, KuneiformParserRULE_drop_fk_clause) - p.EnterOuterAlt(localctx, 1) - { - p.SetState(701) - p.Match(KuneiformParserDROP) - if p.HasError() { - // Recognition error - abort rule - goto errorExit + case 7: + localctx = NewAdd_table_constraintContext(p, localctx) + p.EnterOuterAlt(localctx, 7) + { + p.SetState(666) + p.Match(KuneiformParserADD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } - } - { - p.SetState(702) - p.Match(KuneiformParserCONSTRAINT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit + { + p.SetState(667) + p.Constraint_def() } - } - { - p.SetState(703) - var _x = p.Identifier() + case 8: + localctx = NewDrop_table_constraintContext(p, localctx) + p.EnterOuterAlt(localctx, 8) + { + p.SetState(668) + p.Match(KuneiformParserDROP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(669) + p.Match(KuneiformParserCONSTRAINT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(670) + p.Identifier() + } - localctx.(*Drop_fk_clauseContext).fk_name = _x + case antlr.ATNInvalidAltNumber: + goto errorExit } errorExit: @@ -12256,19 +11671,19 @@ func (s *Create_index_statementContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_statementContext) { localctx = NewCreate_index_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 96, KuneiformParserRULE_create_index_statement) + p.EnterRule(localctx, 84, KuneiformParserRULE_create_index_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(705) + p.SetState(673) p.Match(KuneiformParserCREATE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(707) + p.SetState(675) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12277,7 +11692,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state if _la == KuneiformParserUNIQUE { { - p.SetState(706) + p.SetState(674) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -12287,7 +11702,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } { - p.SetState(709) + p.SetState(677) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule @@ -12295,14 +11710,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(710) + p.SetState(678) var _x = p.Identifier() localctx.(*Create_index_statementContext).name = _x } { - p.SetState(711) + p.SetState(679) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -12310,14 +11725,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(712) + p.SetState(680) var _x = p.Identifier() localctx.(*Create_index_statementContext).table = _x } { - p.SetState(713) + p.SetState(681) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -12325,14 +11740,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(714) + p.SetState(682) var _x = p.Identifier_list() localctx.(*Create_index_statementContext).columns = _x } { - p.SetState(715) + p.SetState(683) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -12466,12 +11881,12 @@ func (s *Drop_index_statementContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statementContext) { localctx = NewDrop_index_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 98, KuneiformParserRULE_drop_index_statement) + p.EnterRule(localctx, 86, KuneiformParserRULE_drop_index_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(717) + p.SetState(685) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -12479,14 +11894,14 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } } { - p.SetState(718) + p.SetState(686) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(721) + p.SetState(689) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12495,7 +11910,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement if _la == KuneiformParserIF { { - p.SetState(719) + p.SetState(687) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -12503,7 +11918,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } } { - p.SetState(720) + p.SetState(688) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -12513,7 +11928,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } { - p.SetState(723) + p.SetState(691) var _x = p.Identifier() @@ -12822,15 +12237,15 @@ func (s *Select_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) { localctx = NewSelect_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 100, KuneiformParserRULE_select_statement) + p.EnterRule(localctx, 88, KuneiformParserRULE_select_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(725) + p.SetState(693) p.Select_core() } - p.SetState(731) + p.SetState(699) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12839,22 +12254,22 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for (int64((_la-106)) & ^0x3f) == 0 && ((int64(1)<<(_la-106))&7) != 0 { { - p.SetState(726) + p.SetState(694) p.Compound_operator() } { - p.SetState(727) + p.SetState(695) p.Select_core() } - p.SetState(733) + p.SetState(701) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(744) + p.SetState(712) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12863,7 +12278,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserORDER { { - p.SetState(734) + p.SetState(702) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -12871,7 +12286,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(735) + p.SetState(703) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -12879,10 +12294,10 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(736) + p.SetState(704) p.Ordering_term() } - p.SetState(741) + p.SetState(709) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12891,7 +12306,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(737) + p.SetState(705) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -12899,11 +12314,11 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(738) + p.SetState(706) p.Ordering_term() } - p.SetState(743) + p.SetState(711) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12912,7 +12327,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(748) + p.SetState(716) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12921,7 +12336,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserLIMIT { { - p.SetState(746) + p.SetState(714) p.Match(KuneiformParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -12929,7 +12344,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(747) + p.SetState(715) var _x = p.sql_expr(0) @@ -12937,7 +12352,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(752) + p.SetState(720) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12946,7 +12361,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserOFFSET { { - p.SetState(750) + p.SetState(718) p.Match(KuneiformParserOFFSET) if p.HasError() { // Recognition error - abort rule @@ -12954,7 +12369,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(751) + p.SetState(719) var _x = p.sql_expr(0) @@ -13061,10 +12476,10 @@ func (s *Compound_operatorContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContext) { localctx = NewCompound_operatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 102, KuneiformParserRULE_compound_operator) + p.EnterRule(localctx, 90, KuneiformParserRULE_compound_operator) var _la int - p.SetState(760) + p.SetState(728) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13074,14 +12489,14 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserUNION: p.EnterOuterAlt(localctx, 1) { - p.SetState(754) + p.SetState(722) p.Match(KuneiformParserUNION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(756) + p.SetState(724) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13090,7 +12505,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex if _la == KuneiformParserALL { { - p.SetState(755) + p.SetState(723) p.Match(KuneiformParserALL) if p.HasError() { // Recognition error - abort rule @@ -13103,7 +12518,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserINTERSECT: p.EnterOuterAlt(localctx, 2) { - p.SetState(758) + p.SetState(726) p.Match(KuneiformParserINTERSECT) if p.HasError() { // Recognition error - abort rule @@ -13114,7 +12529,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserEXCEPT: p.EnterOuterAlt(localctx, 3) { - p.SetState(759) + p.SetState(727) p.Match(KuneiformParserEXCEPT) if p.HasError() { // Recognition error - abort rule @@ -13247,15 +12662,15 @@ func (s *Ordering_termContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { localctx = NewOrdering_termContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 104, KuneiformParserRULE_ordering_term) + p.EnterRule(localctx, 92, KuneiformParserRULE_ordering_term) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(762) + p.SetState(730) p.sql_expr(0) } - p.SetState(764) + p.SetState(732) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13264,7 +12679,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserASC || _la == KuneiformParserDESC { { - p.SetState(763) + p.SetState(731) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserASC || _la == KuneiformParserDESC) { @@ -13276,7 +12691,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } - p.SetState(768) + p.SetState(736) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13285,7 +12700,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserNULLS { { - p.SetState(766) + p.SetState(734) p.Match(KuneiformParserNULLS) if p.HasError() { // Recognition error - abort rule @@ -13293,7 +12708,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } { - p.SetState(767) + p.SetState(735) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserFIRST || _la == KuneiformParserLAST) { @@ -13726,19 +13141,19 @@ func (s *Select_coreContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { localctx = NewSelect_coreContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 106, KuneiformParserRULE_select_core) + p.EnterRule(localctx, 94, KuneiformParserRULE_select_core) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(770) + p.SetState(738) p.Match(KuneiformParserSELECT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(772) + p.SetState(740) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13747,7 +13162,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserDISTINCT { { - p.SetState(771) + p.SetState(739) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -13757,10 +13172,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } { - p.SetState(774) + p.SetState(742) p.Result_column() } - p.SetState(779) + p.SetState(747) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13769,7 +13184,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(775) + p.SetState(743) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -13777,18 +13192,18 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(776) + p.SetState(744) p.Result_column() } - p.SetState(781) + p.SetState(749) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(790) + p.SetState(758) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13797,7 +13212,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserFROM { { - p.SetState(782) + p.SetState(750) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -13805,10 +13220,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(783) + p.SetState(751) p.Relation() } - p.SetState(787) + p.SetState(755) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13817,11 +13232,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(784) + p.SetState(752) p.Join() } - p.SetState(789) + p.SetState(757) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13830,7 +13245,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(794) + p.SetState(762) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13839,7 +13254,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWHERE { { - p.SetState(792) + p.SetState(760) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -13847,7 +13262,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(793) + p.SetState(761) var _x = p.sql_expr(0) @@ -13855,7 +13270,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(803) + p.SetState(771) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13864,7 +13279,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserGROUP { { - p.SetState(796) + p.SetState(764) p.Match(KuneiformParserGROUP) if p.HasError() { // Recognition error - abort rule @@ -13872,7 +13287,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(797) + p.SetState(765) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -13880,13 +13295,13 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(798) + p.SetState(766) var _x = p.Sql_expr_list() localctx.(*Select_coreContext).group_by = _x } - p.SetState(801) + p.SetState(769) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13895,7 +13310,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserHAVING { { - p.SetState(799) + p.SetState(767) p.Match(KuneiformParserHAVING) if p.HasError() { // Recognition error - abort rule @@ -13903,7 +13318,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(800) + p.SetState(768) var _x = p.sql_expr(0) @@ -13913,7 +13328,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(819) + p.SetState(787) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13922,7 +13337,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWINDOW { { - p.SetState(805) + p.SetState(773) p.Match(KuneiformParserWINDOW) if p.HasError() { // Recognition error - abort rule @@ -13930,11 +13345,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(806) + p.SetState(774) p.Identifier() } { - p.SetState(807) + p.SetState(775) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13942,10 +13357,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(808) + p.SetState(776) p.Window() } - p.SetState(816) + p.SetState(784) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13954,7 +13369,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(809) + p.SetState(777) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -13962,11 +13377,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(810) + p.SetState(778) p.Identifier() } { - p.SetState(811) + p.SetState(779) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13974,11 +13389,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(812) + p.SetState(780) p.Window() } - p.SetState(818) + p.SetState(786) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14217,10 +13632,10 @@ func (s *Subquery_relationContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewRelationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 108, KuneiformParserRULE_relation) + p.EnterRule(localctx, 96, KuneiformParserRULE_relation) var _la int - p.SetState(837) + p.SetState(805) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14231,13 +13646,13 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewTable_relationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(821) + p.SetState(789) var _x = p.Identifier() localctx.(*Table_relationContext).table_name = _x } - p.SetState(826) + p.SetState(794) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14245,7 +13660,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(823) + p.SetState(791) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14254,7 +13669,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(822) + p.SetState(790) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14264,7 +13679,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(825) + p.SetState(793) var _x = p.Identifier() @@ -14277,7 +13692,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewSubquery_relationContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(828) + p.SetState(796) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -14285,18 +13700,18 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } } { - p.SetState(829) + p.SetState(797) p.Select_statement() } { - p.SetState(830) + p.SetState(798) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(835) + p.SetState(803) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14304,7 +13719,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(832) + p.SetState(800) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14313,7 +13728,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(831) + p.SetState(799) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14323,7 +13738,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(834) + p.SetState(802) var _x = p.Identifier() @@ -14479,11 +13894,11 @@ func (s *JoinContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Join() (localctx IJoinContext) { localctx = NewJoinContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 110, KuneiformParserRULE_join) + p.EnterRule(localctx, 98, KuneiformParserRULE_join) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(840) + p.SetState(808) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14492,7 +13907,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { if (int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0 { { - p.SetState(839) + p.SetState(807) _la = p.GetTokenStream().LA(1) if !((int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0) { @@ -14505,7 +13920,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } { - p.SetState(842) + p.SetState(810) p.Match(KuneiformParserJOIN) if p.HasError() { // Recognition error - abort rule @@ -14513,11 +13928,11 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(843) + p.SetState(811) p.Relation() } { - p.SetState(844) + p.SetState(812) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -14525,7 +13940,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(845) + p.SetState(813) p.sql_expr(0) } @@ -14719,24 +14134,24 @@ func (s *Wildcard_result_columnContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { localctx = NewResult_columnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 112, KuneiformParserRULE_result_column) + p.EnterRule(localctx, 100, KuneiformParserRULE_result_column) var _la int - p.SetState(860) + p.SetState(828) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 96, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 93, p.GetParserRuleContext()) { case 1: localctx = NewExpression_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(847) + p.SetState(815) p.sql_expr(0) } - p.SetState(852) + p.SetState(820) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14744,7 +14159,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(849) + p.SetState(817) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14753,7 +14168,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserAS { { - p.SetState(848) + p.SetState(816) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14763,7 +14178,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(851) + p.SetState(819) p.Identifier() } @@ -14772,7 +14187,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { case 2: localctx = NewWildcard_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(857) + p.SetState(825) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14781,14 +14196,14 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(854) + p.SetState(822) var _x = p.Identifier() localctx.(*Wildcard_result_columnContext).table_name = _x } { - p.SetState(855) + p.SetState(823) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -14798,7 +14213,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(859) + p.SetState(827) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -15119,12 +14534,12 @@ func (s *Update_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) { localctx = NewUpdate_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 114, KuneiformParserRULE_update_statement) + p.EnterRule(localctx, 102, KuneiformParserRULE_update_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(862) + p.SetState(830) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -15132,13 +14547,13 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(863) + p.SetState(831) var _x = p.Identifier() localctx.(*Update_statementContext).table_name = _x } - p.SetState(868) + p.SetState(836) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15146,7 +14561,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(865) + p.SetState(833) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15155,7 +14570,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserAS { { - p.SetState(864) + p.SetState(832) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -15165,7 +14580,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(867) + p.SetState(835) var _x = p.Identifier() @@ -15174,7 +14589,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(870) + p.SetState(838) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -15182,10 +14597,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(871) + p.SetState(839) p.Update_set_clause() } - p.SetState(876) + p.SetState(844) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15194,7 +14609,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(872) + p.SetState(840) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15202,18 +14617,18 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(873) + p.SetState(841) p.Update_set_clause() } - p.SetState(878) + p.SetState(846) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(887) + p.SetState(855) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15222,7 +14637,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserFROM { { - p.SetState(879) + p.SetState(847) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -15230,10 +14645,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(880) + p.SetState(848) p.Relation() } - p.SetState(884) + p.SetState(852) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15242,11 +14657,11 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(881) + p.SetState(849) p.Join() } - p.SetState(886) + p.SetState(854) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15255,7 +14670,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } - p.SetState(891) + p.SetState(859) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15264,7 +14679,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(889) + p.SetState(857) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -15272,7 +14687,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(890) + p.SetState(858) var _x = p.sql_expr(0) @@ -15409,17 +14824,17 @@ func (s *Update_set_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContext) { localctx = NewUpdate_set_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 116, KuneiformParserRULE_update_set_clause) + p.EnterRule(localctx, 104, KuneiformParserRULE_update_set_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(893) + p.SetState(861) var _x = p.Identifier() localctx.(*Update_set_clauseContext).column = _x } { - p.SetState(894) + p.SetState(862) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -15427,7 +14842,7 @@ func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContex } } { - p.SetState(895) + p.SetState(863) p.sql_expr(0) } @@ -15731,12 +15146,12 @@ func (s *Insert_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) { localctx = NewInsert_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 118, KuneiformParserRULE_insert_statement) + p.EnterRule(localctx, 106, KuneiformParserRULE_insert_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(897) + p.SetState(865) p.Match(KuneiformParserINSERT) if p.HasError() { // Recognition error - abort rule @@ -15744,7 +15159,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(898) + p.SetState(866) p.Match(KuneiformParserINTO) if p.HasError() { // Recognition error - abort rule @@ -15752,13 +15167,13 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(899) + p.SetState(867) var _x = p.Identifier() localctx.(*Insert_statementContext).table_name = _x } - p.SetState(904) + p.SetState(872) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15766,7 +15181,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(901) + p.SetState(869) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15775,7 +15190,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserAS { { - p.SetState(900) + p.SetState(868) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -15785,7 +15200,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } { - p.SetState(903) + p.SetState(871) var _x = p.Identifier() @@ -15793,7 +15208,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(910) + p.SetState(878) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15802,7 +15217,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserLPAREN { { - p.SetState(906) + p.SetState(874) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15810,14 +15225,14 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(907) + p.SetState(875) var _x = p.Identifier_list() localctx.(*Insert_statementContext).target_columns = _x } { - p.SetState(908) + p.SetState(876) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15826,7 +15241,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(927) + p.SetState(895) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15835,7 +15250,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) switch p.GetTokenStream().LA(1) { case KuneiformParserVALUES: { - p.SetState(912) + p.SetState(880) p.Match(KuneiformParserVALUES) if p.HasError() { // Recognition error - abort rule @@ -15843,7 +15258,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(913) + p.SetState(881) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15851,18 +15266,18 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(914) + p.SetState(882) p.Sql_expr_list() } { - p.SetState(915) + p.SetState(883) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(923) + p.SetState(891) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15871,7 +15286,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(916) + p.SetState(884) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15879,7 +15294,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(917) + p.SetState(885) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15887,11 +15302,11 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(918) + p.SetState(886) p.Sql_expr_list() } { - p.SetState(919) + p.SetState(887) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15899,7 +15314,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(925) + p.SetState(893) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15909,7 +15324,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) case KuneiformParserSELECT: { - p.SetState(926) + p.SetState(894) p.Select_statement() } @@ -15917,7 +15332,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(930) + p.SetState(898) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15926,7 +15341,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserON { { - p.SetState(929) + p.SetState(897) p.Upsert_clause() } @@ -16208,12 +15623,12 @@ func (s *Upsert_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { localctx = NewUpsert_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 120, KuneiformParserRULE_upsert_clause) + p.EnterRule(localctx, 108, KuneiformParserRULE_upsert_clause) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(932) + p.SetState(900) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -16221,14 +15636,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(933) + p.SetState(901) p.Match(KuneiformParserCONFLICT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(941) + p.SetState(909) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16237,7 +15652,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserLPAREN { { - p.SetState(934) + p.SetState(902) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -16245,21 +15660,21 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(935) + p.SetState(903) var _x = p.Identifier_list() localctx.(*Upsert_clauseContext).conflict_columns = _x } { - p.SetState(936) + p.SetState(904) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(939) + p.SetState(907) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16268,7 +15683,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(937) + p.SetState(905) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -16276,7 +15691,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(938) + p.SetState(906) var _x = p.sql_expr(0) @@ -16287,14 +15702,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } { - p.SetState(943) + p.SetState(911) p.Match(KuneiformParserDO) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(959) + p.SetState(927) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16303,7 +15718,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserNOTHING: { - p.SetState(944) + p.SetState(912) p.Match(KuneiformParserNOTHING) if p.HasError() { // Recognition error - abort rule @@ -16313,7 +15728,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { case KuneiformParserUPDATE: { - p.SetState(945) + p.SetState(913) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -16321,7 +15736,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(946) + p.SetState(914) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -16329,10 +15744,10 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(947) + p.SetState(915) p.Update_set_clause() } - p.SetState(952) + p.SetState(920) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16341,7 +15756,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { for _la == KuneiformParserCOMMA { { - p.SetState(948) + p.SetState(916) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -16349,18 +15764,18 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(949) + p.SetState(917) p.Update_set_clause() } - p.SetState(954) + p.SetState(922) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(957) + p.SetState(925) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16369,7 +15784,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(955) + p.SetState(923) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -16377,7 +15792,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(956) + p.SetState(924) var _x = p.sql_expr(0) @@ -16582,12 +15997,12 @@ func (s *Delete_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) { localctx = NewDelete_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 122, KuneiformParserRULE_delete_statement) + p.EnterRule(localctx, 110, KuneiformParserRULE_delete_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(961) + p.SetState(929) p.Match(KuneiformParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -16595,7 +16010,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(962) + p.SetState(930) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -16603,13 +16018,13 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(963) + p.SetState(931) var _x = p.Identifier() localctx.(*Delete_statementContext).table_name = _x } - p.SetState(968) + p.SetState(936) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16617,7 +16032,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(965) + p.SetState(933) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16626,7 +16041,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserAS { { - p.SetState(964) + p.SetState(932) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -16636,7 +16051,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } { - p.SetState(967) + p.SetState(935) var _x = p.Identifier() @@ -16644,7 +16059,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } - p.SetState(972) + p.SetState(940) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16653,7 +16068,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(970) + p.SetState(938) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -16661,7 +16076,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(971) + p.SetState(939) var _x = p.sql_expr(0) @@ -18403,27 +17818,27 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewSql_exprContext(p, p.GetParserRuleContext(), _parentState) var _prevctx ISql_exprContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 124 - p.EnterRecursionRule(localctx, 124, KuneiformParserRULE_sql_expr, _p) + _startState := 112 + p.EnterRecursionRule(localctx, 112, KuneiformParserRULE_sql_expr, _p) var _la int var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(1047) + p.SetState(1015) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 128, p.GetParserRuleContext()) { case 1: localctx = NewParen_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(975) + p.SetState(943) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -18431,23 +17846,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(976) + p.SetState(944) p.sql_expr(0) } { - p.SetState(977) + p.SetState(945) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(979) + p.SetState(947) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 117, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 114, p.GetParserRuleContext()) == 1 { { - p.SetState(978) + p.SetState(946) p.Type_cast() } @@ -18460,7 +17875,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(981) + p.SetState(949) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -18471,7 +17886,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(982) + p.SetState(950) p.sql_expr(20) } @@ -18480,15 +17895,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(983) + p.SetState(951) p.Literal() } - p.SetState(985) + p.SetState(953) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { { - p.SetState(984) + p.SetState(952) p.Type_cast() } @@ -18501,10 +17916,10 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(987) + p.SetState(955) p.Sql_function_call() } - p.SetState(994) + p.SetState(962) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18513,7 +17928,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserFILTER { { - p.SetState(988) + p.SetState(956) p.Match(KuneiformParserFILTER) if p.HasError() { // Recognition error - abort rule @@ -18521,7 +17936,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(989) + p.SetState(957) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -18529,7 +17944,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(990) + p.SetState(958) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -18537,11 +17952,11 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(991) + p.SetState(959) p.sql_expr(0) } { - p.SetState(992) + p.SetState(960) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -18551,14 +17966,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(996) + p.SetState(964) p.Match(KuneiformParserOVER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(999) + p.SetState(967) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18567,13 +17982,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN: { - p.SetState(997) + p.SetState(965) p.Window() } case KuneiformParserIDENTIFIER: { - p.SetState(998) + p.SetState(966) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -18591,15 +18006,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1001) + p.SetState(969) p.Sql_function_call() } - p.SetState(1003) + p.SetState(971) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) == 1 { { - p.SetState(1002) + p.SetState(970) p.Type_cast() } @@ -18612,15 +18027,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1005) + p.SetState(973) p.Variable() } - p.SetState(1007) + p.SetState(975) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 122, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 119, p.GetParserRuleContext()) == 1 { { - p.SetState(1006) + p.SetState(974) p.Type_cast() } @@ -18632,19 +18047,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewColumn_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(1012) + p.SetState(980) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 123, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { { - p.SetState(1009) + p.SetState(977) var _x = p.Identifier() localctx.(*Column_sql_exprContext).table = _x } { - p.SetState(1010) + p.SetState(978) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -18656,18 +18071,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1014) + p.SetState(982) var _x = p.Identifier() localctx.(*Column_sql_exprContext).column = _x } - p.SetState(1016) + p.SetState(984) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 124, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { { - p.SetState(1015) + p.SetState(983) p.Type_cast() } @@ -18680,14 +18095,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1018) + p.SetState(986) p.Match(KuneiformParserCASE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1020) + p.SetState(988) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18696,7 +18111,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1019) + p.SetState(987) var _x = p.sql_expr(0) @@ -18704,7 +18119,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1023) + p.SetState(991) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18713,18 +18128,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { for ok := true; ok; ok = _la == KuneiformParserWHEN { { - p.SetState(1022) + p.SetState(990) p.When_then_clause() } - p.SetState(1025) + p.SetState(993) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(1029) + p.SetState(997) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18733,7 +18148,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserELSE { { - p.SetState(1027) + p.SetState(995) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -18741,7 +18156,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1028) + p.SetState(996) var _x = p.sql_expr(0) @@ -18750,7 +18165,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1031) + p.SetState(999) p.Match(KuneiformParserEND) if p.HasError() { // Recognition error - abort rule @@ -18762,7 +18177,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewSubquery_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(1037) + p.SetState(1005) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18770,7 +18185,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserNOT || _la == KuneiformParserEXISTS { - p.SetState(1034) + p.SetState(1002) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18779,7 +18194,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1033) + p.SetState(1001) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18789,7 +18204,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1036) + p.SetState(1004) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -18799,7 +18214,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1039) + p.SetState(1007) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -18807,23 +18222,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1040) + p.SetState(1008) p.Select_statement() } { - p.SetState(1041) + p.SetState(1009) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1043) + p.SetState(1011) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 130, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 127, p.GetParserRuleContext()) == 1 { { - p.SetState(1042) + p.SetState(1010) p.Type_cast() } @@ -18837,7 +18252,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _prevctx = localctx { - p.SetState(1045) + p.SetState(1013) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18846,7 +18261,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1046) + p.SetState(1014) p.sql_expr(3) } @@ -18854,12 +18269,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1134) + p.SetState(1102) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 144, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -18869,26 +18284,26 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1132) + p.SetState(1100) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 143, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 140, p.GetParserRuleContext()) { case 1: localctx = NewArithmetic_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1049) + p.SetState(1017) if !(p.Precpred(p.GetParserRuleContext(), 18)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", "")) goto errorExit } { - p.SetState(1050) + p.SetState(1018) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -18899,7 +18314,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1051) + p.SetState(1019) var _x = p.sql_expr(19) @@ -18911,14 +18326,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1052) + p.SetState(1020) if !(p.Precpred(p.GetParserRuleContext(), 17)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", "")) goto errorExit } { - p.SetState(1053) + p.SetState(1021) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -18929,7 +18344,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1054) + p.SetState(1022) var _x = p.sql_expr(18) @@ -18941,14 +18356,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1055) + p.SetState(1023) if !(p.Precpred(p.GetParserRuleContext(), 9)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) goto errorExit } { - p.SetState(1056) + p.SetState(1024) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -18956,7 +18371,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1057) + p.SetState(1025) var _x = p.sql_expr(10) @@ -18968,13 +18383,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Like_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1058) + p.SetState(1026) if !(p.Precpred(p.GetParserRuleContext(), 7)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) goto errorExit } - p.SetState(1060) + p.SetState(1028) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18983,7 +18398,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1059) + p.SetState(1027) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18993,7 +18408,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1062) + p.SetState(1030) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserLIKE || _la == KuneiformParserILIKE) { @@ -19004,7 +18419,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1063) + p.SetState(1031) var _x = p.sql_expr(8) @@ -19016,13 +18431,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Between_sql_exprContext).element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1064) + p.SetState(1032) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } - p.SetState(1066) + p.SetState(1034) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19031,7 +18446,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1065) + p.SetState(1033) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -19041,7 +18456,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1068) + p.SetState(1036) p.Match(KuneiformParserBETWEEN) if p.HasError() { // Recognition error - abort rule @@ -19049,14 +18464,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1069) + p.SetState(1037) var _x = p.sql_expr(0) localctx.(*Between_sql_exprContext).lower = _x } { - p.SetState(1070) + p.SetState(1038) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -19064,7 +18479,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1071) + p.SetState(1039) var _x = p.sql_expr(7) @@ -19076,14 +18491,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Comparison_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1073) + p.SetState(1041) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1074) + p.SetState(1042) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -19094,7 +18509,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1075) + p.SetState(1043) var _x = p.sql_expr(6) @@ -19106,14 +18521,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1076) + p.SetState(1044) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1077) + p.SetState(1045) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -19121,7 +18536,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1078) + p.SetState(1046) var _x = p.sql_expr(3) @@ -19133,14 +18548,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1079) + p.SetState(1047) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1080) + p.SetState(1048) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -19148,7 +18563,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1081) + p.SetState(1049) var _x = p.sql_expr(2) @@ -19158,14 +18573,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 9: localctx = NewField_access_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1082) + p.SetState(1050) if !(p.Precpred(p.GetParserRuleContext(), 22)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 22)", "")) goto errorExit } { - p.SetState(1083) + p.SetState(1051) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -19173,15 +18588,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1084) + p.SetState(1052) p.Identifier() } - p.SetState(1086) + p.SetState(1054) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 134, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 { { - p.SetState(1085) + p.SetState(1053) p.Type_cast() } @@ -19194,30 +18609,30 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Array_access_sql_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1088) + p.SetState(1056) if !(p.Precpred(p.GetParserRuleContext(), 21)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 21)", "")) goto errorExit } { - p.SetState(1089) + p.SetState(1057) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1098) + p.SetState(1066) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 137, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 134, p.GetParserRuleContext()) { case 1: { - p.SetState(1090) + p.SetState(1058) var _x = p.sql_expr(0) @@ -19225,7 +18640,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } case 2: - p.SetState(1092) + p.SetState(1060) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19234,7 +18649,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1091) + p.SetState(1059) var _x = p.sql_expr(0) @@ -19243,14 +18658,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1094) + p.SetState(1062) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1096) + p.SetState(1064) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19259,7 +18674,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1095) + p.SetState(1063) var _x = p.sql_expr(0) @@ -19272,19 +18687,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1100) + p.SetState(1068) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1102) + p.SetState(1070) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 138, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) == 1 { { - p.SetState(1101) + p.SetState(1069) p.Type_cast() } @@ -19295,14 +18710,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 11: localctx = NewCollate_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1104) + p.SetState(1072) if !(p.Precpred(p.GetParserRuleContext(), 19)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", "")) goto errorExit } { - p.SetState(1105) + p.SetState(1073) p.Match(KuneiformParserCOLLATE) if p.HasError() { // Recognition error - abort rule @@ -19310,20 +18725,20 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1106) + p.SetState(1074) p.Identifier() } case 12: localctx = NewIn_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1107) + p.SetState(1075) if !(p.Precpred(p.GetParserRuleContext(), 8)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) goto errorExit } - p.SetState(1109) + p.SetState(1077) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19332,7 +18747,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1108) + p.SetState(1076) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -19342,7 +18757,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1111) + p.SetState(1079) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule @@ -19350,14 +18765,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1112) + p.SetState(1080) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1115) + p.SetState(1083) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19366,13 +18781,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1113) + p.SetState(1081) p.Sql_expr_list() } case KuneiformParserSELECT: { - p.SetState(1114) + p.SetState(1082) p.Select_statement() } @@ -19381,7 +18796,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1117) + p.SetState(1085) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19394,21 +18809,21 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Is_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1119) + p.SetState(1087) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1120) + p.SetState(1088) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1122) + p.SetState(1090) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19417,7 +18832,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1121) + p.SetState(1089) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -19426,7 +18841,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1130) + p.SetState(1098) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19435,7 +18850,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1124) + p.SetState(1092) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -19443,7 +18858,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1125) + p.SetState(1093) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -19451,7 +18866,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1126) + p.SetState(1094) var _x = p.sql_expr(0) @@ -19460,7 +18875,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserNULL: { - p.SetState(1127) + p.SetState(1095) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -19470,7 +18885,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserTRUE: { - p.SetState(1128) + p.SetState(1096) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -19480,7 +18895,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserFALSE: { - p.SetState(1129) + p.SetState(1097) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -19498,12 +18913,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1136) + p.SetState(1104) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 144, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -19698,19 +19113,19 @@ func (s *WindowContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Window() (localctx IWindowContext) { localctx = NewWindowContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 126, KuneiformParserRULE_window) + p.EnterRule(localctx, 114, KuneiformParserRULE_window) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1137) + p.SetState(1105) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1141) + p.SetState(1109) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19719,7 +19134,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserPARTITION { { - p.SetState(1138) + p.SetState(1106) p.Match(KuneiformParserPARTITION) if p.HasError() { // Recognition error - abort rule @@ -19727,7 +19142,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1139) + p.SetState(1107) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -19735,7 +19150,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1140) + p.SetState(1108) var _x = p.Sql_expr_list() @@ -19743,7 +19158,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } - p.SetState(1153) + p.SetState(1121) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19752,7 +19167,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserORDER { { - p.SetState(1143) + p.SetState(1111) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -19760,7 +19175,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1144) + p.SetState(1112) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -19768,10 +19183,10 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1145) + p.SetState(1113) p.Ordering_term() } - p.SetState(1150) + p.SetState(1118) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19780,7 +19195,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1146) + p.SetState(1114) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -19788,11 +19203,11 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1147) + p.SetState(1115) p.Ordering_term() } - p.SetState(1152) + p.SetState(1120) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19802,7 +19217,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } { - p.SetState(1155) + p.SetState(1123) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19963,10 +19378,10 @@ func (s *When_then_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) { localctx = NewWhen_then_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 128, KuneiformParserRULE_when_then_clause) + p.EnterRule(localctx, 116, KuneiformParserRULE_when_then_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(1157) + p.SetState(1125) p.Match(KuneiformParserWHEN) if p.HasError() { // Recognition error - abort rule @@ -19974,14 +19389,14 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(1158) + p.SetState(1126) var _x = p.sql_expr(0) localctx.(*When_then_clauseContext).when_condition = _x } { - p.SetState(1159) + p.SetState(1127) p.Match(KuneiformParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -19989,7 +19404,7 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(1160) + p.SetState(1128) var _x = p.sql_expr(0) @@ -20127,15 +19542,15 @@ func (s *Sql_expr_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { localctx = NewSql_expr_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 130, KuneiformParserRULE_sql_expr_list) + p.EnterRule(localctx, 118, KuneiformParserRULE_sql_expr_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1162) + p.SetState(1130) p.sql_expr(0) } - p.SetState(1167) + p.SetState(1135) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20144,7 +19559,7 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1163) + p.SetState(1131) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -20152,11 +19567,11 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { } } { - p.SetState(1164) + p.SetState(1132) p.sql_expr(0) } - p.SetState(1169) + p.SetState(1137) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20309,31 +19724,31 @@ func (s *Normal_call_sqlContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContext) { localctx = NewSql_function_callContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 132, KuneiformParserRULE_sql_function_call) + p.EnterRule(localctx, 120, KuneiformParserRULE_sql_function_call) var _la int localctx = NewNormal_call_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1170) + p.SetState(1138) p.Identifier() } { - p.SetState(1171) + p.SetState(1139) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1177) + p.SetState(1145) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserDISTINCT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: - p.SetState(1173) + p.SetState(1141) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20342,7 +19757,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex if _la == KuneiformParserDISTINCT { { - p.SetState(1172) + p.SetState(1140) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -20352,13 +19767,13 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex } { - p.SetState(1175) + p.SetState(1143) p.Sql_expr_list() } case KuneiformParserSTAR: { - p.SetState(1176) + p.SetState(1144) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -20371,7 +19786,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex default: } { - p.SetState(1179) + p.SetState(1147) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20510,11 +19925,11 @@ func (s *Action_blockContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { localctx = NewAction_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 134, KuneiformParserRULE_action_block) + p.EnterRule(localctx, 122, KuneiformParserRULE_action_block) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1186) + p.SetState(1154) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20523,11 +19938,11 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-4611602455543676928) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&492581209245185) != 0) { { - p.SetState(1181) + p.SetState(1149) p.Action_statement() } { - p.SetState(1182) + p.SetState(1150) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -20535,7 +19950,7 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { } } - p.SetState(1188) + p.SetState(1156) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20796,21 +20211,21 @@ func (s *Sql_actionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) { localctx = NewAction_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 136, KuneiformParserRULE_action_statement) + p.EnterRule(localctx, 124, KuneiformParserRULE_action_statement) var _la int - p.SetState(1209) + p.SetState(1177) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 152, p.GetParserRuleContext()) { case 1: localctx = NewSql_actionContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1189) + p.SetState(1157) p.Sql_statement() } @@ -20818,7 +20233,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) localctx = NewLocal_actionContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(1190) + p.SetState(1158) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20826,14 +20241,14 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1191) + p.SetState(1159) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1193) + p.SetState(1161) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20842,13 +20257,13 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1192) + p.SetState(1160) p.Procedure_expr_list() } } { - p.SetState(1195) + p.SetState(1163) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20859,7 +20274,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) case 3: localctx = NewExtension_actionContext(p, localctx) p.EnterOuterAlt(localctx, 3) - p.SetState(1199) + p.SetState(1167) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20868,11 +20283,11 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(1196) + p.SetState(1164) p.Variable_list() } { - p.SetState(1197) + p.SetState(1165) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -20882,7 +20297,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } { - p.SetState(1201) + p.SetState(1169) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20890,7 +20305,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1202) + p.SetState(1170) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -20898,7 +20313,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1203) + p.SetState(1171) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20906,14 +20321,14 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1204) + p.SetState(1172) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1206) + p.SetState(1174) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20922,13 +20337,13 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1205) + p.SetState(1173) p.Procedure_expr_list() } } { - p.SetState(1208) + p.SetState(1176) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -21061,11 +20476,11 @@ func (s *Procedure_blockContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Procedure_block() (localctx IProcedure_blockContext) { localctx = NewProcedure_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 138, KuneiformParserRULE_procedure_block) + p.EnterRule(localctx, 126, KuneiformParserRULE_procedure_block) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1214) + p.SetState(1182) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21074,11 +20489,11 @@ func (p *KuneiformParser) Procedure_block() (localctx IProcedure_blockContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1211) + p.SetState(1179) p.Proc_statement() } - p.SetState(1216) + p.SetState(1184) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22103,27 +21518,27 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx = NewProcedure_exprContext(p, p.GetParserRuleContext(), _parentState) var _prevctx IProcedure_exprContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 140 - p.EnterRecursionRule(localctx, 140, KuneiformParserRULE_procedure_expr, _p) + _startState := 128 + p.EnterRecursionRule(localctx, 128, KuneiformParserRULE_procedure_expr, _p) var _la int var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(1248) + p.SetState(1216) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 163, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) { case 1: localctx = NewParen_procedure_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1218) + p.SetState(1186) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -22131,23 +21546,23 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1219) + p.SetState(1187) p.procedure_expr(0) } { - p.SetState(1220) + p.SetState(1188) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1222) + p.SetState(1190) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 154, p.GetParserRuleContext()) == 1 { { - p.SetState(1221) + p.SetState(1189) p.Type_cast() } @@ -22160,7 +21575,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1224) + p.SetState(1192) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&3147776) != 0) { @@ -22171,7 +21586,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1225) + p.SetState(1193) p.procedure_expr(13) } @@ -22180,15 +21595,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1226) + p.SetState(1194) p.Literal() } - p.SetState(1228) + p.SetState(1196) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 158, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) == 1 { { - p.SetState(1227) + p.SetState(1195) p.Type_cast() } @@ -22201,15 +21616,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1230) + p.SetState(1198) p.Procedure_function_call() } - p.SetState(1232) + p.SetState(1200) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 159, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { { - p.SetState(1231) + p.SetState(1199) p.Type_cast() } @@ -22222,15 +21637,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1234) + p.SetState(1202) p.Variable() } - p.SetState(1236) + p.SetState(1204) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { { - p.SetState(1235) + p.SetState(1203) p.Type_cast() } @@ -22243,14 +21658,14 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1238) + p.SetState(1206) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1240) + p.SetState(1208) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22259,25 +21674,25 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1239) + p.SetState(1207) p.Procedure_expr_list() } } { - p.SetState(1242) + p.SetState(1210) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1244) + p.SetState(1212) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 162, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 159, p.GetParserRuleContext()) == 1 { { - p.SetState(1243) + p.SetState(1211) p.Type_cast() } @@ -22291,7 +21706,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex _prevctx = localctx { - p.SetState(1246) + p.SetState(1214) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -22300,7 +21715,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1247) + p.SetState(1215) p.procedure_expr(3) } @@ -22308,12 +21723,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1305) + p.SetState(1273) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 172, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -22323,24 +21738,24 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1303) + p.SetState(1271) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 171, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 168, p.GetParserRuleContext()) { case 1: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1250) + p.SetState(1218) if !(p.Precpred(p.GetParserRuleContext(), 12)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 12)", "")) goto errorExit } { - p.SetState(1251) + p.SetState(1219) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -22351,21 +21766,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1252) + p.SetState(1220) p.procedure_expr(13) } case 2: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1253) + p.SetState(1221) if !(p.Precpred(p.GetParserRuleContext(), 11)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 11)", "")) goto errorExit } { - p.SetState(1254) + p.SetState(1222) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -22376,21 +21791,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1255) + p.SetState(1223) p.procedure_expr(12) } case 3: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1256) + p.SetState(1224) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } { - p.SetState(1257) + p.SetState(1225) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -22398,21 +21813,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1258) + p.SetState(1226) p.procedure_expr(7) } case 4: localctx = NewComparison_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1259) + p.SetState(1227) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1260) + p.SetState(1228) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -22423,21 +21838,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1261) + p.SetState(1229) p.procedure_expr(6) } case 5: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1262) + p.SetState(1230) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1263) + p.SetState(1231) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -22445,21 +21860,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1264) + p.SetState(1232) p.procedure_expr(3) } case 6: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1265) + p.SetState(1233) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1266) + p.SetState(1234) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -22467,21 +21882,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1267) + p.SetState(1235) p.procedure_expr(2) } case 7: localctx = NewField_access_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1268) + p.SetState(1236) if !(p.Precpred(p.GetParserRuleContext(), 15)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", "")) goto errorExit } { - p.SetState(1269) + p.SetState(1237) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -22489,19 +21904,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1270) + p.SetState(1238) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1272) + p.SetState(1240) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 164, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 161, p.GetParserRuleContext()) == 1 { { - p.SetState(1271) + p.SetState(1239) p.Type_cast() } @@ -22514,30 +21929,30 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Array_access_procedure_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1274) + p.SetState(1242) if !(p.Precpred(p.GetParserRuleContext(), 14)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) goto errorExit } { - p.SetState(1275) + p.SetState(1243) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1284) + p.SetState(1252) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 167, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 164, p.GetParserRuleContext()) { case 1: { - p.SetState(1276) + p.SetState(1244) var _x = p.procedure_expr(0) @@ -22545,7 +21960,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } case 2: - p.SetState(1278) + p.SetState(1246) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22554,7 +21969,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1277) + p.SetState(1245) var _x = p.procedure_expr(0) @@ -22563,14 +21978,14 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1280) + p.SetState(1248) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1282) + p.SetState(1250) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22579,7 +21994,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1281) + p.SetState(1249) var _x = p.procedure_expr(0) @@ -22592,19 +22007,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } { - p.SetState(1286) + p.SetState(1254) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1288) + p.SetState(1256) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 168, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { { - p.SetState(1287) + p.SetState(1255) p.Type_cast() } @@ -22617,21 +22032,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Is_procedure_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1290) + p.SetState(1258) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1291) + p.SetState(1259) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1293) + p.SetState(1261) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22640,7 +22055,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if _la == KuneiformParserNOT { { - p.SetState(1292) + p.SetState(1260) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -22649,7 +22064,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1301) + p.SetState(1269) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22658,7 +22073,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1295) + p.SetState(1263) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -22666,7 +22081,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1296) + p.SetState(1264) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -22674,7 +22089,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1297) + p.SetState(1265) var _x = p.procedure_expr(0) @@ -22683,7 +22098,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserNULL: { - p.SetState(1298) + p.SetState(1266) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -22693,7 +22108,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserTRUE: { - p.SetState(1299) + p.SetState(1267) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -22703,7 +22118,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserFALSE: { - p.SetState(1300) + p.SetState(1268) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -22721,12 +22136,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1307) + p.SetState(1275) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 172, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -22863,15 +22278,15 @@ func (s *Procedure_expr_listContext) Accept(visitor antlr.ParseTreeVisitor) inte func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listContext) { localctx = NewProcedure_expr_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 142, KuneiformParserRULE_procedure_expr_list) + p.EnterRule(localctx, 130, KuneiformParserRULE_procedure_expr_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1308) + p.SetState(1276) p.procedure_expr(0) } - p.SetState(1313) + p.SetState(1281) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22880,7 +22295,7 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo for _la == KuneiformParserCOMMA { { - p.SetState(1309) + p.SetState(1277) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -22888,11 +22303,11 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo } } { - p.SetState(1310) + p.SetState(1278) p.procedure_expr(0) } - p.SetState(1315) + p.SetState(1283) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23704,21 +23119,21 @@ func (s *Stmt_sqlContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewProc_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 144, KuneiformParserRULE_proc_statement) + p.EnterRule(localctx, 132, KuneiformParserRULE_proc_statement) var _la int - p.SetState(1396) + p.SetState(1364) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 183, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 180, p.GetParserRuleContext()) { case 1: localctx = NewStmt_variable_declarationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1316) + p.SetState(1284) p.Match(KuneiformParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -23726,11 +23141,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1317) + p.SetState(1285) p.Type_() } { - p.SetState(1318) + p.SetState(1286) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23741,7 +23156,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 2: localctx = NewStmt_procedure_callContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(1330) + p.SetState(1298) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23750,11 +23165,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE { { - p.SetState(1320) + p.SetState(1288) p.Variable_or_underscore() } - p.SetState(1325) + p.SetState(1293) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23763,7 +23178,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1321) + p.SetState(1289) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -23772,11 +23187,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1322) + p.SetState(1290) p.Variable_or_underscore() } - p.SetState(1327) + p.SetState(1295) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23784,7 +23199,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1328) + p.SetState(1296) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -23794,11 +23209,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1332) + p.SetState(1300) p.Procedure_function_call() } { - p.SetState(1333) + p.SetState(1301) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23810,10 +23225,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_variable_assignmentContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(1335) + p.SetState(1303) p.procedure_expr(0) } - p.SetState(1337) + p.SetState(1305) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23822,13 +23237,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserIDENTIFIER { { - p.SetState(1336) + p.SetState(1304) p.Type_() } } { - p.SetState(1339) + p.SetState(1307) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -23836,11 +23251,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1340) + p.SetState(1308) p.procedure_expr(0) } { - p.SetState(1341) + p.SetState(1309) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23852,7 +23267,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_for_loopContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(1343) + p.SetState(1311) p.Match(KuneiformParserFOR) if p.HasError() { // Recognition error - abort rule @@ -23860,7 +23275,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1344) + p.SetState(1312) var _m = p.Match(KuneiformParserVARIABLE) @@ -23871,29 +23286,29 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1345) + p.SetState(1313) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1349) + p.SetState(1317) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 177, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 174, p.GetParserRuleContext()) { case 1: { - p.SetState(1346) + p.SetState(1314) p.Range_() } case 2: { - p.SetState(1347) + p.SetState(1315) var _x = p.Variable() @@ -23902,7 +23317,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 3: { - p.SetState(1348) + p.SetState(1316) p.Sql_statement() } @@ -23910,14 +23325,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { goto errorExit } { - p.SetState(1351) + p.SetState(1319) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1355) + p.SetState(1323) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23926,11 +23341,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1352) + p.SetState(1320) p.Proc_statement() } - p.SetState(1357) + p.SetState(1325) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23938,7 +23353,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1358) + p.SetState(1326) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -23950,7 +23365,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_ifContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(1360) + p.SetState(1328) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -23958,10 +23373,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1361) + p.SetState(1329) p.If_then_block() } - p.SetState(1366) + p.SetState(1334) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23970,7 +23385,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserELSEIF { { - p.SetState(1362) + p.SetState(1330) p.Match(KuneiformParserELSEIF) if p.HasError() { // Recognition error - abort rule @@ -23978,18 +23393,18 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1363) + p.SetState(1331) p.If_then_block() } - p.SetState(1368) + p.SetState(1336) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(1378) + p.SetState(1346) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23998,7 +23413,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserELSE { { - p.SetState(1369) + p.SetState(1337) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -24006,14 +23421,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1370) + p.SetState(1338) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1374) + p.SetState(1342) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24022,11 +23437,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1371) + p.SetState(1339) p.Proc_statement() } - p.SetState(1376) + p.SetState(1344) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24034,7 +23449,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1377) + p.SetState(1345) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -24048,11 +23463,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(1380) + p.SetState(1348) p.Sql_statement() } { - p.SetState(1381) + p.SetState(1349) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -24064,7 +23479,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_breakContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(1383) + p.SetState(1351) p.Match(KuneiformParserBREAK) if p.HasError() { // Recognition error - abort rule @@ -24072,7 +23487,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1384) + p.SetState(1352) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -24084,14 +23499,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_returnContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(1385) + p.SetState(1353) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1388) + p.SetState(1356) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24099,13 +23514,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLBRACKET, KuneiformParserLPAREN, KuneiformParserEXCL, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1386) + p.SetState(1354) p.Procedure_expr_list() } case KuneiformParserCREATE, KuneiformParserALTER, KuneiformParserDROP, KuneiformParserDELETE, KuneiformParserUPDATE, KuneiformParserWITH, KuneiformParserSELECT, KuneiformParserINSERT: { - p.SetState(1387) + p.SetState(1355) p.Sql_statement() } @@ -24114,7 +23529,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { default: } { - p.SetState(1390) + p.SetState(1358) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -24126,7 +23541,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_return_nextContext(p, localctx) p.EnterOuterAlt(localctx, 9) { - p.SetState(1391) + p.SetState(1359) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule @@ -24134,7 +23549,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1392) + p.SetState(1360) p.Match(KuneiformParserNEXT) if p.HasError() { // Recognition error - abort rule @@ -24142,11 +23557,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1393) + p.SetState(1361) p.Procedure_expr_list() } { - p.SetState(1394) + p.SetState(1362) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -24246,12 +23661,12 @@ func (s *Variable_or_underscoreContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Variable_or_underscore() (localctx IVariable_or_underscoreContext) { localctx = NewVariable_or_underscoreContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 146, KuneiformParserRULE_variable_or_underscore) + p.EnterRule(localctx, 134, KuneiformParserRULE_variable_or_underscore) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1398) + p.SetState(1366) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE) { @@ -24387,13 +23802,13 @@ func (s *Normal_call_procedureContext) Accept(visitor antlr.ParseTreeVisitor) in func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_function_callContext) { localctx = NewProcedure_function_callContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 148, KuneiformParserRULE_procedure_function_call) + p.EnterRule(localctx, 136, KuneiformParserRULE_procedure_function_call) var _la int localctx = NewNormal_call_procedureContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1400) + p.SetState(1368) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -24401,14 +23816,14 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio } } { - p.SetState(1401) + p.SetState(1369) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1403) + p.SetState(1371) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24417,13 +23832,13 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1402) + p.SetState(1370) p.Procedure_expr_list() } } { - p.SetState(1405) + p.SetState(1373) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -24579,23 +23994,23 @@ func (s *If_then_blockContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { localctx = NewIf_then_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 150, KuneiformParserRULE_if_then_block) + p.EnterRule(localctx, 138, KuneiformParserRULE_if_then_block) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1407) + p.SetState(1375) p.procedure_expr(0) } { - p.SetState(1408) + p.SetState(1376) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1412) + p.SetState(1380) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24604,11 +24019,11 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1409) + p.SetState(1377) p.Proc_statement() } - p.SetState(1414) + p.SetState(1382) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24616,7 +24031,7 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1415) + p.SetState(1383) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -24750,14 +24165,14 @@ func (s *RangeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Range_() (localctx IRangeContext) { localctx = NewRangeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 152, KuneiformParserRULE_range) + p.EnterRule(localctx, 140, KuneiformParserRULE_range) p.EnterOuterAlt(localctx, 1) { - p.SetState(1417) + p.SetState(1385) p.procedure_expr(0) } { - p.SetState(1418) + p.SetState(1386) p.Match(KuneiformParserRANGE) if p.HasError() { // Recognition error - abort rule @@ -24765,7 +24180,7 @@ func (p *KuneiformParser) Range_() (localctx IRangeContext) { } } { - p.SetState(1419) + p.SetState(1387) p.procedure_expr(0) } @@ -24784,14 +24199,14 @@ errorExit: func (p *KuneiformParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { switch ruleIndex { - case 62: + case 56: var t *Sql_exprContext = nil if localctx != nil { t = localctx.(*Sql_exprContext) } return p.Sql_expr_Sempred(t, predIndex) - case 70: + case 64: var t *Procedure_exprContext = nil if localctx != nil { t = localctx.(*Procedure_exprContext) diff --git a/parse/gen/kuneiformparser_base_visitor.go b/parse/gen/kuneiformparser_base_visitor.go index 772552f66..1e737a6a8 100644 --- a/parse/gen/kuneiformparser_base_visitor.go +++ b/parse/gen/kuneiformparser_base_visitor.go @@ -191,31 +191,35 @@ func (v *BaseKuneiformParserVisitor) VisitAlter_table_statement(ctx *Alter_table return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitAlter_column_clause(ctx *Alter_column_clauseContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitAdd_column_constraint(ctx *Add_column_constraintContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitAdd_column_clause(ctx *Add_column_clauseContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitDrop_column_constraint(ctx *Drop_column_constraintContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitDrop_column_clause(ctx *Drop_column_clauseContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitAdd_column(ctx *Add_columnContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitRename_column_clause(ctx *Rename_column_clauseContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitDrop_column(ctx *Drop_columnContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitRename_table_clause(ctx *Rename_table_clauseContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitRename_column(ctx *Rename_columnContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitAdd_fk_clause(ctx *Add_fk_clauseContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitRename_table(ctx *Rename_tableContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitDrop_fk_clause(ctx *Drop_fk_clauseContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitAdd_table_constraint(ctx *Add_table_constraintContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitDrop_table_constraint(ctx *Drop_table_constraintContext) interface{} { return v.VisitChildren(ctx) } diff --git a/parse/gen/kuneiformparser_visitor.go b/parse/gen/kuneiformparser_visitor.go index 960709167..af0136449 100644 --- a/parse/gen/kuneiformparser_visitor.go +++ b/parse/gen/kuneiformparser_visitor.go @@ -145,26 +145,29 @@ type KuneiformParserVisitor interface { // Visit a parse tree produced by KuneiformParser#alter_table_statement. VisitAlter_table_statement(ctx *Alter_table_statementContext) interface{} - // Visit a parse tree produced by KuneiformParser#alter_column_clause. - VisitAlter_column_clause(ctx *Alter_column_clauseContext) interface{} + // Visit a parse tree produced by KuneiformParser#add_column_constraint. + VisitAdd_column_constraint(ctx *Add_column_constraintContext) interface{} - // Visit a parse tree produced by KuneiformParser#add_column_clause. - VisitAdd_column_clause(ctx *Add_column_clauseContext) interface{} + // Visit a parse tree produced by KuneiformParser#drop_column_constraint. + VisitDrop_column_constraint(ctx *Drop_column_constraintContext) interface{} - // Visit a parse tree produced by KuneiformParser#drop_column_clause. - VisitDrop_column_clause(ctx *Drop_column_clauseContext) interface{} + // Visit a parse tree produced by KuneiformParser#add_column. + VisitAdd_column(ctx *Add_columnContext) interface{} - // Visit a parse tree produced by KuneiformParser#rename_column_clause. - VisitRename_column_clause(ctx *Rename_column_clauseContext) interface{} + // Visit a parse tree produced by KuneiformParser#drop_column. + VisitDrop_column(ctx *Drop_columnContext) interface{} - // Visit a parse tree produced by KuneiformParser#rename_table_clause. - VisitRename_table_clause(ctx *Rename_table_clauseContext) interface{} + // Visit a parse tree produced by KuneiformParser#rename_column. + VisitRename_column(ctx *Rename_columnContext) interface{} - // Visit a parse tree produced by KuneiformParser#add_fk_clause. - VisitAdd_fk_clause(ctx *Add_fk_clauseContext) interface{} + // Visit a parse tree produced by KuneiformParser#rename_table. + VisitRename_table(ctx *Rename_tableContext) interface{} - // Visit a parse tree produced by KuneiformParser#drop_fk_clause. - VisitDrop_fk_clause(ctx *Drop_fk_clauseContext) interface{} + // Visit a parse tree produced by KuneiformParser#add_table_constraint. + VisitAdd_table_constraint(ctx *Add_table_constraintContext) interface{} + + // Visit a parse tree produced by KuneiformParser#drop_table_constraint. + VisitDrop_table_constraint(ctx *Drop_table_constraintContext) interface{} // Visit a parse tree produced by KuneiformParser#create_index_statement. VisitCreate_index_statement(ctx *Create_index_statementContext) interface{} diff --git a/parse/grammar/KuneiformParser.g4 b/parse/grammar/KuneiformParser.g4 index 17ee6309b..2151d8840 100644 --- a/parse/grammar/KuneiformParser.g4 +++ b/parse/grammar/KuneiformParser.g4 @@ -161,14 +161,6 @@ constraint: (IDENTIFIER| PRIMARY KEY? | NOT NULL | DEFAULT | UNIQUE) (LPAREN literal RPAREN)? ; -//// TODO: rename to constraint once table_delcaration is removed -//c_constraint: -// (PRIMARY KEY | NOT NULL | DEFAULT literal| UNIQUE | CHECK | FOREIGN KEY) -// LPAREN sql_expr_list RPAREN -// fk_constraint? -//; - -// //// TODO: rename to constraint once table_delcaration is removed inline_constraint: PRIMARY KEY @@ -179,15 +171,6 @@ inline_constraint: | CHECK (LPAREN sql_expr RPAREN) ; -//inline_constraint: -// PRIMARY KEY #inline_constraint_pk -// | UNIQUE #inline_constraint_unique -// | NOT NULL #inline_constraint_not_null -// | DEFAULT literal #inline_constraint_default -// | fk_constraint #inline_constraint_fk -// | CHECK (LPAREN sql_expr RPAREN) #inline_constratin_check -//; - fk_action: ON (UPDATE|DELETE) (SET NULL @@ -254,7 +237,7 @@ create_table_statement: RPAREN ; -constraint_def: +constraint_def: // TODO: rename to table_constraint (CONSTRAINT name=identifier)? unnamed_constraint ; @@ -266,62 +249,20 @@ unnamed_constraint: | FOREIGN KEY LPAREN identifier RPAREN fk_constraint ; -//alter_table_statement: -// ALTER TABLE table=identifier -// alter_clause (COMMA alter_clause)* -//; -// -//alter_clause: -// ALTER COLUMN column=identifer -// op=(SET | DROP) -// ((NOT NULL | DEFAULT) literal | CONSTRAINT identifier) # alter_column -// | ADD COLUMN column=identifer # add_column -// | DROP COLUMN column=identifer # drop_column -// | RENAME COLUMN old_column=identifer TO new_column=identifer # rename_column -// | RENAME TO new_table=identifer # rename_table -//; - alter_table_statement: ALTER TABLE table=identifier - (alter_column_clause - | add_column_clause (COMMA add_column_clause)* - | drop_column_clause (COMMA drop_column_clause)* - | rename_column_clause - | rename_table_clause - | add_fk_clause - | drop_fk_clause - ) -; - -alter_column_clause: - ALTER COLUMN column=identifier - op=(SET | DROP) - ((NOT NULL | DEFAULT) literal? - | CONSTRAINT identifier) -; - -add_column_clause: - ADD COLUMN column=identifier type -; - -drop_column_clause: - DROP COLUMN column=identifier -; - -rename_column_clause: - RENAME COLUMN old_column=identifier TO new_column=identifier -; - -rename_table_clause: - RENAME TO new_table=identifier -; - -add_fk_clause: - ADD CONSTRAINT fk_name=identifier unnamed_constraint -; - -drop_fk_clause: - DROP CONSTRAINT fk_name=identifier + alter_table_action +; + +alter_table_action: + ALTER COLUMN column=identifier SET (NOT NULL | DEFAULT literal) # add_column_constraint + | ALTER COLUMN column=identifier DROP (NOT NULL | DEFAULT | CONSTRAINT identifier) # drop_column_constraint + | ADD COLUMN column=identifier type # add_column + | DROP COLUMN column=identifier # drop_column + | RENAME COLUMN old_column=identifier TO new_column=identifier # rename_column + | RENAME TO new_table=identifier # rename_table + | ADD constraint_def # add_table_constraint + | DROP CONSTRAINT identifier # drop_table_constraint ; create_index_statement: From d71cbf7798c0d8a08d86996804d1b97924460c51 Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Fri, 25 Oct 2024 13:38:15 -0500 Subject: [PATCH 04/11] alter table --- internal/engine/generate/generate_test.go | 377 +++++++++++++++------- internal/engine/generate/plpgsql.go | 27 ++ parse/analyze.go | 4 + parse/antlr.go | 147 ++++++--- parse/ast.go | 202 +++++++++++- parse/parse_test.go | 155 ++++++++- 6 files changed, 746 insertions(+), 166 deletions(-) diff --git a/internal/engine/generate/generate_test.go b/internal/engine/generate/generate_test.go index 542db80c7..cbb4f46fe 100644 --- a/internal/engine/generate/generate_test.go +++ b/internal/engine/generate/generate_test.go @@ -5,30 +5,118 @@ import ( "testing" "unicode" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/kwilteam/kwil-db/core/types" "github.com/kwilteam/kwil-db/internal/engine/generate" "github.com/kwilteam/kwil-db/parse" "github.com/kwilteam/kwil-db/parse/postgres" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func TestGenerateDDLStatement(t *testing.T) { - node := &parse.SQLStatement{ - SQL: &parse.CreateTableStatement{ - Name: "users", - Columns: []*parse.Column{ - { - Name: "id", - Type: types.IntType, - Constraints: []parse.Constraint{ - &parse.ConstraintPrimaryKey{}, + tests := []struct { + name string + sql *parse.SQLStatement + want string + wantErr bool + }{ // those are the same as what are in internal.parse.parse_test.Test_SQL, with 'want' and 'sql' swapped + { + name: "create table", + sql: &parse.SQLStatement{ + SQL: &parse.CreateTableStatement{ + Name: "users", + Columns: []*parse.Column{ + { + Name: "id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintPrimaryKey{}, + }, + }, + { + Name: "name", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintCheck{ + Param: &parse.ExpressionComparison{ + Left: &parse.ExpressionFunctionCall{ + Name: "length", + Args: []parse.Expression{ + &parse.ExpressionColumn{ + Table: "", + Column: "name", + }, + }, + }, + Right: &parse.ExpressionLiteral{ + Type: types.IntType, + Value: int64(10), + }, + Operator: parse.ComparisonOperatorGreaterThan, + }, + }, + }, + }, + { + Name: "address", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintNotNull{}, + &parse.ConstraintDefault{ + Value: &parse.ExpressionLiteral{ + Type: types.TextType, + Value: "usa", + }, + }, + }, + }, + { + Name: "email", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintNotNull{}, + &parse.ConstraintUnique{}, + }, + }, + { + Name: "city_id", + Type: types.IntType, + }, + { + Name: "group_id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintForeignKey{ + RefTable: "groups", + RefColumn: "id", + Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, + }, + }, + }, + }, + Indexes: []*parse.Index{ + { + Name: "group_name_unique", + Columns: []string{"group_id", "name"}, + Type: parse.IndexTypeUnique, + }, + { + Name: "ithome", + Columns: []string{"name", "address"}, + Type: parse.IndexTypeBTree, + }, }, - }, - { - Name: "name", - Type: types.TextType, Constraints: []parse.Constraint{ + &parse.ConstraintForeignKey{ + Name: "city_fk", + RefTable: "cities", + RefColumn: "id", + Column: "city_id", + Ons: []parse.ForeignKeyActionOn{parse.ON_UPDATE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_NO_ACTION}, + }, &parse.ConstraintCheck{ Param: &parse.ExpressionComparison{ Left: &parse.ExpressionFunctionCall{ @@ -36,137 +124,202 @@ func TestGenerateDDLStatement(t *testing.T) { Args: []parse.Expression{ &parse.ExpressionColumn{ Table: "", - Column: "name", + Column: "email", }, }, }, Right: &parse.ExpressionLiteral{ Type: types.IntType, - Value: int64(10), + Value: int64(1), }, Operator: parse.ComparisonOperatorGreaterThan, }, }, + &parse.ConstraintUnique{ + Columns: []string{ + "city_id", + "address", + }, + }, }, }, - { - Name: "address", - Type: types.TextType, - Constraints: []parse.Constraint{ - &parse.ConstraintNotNull{}, - &parse.ConstraintDefault{ - Value: &parse.ExpressionLiteral{ - Type: types.TextType, - Value: "usa", - }, + }, + want: `CREATE TABLE users ( + id int PRIMARY KEY, + name text CHECK(length(name) > 10), + address text NOT NULL DEFAULT 'usa', + email text NOT NULL UNIQUE, + city_id int, + group_id int REFERENCES groups(id) ON DELETE CASCADE, + CONSTRAINT city_fk FOREIGN KEY (city_id) REFERENCES cities(id) ON UPDATE NO ACTION, + CHECK(length(email) > 1), + UNIQUE (city_id, address), + UNIQUE INDEX group_name_unique (group_id, name), + INDEX ithome (name, address) +);`, + }, + { + name: "alter table add column constraint NOT NULL", + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumnConstraint{ + Column: "name", + Type: parse.NOT_NULL, + }, + }, + }, + want: "ALTER TABLE user ALTER COLUMN name SET NOT NULL;", + }, + { + name: "alter table add column constraint DEFAULT", + want: `ALTER TABLE user ALTER COLUMN name SET DEFAULT 10;`, + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumnConstraint{ + Column: "name", + Type: parse.DEFAULT, + Value: &parse.ExpressionLiteral{ + Type: types.IntType, + Value: int64(10), }, }, }, - { - Name: "email", - Type: types.TextType, - Constraints: []parse.Constraint{ - &parse.ConstraintNotNull{}, - &parse.ConstraintUnique{}, + }, + }, + { + name: "alter table drop column constraint NOT NULL", + want: `ALTER TABLE user ALTER COLUMN name DROP NOT NULL;`, + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Type: parse.NOT_NULL, }, }, - { - Name: "city_id", - Type: types.IntType, + }, + }, + { + name: "alter table drop column constraint DEFAULT", + want: `ALTER TABLE user ALTER COLUMN name DROP DEFAULT;`, + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Type: parse.DEFAULT, + }, }, - { - Name: "group_id", - Type: types.IntType, - Constraints: []parse.Constraint{ - &parse.ConstraintForeignKey{ - RefTable: "groups", - RefColumn: "id", - Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, - Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, - }, + }, + }, + { + name: "alter table drop column constraint named", + want: `ALTER TABLE user ALTER COLUMN name DROP CONSTRAINT abc;`, + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Type: parse.NAMED, + Name: "abc", }, }, }, - Indexes: []*parse.Index{ - { - Name: "group_name_unique", - Columns: []string{"group_id", "name"}, - Type: parse.IndexTypeUnique, + }, + { + name: "alter table add column", + want: `ALTER TABLE user ADD COLUMN abc int;`, + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumn{ + Name: "abc", + Type: types.IntType, + }, }, - { - Name: "ithome", - Columns: []string{"name", "address"}, - Type: parse.IndexTypeBTree, + }, + }, + { + name: "alter table drop column", + want: `ALTER TABLE user DROP COLUMN abc;`, + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumn{ + Name: "abc", + }, + }, + }, + }, + + { + name: "alter table rename column", + want: `ALTER TABLE user RENAME COLUMN abc TO def;`, + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.RenameColumn{ + OldName: "abc", + NewName: "def", + }, }, }, - Constraints: []parse.Constraint{ - &parse.ConstraintForeignKey{ - Name: "city_fk", - RefTable: "cities", - RefColumn: "id", - Column: "city_id", - Ons: []parse.ForeignKeyActionOn{parse.ON_UPDATE}, - Dos: []parse.ForeignKeyActionDo{parse.DO_NO_ACTION}, + }, + { + name: "alter table rename table", + want: `ALTER TABLE user RENAME TO account;`, + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.RenameTable{ + Name: "account", + }, }, - &parse.ConstraintCheck{ - Param: &parse.ExpressionComparison{ - Left: &parse.ExpressionFunctionCall{ - Name: "length", - Args: []parse.Expression{ - &parse.ExpressionColumn{ - Table: "", - Column: "email", - }, - }, - }, - Right: &parse.ExpressionLiteral{ - Type: types.IntType, - Value: int64(1), + }, + }, + { + name: "alter table add constraint fk", + want: `ALTER TABLE user ADD CONSTRAINT new_fk FOREIGN KEY (city_id) REFERENCES cities(id) ON DELETE CASCADE;`, + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddTableConstraint{ + Cons: &parse.ConstraintForeignKey{ + Name: "new_fk", + RefTable: "cities", + RefColumn: "id", + Column: "city_id", + Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, }, - Operator: parse.ComparisonOperatorGreaterThan, }, }, - &parse.ConstraintUnique{ - Columns: []string{ - "city_id", - "address", + }, + }, + { + name: "alter table drop constraint", + want: `ALTER TABLE user DROP CONSTRAINT abc;`, + sql: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropTableConstraint{ + Name: "abc", }, }, }, }, } - got, err := generate.DDL(node) - require.NoError(t, err) - - // expect := `CREATE TABLE users ( - //id int primary key, - //name text check(length(name) > 10), - //address text not null default 'usa', - //email text not null unique, - //city_id int, - //group_id int references groups(id) on delete cascade, - //constraint city_fk foreign key (city_id) references cities(id) on update no action, - //check(length(email) > 1), - //unique(city_id, address), - //unique index group_name_unique (group_id, name), - //index ithome (name, address) - //);` - expect := `CREATE TABLE users ( - id int PRIMARY KEY, - name text CHECK(length(name) > 10), - address text NOT NULL DEFAULT 'usa', - email text NOT NULL UNIQUE, - city_id int, - group_id int REFERENCES groups(id) ON DELETE CASCADE, - CONSTRAINT city_fk FOREIGN KEY (city_id) REFERENCES cities(id) ON UPDATE NO ACTION, - CHECK(length(email) > 1), - UNIQUE (city_id, address), - UNIQUE INDEX group_name_unique (group_id, name), - INDEX ithome (name, address) -);` + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := generate.DDL(tt.sql) + require.NoError(t, err) + assert.Equal(t, tt.want, got) + }) + } - assert.Equal(t, expect, got) } func TestGenerateDDL(t *testing.T) { diff --git a/internal/engine/generate/plpgsql.go b/internal/engine/generate/plpgsql.go index 6f877d05b..079b52792 100644 --- a/internal/engine/generate/plpgsql.go +++ b/internal/engine/generate/plpgsql.go @@ -849,6 +849,33 @@ func (s *sqlGenerator) VisitCreateTableStatement(p0 *parse.CreateTableStatement) return str.String() } +func (s *sqlGenerator) VisitAlterTableStatement(p0 *parse.AlterTableStatement) any { + str := strings.Builder{} + str.WriteString("ALTER TABLE ") + str.WriteString(p0.Table) + str.WriteString(" ") + + if action, ok := p0.Action.(*parse.AddTableConstraint); ok { + str.WriteString("ADD ") + switch cc := action.Cons.(type) { + case *parse.ConstraintCheck: + //str.WriteString(cc.Name) + str.WriteString("CHECK(") + str.WriteString(cc.Param.Accept(s).(string)) + str.WriteString(")") + case *parse.ConstraintForeignKey: + //str.WriteString(cc.Name) + str.WriteString(cc.ToSQL()) + default: + panic("unknown constraint type") + } + } else { + str.WriteString(p0.Action.ToSQL()) + } + + return str.String() +} + // procedureGenerator is a visitor that generates plpgsql code. type procedureGenerator struct { sqlGenerator diff --git a/parse/analyze.go b/parse/analyze.go index 9e6e9975d..823666765 100644 --- a/parse/analyze.go +++ b/parse/analyze.go @@ -2055,6 +2055,10 @@ func (s *sqlAnalyzer) VisitCreateTableStatement(p0 *CreateTableStatement) any { panic("sqlAnalyzer: not implemented") } +func (s *sqlAnalyzer) VisitAlterTableStatement(p0 *AlterTableStatement) any { + panic("sqlAnalyzer: not implemented") +} + // tableToRelation converts a table to a relation. func tableToRelation(t *types.Table) *Relation { attrs := make([]*Attribute, len(t.Columns)) diff --git a/parse/antlr.go b/parse/antlr.go index e942cd0ac..a4aac7abe 100644 --- a/parse/antlr.go +++ b/parse/antlr.go @@ -49,46 +49,6 @@ func (s *schemaVisitor) VisitFk_action(ctx *gen.Fk_actionContext) interface{} { panic("implement me") } -func (s *schemaVisitor) VisitAlter_table_statement(ctx *gen.Alter_table_statementContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitAlter_column_clause(ctx *gen.Alter_column_clauseContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitAdd_column_clause(ctx *gen.Add_column_clauseContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitDrop_column_clause(ctx *gen.Drop_column_clauseContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitRename_column_clause(ctx *gen.Rename_column_clauseContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitRename_table_clause(ctx *gen.Rename_table_clauseContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitAdd_fk_clause(ctx *gen.Add_fk_clauseContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitDrop_fk_clause(ctx *gen.Drop_fk_clauseContext) interface{} { - //TODO implement me - panic("implement me") -} - func (s *schemaVisitor) VisitCreate_index_statement(ctx *gen.Create_index_statementContext) interface{} { //TODO implement me panic("implement me") @@ -968,8 +928,8 @@ func (s *schemaVisitor) VisitSql_statement(ctx *gen.Sql_statementContext) any { switch { case ctx.Create_table_statement() != nil: stmt.SQL = ctx.Create_table_statement().Accept(s).(*CreateTableStatement) - //case ctx.Alter_table_statement() != nil: - // stmt.SQL = ctx.Alter_table_statement().Accept(s).(*AlterTableStatement) + case ctx.Alter_table_statement() != nil: + stmt.SQL = ctx.Alter_table_statement().Accept(s).(*AlterTableStatement) //case ctx.Create_index_statement() != nil: // stmt.SQL = ctx.Create_index_statement().Accept(s).(*CreateIndexStatement) //case ctx.Drop_index_statement() != nil: @@ -1248,6 +1208,109 @@ func (s *schemaVisitor) VisitC_index_def(ctx *gen.C_index_defContext) any { return index } +func (s *schemaVisitor) VisitAlter_table_statement(ctx *gen.Alter_table_statementContext) any { + stmt := &AlterTableStatement{ + Table: ctx.Identifier().Accept(s).(string), + Action: ctx.Alter_table_action().Accept(s).(AlterTableAction), + } + + stmt.Set(ctx) + return stmt +} + +func (s *schemaVisitor) VisitAdd_column_constraint(ctx *gen.Add_column_constraintContext) any { + a := &AddColumnConstraint{ + Column: ctx.Identifier().Accept(s).(string), + } + + if ctx.NULL() != nil { + a.Type = NOT_NULL + } else { + a.Type = DEFAULT + a.Value = ctx.Literal().Accept(s).(*ExpressionLiteral) + } + + a.Set(ctx) + return a +} + +func (s *schemaVisitor) VisitDrop_column_constraint(ctx *gen.Drop_column_constraintContext) any { + a := &DropColumnConstraint{ + Column: ctx.Identifier(0).Accept(s).(string), + } + + switch { + case ctx.NULL() != nil: + a.Type = NOT_NULL + case ctx.DEFAULT() != nil: + a.Type = DEFAULT + case ctx.CONSTRAINT() != nil: + a.Type = NAMED + a.Name = ctx.Identifier(1).Accept(s).(string) + default: + panic("unknown constraint") + } + + a.Set(ctx) + return a +} + +func (s *schemaVisitor) VisitAdd_column(ctx *gen.Add_columnContext) any { + a := &AddColumn{ + Name: ctx.Identifier().Accept(s).(string), + Type: ctx.Type_().Accept(s).(*types.DataType), + } + + a.Set(ctx) + return a +} + +func (s *schemaVisitor) VisitDrop_column(ctx *gen.Drop_columnContext) any { + a := &DropColumn{ + Name: ctx.Identifier().Accept(s).(string), + } + + a.Set(ctx) + return a +} + +func (s *schemaVisitor) VisitRename_column(ctx *gen.Rename_columnContext) any { + a := &RenameColumn{ + OldName: ctx.GetOld_column().Accept(s).(string), + NewName: ctx.GetNew_column().Accept(s).(string), + } + + a.Set(ctx) + return a +} + +func (s *schemaVisitor) VisitRename_table(ctx *gen.Rename_tableContext) any { + a := &RenameTable{ + Name: ctx.Identifier().Accept(s).(string), + } + + a.Set(ctx) + return a +} + +func (s *schemaVisitor) VisitAdd_table_constraint(ctx *gen.Add_table_constraintContext) any { + a := &AddTableConstraint{ + Cons: ctx.Constraint_def().Accept(s).(Constraint), + } + + a.Set(ctx) + return a +} + +func (s *schemaVisitor) VisitDrop_table_constraint(ctx *gen.Drop_table_constraintContext) any { + a := &DropTableConstraint{ + Name: ctx.Identifier().Accept(s).(string), + } + + a.Set(ctx) + return a +} + func (s *schemaVisitor) VisitSelect_statement(ctx *gen.Select_statementContext) any { stmt := &SelectStatement{ SelectCores: arr[*SelectCore](len(ctx.AllSelect_core())), diff --git a/parse/ast.go b/parse/ast.go index 7302bae3f..68e78acab 100644 --- a/parse/ast.go +++ b/parse/ast.go @@ -560,7 +560,7 @@ func (c *CreateTableStatement) Accept(v Visitor) any { } func (c *CreateTableStatement) StmtType() SQLStatementType { - panic("implement me") + return SQLStatementTypeCreateTable } // Column represents a table column. @@ -575,12 +575,13 @@ type Column struct { type ConstraintType string const ( - PRIMARY_KEY ConstraintType = "PRIMARY_KEY" + PRIMARY_KEY ConstraintType = "PRIMARY KEY" DEFAULT ConstraintType = "DEFAULT" - NOT_NULL ConstraintType = "NOT_NULL" + NOT_NULL ConstraintType = "NOT NULL" UNIQUE ConstraintType = "UNIQUE" CHECK ConstraintType = "CHECK" - FOREIGN_KEY ConstraintType = "FOREIGN_KEY" + FOREIGN_KEY ConstraintType = "FOREIGN KEY" + NAMED ConstraintType = "NAMED" //CUSTOM ConstraintType = "CUSTOM" ) @@ -871,6 +872,193 @@ type ForeignKeyAction struct { Do ForeignKeyActionDo `json:"do"` } +type AlterTableAction interface { + Node + + alterTableAction() + ToSQL() string +} + +// AlterTableStatement is a ALTER TABLE statement. +type AlterTableStatement struct { + Position + + Table string + Action AlterTableAction +} + +func (a *AlterTableStatement) Accept(v Visitor) any { + return v.VisitAlterTableStatement(a) +} + +func (a *AlterTableStatement) StmtType() SQLStatementType { + return SQLStatementTypeAlterTable +} + +type AddColumnConstraint struct { + Position + + Column string + Type ConstraintType + Value *ExpressionLiteral +} + +func (a *AddColumnConstraint) Accept(v Visitor) any { + panic("implement me") +} + +func (a *AddColumnConstraint) alterTableAction() {} + +func (a *AddColumnConstraint) ToSQL() string { + str := strings.Builder{} + str.WriteString("ALTER COLUMN ") + str.WriteString(a.Column) + str.WriteString(" SET ") + switch a.Type { + case NOT_NULL: + str.WriteString("NOT NULL") + case DEFAULT: + str.WriteString("DEFAULT ") + str.WriteString(a.Value.String()) + default: + panic("unknown constraint type") + } + + return str.String() +} + +type DropColumnConstraint struct { + Position + + Column string + Type ConstraintType + Name string // will be set when drop a named constraint +} + +func (a *DropColumnConstraint) Accept(v Visitor) any { + panic("implement me") +} + +func (a *DropColumnConstraint) alterTableAction() {} + +func (a *DropColumnConstraint) ToSQL() string { + str := strings.Builder{} + str.WriteString("ALTER COLUMN ") + str.WriteString(a.Column) + str.WriteString(" DROP ") + switch a.Type { + case NOT_NULL: + str.WriteString("NOT NULL") + case DEFAULT: + str.WriteString("DEFAULT") + case NAMED: + str.WriteString("CONSTRAINT ") + str.WriteString(a.Name) + default: + panic("unknown constraint type") + } + + return str.String() +} + +type AddColumn struct { + Position + + Name string + Type *types.DataType +} + +func (a *AddColumn) Accept(v Visitor) any { + panic("implement me") +} + +func (a *AddColumn) alterTableAction() {} + +func (a *AddColumn) ToSQL() string { + return "ADD COLUMN " + a.Name + " " + a.Type.String() +} + +type DropColumn struct { + Position + + Name string +} + +func (a *DropColumn) Accept(v Visitor) any { + panic("implement me") +} + +func (a *DropColumn) alterTableAction() {} + +func (a *DropColumn) ToSQL() string { + return "DROP COLUMN " + a.Name +} + +type RenameColumn struct { + Position + + OldName string + NewName string +} + +func (a *RenameColumn) Accept(v Visitor) any { + panic("implement me") +} + +func (a *RenameColumn) alterTableAction() {} + +func (a *RenameColumn) ToSQL() string { + return "RENAME COLUMN " + a.OldName + " TO " + a.NewName +} + +type RenameTable struct { + Position + + Name string +} + +func (a *RenameTable) Accept(v Visitor) any { + panic("implement me") +} + +func (a *RenameTable) alterTableAction() {} + +func (a *RenameTable) ToSQL() string { + return "RENAME TO " + a.Name +} + +type AddTableConstraint struct { + Position + + Cons Constraint +} + +func (a *AddTableConstraint) Accept(v Visitor) any { + panic("implement me") +} + +func (a *AddTableConstraint) alterTableAction() {} + +func (a *AddTableConstraint) ToSQL() string { + return "" +} + +type DropTableConstraint struct { + Position + + Name string +} + +func (a *DropTableConstraint) Accept(v Visitor) any { + panic("implement me") +} + +func (a *DropTableConstraint) alterTableAction() {} + +func (a *DropTableConstraint) ToSQL() string { + return "DROP CONSTRAINT " + a.Name +} + // SelectStatement is a SELECT statement. type SelectStatement struct { Position @@ -1431,11 +1619,7 @@ type SQLVisitor interface { VisitOrderingTerm(*OrderingTerm) any // DDL VisitCreateTableStatement(*CreateTableStatement) any - //VisitConstraintPrimaryKey(*ConstraintPrimaryKey) any - //VisitConstraintDefault(*ConstraintDefault) any - //VisitConstraintCheck(*ConstraintCheck) any - //VisitConstraintUnique(*ConstraintCheck) any - //VisitConstraintForeignKey(*ConstraintForeignKey) any + VisitAlterTableStatement(*AlterTableStatement) any } // UnimplementedSqlVisitor is meant to be used when an implementing visitor only intends diff --git a/parse/parse_test.go b/parse/parse_test.go index dd42aec73..2e68783ab 100644 --- a/parse/parse_test.go +++ b/parse/parse_test.go @@ -2,7 +2,6 @@ package parse_test import ( "encoding/json" - "fmt" "testing" "github.com/google/go-cmp/cmp" @@ -875,7 +874,6 @@ func Test_Kuneiform(t *testing.T) { func assertPositionsAreSet(t *testing.T, v any) { parse.RecursivelyVisitPositions(v, func(gp parse.GetPositioner) { pos := gp.GetPosition() - fmt.Printf("%T: %+v\n", gp, pos) // if not set, this will tell us the struct assert.True(t, pos.IsSet, "position is not set. struct type: %T", gp) }) @@ -2144,7 +2142,7 @@ INDEX ithome (name, address) }, }, }, - //{ + //{ // TODO: // name: "create table with extra comma", // sql: `CREATE TABLE users (id int primary key,);`, // err: parse.ErrSyntax, @@ -2157,6 +2155,157 @@ primary key (name) );`, err: parse.ErrRedeclarePrimaryKey, }, + { + name: "alter table add column constraint NOT NULL", + sql: `ALTER TABLE user ALTER COLUMN name SET NOT NULL;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumnConstraint{ + Column: "name", + Type: parse.NOT_NULL, + }, + }, + }, + }, + { + name: "alter table add column constraint DEFAULT", + sql: `ALTER TABLE user ALTER COLUMN name SET DEFAULT 10;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumnConstraint{ + Column: "name", + Type: parse.DEFAULT, + Value: &parse.ExpressionLiteral{ + Type: types.IntType, + Value: int64(10), + }, + }, + }, + }, + }, + { + name: "alter table drop column constraint NOT NULL", + sql: `ALTER TABLE user ALTER COLUMN name DROP NOT NULL;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Type: parse.NOT_NULL, + }, + }, + }, + }, + { + name: "alter table drop column constraint DEFAULT", + sql: `ALTER TABLE user ALTER COLUMN name DROP DEFAULT;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Type: parse.DEFAULT, + }, + }, + }, + }, + { + name: "alter table drop column constraint named", + sql: `ALTER TABLE user ALTER COLUMN name DROP CONSTRAINT abc;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Type: parse.NAMED, + Name: "abc", + }, + }, + }, + }, + { + name: "alter table add column", + sql: `ALTER TABLE user ADD COLUMN abc int;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumn{ + Name: "abc", + Type: types.IntType, + }, + }, + }, + }, + { + name: "alter table drop column", + sql: `ALTER TABLE user DROP COLUMN abc;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumn{ + Name: "abc", + }, + }, + }, + }, + { + name: "alter table rename column", + sql: `ALTER TABLE user RENAME COLUMN abc TO def;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.RenameColumn{ + OldName: "abc", + NewName: "def", + }, + }, + }, + }, + { + name: "alter table rename table", + sql: `ALTER TABLE user RENAME TO account;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.RenameTable{ + Name: "account", + }, + }, + }, + }, + { + name: "alter table add constraint fk", + sql: `ALTER TABLE user ADD constraint new_fk FOREIGN KEY (city_id) REFERENCES cities(id) ON DELETE CASCADE;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddTableConstraint{ + Cons: &parse.ConstraintForeignKey{ + Name: "new_fk", + RefTable: "cities", + RefColumn: "id", + Column: "city_id", + Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, + }, + }, + }, + }, + }, + { + name: "alter table drop constraint", + sql: `ALTER TABLE user DROP CONSTRAINT abc;`, + want: &parse.SQLStatement{ + SQL: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropTableConstraint{ + Name: "abc", + }, + }, + }, + }, { name: "simple select", sql: "select *, id i, length(username) as name_len from users u where u.id = 1;", From 9f82683a2ace1f23a0583f91dc51c93580872c5c Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Fri, 25 Oct 2024 14:20:24 -0500 Subject: [PATCH 05/11] grammar change --- parse/gen/kuneiform_parser.go | 2337 +++++++++++++++--------------- parse/grammar/KuneiformParser.g4 | 2 +- 2 files changed, 1175 insertions(+), 1164 deletions(-) diff --git a/parse/gen/kuneiform_parser.go b/parse/gen/kuneiform_parser.go index 23d35f886..545d2c860 100644 --- a/parse/gen/kuneiform_parser.go +++ b/parse/gen/kuneiform_parser.go @@ -96,7 +96,7 @@ func kuneiformparserParserInit() { } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 145, 1390, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, + 4, 1, 145, 1392, 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, @@ -167,614 +167,615 @@ func kuneiformparserParserInit() { 41, 3, 41, 648, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 672, 8, 41, 1, 42, 1, 42, 3, 42, - 676, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, - 43, 1, 43, 1, 43, 1, 43, 3, 43, 690, 8, 43, 1, 43, 1, 43, 1, 44, 1, 44, - 1, 44, 1, 44, 5, 44, 698, 8, 44, 10, 44, 12, 44, 701, 9, 44, 1, 44, 1, - 44, 1, 44, 1, 44, 1, 44, 5, 44, 708, 8, 44, 10, 44, 12, 44, 711, 9, 44, - 3, 44, 713, 8, 44, 1, 44, 1, 44, 3, 44, 717, 8, 44, 1, 44, 1, 44, 3, 44, - 721, 8, 44, 1, 45, 1, 45, 3, 45, 725, 8, 45, 1, 45, 1, 45, 3, 45, 729, - 8, 45, 1, 46, 1, 46, 3, 46, 733, 8, 46, 1, 46, 1, 46, 3, 46, 737, 8, 46, - 1, 47, 1, 47, 3, 47, 741, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 746, 8, 47, - 10, 47, 12, 47, 749, 9, 47, 1, 47, 1, 47, 1, 47, 5, 47, 754, 8, 47, 10, - 47, 12, 47, 757, 9, 47, 3, 47, 759, 8, 47, 1, 47, 1, 47, 3, 47, 763, 8, - 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 770, 8, 47, 3, 47, 772, 8, - 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, - 783, 8, 47, 10, 47, 12, 47, 786, 9, 47, 3, 47, 788, 8, 47, 1, 48, 1, 48, - 3, 48, 792, 8, 48, 1, 48, 3, 48, 795, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, - 3, 48, 801, 8, 48, 1, 48, 3, 48, 804, 8, 48, 3, 48, 806, 8, 48, 1, 49, - 3, 49, 809, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 3, - 50, 818, 8, 50, 1, 50, 3, 50, 821, 8, 50, 1, 50, 1, 50, 1, 50, 3, 50, 826, - 8, 50, 1, 50, 3, 50, 829, 8, 50, 1, 51, 1, 51, 1, 51, 3, 51, 834, 8, 51, - 1, 51, 3, 51, 837, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 843, 8, 51, - 10, 51, 12, 51, 846, 9, 51, 1, 51, 1, 51, 1, 51, 5, 51, 851, 8, 51, 10, - 51, 12, 51, 854, 9, 51, 3, 51, 856, 8, 51, 1, 51, 1, 51, 3, 51, 860, 8, - 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 870, - 8, 53, 1, 53, 3, 53, 873, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 879, - 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, - 53, 890, 8, 53, 10, 53, 12, 53, 893, 9, 53, 1, 53, 3, 53, 896, 8, 53, 1, - 53, 3, 53, 899, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, - 3, 54, 908, 8, 54, 3, 54, 910, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, - 1, 54, 1, 54, 5, 54, 919, 8, 54, 10, 54, 12, 54, 922, 9, 54, 1, 54, 1, - 54, 3, 54, 926, 8, 54, 3, 54, 928, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 3, - 55, 934, 8, 55, 1, 55, 3, 55, 937, 8, 55, 1, 55, 1, 55, 3, 55, 941, 8, - 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 948, 8, 56, 1, 56, 1, 56, - 1, 56, 1, 56, 3, 56, 954, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, - 56, 1, 56, 3, 56, 963, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 968, 8, 56, 1, - 56, 1, 56, 3, 56, 972, 8, 56, 1, 56, 1, 56, 3, 56, 976, 8, 56, 1, 56, 1, - 56, 1, 56, 3, 56, 981, 8, 56, 1, 56, 1, 56, 3, 56, 985, 8, 56, 1, 56, 1, - 56, 3, 56, 989, 8, 56, 1, 56, 4, 56, 992, 8, 56, 11, 56, 12, 56, 993, 1, - 56, 1, 56, 3, 56, 998, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1003, 8, 56, - 1, 56, 3, 56, 1006, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1012, 8, - 56, 1, 56, 1, 56, 3, 56, 1016, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, - 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1029, 8, 56, 1, 56, 1, - 56, 1, 56, 1, 56, 3, 56, 1035, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, - 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, - 56, 1, 56, 1, 56, 3, 56, 1055, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, - 1061, 8, 56, 1, 56, 1, 56, 3, 56, 1065, 8, 56, 3, 56, 1067, 8, 56, 1, 56, - 1, 56, 3, 56, 1071, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1078, - 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1084, 8, 56, 1, 56, 1, 56, 1, - 56, 1, 56, 1, 56, 3, 56, 1091, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, - 1, 56, 3, 56, 1099, 8, 56, 5, 56, 1101, 8, 56, 10, 56, 12, 56, 1104, 9, - 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1110, 8, 57, 1, 57, 1, 57, 1, 57, - 1, 57, 1, 57, 5, 57, 1117, 8, 57, 10, 57, 12, 57, 1120, 9, 57, 3, 57, 1122, - 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, - 59, 5, 59, 1134, 8, 59, 10, 59, 12, 59, 1137, 9, 59, 1, 60, 1, 60, 1, 60, - 3, 60, 1142, 8, 60, 1, 60, 1, 60, 3, 60, 1146, 8, 60, 1, 60, 1, 60, 1, - 61, 1, 61, 1, 61, 5, 61, 1153, 8, 61, 10, 61, 12, 61, 1156, 9, 61, 1, 62, - 1, 62, 1, 62, 1, 62, 3, 62, 1162, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, - 62, 1168, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1175, 8, 62, - 1, 62, 3, 62, 1178, 8, 62, 1, 63, 5, 63, 1181, 8, 63, 10, 63, 12, 63, 1184, - 9, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1191, 8, 64, 1, 64, 1, - 64, 1, 64, 1, 64, 3, 64, 1197, 8, 64, 1, 64, 1, 64, 3, 64, 1201, 8, 64, - 1, 64, 1, 64, 3, 64, 1205, 8, 64, 1, 64, 1, 64, 3, 64, 1209, 8, 64, 1, - 64, 1, 64, 3, 64, 1213, 8, 64, 1, 64, 1, 64, 3, 64, 1217, 8, 64, 1, 64, + 676, 8, 42, 1, 42, 1, 42, 3, 42, 680, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, + 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 692, 8, 43, 1, 43, 1, + 43, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 700, 8, 44, 10, 44, 12, 44, 703, + 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 710, 8, 44, 10, 44, 12, + 44, 713, 9, 44, 3, 44, 715, 8, 44, 1, 44, 1, 44, 3, 44, 719, 8, 44, 1, + 44, 1, 44, 3, 44, 723, 8, 44, 1, 45, 1, 45, 3, 45, 727, 8, 45, 1, 45, 1, + 45, 3, 45, 731, 8, 45, 1, 46, 1, 46, 3, 46, 735, 8, 46, 1, 46, 1, 46, 3, + 46, 739, 8, 46, 1, 47, 1, 47, 3, 47, 743, 8, 47, 1, 47, 1, 47, 1, 47, 5, + 47, 748, 8, 47, 10, 47, 12, 47, 751, 9, 47, 1, 47, 1, 47, 1, 47, 5, 47, + 756, 8, 47, 10, 47, 12, 47, 759, 9, 47, 3, 47, 761, 8, 47, 1, 47, 1, 47, + 3, 47, 765, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 772, 8, 47, + 3, 47, 774, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 5, 47, 785, 8, 47, 10, 47, 12, 47, 788, 9, 47, 3, 47, 790, 8, + 47, 1, 48, 1, 48, 3, 48, 794, 8, 48, 1, 48, 3, 48, 797, 8, 48, 1, 48, 1, + 48, 1, 48, 1, 48, 3, 48, 803, 8, 48, 1, 48, 3, 48, 806, 8, 48, 3, 48, 808, + 8, 48, 1, 49, 3, 49, 811, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, + 50, 1, 50, 3, 50, 820, 8, 50, 1, 50, 3, 50, 823, 8, 50, 1, 50, 1, 50, 1, + 50, 3, 50, 828, 8, 50, 1, 50, 3, 50, 831, 8, 50, 1, 51, 1, 51, 1, 51, 3, + 51, 836, 8, 51, 1, 51, 3, 51, 839, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, + 51, 845, 8, 51, 10, 51, 12, 51, 848, 9, 51, 1, 51, 1, 51, 1, 51, 5, 51, + 853, 8, 51, 10, 51, 12, 51, 856, 9, 51, 3, 51, 858, 8, 51, 1, 51, 1, 51, + 3, 51, 862, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, + 53, 3, 53, 872, 8, 53, 1, 53, 3, 53, 875, 8, 53, 1, 53, 1, 53, 1, 53, 1, + 53, 3, 53, 881, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, + 1, 53, 1, 53, 5, 53, 892, 8, 53, 10, 53, 12, 53, 895, 9, 53, 1, 53, 3, + 53, 898, 8, 53, 1, 53, 3, 53, 901, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, + 54, 1, 54, 1, 54, 3, 54, 910, 8, 54, 3, 54, 912, 8, 54, 1, 54, 1, 54, 1, + 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 921, 8, 54, 10, 54, 12, 54, 924, + 9, 54, 1, 54, 1, 54, 3, 54, 928, 8, 54, 3, 54, 930, 8, 54, 1, 55, 1, 55, + 1, 55, 1, 55, 3, 55, 936, 8, 55, 1, 55, 3, 55, 939, 8, 55, 1, 55, 1, 55, + 3, 55, 943, 8, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 950, 8, 56, + 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 956, 8, 56, 1, 56, 1, 56, 1, 56, 1, + 56, 1, 56, 1, 56, 1, 56, 3, 56, 965, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, + 970, 8, 56, 1, 56, 1, 56, 3, 56, 974, 8, 56, 1, 56, 1, 56, 3, 56, 978, + 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 983, 8, 56, 1, 56, 1, 56, 3, 56, 987, + 8, 56, 1, 56, 1, 56, 3, 56, 991, 8, 56, 1, 56, 4, 56, 994, 8, 56, 11, 56, + 12, 56, 995, 1, 56, 1, 56, 3, 56, 1000, 8, 56, 1, 56, 1, 56, 1, 56, 3, + 56, 1005, 8, 56, 1, 56, 3, 56, 1008, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, + 3, 56, 1014, 8, 56, 1, 56, 1, 56, 3, 56, 1018, 8, 56, 1, 56, 1, 56, 1, + 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1031, + 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1037, 8, 56, 1, 56, 1, 56, 1, + 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, + 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1057, 8, 56, 1, 56, 1, 56, 1, + 56, 1, 56, 3, 56, 1063, 8, 56, 1, 56, 1, 56, 3, 56, 1067, 8, 56, 3, 56, + 1069, 8, 56, 1, 56, 1, 56, 3, 56, 1073, 8, 56, 1, 56, 1, 56, 1, 56, 1, + 56, 1, 56, 3, 56, 1080, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1086, + 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1093, 8, 56, 1, 56, 1, + 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1101, 8, 56, 5, 56, 1103, 8, 56, + 10, 56, 12, 56, 1106, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1112, 8, + 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 1119, 8, 57, 10, 57, 12, + 57, 1122, 9, 57, 3, 57, 1124, 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, + 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 5, 59, 1136, 8, 59, 10, 59, 12, 59, + 1139, 9, 59, 1, 60, 1, 60, 1, 60, 3, 60, 1144, 8, 60, 1, 60, 1, 60, 3, + 60, 1148, 8, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 5, 61, 1155, 8, 61, + 10, 61, 12, 61, 1158, 9, 61, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1164, 8, + 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1170, 8, 62, 1, 62, 1, 62, 1, 62, + 1, 62, 1, 62, 3, 62, 1177, 8, 62, 1, 62, 3, 62, 1180, 8, 62, 1, 63, 5, + 63, 1183, 8, 63, 10, 63, 12, 63, 1186, 9, 63, 1, 64, 1, 64, 1, 64, 1, 64, + 1, 64, 3, 64, 1193, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1199, 8, + 64, 1, 64, 1, 64, 3, 64, 1203, 8, 64, 1, 64, 1, 64, 3, 64, 1207, 8, 64, + 1, 64, 1, 64, 3, 64, 1211, 8, 64, 1, 64, 1, 64, 3, 64, 1215, 8, 64, 1, + 64, 1, 64, 3, 64, 1219, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, - 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, - 3, 64, 1241, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1247, 8, 64, 1, - 64, 1, 64, 3, 64, 1251, 8, 64, 3, 64, 1253, 8, 64, 1, 64, 1, 64, 3, 64, - 1257, 8, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1262, 8, 64, 1, 64, 1, 64, 1, - 64, 1, 64, 1, 64, 1, 64, 3, 64, 1270, 8, 64, 5, 64, 1272, 8, 64, 10, 64, - 12, 64, 1275, 9, 64, 1, 65, 1, 65, 1, 65, 5, 65, 1280, 8, 65, 10, 65, 12, - 65, 1283, 9, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, - 1292, 8, 66, 10, 66, 12, 66, 1295, 9, 66, 1, 66, 1, 66, 3, 66, 1299, 8, - 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1306, 8, 66, 1, 66, 1, 66, - 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1318, 8, - 66, 1, 66, 1, 66, 5, 66, 1322, 8, 66, 10, 66, 12, 66, 1325, 9, 66, 1, 66, - 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 1333, 8, 66, 10, 66, 12, 66, - 1336, 9, 66, 1, 66, 1, 66, 1, 66, 5, 66, 1341, 8, 66, 10, 66, 12, 66, 1344, - 9, 66, 1, 66, 3, 66, 1347, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, - 66, 1, 66, 1, 66, 3, 66, 1357, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, - 1, 66, 3, 66, 1365, 8, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 3, 68, 1372, - 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 5, 69, 1379, 8, 69, 10, 69, 12, - 69, 1382, 9, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 0, 2, - 112, 128, 71, 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, 0, 15, 1, 0, 20, 21, 1, 0, 129, 130, 1, 0, 140, 141, - 3, 0, 52, 52, 56, 56, 67, 67, 1, 0, 64, 65, 1, 0, 62, 63, 1, 0, 38, 41, - 1, 0, 83, 84, 1, 0, 110, 111, 2, 0, 79, 81, 105, 105, 3, 0, 14, 14, 19, - 19, 22, 22, 1, 0, 70, 71, 2, 0, 15, 16, 23, 27, 2, 0, 11, 11, 20, 21, 2, - 0, 29, 29, 140, 140, 1585, 0, 143, 1, 0, 0, 0, 2, 149, 1, 0, 0, 0, 4, 152, - 1, 0, 0, 0, 6, 155, 1, 0, 0, 0, 8, 158, 1, 0, 0, 0, 10, 175, 1, 0, 0, 0, - 12, 181, 1, 0, 0, 0, 14, 183, 1, 0, 0, 0, 16, 191, 1, 0, 0, 0, 18, 203, - 1, 0, 0, 0, 20, 206, 1, 0, 0, 0, 22, 208, 1, 0, 0, 0, 24, 216, 1, 0, 0, - 0, 26, 226, 1, 0, 0, 0, 28, 244, 1, 0, 0, 0, 30, 248, 1, 0, 0, 0, 32, 271, - 1, 0, 0, 0, 34, 288, 1, 0, 0, 0, 36, 296, 1, 0, 0, 0, 38, 304, 1, 0, 0, - 0, 40, 311, 1, 0, 0, 0, 42, 322, 1, 0, 0, 0, 44, 348, 1, 0, 0, 0, 46, 372, - 1, 0, 0, 0, 48, 380, 1, 0, 0, 0, 50, 390, 1, 0, 0, 0, 52, 410, 1, 0, 0, - 0, 54, 431, 1, 0, 0, 0, 56, 433, 1, 0, 0, 0, 58, 445, 1, 0, 0, 0, 60, 460, - 1, 0, 0, 0, 62, 465, 1, 0, 0, 0, 64, 487, 1, 0, 0, 0, 66, 509, 1, 0, 0, - 0, 68, 523, 1, 0, 0, 0, 70, 538, 1, 0, 0, 0, 72, 550, 1, 0, 0, 0, 74, 570, - 1, 0, 0, 0, 76, 594, 1, 0, 0, 0, 78, 621, 1, 0, 0, 0, 80, 623, 1, 0, 0, - 0, 82, 671, 1, 0, 0, 0, 84, 673, 1, 0, 0, 0, 86, 685, 1, 0, 0, 0, 88, 693, - 1, 0, 0, 0, 90, 728, 1, 0, 0, 0, 92, 730, 1, 0, 0, 0, 94, 738, 1, 0, 0, - 0, 96, 805, 1, 0, 0, 0, 98, 808, 1, 0, 0, 0, 100, 828, 1, 0, 0, 0, 102, - 830, 1, 0, 0, 0, 104, 861, 1, 0, 0, 0, 106, 865, 1, 0, 0, 0, 108, 900, - 1, 0, 0, 0, 110, 929, 1, 0, 0, 0, 112, 1015, 1, 0, 0, 0, 114, 1105, 1, - 0, 0, 0, 116, 1125, 1, 0, 0, 0, 118, 1130, 1, 0, 0, 0, 120, 1138, 1, 0, - 0, 0, 122, 1154, 1, 0, 0, 0, 124, 1177, 1, 0, 0, 0, 126, 1182, 1, 0, 0, - 0, 128, 1216, 1, 0, 0, 0, 130, 1276, 1, 0, 0, 0, 132, 1364, 1, 0, 0, 0, - 134, 1366, 1, 0, 0, 0, 136, 1368, 1, 0, 0, 0, 138, 1375, 1, 0, 0, 0, 140, - 1385, 1, 0, 0, 0, 142, 144, 3, 68, 34, 0, 143, 142, 1, 0, 0, 0, 144, 145, - 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, 1, 0, - 0, 0, 147, 148, 5, 0, 0, 1, 148, 1, 1, 0, 0, 0, 149, 150, 3, 24, 12, 0, - 150, 151, 5, 0, 0, 1, 151, 3, 1, 0, 0, 0, 152, 153, 3, 68, 34, 0, 153, - 154, 5, 0, 0, 1, 154, 5, 1, 0, 0, 0, 155, 156, 3, 122, 61, 0, 156, 157, - 5, 0, 0, 1, 157, 7, 1, 0, 0, 0, 158, 159, 3, 126, 63, 0, 159, 160, 5, 0, - 0, 1, 160, 9, 1, 0, 0, 0, 161, 176, 5, 128, 0, 0, 162, 164, 7, 0, 0, 0, - 163, 162, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, - 176, 5, 131, 0, 0, 166, 168, 7, 0, 0, 0, 167, 166, 1, 0, 0, 0, 167, 168, - 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 170, 5, 131, 0, 0, 170, 171, 5, - 12, 0, 0, 171, 176, 5, 131, 0, 0, 172, 176, 7, 1, 0, 0, 173, 176, 5, 61, - 0, 0, 174, 176, 5, 132, 0, 0, 175, 161, 1, 0, 0, 0, 175, 163, 1, 0, 0, - 0, 175, 167, 1, 0, 0, 0, 175, 172, 1, 0, 0, 0, 175, 173, 1, 0, 0, 0, 175, - 174, 1, 0, 0, 0, 176, 11, 1, 0, 0, 0, 177, 178, 5, 32, 0, 0, 178, 179, - 5, 139, 0, 0, 179, 182, 5, 32, 0, 0, 180, 182, 5, 139, 0, 0, 181, 177, - 1, 0, 0, 0, 181, 180, 1, 0, 0, 0, 182, 13, 1, 0, 0, 0, 183, 188, 3, 12, - 6, 0, 184, 185, 5, 9, 0, 0, 185, 187, 3, 12, 6, 0, 186, 184, 1, 0, 0, 0, - 187, 190, 1, 0, 0, 0, 188, 186, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, - 15, 1, 0, 0, 0, 190, 188, 1, 0, 0, 0, 191, 197, 5, 139, 0, 0, 192, 193, - 5, 7, 0, 0, 193, 194, 5, 131, 0, 0, 194, 195, 5, 9, 0, 0, 195, 196, 5, - 131, 0, 0, 196, 198, 5, 8, 0, 0, 197, 192, 1, 0, 0, 0, 197, 198, 1, 0, - 0, 0, 198, 201, 1, 0, 0, 0, 199, 200, 5, 3, 0, 0, 200, 202, 5, 4, 0, 0, - 201, 199, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 17, 1, 0, 0, 0, 203, 204, - 5, 28, 0, 0, 204, 205, 3, 16, 8, 0, 205, 19, 1, 0, 0, 0, 206, 207, 7, 2, - 0, 0, 207, 21, 1, 0, 0, 0, 208, 213, 3, 20, 10, 0, 209, 210, 5, 9, 0, 0, - 210, 212, 3, 20, 10, 0, 211, 209, 1, 0, 0, 0, 212, 215, 1, 0, 0, 0, 213, - 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 23, 1, 0, 0, 0, 215, 213, 1, - 0, 0, 0, 216, 223, 3, 28, 14, 0, 217, 222, 3, 30, 15, 0, 218, 222, 3, 32, - 16, 0, 219, 222, 3, 62, 31, 0, 220, 222, 3, 64, 32, 0, 221, 217, 1, 0, - 0, 0, 221, 218, 1, 0, 0, 0, 221, 219, 1, 0, 0, 0, 221, 220, 1, 0, 0, 0, - 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, - 25, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 227, 5, 141, 0, 0, 227, 240, - 5, 7, 0, 0, 228, 229, 5, 139, 0, 0, 229, 230, 5, 15, 0, 0, 230, 237, 3, - 10, 5, 0, 231, 232, 5, 9, 0, 0, 232, 233, 5, 139, 0, 0, 233, 234, 5, 15, - 0, 0, 234, 236, 3, 10, 5, 0, 235, 231, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, - 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 241, 1, 0, 0, 0, 239, - 237, 1, 0, 0, 0, 240, 228, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 242, - 1, 0, 0, 0, 242, 243, 5, 8, 0, 0, 243, 27, 1, 0, 0, 0, 244, 245, 5, 33, - 0, 0, 245, 246, 5, 139, 0, 0, 246, 247, 5, 6, 0, 0, 247, 29, 1, 0, 0, 0, - 248, 249, 5, 34, 0, 0, 249, 265, 5, 139, 0, 0, 250, 251, 5, 1, 0, 0, 251, - 252, 5, 139, 0, 0, 252, 253, 5, 5, 0, 0, 253, 260, 3, 10, 5, 0, 254, 255, - 5, 9, 0, 0, 255, 256, 5, 139, 0, 0, 256, 257, 5, 5, 0, 0, 257, 259, 3, - 10, 5, 0, 258, 254, 1, 0, 0, 0, 259, 262, 1, 0, 0, 0, 260, 258, 1, 0, 0, - 0, 260, 261, 1, 0, 0, 0, 261, 263, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, - 264, 5, 2, 0, 0, 264, 266, 1, 0, 0, 0, 265, 250, 1, 0, 0, 0, 265, 266, - 1, 0, 0, 0, 266, 267, 1, 0, 0, 0, 267, 268, 5, 82, 0, 0, 268, 269, 5, 139, - 0, 0, 269, 270, 5, 6, 0, 0, 270, 31, 1, 0, 0, 0, 271, 272, 5, 35, 0, 0, - 272, 273, 5, 139, 0, 0, 273, 274, 5, 1, 0, 0, 274, 283, 3, 34, 17, 0, 275, - 279, 5, 9, 0, 0, 276, 280, 3, 34, 17, 0, 277, 280, 3, 38, 19, 0, 278, 280, - 3, 42, 21, 0, 279, 276, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 278, 1, - 0, 0, 0, 280, 282, 1, 0, 0, 0, 281, 275, 1, 0, 0, 0, 282, 285, 1, 0, 0, - 0, 283, 281, 1, 0, 0, 0, 283, 284, 1, 0, 0, 0, 284, 286, 1, 0, 0, 0, 285, - 283, 1, 0, 0, 0, 286, 287, 5, 2, 0, 0, 287, 33, 1, 0, 0, 0, 288, 289, 5, - 139, 0, 0, 289, 293, 3, 16, 8, 0, 290, 292, 3, 52, 26, 0, 291, 290, 1, - 0, 0, 0, 292, 295, 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 293, 294, 1, 0, 0, - 0, 294, 35, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 296, 297, 5, 139, 0, 0, 297, - 301, 3, 16, 8, 0, 298, 300, 3, 54, 27, 0, 299, 298, 1, 0, 0, 0, 300, 303, - 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 37, 1, 0, - 0, 0, 303, 301, 1, 0, 0, 0, 304, 305, 5, 142, 0, 0, 305, 306, 7, 3, 0, - 0, 306, 307, 5, 7, 0, 0, 307, 308, 3, 14, 7, 0, 308, 309, 5, 8, 0, 0, 309, - 39, 1, 0, 0, 0, 310, 312, 5, 56, 0, 0, 311, 310, 1, 0, 0, 0, 311, 312, - 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 314, 5, 67, 0, 0, 314, 315, 3, 12, - 6, 0, 315, 316, 5, 7, 0, 0, 316, 317, 3, 14, 7, 0, 317, 318, 5, 8, 0, 0, - 318, 41, 1, 0, 0, 0, 319, 320, 5, 51, 0, 0, 320, 323, 5, 53, 0, 0, 321, - 323, 5, 133, 0, 0, 322, 319, 1, 0, 0, 0, 322, 321, 1, 0, 0, 0, 323, 324, - 1, 0, 0, 0, 324, 325, 5, 7, 0, 0, 325, 326, 3, 14, 7, 0, 326, 327, 5, 8, - 0, 0, 327, 328, 7, 4, 0, 0, 328, 329, 5, 139, 0, 0, 329, 330, 5, 7, 0, - 0, 330, 331, 3, 14, 7, 0, 331, 335, 5, 8, 0, 0, 332, 334, 3, 44, 22, 0, - 333, 332, 1, 0, 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 335, - 336, 1, 0, 0, 0, 336, 43, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 338, 339, 5, - 54, 0, 0, 339, 342, 5, 63, 0, 0, 340, 342, 5, 134, 0, 0, 341, 338, 1, 0, - 0, 0, 341, 340, 1, 0, 0, 0, 342, 349, 1, 0, 0, 0, 343, 344, 5, 54, 0, 0, - 344, 347, 5, 62, 0, 0, 345, 347, 5, 135, 0, 0, 346, 343, 1, 0, 0, 0, 346, - 345, 1, 0, 0, 0, 347, 349, 1, 0, 0, 0, 348, 341, 1, 0, 0, 0, 348, 346, - 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 352, 5, 55, 0, 0, 351, 350, 1, 0, - 0, 0, 351, 352, 1, 0, 0, 0, 352, 370, 1, 0, 0, 0, 353, 354, 5, 92, 0, 0, - 354, 357, 5, 36, 0, 0, 355, 357, 5, 138, 0, 0, 356, 353, 1, 0, 0, 0, 356, - 355, 1, 0, 0, 0, 357, 371, 1, 0, 0, 0, 358, 371, 5, 57, 0, 0, 359, 360, - 5, 59, 0, 0, 360, 363, 5, 61, 0, 0, 361, 363, 5, 137, 0, 0, 362, 359, 1, - 0, 0, 0, 362, 361, 1, 0, 0, 0, 363, 371, 1, 0, 0, 0, 364, 365, 5, 59, 0, - 0, 365, 368, 5, 60, 0, 0, 366, 368, 5, 136, 0, 0, 367, 364, 1, 0, 0, 0, - 367, 366, 1, 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 371, 5, 58, 0, 0, 370, - 356, 1, 0, 0, 0, 370, 358, 1, 0, 0, 0, 370, 362, 1, 0, 0, 0, 370, 367, - 1, 0, 0, 0, 370, 369, 1, 0, 0, 0, 371, 45, 1, 0, 0, 0, 372, 377, 3, 16, - 8, 0, 373, 374, 5, 9, 0, 0, 374, 376, 3, 16, 8, 0, 375, 373, 1, 0, 0, 0, - 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, - 47, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 381, 5, 139, 0, 0, 381, 387, - 3, 16, 8, 0, 382, 383, 5, 9, 0, 0, 383, 384, 5, 139, 0, 0, 384, 386, 3, - 16, 8, 0, 385, 382, 1, 0, 0, 0, 386, 389, 1, 0, 0, 0, 387, 385, 1, 0, 0, - 0, 387, 388, 1, 0, 0, 0, 388, 49, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 390, - 391, 3, 20, 10, 0, 391, 398, 3, 16, 8, 0, 392, 393, 5, 9, 0, 0, 393, 394, - 3, 20, 10, 0, 394, 395, 3, 16, 8, 0, 395, 397, 1, 0, 0, 0, 396, 392, 1, - 0, 0, 0, 397, 400, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 398, 399, 1, 0, 0, - 0, 399, 51, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 401, 411, 5, 139, 0, 0, 402, - 404, 5, 52, 0, 0, 403, 405, 5, 53, 0, 0, 404, 403, 1, 0, 0, 0, 404, 405, - 1, 0, 0, 0, 405, 411, 1, 0, 0, 0, 406, 407, 5, 66, 0, 0, 407, 411, 5, 61, - 0, 0, 408, 411, 5, 60, 0, 0, 409, 411, 5, 56, 0, 0, 410, 401, 1, 0, 0, - 0, 410, 402, 1, 0, 0, 0, 410, 406, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, - 409, 1, 0, 0, 0, 411, 416, 1, 0, 0, 0, 412, 413, 5, 7, 0, 0, 413, 414, - 3, 10, 5, 0, 414, 415, 5, 8, 0, 0, 415, 417, 1, 0, 0, 0, 416, 412, 1, 0, - 0, 0, 416, 417, 1, 0, 0, 0, 417, 53, 1, 0, 0, 0, 418, 419, 5, 52, 0, 0, - 419, 432, 5, 53, 0, 0, 420, 432, 5, 56, 0, 0, 421, 422, 5, 66, 0, 0, 422, - 432, 5, 61, 0, 0, 423, 424, 5, 60, 0, 0, 424, 432, 3, 10, 5, 0, 425, 432, - 3, 58, 29, 0, 426, 427, 5, 50, 0, 0, 427, 428, 5, 7, 0, 0, 428, 429, 3, - 112, 56, 0, 429, 430, 5, 8, 0, 0, 430, 432, 1, 0, 0, 0, 431, 418, 1, 0, - 0, 0, 431, 420, 1, 0, 0, 0, 431, 421, 1, 0, 0, 0, 431, 423, 1, 0, 0, 0, - 431, 425, 1, 0, 0, 0, 431, 426, 1, 0, 0, 0, 432, 55, 1, 0, 0, 0, 433, 434, - 5, 54, 0, 0, 434, 443, 7, 5, 0, 0, 435, 436, 5, 59, 0, 0, 436, 444, 5, - 61, 0, 0, 437, 438, 5, 59, 0, 0, 438, 444, 5, 60, 0, 0, 439, 444, 5, 58, - 0, 0, 440, 441, 5, 92, 0, 0, 441, 444, 5, 36, 0, 0, 442, 444, 5, 57, 0, - 0, 443, 435, 1, 0, 0, 0, 443, 437, 1, 0, 0, 0, 443, 439, 1, 0, 0, 0, 443, - 440, 1, 0, 0, 0, 443, 442, 1, 0, 0, 0, 444, 57, 1, 0, 0, 0, 445, 446, 5, - 64, 0, 0, 446, 447, 3, 12, 6, 0, 447, 448, 5, 7, 0, 0, 448, 449, 3, 12, - 6, 0, 449, 450, 5, 8, 0, 0, 450, 458, 1, 0, 0, 0, 451, 455, 3, 56, 28, - 0, 452, 454, 3, 56, 28, 0, 453, 452, 1, 0, 0, 0, 454, 457, 1, 0, 0, 0, - 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 459, 1, 0, 0, 0, 457, - 455, 1, 0, 0, 0, 458, 451, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 59, 1, - 0, 0, 0, 460, 461, 7, 6, 0, 0, 461, 61, 1, 0, 0, 0, 462, 464, 3, 26, 13, - 0, 463, 462, 1, 0, 0, 0, 464, 467, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, - 466, 1, 0, 0, 0, 466, 468, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 468, 469, - 5, 36, 0, 0, 469, 470, 5, 139, 0, 0, 470, 472, 5, 7, 0, 0, 471, 473, 3, - 22, 11, 0, 472, 471, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, - 0, 0, 474, 476, 5, 8, 0, 0, 475, 477, 3, 60, 30, 0, 476, 475, 1, 0, 0, - 0, 477, 478, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, - 480, 1, 0, 0, 0, 480, 481, 5, 1, 0, 0, 481, 482, 3, 122, 61, 0, 482, 483, - 5, 2, 0, 0, 483, 63, 1, 0, 0, 0, 484, 486, 3, 26, 13, 0, 485, 484, 1, 0, - 0, 0, 486, 489, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, - 488, 490, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 490, 491, 5, 37, 0, 0, 491, - 492, 5, 139, 0, 0, 492, 494, 5, 7, 0, 0, 493, 495, 3, 50, 25, 0, 494, 493, - 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 5, 8, - 0, 0, 497, 499, 3, 60, 30, 0, 498, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, - 0, 500, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 503, 1, 0, 0, 0, 502, - 504, 3, 66, 33, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, - 1, 0, 0, 0, 505, 506, 5, 1, 0, 0, 506, 507, 3, 126, 63, 0, 507, 508, 5, - 2, 0, 0, 508, 65, 1, 0, 0, 0, 509, 521, 5, 91, 0, 0, 510, 512, 5, 35, 0, - 0, 511, 510, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, - 514, 5, 7, 0, 0, 514, 515, 3, 48, 24, 0, 515, 516, 5, 8, 0, 0, 516, 522, - 1, 0, 0, 0, 517, 518, 5, 7, 0, 0, 518, 519, 3, 46, 23, 0, 519, 520, 5, - 8, 0, 0, 520, 522, 1, 0, 0, 0, 521, 511, 1, 0, 0, 0, 521, 517, 1, 0, 0, - 0, 522, 67, 1, 0, 0, 0, 523, 524, 3, 70, 35, 0, 524, 525, 5, 6, 0, 0, 525, - 69, 1, 0, 0, 0, 526, 528, 5, 93, 0, 0, 527, 529, 5, 127, 0, 0, 528, 527, - 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 535, 3, 72, - 36, 0, 531, 532, 5, 9, 0, 0, 532, 534, 3, 72, 36, 0, 533, 531, 1, 0, 0, - 0, 534, 537, 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, - 539, 1, 0, 0, 0, 537, 535, 1, 0, 0, 0, 538, 526, 1, 0, 0, 0, 538, 539, - 1, 0, 0, 0, 539, 548, 1, 0, 0, 0, 540, 549, 3, 74, 37, 0, 541, 549, 3, - 80, 40, 0, 542, 549, 3, 84, 42, 0, 543, 549, 3, 86, 43, 0, 544, 549, 3, - 88, 44, 0, 545, 549, 3, 102, 51, 0, 546, 549, 3, 106, 53, 0, 547, 549, - 3, 110, 55, 0, 548, 540, 1, 0, 0, 0, 548, 541, 1, 0, 0, 0, 548, 542, 1, - 0, 0, 0, 548, 543, 1, 0, 0, 0, 548, 544, 1, 0, 0, 0, 548, 545, 1, 0, 0, - 0, 548, 546, 1, 0, 0, 0, 548, 547, 1, 0, 0, 0, 549, 71, 1, 0, 0, 0, 550, - 563, 3, 12, 6, 0, 551, 560, 5, 7, 0, 0, 552, 557, 3, 12, 6, 0, 553, 554, - 5, 9, 0, 0, 554, 556, 3, 12, 6, 0, 555, 553, 1, 0, 0, 0, 556, 559, 1, 0, - 0, 0, 557, 555, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 561, 1, 0, 0, 0, - 559, 557, 1, 0, 0, 0, 560, 552, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, - 562, 1, 0, 0, 0, 562, 564, 5, 8, 0, 0, 563, 551, 1, 0, 0, 0, 563, 564, - 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 5, 82, 0, 0, 566, 567, 5, 7, - 0, 0, 567, 568, 3, 88, 44, 0, 568, 569, 5, 8, 0, 0, 569, 73, 1, 0, 0, 0, - 570, 571, 5, 42, 0, 0, 571, 572, 5, 35, 0, 0, 572, 573, 3, 12, 6, 0, 573, - 577, 5, 7, 0, 0, 574, 578, 3, 36, 18, 0, 575, 578, 3, 76, 38, 0, 576, 578, - 3, 40, 20, 0, 577, 574, 1, 0, 0, 0, 577, 575, 1, 0, 0, 0, 577, 576, 1, - 0, 0, 0, 578, 587, 1, 0, 0, 0, 579, 583, 5, 9, 0, 0, 580, 584, 3, 36, 18, - 0, 581, 584, 3, 76, 38, 0, 582, 584, 3, 40, 20, 0, 583, 580, 1, 0, 0, 0, - 583, 581, 1, 0, 0, 0, 583, 582, 1, 0, 0, 0, 584, 586, 1, 0, 0, 0, 585, - 579, 1, 0, 0, 0, 586, 589, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 587, 588, - 1, 0, 0, 0, 588, 590, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 590, 591, 5, 8, - 0, 0, 591, 75, 1, 0, 0, 0, 592, 593, 5, 49, 0, 0, 593, 595, 3, 12, 6, 0, - 594, 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, - 597, 3, 78, 39, 0, 597, 77, 1, 0, 0, 0, 598, 599, 5, 52, 0, 0, 599, 600, - 5, 53, 0, 0, 600, 601, 5, 7, 0, 0, 601, 602, 3, 14, 7, 0, 602, 603, 5, - 8, 0, 0, 603, 622, 1, 0, 0, 0, 604, 605, 5, 56, 0, 0, 605, 606, 5, 7, 0, - 0, 606, 607, 3, 14, 7, 0, 607, 608, 5, 8, 0, 0, 608, 622, 1, 0, 0, 0, 609, - 610, 5, 50, 0, 0, 610, 611, 5, 7, 0, 0, 611, 612, 3, 112, 56, 0, 612, 613, - 5, 8, 0, 0, 613, 622, 1, 0, 0, 0, 614, 615, 5, 51, 0, 0, 615, 616, 5, 53, - 0, 0, 616, 617, 5, 7, 0, 0, 617, 618, 3, 12, 6, 0, 618, 619, 5, 8, 0, 0, - 619, 620, 3, 58, 29, 0, 620, 622, 1, 0, 0, 0, 621, 598, 1, 0, 0, 0, 621, - 604, 1, 0, 0, 0, 621, 609, 1, 0, 0, 0, 621, 614, 1, 0, 0, 0, 622, 79, 1, - 0, 0, 0, 623, 624, 5, 43, 0, 0, 624, 625, 5, 35, 0, 0, 625, 626, 3, 12, - 6, 0, 626, 627, 3, 82, 41, 0, 627, 81, 1, 0, 0, 0, 628, 629, 5, 43, 0, - 0, 629, 630, 5, 44, 0, 0, 630, 631, 3, 12, 6, 0, 631, 636, 5, 59, 0, 0, - 632, 633, 5, 66, 0, 0, 633, 637, 5, 61, 0, 0, 634, 635, 5, 60, 0, 0, 635, - 637, 3, 10, 5, 0, 636, 632, 1, 0, 0, 0, 636, 634, 1, 0, 0, 0, 637, 672, - 1, 0, 0, 0, 638, 639, 5, 43, 0, 0, 639, 640, 5, 44, 0, 0, 640, 641, 3, - 12, 6, 0, 641, 647, 5, 46, 0, 0, 642, 643, 5, 66, 0, 0, 643, 648, 5, 61, - 0, 0, 644, 648, 5, 60, 0, 0, 645, 646, 5, 49, 0, 0, 646, 648, 3, 12, 6, - 0, 647, 642, 1, 0, 0, 0, 647, 644, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, - 672, 1, 0, 0, 0, 649, 650, 5, 45, 0, 0, 650, 651, 5, 44, 0, 0, 651, 652, - 3, 12, 6, 0, 652, 653, 3, 16, 8, 0, 653, 672, 1, 0, 0, 0, 654, 655, 5, - 46, 0, 0, 655, 656, 5, 44, 0, 0, 656, 672, 3, 12, 6, 0, 657, 658, 5, 47, - 0, 0, 658, 659, 5, 44, 0, 0, 659, 660, 3, 12, 6, 0, 660, 661, 5, 48, 0, - 0, 661, 662, 3, 12, 6, 0, 662, 672, 1, 0, 0, 0, 663, 664, 5, 47, 0, 0, - 664, 665, 5, 48, 0, 0, 665, 672, 3, 12, 6, 0, 666, 667, 5, 45, 0, 0, 667, - 672, 3, 76, 38, 0, 668, 669, 5, 46, 0, 0, 669, 670, 5, 49, 0, 0, 670, 672, - 3, 12, 6, 0, 671, 628, 1, 0, 0, 0, 671, 638, 1, 0, 0, 0, 671, 649, 1, 0, - 0, 0, 671, 654, 1, 0, 0, 0, 671, 657, 1, 0, 0, 0, 671, 663, 1, 0, 0, 0, - 671, 666, 1, 0, 0, 0, 671, 668, 1, 0, 0, 0, 672, 83, 1, 0, 0, 0, 673, 675, - 5, 42, 0, 0, 674, 676, 5, 56, 0, 0, 675, 674, 1, 0, 0, 0, 675, 676, 1, - 0, 0, 0, 676, 677, 1, 0, 0, 0, 677, 678, 5, 67, 0, 0, 678, 679, 3, 12, - 6, 0, 679, 680, 5, 54, 0, 0, 680, 681, 3, 12, 6, 0, 681, 682, 5, 7, 0, - 0, 682, 683, 3, 14, 7, 0, 683, 684, 5, 8, 0, 0, 684, 85, 1, 0, 0, 0, 685, - 686, 5, 46, 0, 0, 686, 689, 5, 67, 0, 0, 687, 688, 5, 117, 0, 0, 688, 690, - 5, 75, 0, 0, 689, 687, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 691, 1, 0, - 0, 0, 691, 692, 3, 12, 6, 0, 692, 87, 1, 0, 0, 0, 693, 699, 3, 94, 47, - 0, 694, 695, 3, 90, 45, 0, 695, 696, 3, 94, 47, 0, 696, 698, 1, 0, 0, 0, - 697, 694, 1, 0, 0, 0, 698, 701, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, - 700, 1, 0, 0, 0, 700, 712, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 702, 703, - 5, 87, 0, 0, 703, 704, 5, 88, 0, 0, 704, 709, 3, 92, 46, 0, 705, 706, 5, - 9, 0, 0, 706, 708, 3, 92, 46, 0, 707, 705, 1, 0, 0, 0, 708, 711, 1, 0, - 0, 0, 709, 707, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, - 711, 709, 1, 0, 0, 0, 712, 702, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 713, - 716, 1, 0, 0, 0, 714, 715, 5, 85, 0, 0, 715, 717, 3, 112, 56, 0, 716, 714, - 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 720, 1, 0, 0, 0, 718, 719, 5, 86, - 0, 0, 719, 721, 3, 112, 56, 0, 720, 718, 1, 0, 0, 0, 720, 721, 1, 0, 0, - 0, 721, 89, 1, 0, 0, 0, 722, 724, 5, 106, 0, 0, 723, 725, 5, 76, 0, 0, - 724, 723, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 729, 1, 0, 0, 0, 726, - 729, 5, 107, 0, 0, 727, 729, 5, 108, 0, 0, 728, 722, 1, 0, 0, 0, 728, 726, - 1, 0, 0, 0, 728, 727, 1, 0, 0, 0, 729, 91, 1, 0, 0, 0, 730, 732, 3, 112, - 56, 0, 731, 733, 7, 7, 0, 0, 732, 731, 1, 0, 0, 0, 732, 733, 1, 0, 0, 0, - 733, 736, 1, 0, 0, 0, 734, 735, 5, 109, 0, 0, 735, 737, 7, 8, 0, 0, 736, - 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 93, 1, 0, 0, 0, 738, 740, 5, - 102, 0, 0, 739, 741, 5, 98, 0, 0, 740, 739, 1, 0, 0, 0, 740, 741, 1, 0, - 0, 0, 741, 742, 1, 0, 0, 0, 742, 747, 3, 100, 50, 0, 743, 744, 5, 9, 0, - 0, 744, 746, 3, 100, 50, 0, 745, 743, 1, 0, 0, 0, 746, 749, 1, 0, 0, 0, - 747, 745, 1, 0, 0, 0, 747, 748, 1, 0, 0, 0, 748, 758, 1, 0, 0, 0, 749, - 747, 1, 0, 0, 0, 750, 751, 5, 99, 0, 0, 751, 755, 3, 96, 48, 0, 752, 754, - 3, 98, 49, 0, 753, 752, 1, 0, 0, 0, 754, 757, 1, 0, 0, 0, 755, 753, 1, - 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 759, 1, 0, 0, 0, 757, 755, 1, 0, 0, - 0, 758, 750, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 762, 1, 0, 0, 0, 760, - 761, 5, 100, 0, 0, 761, 763, 3, 112, 56, 0, 762, 760, 1, 0, 0, 0, 762, - 763, 1, 0, 0, 0, 763, 771, 1, 0, 0, 0, 764, 765, 5, 89, 0, 0, 765, 766, - 5, 88, 0, 0, 766, 769, 3, 118, 59, 0, 767, 768, 5, 90, 0, 0, 768, 770, - 3, 112, 56, 0, 769, 767, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 772, 1, - 0, 0, 0, 771, 764, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 787, 1, 0, 0, - 0, 773, 774, 5, 125, 0, 0, 774, 775, 3, 12, 6, 0, 775, 776, 5, 82, 0, 0, - 776, 784, 3, 114, 57, 0, 777, 778, 5, 9, 0, 0, 778, 779, 3, 12, 6, 0, 779, - 780, 5, 82, 0, 0, 780, 781, 3, 114, 57, 0, 781, 783, 1, 0, 0, 0, 782, 777, - 1, 0, 0, 0, 783, 786, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, - 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 787, 773, 1, 0, 0, 0, - 787, 788, 1, 0, 0, 0, 788, 95, 1, 0, 0, 0, 789, 794, 3, 12, 6, 0, 790, - 792, 5, 82, 0, 0, 791, 790, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 793, - 1, 0, 0, 0, 793, 795, 3, 12, 6, 0, 794, 791, 1, 0, 0, 0, 794, 795, 1, 0, - 0, 0, 795, 806, 1, 0, 0, 0, 796, 797, 5, 7, 0, 0, 797, 798, 3, 88, 44, - 0, 798, 803, 5, 8, 0, 0, 799, 801, 5, 82, 0, 0, 800, 799, 1, 0, 0, 0, 800, - 801, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 804, 3, 12, 6, 0, 803, 800, - 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 806, 1, 0, 0, 0, 805, 789, 1, 0, - 0, 0, 805, 796, 1, 0, 0, 0, 806, 97, 1, 0, 0, 0, 807, 809, 7, 9, 0, 0, - 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, - 811, 5, 78, 0, 0, 811, 812, 3, 96, 48, 0, 812, 813, 5, 54, 0, 0, 813, 814, - 3, 112, 56, 0, 814, 99, 1, 0, 0, 0, 815, 820, 3, 112, 56, 0, 816, 818, - 5, 82, 0, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 819, 1, 0, - 0, 0, 819, 821, 3, 12, 6, 0, 820, 817, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, - 821, 829, 1, 0, 0, 0, 822, 823, 3, 12, 6, 0, 823, 824, 5, 12, 0, 0, 824, - 826, 1, 0, 0, 0, 825, 822, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, - 1, 0, 0, 0, 827, 829, 5, 14, 0, 0, 828, 815, 1, 0, 0, 0, 828, 825, 1, 0, - 0, 0, 829, 101, 1, 0, 0, 0, 830, 831, 5, 63, 0, 0, 831, 836, 3, 12, 6, - 0, 832, 834, 5, 82, 0, 0, 833, 832, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, - 835, 1, 0, 0, 0, 835, 837, 3, 12, 6, 0, 836, 833, 1, 0, 0, 0, 836, 837, - 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 5, 59, 0, 0, 839, 844, 3, 104, - 52, 0, 840, 841, 5, 9, 0, 0, 841, 843, 3, 104, 52, 0, 842, 840, 1, 0, 0, - 0, 843, 846, 1, 0, 0, 0, 844, 842, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, - 855, 1, 0, 0, 0, 846, 844, 1, 0, 0, 0, 847, 848, 5, 99, 0, 0, 848, 852, - 3, 96, 48, 0, 849, 851, 3, 98, 49, 0, 850, 849, 1, 0, 0, 0, 851, 854, 1, - 0, 0, 0, 852, 850, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 856, 1, 0, 0, - 0, 854, 852, 1, 0, 0, 0, 855, 847, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, - 859, 1, 0, 0, 0, 857, 858, 5, 100, 0, 0, 858, 860, 3, 112, 56, 0, 859, - 857, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 103, 1, 0, 0, 0, 861, 862, - 3, 12, 6, 0, 862, 863, 5, 15, 0, 0, 863, 864, 3, 112, 56, 0, 864, 105, - 1, 0, 0, 0, 865, 866, 5, 103, 0, 0, 866, 867, 5, 113, 0, 0, 867, 872, 3, - 12, 6, 0, 868, 870, 5, 82, 0, 0, 869, 868, 1, 0, 0, 0, 869, 870, 1, 0, - 0, 0, 870, 871, 1, 0, 0, 0, 871, 873, 3, 12, 6, 0, 872, 869, 1, 0, 0, 0, - 872, 873, 1, 0, 0, 0, 873, 878, 1, 0, 0, 0, 874, 875, 5, 7, 0, 0, 875, - 876, 3, 14, 7, 0, 876, 877, 5, 8, 0, 0, 877, 879, 1, 0, 0, 0, 878, 874, - 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 895, 1, 0, 0, 0, 880, 881, 5, 104, - 0, 0, 881, 882, 5, 7, 0, 0, 882, 883, 3, 118, 59, 0, 883, 891, 5, 8, 0, - 0, 884, 885, 5, 9, 0, 0, 885, 886, 5, 7, 0, 0, 886, 887, 3, 118, 59, 0, - 887, 888, 5, 8, 0, 0, 888, 890, 1, 0, 0, 0, 889, 884, 1, 0, 0, 0, 890, - 893, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 896, - 1, 0, 0, 0, 893, 891, 1, 0, 0, 0, 894, 896, 3, 88, 44, 0, 895, 880, 1, - 0, 0, 0, 895, 894, 1, 0, 0, 0, 896, 898, 1, 0, 0, 0, 897, 899, 3, 108, - 54, 0, 898, 897, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 107, 1, 0, 0, 0, - 900, 901, 5, 54, 0, 0, 901, 909, 5, 114, 0, 0, 902, 903, 5, 7, 0, 0, 903, - 904, 3, 14, 7, 0, 904, 907, 5, 8, 0, 0, 905, 906, 5, 100, 0, 0, 906, 908, - 3, 112, 56, 0, 907, 905, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 910, 1, - 0, 0, 0, 909, 902, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 911, 1, 0, 0, - 0, 911, 927, 5, 55, 0, 0, 912, 928, 5, 115, 0, 0, 913, 914, 5, 63, 0, 0, - 914, 915, 5, 59, 0, 0, 915, 920, 3, 104, 52, 0, 916, 917, 5, 9, 0, 0, 917, - 919, 3, 104, 52, 0, 918, 916, 1, 0, 0, 0, 919, 922, 1, 0, 0, 0, 920, 918, - 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 925, 1, 0, 0, 0, 922, 920, 1, 0, - 0, 0, 923, 924, 5, 100, 0, 0, 924, 926, 3, 112, 56, 0, 925, 923, 1, 0, - 0, 0, 925, 926, 1, 0, 0, 0, 926, 928, 1, 0, 0, 0, 927, 912, 1, 0, 0, 0, - 927, 913, 1, 0, 0, 0, 928, 109, 1, 0, 0, 0, 929, 930, 5, 62, 0, 0, 930, - 931, 5, 99, 0, 0, 931, 936, 3, 12, 6, 0, 932, 934, 5, 82, 0, 0, 933, 932, - 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 935, 1, 0, 0, 0, 935, 937, 3, 12, - 6, 0, 936, 933, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 940, 1, 0, 0, 0, - 938, 939, 5, 100, 0, 0, 939, 941, 3, 112, 56, 0, 940, 938, 1, 0, 0, 0, - 940, 941, 1, 0, 0, 0, 941, 111, 1, 0, 0, 0, 942, 943, 6, 56, -1, 0, 943, - 944, 5, 7, 0, 0, 944, 945, 3, 112, 56, 0, 945, 947, 5, 8, 0, 0, 946, 948, - 3, 18, 9, 0, 947, 946, 1, 0, 0, 0, 947, 948, 1, 0, 0, 0, 948, 1016, 1, - 0, 0, 0, 949, 950, 7, 0, 0, 0, 950, 1016, 3, 112, 56, 20, 951, 953, 3, - 10, 5, 0, 952, 954, 3, 18, 9, 0, 953, 952, 1, 0, 0, 0, 953, 954, 1, 0, - 0, 0, 954, 1016, 1, 0, 0, 0, 955, 962, 3, 120, 60, 0, 956, 957, 5, 126, - 0, 0, 957, 958, 5, 7, 0, 0, 958, 959, 5, 100, 0, 0, 959, 960, 3, 112, 56, - 0, 960, 961, 5, 8, 0, 0, 961, 963, 1, 0, 0, 0, 962, 956, 1, 0, 0, 0, 962, - 963, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 967, 5, 123, 0, 0, 965, 968, - 3, 114, 57, 0, 966, 968, 5, 139, 0, 0, 967, 965, 1, 0, 0, 0, 967, 966, - 1, 0, 0, 0, 968, 1016, 1, 0, 0, 0, 969, 971, 3, 120, 60, 0, 970, 972, 3, - 18, 9, 0, 971, 970, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 1016, 1, 0, - 0, 0, 973, 975, 3, 20, 10, 0, 974, 976, 3, 18, 9, 0, 975, 974, 1, 0, 0, - 0, 975, 976, 1, 0, 0, 0, 976, 1016, 1, 0, 0, 0, 977, 978, 3, 12, 6, 0, - 978, 979, 5, 12, 0, 0, 979, 981, 1, 0, 0, 0, 980, 977, 1, 0, 0, 0, 980, - 981, 1, 0, 0, 0, 981, 982, 1, 0, 0, 0, 982, 984, 3, 12, 6, 0, 983, 985, - 3, 18, 9, 0, 984, 983, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, 1016, 1, - 0, 0, 0, 986, 988, 5, 94, 0, 0, 987, 989, 3, 112, 56, 0, 988, 987, 1, 0, - 0, 0, 988, 989, 1, 0, 0, 0, 989, 991, 1, 0, 0, 0, 990, 992, 3, 116, 58, - 0, 991, 990, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993, 991, 1, 0, 0, 0, 993, - 994, 1, 0, 0, 0, 994, 997, 1, 0, 0, 0, 995, 996, 5, 119, 0, 0, 996, 998, - 3, 112, 56, 0, 997, 995, 1, 0, 0, 0, 997, 998, 1, 0, 0, 0, 998, 999, 1, - 0, 0, 0, 999, 1000, 5, 97, 0, 0, 1000, 1016, 1, 0, 0, 0, 1001, 1003, 5, - 66, 0, 0, 1002, 1001, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1004, 1, - 0, 0, 0, 1004, 1006, 5, 75, 0, 0, 1005, 1002, 1, 0, 0, 0, 1005, 1006, 1, - 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1008, 5, 7, 0, 0, 1008, 1009, 3, - 88, 44, 0, 1009, 1011, 5, 8, 0, 0, 1010, 1012, 3, 18, 9, 0, 1011, 1010, - 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1016, 1, 0, 0, 0, 1013, 1014, - 5, 66, 0, 0, 1014, 1016, 3, 112, 56, 3, 1015, 942, 1, 0, 0, 0, 1015, 949, - 1, 0, 0, 0, 1015, 951, 1, 0, 0, 0, 1015, 955, 1, 0, 0, 0, 1015, 969, 1, - 0, 0, 0, 1015, 973, 1, 0, 0, 0, 1015, 980, 1, 0, 0, 0, 1015, 986, 1, 0, - 0, 0, 1015, 1005, 1, 0, 0, 0, 1015, 1013, 1, 0, 0, 0, 1016, 1102, 1, 0, - 0, 0, 1017, 1018, 10, 18, 0, 0, 1018, 1019, 7, 10, 0, 0, 1019, 1101, 3, - 112, 56, 19, 1020, 1021, 10, 17, 0, 0, 1021, 1022, 7, 0, 0, 0, 1022, 1101, - 3, 112, 56, 18, 1023, 1024, 10, 9, 0, 0, 1024, 1025, 5, 13, 0, 0, 1025, - 1101, 3, 112, 56, 10, 1026, 1028, 10, 7, 0, 0, 1027, 1029, 5, 66, 0, 0, - 1028, 1027, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1030, 1, 0, 0, 0, - 1030, 1031, 7, 11, 0, 0, 1031, 1101, 3, 112, 56, 8, 1032, 1034, 10, 6, - 0, 0, 1033, 1035, 5, 66, 0, 0, 1034, 1033, 1, 0, 0, 0, 1034, 1035, 1, 0, - 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 5, 73, 0, 0, 1037, 1038, 3, 112, - 56, 0, 1038, 1039, 5, 68, 0, 0, 1039, 1040, 3, 112, 56, 7, 1040, 1101, - 1, 0, 0, 0, 1041, 1042, 10, 5, 0, 0, 1042, 1043, 7, 12, 0, 0, 1043, 1101, - 3, 112, 56, 6, 1044, 1045, 10, 2, 0, 0, 1045, 1046, 5, 68, 0, 0, 1046, - 1101, 3, 112, 56, 3, 1047, 1048, 10, 1, 0, 0, 1048, 1049, 5, 69, 0, 0, - 1049, 1101, 3, 112, 56, 2, 1050, 1051, 10, 22, 0, 0, 1051, 1052, 5, 12, - 0, 0, 1052, 1054, 3, 12, 6, 0, 1053, 1055, 3, 18, 9, 0, 1054, 1053, 1, - 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 1101, 1, 0, 0, 0, 1056, 1057, 10, - 21, 0, 0, 1057, 1066, 5, 3, 0, 0, 1058, 1067, 3, 112, 56, 0, 1059, 1061, - 3, 112, 56, 0, 1060, 1059, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1062, - 1, 0, 0, 0, 1062, 1064, 5, 5, 0, 0, 1063, 1065, 3, 112, 56, 0, 1064, 1063, - 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1067, 1, 0, 0, 0, 1066, 1058, - 1, 0, 0, 0, 1066, 1060, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1070, - 5, 4, 0, 0, 1069, 1071, 3, 18, 9, 0, 1070, 1069, 1, 0, 0, 0, 1070, 1071, - 1, 0, 0, 0, 1071, 1101, 1, 0, 0, 0, 1072, 1073, 10, 19, 0, 0, 1073, 1074, - 5, 101, 0, 0, 1074, 1101, 3, 12, 6, 0, 1075, 1077, 10, 8, 0, 0, 1076, 1078, - 5, 66, 0, 0, 1077, 1076, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1079, - 1, 0, 0, 0, 1079, 1080, 5, 72, 0, 0, 1080, 1083, 5, 7, 0, 0, 1081, 1084, - 3, 118, 59, 0, 1082, 1084, 3, 88, 44, 0, 1083, 1081, 1, 0, 0, 0, 1083, - 1082, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1086, 5, 8, 0, 0, 1086, - 1101, 1, 0, 0, 0, 1087, 1088, 10, 4, 0, 0, 1088, 1090, 5, 74, 0, 0, 1089, - 1091, 5, 66, 0, 0, 1090, 1089, 1, 0, 0, 0, 1090, 1091, 1, 0, 0, 0, 1091, - 1098, 1, 0, 0, 0, 1092, 1093, 5, 98, 0, 0, 1093, 1094, 5, 99, 0, 0, 1094, - 1099, 3, 112, 56, 0, 1095, 1099, 5, 61, 0, 0, 1096, 1099, 5, 129, 0, 0, - 1097, 1099, 5, 130, 0, 0, 1098, 1092, 1, 0, 0, 0, 1098, 1095, 1, 0, 0, - 0, 1098, 1096, 1, 0, 0, 0, 1098, 1097, 1, 0, 0, 0, 1099, 1101, 1, 0, 0, - 0, 1100, 1017, 1, 0, 0, 0, 1100, 1020, 1, 0, 0, 0, 1100, 1023, 1, 0, 0, - 0, 1100, 1026, 1, 0, 0, 0, 1100, 1032, 1, 0, 0, 0, 1100, 1041, 1, 0, 0, - 0, 1100, 1044, 1, 0, 0, 0, 1100, 1047, 1, 0, 0, 0, 1100, 1050, 1, 0, 0, - 0, 1100, 1056, 1, 0, 0, 0, 1100, 1072, 1, 0, 0, 0, 1100, 1075, 1, 0, 0, - 0, 1100, 1087, 1, 0, 0, 0, 1101, 1104, 1, 0, 0, 0, 1102, 1100, 1, 0, 0, - 0, 1102, 1103, 1, 0, 0, 0, 1103, 113, 1, 0, 0, 0, 1104, 1102, 1, 0, 0, - 0, 1105, 1109, 5, 7, 0, 0, 1106, 1107, 5, 124, 0, 0, 1107, 1108, 5, 88, - 0, 0, 1108, 1110, 3, 118, 59, 0, 1109, 1106, 1, 0, 0, 0, 1109, 1110, 1, - 0, 0, 0, 1110, 1121, 1, 0, 0, 0, 1111, 1112, 5, 87, 0, 0, 1112, 1113, 5, - 88, 0, 0, 1113, 1118, 3, 92, 46, 0, 1114, 1115, 5, 9, 0, 0, 1115, 1117, - 3, 92, 46, 0, 1116, 1114, 1, 0, 0, 0, 1117, 1120, 1, 0, 0, 0, 1118, 1116, - 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1122, 1, 0, 0, 0, 1120, 1118, - 1, 0, 0, 0, 1121, 1111, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1123, - 1, 0, 0, 0, 1123, 1124, 5, 8, 0, 0, 1124, 115, 1, 0, 0, 0, 1125, 1126, - 5, 95, 0, 0, 1126, 1127, 3, 112, 56, 0, 1127, 1128, 5, 96, 0, 0, 1128, - 1129, 3, 112, 56, 0, 1129, 117, 1, 0, 0, 0, 1130, 1135, 3, 112, 56, 0, - 1131, 1132, 5, 9, 0, 0, 1132, 1134, 3, 112, 56, 0, 1133, 1131, 1, 0, 0, - 0, 1134, 1137, 1, 0, 0, 0, 1135, 1133, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, - 0, 1136, 119, 1, 0, 0, 0, 1137, 1135, 1, 0, 0, 0, 1138, 1139, 3, 12, 6, - 0, 1139, 1145, 5, 7, 0, 0, 1140, 1142, 5, 98, 0, 0, 1141, 1140, 1, 0, 0, - 0, 1141, 1142, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1146, 3, 118, - 59, 0, 1144, 1146, 5, 14, 0, 0, 1145, 1141, 1, 0, 0, 0, 1145, 1144, 1, - 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1148, 5, - 8, 0, 0, 1148, 121, 1, 0, 0, 0, 1149, 1150, 3, 124, 62, 0, 1150, 1151, - 5, 6, 0, 0, 1151, 1153, 1, 0, 0, 0, 1152, 1149, 1, 0, 0, 0, 1153, 1156, - 1, 0, 0, 0, 1154, 1152, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 123, - 1, 0, 0, 0, 1156, 1154, 1, 0, 0, 0, 1157, 1178, 3, 70, 35, 0, 1158, 1159, - 5, 139, 0, 0, 1159, 1161, 5, 7, 0, 0, 1160, 1162, 3, 130, 65, 0, 1161, - 1160, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, - 1178, 5, 8, 0, 0, 1164, 1165, 3, 22, 11, 0, 1165, 1166, 5, 15, 0, 0, 1166, - 1168, 1, 0, 0, 0, 1167, 1164, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, - 1169, 1, 0, 0, 0, 1169, 1170, 5, 139, 0, 0, 1170, 1171, 5, 12, 0, 0, 1171, - 1172, 5, 139, 0, 0, 1172, 1174, 5, 7, 0, 0, 1173, 1175, 3, 130, 65, 0, - 1174, 1173, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, - 1176, 1178, 5, 8, 0, 0, 1177, 1157, 1, 0, 0, 0, 1177, 1158, 1, 0, 0, 0, - 1177, 1167, 1, 0, 0, 0, 1178, 125, 1, 0, 0, 0, 1179, 1181, 3, 132, 66, - 0, 1180, 1179, 1, 0, 0, 0, 1181, 1184, 1, 0, 0, 0, 1182, 1180, 1, 0, 0, - 0, 1182, 1183, 1, 0, 0, 0, 1183, 127, 1, 0, 0, 0, 1184, 1182, 1, 0, 0, - 0, 1185, 1186, 6, 64, -1, 0, 1186, 1187, 5, 7, 0, 0, 1187, 1188, 3, 128, - 64, 0, 1188, 1190, 5, 8, 0, 0, 1189, 1191, 3, 18, 9, 0, 1190, 1189, 1, - 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1217, 1, 0, 0, 0, 1192, 1193, 7, - 13, 0, 0, 1193, 1217, 3, 128, 64, 13, 1194, 1196, 3, 10, 5, 0, 1195, 1197, - 3, 18, 9, 0, 1196, 1195, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1217, - 1, 0, 0, 0, 1198, 1200, 3, 136, 68, 0, 1199, 1201, 3, 18, 9, 0, 1200, 1199, - 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1217, 1, 0, 0, 0, 1202, 1204, - 3, 20, 10, 0, 1203, 1205, 3, 18, 9, 0, 1204, 1203, 1, 0, 0, 0, 1204, 1205, - 1, 0, 0, 0, 1205, 1217, 1, 0, 0, 0, 1206, 1208, 5, 3, 0, 0, 1207, 1209, - 3, 130, 65, 0, 1208, 1207, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1210, - 1, 0, 0, 0, 1210, 1212, 5, 4, 0, 0, 1211, 1213, 3, 18, 9, 0, 1212, 1211, - 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1217, 1, 0, 0, 0, 1214, 1215, - 5, 66, 0, 0, 1215, 1217, 3, 128, 64, 3, 1216, 1185, 1, 0, 0, 0, 1216, 1192, - 1, 0, 0, 0, 1216, 1194, 1, 0, 0, 0, 1216, 1198, 1, 0, 0, 0, 1216, 1202, - 1, 0, 0, 0, 1216, 1206, 1, 0, 0, 0, 1216, 1214, 1, 0, 0, 0, 1217, 1273, - 1, 0, 0, 0, 1218, 1219, 10, 12, 0, 0, 1219, 1220, 7, 10, 0, 0, 1220, 1272, - 3, 128, 64, 13, 1221, 1222, 10, 11, 0, 0, 1222, 1223, 7, 0, 0, 0, 1223, - 1272, 3, 128, 64, 12, 1224, 1225, 10, 6, 0, 0, 1225, 1226, 5, 13, 0, 0, - 1226, 1272, 3, 128, 64, 7, 1227, 1228, 10, 5, 0, 0, 1228, 1229, 7, 12, - 0, 0, 1229, 1272, 3, 128, 64, 6, 1230, 1231, 10, 2, 0, 0, 1231, 1232, 5, - 68, 0, 0, 1232, 1272, 3, 128, 64, 3, 1233, 1234, 10, 1, 0, 0, 1234, 1235, - 5, 69, 0, 0, 1235, 1272, 3, 128, 64, 2, 1236, 1237, 10, 15, 0, 0, 1237, - 1238, 5, 12, 0, 0, 1238, 1240, 5, 139, 0, 0, 1239, 1241, 3, 18, 9, 0, 1240, - 1239, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1272, 1, 0, 0, 0, 1242, - 1243, 10, 14, 0, 0, 1243, 1252, 5, 3, 0, 0, 1244, 1253, 3, 128, 64, 0, - 1245, 1247, 3, 128, 64, 0, 1246, 1245, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, - 0, 1247, 1248, 1, 0, 0, 0, 1248, 1250, 5, 5, 0, 0, 1249, 1251, 3, 128, - 64, 0, 1250, 1249, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1253, 1, 0, - 0, 0, 1252, 1244, 1, 0, 0, 0, 1252, 1246, 1, 0, 0, 0, 1253, 1254, 1, 0, - 0, 0, 1254, 1256, 5, 4, 0, 0, 1255, 1257, 3, 18, 9, 0, 1256, 1255, 1, 0, - 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1272, 1, 0, 0, 0, 1258, 1259, 10, 4, - 0, 0, 1259, 1261, 5, 74, 0, 0, 1260, 1262, 5, 66, 0, 0, 1261, 1260, 1, - 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1269, 1, 0, 0, 0, 1263, 1264, 5, - 98, 0, 0, 1264, 1265, 5, 99, 0, 0, 1265, 1270, 3, 128, 64, 0, 1266, 1270, - 5, 61, 0, 0, 1267, 1270, 5, 129, 0, 0, 1268, 1270, 5, 130, 0, 0, 1269, - 1263, 1, 0, 0, 0, 1269, 1266, 1, 0, 0, 0, 1269, 1267, 1, 0, 0, 0, 1269, - 1268, 1, 0, 0, 0, 1270, 1272, 1, 0, 0, 0, 1271, 1218, 1, 0, 0, 0, 1271, - 1221, 1, 0, 0, 0, 1271, 1224, 1, 0, 0, 0, 1271, 1227, 1, 0, 0, 0, 1271, - 1230, 1, 0, 0, 0, 1271, 1233, 1, 0, 0, 0, 1271, 1236, 1, 0, 0, 0, 1271, - 1242, 1, 0, 0, 0, 1271, 1258, 1, 0, 0, 0, 1272, 1275, 1, 0, 0, 0, 1273, - 1271, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 129, 1, 0, 0, 0, 1275, - 1273, 1, 0, 0, 0, 1276, 1281, 3, 128, 64, 0, 1277, 1278, 5, 9, 0, 0, 1278, - 1280, 3, 128, 64, 0, 1279, 1277, 1, 0, 0, 0, 1280, 1283, 1, 0, 0, 0, 1281, - 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 131, 1, 0, 0, 0, 1283, - 1281, 1, 0, 0, 0, 1284, 1285, 5, 140, 0, 0, 1285, 1286, 3, 16, 8, 0, 1286, - 1287, 5, 6, 0, 0, 1287, 1365, 1, 0, 0, 0, 1288, 1293, 3, 134, 67, 0, 1289, - 1290, 5, 9, 0, 0, 1290, 1292, 3, 134, 67, 0, 1291, 1289, 1, 0, 0, 0, 1292, - 1295, 1, 0, 0, 0, 1293, 1291, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, - 1296, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1296, 1297, 5, 30, 0, 0, 1297, - 1299, 1, 0, 0, 0, 1298, 1288, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, - 1300, 1, 0, 0, 0, 1300, 1301, 3, 136, 68, 0, 1301, 1302, 5, 6, 0, 0, 1302, - 1365, 1, 0, 0, 0, 1303, 1305, 3, 128, 64, 0, 1304, 1306, 3, 16, 8, 0, 1305, - 1304, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, - 1308, 5, 30, 0, 0, 1308, 1309, 3, 128, 64, 0, 1309, 1310, 5, 6, 0, 0, 1310, - 1365, 1, 0, 0, 0, 1311, 1312, 5, 116, 0, 0, 1312, 1313, 5, 140, 0, 0, 1313, - 1317, 5, 72, 0, 0, 1314, 1318, 3, 140, 70, 0, 1315, 1318, 3, 20, 10, 0, - 1316, 1318, 3, 70, 35, 0, 1317, 1314, 1, 0, 0, 0, 1317, 1315, 1, 0, 0, - 0, 1317, 1316, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1323, 5, 1, 0, - 0, 1320, 1322, 3, 132, 66, 0, 1321, 1320, 1, 0, 0, 0, 1322, 1325, 1, 0, - 0, 0, 1323, 1321, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1326, 1, 0, - 0, 0, 1325, 1323, 1, 0, 0, 0, 1326, 1327, 5, 2, 0, 0, 1327, 1365, 1, 0, - 0, 0, 1328, 1329, 5, 117, 0, 0, 1329, 1334, 3, 138, 69, 0, 1330, 1331, - 5, 118, 0, 0, 1331, 1333, 3, 138, 69, 0, 1332, 1330, 1, 0, 0, 0, 1333, - 1336, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, - 1346, 1, 0, 0, 0, 1336, 1334, 1, 0, 0, 0, 1337, 1338, 5, 119, 0, 0, 1338, - 1342, 5, 1, 0, 0, 1339, 1341, 3, 132, 66, 0, 1340, 1339, 1, 0, 0, 0, 1341, - 1344, 1, 0, 0, 0, 1342, 1340, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, - 1345, 1, 0, 0, 0, 1344, 1342, 1, 0, 0, 0, 1345, 1347, 5, 2, 0, 0, 1346, - 1337, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1365, 1, 0, 0, 0, 1348, - 1349, 3, 70, 35, 0, 1349, 1350, 5, 6, 0, 0, 1350, 1365, 1, 0, 0, 0, 1351, - 1352, 5, 120, 0, 0, 1352, 1365, 5, 6, 0, 0, 1353, 1356, 5, 121, 0, 0, 1354, - 1357, 3, 130, 65, 0, 1355, 1357, 3, 70, 35, 0, 1356, 1354, 1, 0, 0, 0, - 1356, 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1358, 1, 0, 0, 0, - 1358, 1365, 5, 6, 0, 0, 1359, 1360, 5, 121, 0, 0, 1360, 1361, 5, 122, 0, - 0, 1361, 1362, 3, 130, 65, 0, 1362, 1363, 5, 6, 0, 0, 1363, 1365, 1, 0, - 0, 0, 1364, 1284, 1, 0, 0, 0, 1364, 1298, 1, 0, 0, 0, 1364, 1303, 1, 0, - 0, 0, 1364, 1311, 1, 0, 0, 0, 1364, 1328, 1, 0, 0, 0, 1364, 1348, 1, 0, - 0, 0, 1364, 1351, 1, 0, 0, 0, 1364, 1353, 1, 0, 0, 0, 1364, 1359, 1, 0, - 0, 0, 1365, 133, 1, 0, 0, 0, 1366, 1367, 7, 14, 0, 0, 1367, 135, 1, 0, - 0, 0, 1368, 1369, 5, 139, 0, 0, 1369, 1371, 5, 7, 0, 0, 1370, 1372, 3, - 130, 65, 0, 1371, 1370, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, - 1, 0, 0, 0, 1373, 1374, 5, 8, 0, 0, 1374, 137, 1, 0, 0, 0, 1375, 1376, - 3, 128, 64, 0, 1376, 1380, 5, 1, 0, 0, 1377, 1379, 3, 132, 66, 0, 1378, - 1377, 1, 0, 0, 0, 1379, 1382, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1380, - 1381, 1, 0, 0, 0, 1381, 1383, 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1383, - 1384, 5, 2, 0, 0, 1384, 139, 1, 0, 0, 0, 1385, 1386, 3, 128, 64, 0, 1386, - 1387, 5, 31, 0, 0, 1387, 1388, 3, 128, 64, 0, 1388, 141, 1, 0, 0, 0, 183, - 145, 163, 167, 175, 181, 188, 197, 201, 213, 221, 223, 237, 240, 260, 265, - 279, 283, 293, 301, 311, 322, 335, 341, 346, 348, 351, 356, 362, 367, 370, - 377, 387, 398, 404, 410, 416, 431, 443, 455, 458, 465, 472, 478, 487, 494, - 500, 503, 511, 521, 528, 535, 538, 548, 557, 560, 563, 577, 583, 587, 594, - 621, 636, 647, 671, 675, 689, 699, 709, 712, 716, 720, 724, 728, 732, 736, - 740, 747, 755, 758, 762, 769, 771, 784, 787, 791, 794, 800, 803, 805, 808, - 817, 820, 825, 828, 833, 836, 844, 852, 855, 859, 869, 872, 878, 891, 895, - 898, 907, 909, 920, 925, 927, 933, 936, 940, 947, 953, 962, 967, 971, 975, - 980, 984, 988, 993, 997, 1002, 1005, 1011, 1015, 1028, 1034, 1054, 1060, - 1064, 1066, 1070, 1077, 1083, 1090, 1098, 1100, 1102, 1109, 1118, 1121, - 1135, 1141, 1145, 1154, 1161, 1167, 1174, 1177, 1182, 1190, 1196, 1200, - 1204, 1208, 1212, 1216, 1240, 1246, 1250, 1252, 1256, 1261, 1269, 1271, - 1273, 1281, 1293, 1298, 1305, 1317, 1323, 1334, 1342, 1346, 1356, 1364, - 1371, 1380, + 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1243, 8, 64, 1, 64, 1, 64, + 1, 64, 1, 64, 3, 64, 1249, 8, 64, 1, 64, 1, 64, 3, 64, 1253, 8, 64, 3, + 64, 1255, 8, 64, 1, 64, 1, 64, 3, 64, 1259, 8, 64, 1, 64, 1, 64, 1, 64, + 3, 64, 1264, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1272, + 8, 64, 5, 64, 1274, 8, 64, 10, 64, 12, 64, 1277, 9, 64, 1, 65, 1, 65, 1, + 65, 5, 65, 1282, 8, 65, 10, 65, 12, 65, 1285, 9, 65, 1, 66, 1, 66, 1, 66, + 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 1294, 8, 66, 10, 66, 12, 66, 1297, 9, + 66, 1, 66, 1, 66, 3, 66, 1301, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, + 3, 66, 1308, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, + 66, 1, 66, 1, 66, 3, 66, 1320, 8, 66, 1, 66, 1, 66, 5, 66, 1324, 8, 66, + 10, 66, 12, 66, 1327, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, + 5, 66, 1335, 8, 66, 10, 66, 12, 66, 1338, 9, 66, 1, 66, 1, 66, 1, 66, 5, + 66, 1343, 8, 66, 10, 66, 12, 66, 1346, 9, 66, 1, 66, 3, 66, 1349, 8, 66, + 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1359, 8, + 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1367, 8, 66, 1, 67, + 1, 67, 1, 68, 1, 68, 1, 68, 3, 68, 1374, 8, 68, 1, 68, 1, 68, 1, 69, 1, + 69, 1, 69, 5, 69, 1381, 8, 69, 10, 69, 12, 69, 1384, 9, 69, 1, 69, 1, 69, + 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 0, 2, 112, 128, 71, 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, 0, 15, + 1, 0, 20, 21, 1, 0, 129, 130, 1, 0, 140, 141, 3, 0, 52, 52, 56, 56, 67, + 67, 1, 0, 64, 65, 1, 0, 62, 63, 1, 0, 38, 41, 1, 0, 83, 84, 1, 0, 110, + 111, 2, 0, 79, 81, 105, 105, 3, 0, 14, 14, 19, 19, 22, 22, 1, 0, 70, 71, + 2, 0, 15, 16, 23, 27, 2, 0, 11, 11, 20, 21, 2, 0, 29, 29, 140, 140, 1588, + 0, 143, 1, 0, 0, 0, 2, 149, 1, 0, 0, 0, 4, 152, 1, 0, 0, 0, 6, 155, 1, + 0, 0, 0, 8, 158, 1, 0, 0, 0, 10, 175, 1, 0, 0, 0, 12, 181, 1, 0, 0, 0, + 14, 183, 1, 0, 0, 0, 16, 191, 1, 0, 0, 0, 18, 203, 1, 0, 0, 0, 20, 206, + 1, 0, 0, 0, 22, 208, 1, 0, 0, 0, 24, 216, 1, 0, 0, 0, 26, 226, 1, 0, 0, + 0, 28, 244, 1, 0, 0, 0, 30, 248, 1, 0, 0, 0, 32, 271, 1, 0, 0, 0, 34, 288, + 1, 0, 0, 0, 36, 296, 1, 0, 0, 0, 38, 304, 1, 0, 0, 0, 40, 311, 1, 0, 0, + 0, 42, 322, 1, 0, 0, 0, 44, 348, 1, 0, 0, 0, 46, 372, 1, 0, 0, 0, 48, 380, + 1, 0, 0, 0, 50, 390, 1, 0, 0, 0, 52, 410, 1, 0, 0, 0, 54, 431, 1, 0, 0, + 0, 56, 433, 1, 0, 0, 0, 58, 445, 1, 0, 0, 0, 60, 460, 1, 0, 0, 0, 62, 465, + 1, 0, 0, 0, 64, 487, 1, 0, 0, 0, 66, 509, 1, 0, 0, 0, 68, 523, 1, 0, 0, + 0, 70, 538, 1, 0, 0, 0, 72, 550, 1, 0, 0, 0, 74, 570, 1, 0, 0, 0, 76, 594, + 1, 0, 0, 0, 78, 621, 1, 0, 0, 0, 80, 623, 1, 0, 0, 0, 82, 671, 1, 0, 0, + 0, 84, 673, 1, 0, 0, 0, 86, 687, 1, 0, 0, 0, 88, 695, 1, 0, 0, 0, 90, 730, + 1, 0, 0, 0, 92, 732, 1, 0, 0, 0, 94, 740, 1, 0, 0, 0, 96, 807, 1, 0, 0, + 0, 98, 810, 1, 0, 0, 0, 100, 830, 1, 0, 0, 0, 102, 832, 1, 0, 0, 0, 104, + 863, 1, 0, 0, 0, 106, 867, 1, 0, 0, 0, 108, 902, 1, 0, 0, 0, 110, 931, + 1, 0, 0, 0, 112, 1017, 1, 0, 0, 0, 114, 1107, 1, 0, 0, 0, 116, 1127, 1, + 0, 0, 0, 118, 1132, 1, 0, 0, 0, 120, 1140, 1, 0, 0, 0, 122, 1156, 1, 0, + 0, 0, 124, 1179, 1, 0, 0, 0, 126, 1184, 1, 0, 0, 0, 128, 1218, 1, 0, 0, + 0, 130, 1278, 1, 0, 0, 0, 132, 1366, 1, 0, 0, 0, 134, 1368, 1, 0, 0, 0, + 136, 1370, 1, 0, 0, 0, 138, 1377, 1, 0, 0, 0, 140, 1387, 1, 0, 0, 0, 142, + 144, 3, 68, 34, 0, 143, 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 143, + 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 148, 5, 0, + 0, 1, 148, 1, 1, 0, 0, 0, 149, 150, 3, 24, 12, 0, 150, 151, 5, 0, 0, 1, + 151, 3, 1, 0, 0, 0, 152, 153, 3, 68, 34, 0, 153, 154, 5, 0, 0, 1, 154, + 5, 1, 0, 0, 0, 155, 156, 3, 122, 61, 0, 156, 157, 5, 0, 0, 1, 157, 7, 1, + 0, 0, 0, 158, 159, 3, 126, 63, 0, 159, 160, 5, 0, 0, 1, 160, 9, 1, 0, 0, + 0, 161, 176, 5, 128, 0, 0, 162, 164, 7, 0, 0, 0, 163, 162, 1, 0, 0, 0, + 163, 164, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 176, 5, 131, 0, 0, 166, + 168, 7, 0, 0, 0, 167, 166, 1, 0, 0, 0, 167, 168, 1, 0, 0, 0, 168, 169, + 1, 0, 0, 0, 169, 170, 5, 131, 0, 0, 170, 171, 5, 12, 0, 0, 171, 176, 5, + 131, 0, 0, 172, 176, 7, 1, 0, 0, 173, 176, 5, 61, 0, 0, 174, 176, 5, 132, + 0, 0, 175, 161, 1, 0, 0, 0, 175, 163, 1, 0, 0, 0, 175, 167, 1, 0, 0, 0, + 175, 172, 1, 0, 0, 0, 175, 173, 1, 0, 0, 0, 175, 174, 1, 0, 0, 0, 176, + 11, 1, 0, 0, 0, 177, 178, 5, 32, 0, 0, 178, 179, 5, 139, 0, 0, 179, 182, + 5, 32, 0, 0, 180, 182, 5, 139, 0, 0, 181, 177, 1, 0, 0, 0, 181, 180, 1, + 0, 0, 0, 182, 13, 1, 0, 0, 0, 183, 188, 3, 12, 6, 0, 184, 185, 5, 9, 0, + 0, 185, 187, 3, 12, 6, 0, 186, 184, 1, 0, 0, 0, 187, 190, 1, 0, 0, 0, 188, + 186, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 15, 1, 0, 0, 0, 190, 188, 1, + 0, 0, 0, 191, 197, 5, 139, 0, 0, 192, 193, 5, 7, 0, 0, 193, 194, 5, 131, + 0, 0, 194, 195, 5, 9, 0, 0, 195, 196, 5, 131, 0, 0, 196, 198, 5, 8, 0, + 0, 197, 192, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 201, 1, 0, 0, 0, 199, + 200, 5, 3, 0, 0, 200, 202, 5, 4, 0, 0, 201, 199, 1, 0, 0, 0, 201, 202, + 1, 0, 0, 0, 202, 17, 1, 0, 0, 0, 203, 204, 5, 28, 0, 0, 204, 205, 3, 16, + 8, 0, 205, 19, 1, 0, 0, 0, 206, 207, 7, 2, 0, 0, 207, 21, 1, 0, 0, 0, 208, + 213, 3, 20, 10, 0, 209, 210, 5, 9, 0, 0, 210, 212, 3, 20, 10, 0, 211, 209, + 1, 0, 0, 0, 212, 215, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, + 0, 0, 214, 23, 1, 0, 0, 0, 215, 213, 1, 0, 0, 0, 216, 223, 3, 28, 14, 0, + 217, 222, 3, 30, 15, 0, 218, 222, 3, 32, 16, 0, 219, 222, 3, 62, 31, 0, + 220, 222, 3, 64, 32, 0, 221, 217, 1, 0, 0, 0, 221, 218, 1, 0, 0, 0, 221, + 219, 1, 0, 0, 0, 221, 220, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, + 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 25, 1, 0, 0, 0, 225, 223, 1, 0, + 0, 0, 226, 227, 5, 141, 0, 0, 227, 240, 5, 7, 0, 0, 228, 229, 5, 139, 0, + 0, 229, 230, 5, 15, 0, 0, 230, 237, 3, 10, 5, 0, 231, 232, 5, 9, 0, 0, + 232, 233, 5, 139, 0, 0, 233, 234, 5, 15, 0, 0, 234, 236, 3, 10, 5, 0, 235, + 231, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, + 1, 0, 0, 0, 238, 241, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 228, 1, 0, + 0, 0, 240, 241, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 243, 5, 8, 0, 0, + 243, 27, 1, 0, 0, 0, 244, 245, 5, 33, 0, 0, 245, 246, 5, 139, 0, 0, 246, + 247, 5, 6, 0, 0, 247, 29, 1, 0, 0, 0, 248, 249, 5, 34, 0, 0, 249, 265, + 5, 139, 0, 0, 250, 251, 5, 1, 0, 0, 251, 252, 5, 139, 0, 0, 252, 253, 5, + 5, 0, 0, 253, 260, 3, 10, 5, 0, 254, 255, 5, 9, 0, 0, 255, 256, 5, 139, + 0, 0, 256, 257, 5, 5, 0, 0, 257, 259, 3, 10, 5, 0, 258, 254, 1, 0, 0, 0, + 259, 262, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, + 263, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 264, 5, 2, 0, 0, 264, 266, + 1, 0, 0, 0, 265, 250, 1, 0, 0, 0, 265, 266, 1, 0, 0, 0, 266, 267, 1, 0, + 0, 0, 267, 268, 5, 82, 0, 0, 268, 269, 5, 139, 0, 0, 269, 270, 5, 6, 0, + 0, 270, 31, 1, 0, 0, 0, 271, 272, 5, 35, 0, 0, 272, 273, 5, 139, 0, 0, + 273, 274, 5, 1, 0, 0, 274, 283, 3, 34, 17, 0, 275, 279, 5, 9, 0, 0, 276, + 280, 3, 34, 17, 0, 277, 280, 3, 38, 19, 0, 278, 280, 3, 42, 21, 0, 279, + 276, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 278, 1, 0, 0, 0, 280, 282, + 1, 0, 0, 0, 281, 275, 1, 0, 0, 0, 282, 285, 1, 0, 0, 0, 283, 281, 1, 0, + 0, 0, 283, 284, 1, 0, 0, 0, 284, 286, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, + 286, 287, 5, 2, 0, 0, 287, 33, 1, 0, 0, 0, 288, 289, 5, 139, 0, 0, 289, + 293, 3, 16, 8, 0, 290, 292, 3, 52, 26, 0, 291, 290, 1, 0, 0, 0, 292, 295, + 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 35, 1, 0, + 0, 0, 295, 293, 1, 0, 0, 0, 296, 297, 5, 139, 0, 0, 297, 301, 3, 16, 8, + 0, 298, 300, 3, 54, 27, 0, 299, 298, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, + 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 37, 1, 0, 0, 0, 303, 301, + 1, 0, 0, 0, 304, 305, 5, 142, 0, 0, 305, 306, 7, 3, 0, 0, 306, 307, 5, + 7, 0, 0, 307, 308, 3, 14, 7, 0, 308, 309, 5, 8, 0, 0, 309, 39, 1, 0, 0, + 0, 310, 312, 5, 56, 0, 0, 311, 310, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, + 313, 1, 0, 0, 0, 313, 314, 5, 67, 0, 0, 314, 315, 3, 12, 6, 0, 315, 316, + 5, 7, 0, 0, 316, 317, 3, 14, 7, 0, 317, 318, 5, 8, 0, 0, 318, 41, 1, 0, + 0, 0, 319, 320, 5, 51, 0, 0, 320, 323, 5, 53, 0, 0, 321, 323, 5, 133, 0, + 0, 322, 319, 1, 0, 0, 0, 322, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, + 325, 5, 7, 0, 0, 325, 326, 3, 14, 7, 0, 326, 327, 5, 8, 0, 0, 327, 328, + 7, 4, 0, 0, 328, 329, 5, 139, 0, 0, 329, 330, 5, 7, 0, 0, 330, 331, 3, + 14, 7, 0, 331, 335, 5, 8, 0, 0, 332, 334, 3, 44, 22, 0, 333, 332, 1, 0, + 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 335, 336, 1, 0, 0, 0, + 336, 43, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 338, 339, 5, 54, 0, 0, 339, + 342, 5, 63, 0, 0, 340, 342, 5, 134, 0, 0, 341, 338, 1, 0, 0, 0, 341, 340, + 1, 0, 0, 0, 342, 349, 1, 0, 0, 0, 343, 344, 5, 54, 0, 0, 344, 347, 5, 62, + 0, 0, 345, 347, 5, 135, 0, 0, 346, 343, 1, 0, 0, 0, 346, 345, 1, 0, 0, + 0, 347, 349, 1, 0, 0, 0, 348, 341, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 349, + 351, 1, 0, 0, 0, 350, 352, 5, 55, 0, 0, 351, 350, 1, 0, 0, 0, 351, 352, + 1, 0, 0, 0, 352, 370, 1, 0, 0, 0, 353, 354, 5, 92, 0, 0, 354, 357, 5, 36, + 0, 0, 355, 357, 5, 138, 0, 0, 356, 353, 1, 0, 0, 0, 356, 355, 1, 0, 0, + 0, 357, 371, 1, 0, 0, 0, 358, 371, 5, 57, 0, 0, 359, 360, 5, 59, 0, 0, + 360, 363, 5, 61, 0, 0, 361, 363, 5, 137, 0, 0, 362, 359, 1, 0, 0, 0, 362, + 361, 1, 0, 0, 0, 363, 371, 1, 0, 0, 0, 364, 365, 5, 59, 0, 0, 365, 368, + 5, 60, 0, 0, 366, 368, 5, 136, 0, 0, 367, 364, 1, 0, 0, 0, 367, 366, 1, + 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 371, 5, 58, 0, 0, 370, 356, 1, 0, 0, + 0, 370, 358, 1, 0, 0, 0, 370, 362, 1, 0, 0, 0, 370, 367, 1, 0, 0, 0, 370, + 369, 1, 0, 0, 0, 371, 45, 1, 0, 0, 0, 372, 377, 3, 16, 8, 0, 373, 374, + 5, 9, 0, 0, 374, 376, 3, 16, 8, 0, 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, + 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 47, 1, 0, 0, 0, + 379, 377, 1, 0, 0, 0, 380, 381, 5, 139, 0, 0, 381, 387, 3, 16, 8, 0, 382, + 383, 5, 9, 0, 0, 383, 384, 5, 139, 0, 0, 384, 386, 3, 16, 8, 0, 385, 382, + 1, 0, 0, 0, 386, 389, 1, 0, 0, 0, 387, 385, 1, 0, 0, 0, 387, 388, 1, 0, + 0, 0, 388, 49, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 390, 391, 3, 20, 10, 0, + 391, 398, 3, 16, 8, 0, 392, 393, 5, 9, 0, 0, 393, 394, 3, 20, 10, 0, 394, + 395, 3, 16, 8, 0, 395, 397, 1, 0, 0, 0, 396, 392, 1, 0, 0, 0, 397, 400, + 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 51, 1, 0, + 0, 0, 400, 398, 1, 0, 0, 0, 401, 411, 5, 139, 0, 0, 402, 404, 5, 52, 0, + 0, 403, 405, 5, 53, 0, 0, 404, 403, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, + 411, 1, 0, 0, 0, 406, 407, 5, 66, 0, 0, 407, 411, 5, 61, 0, 0, 408, 411, + 5, 60, 0, 0, 409, 411, 5, 56, 0, 0, 410, 401, 1, 0, 0, 0, 410, 402, 1, + 0, 0, 0, 410, 406, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 409, 1, 0, 0, + 0, 411, 416, 1, 0, 0, 0, 412, 413, 5, 7, 0, 0, 413, 414, 3, 10, 5, 0, 414, + 415, 5, 8, 0, 0, 415, 417, 1, 0, 0, 0, 416, 412, 1, 0, 0, 0, 416, 417, + 1, 0, 0, 0, 417, 53, 1, 0, 0, 0, 418, 419, 5, 52, 0, 0, 419, 432, 5, 53, + 0, 0, 420, 432, 5, 56, 0, 0, 421, 422, 5, 66, 0, 0, 422, 432, 5, 61, 0, + 0, 423, 424, 5, 60, 0, 0, 424, 432, 3, 10, 5, 0, 425, 432, 3, 58, 29, 0, + 426, 427, 5, 50, 0, 0, 427, 428, 5, 7, 0, 0, 428, 429, 3, 112, 56, 0, 429, + 430, 5, 8, 0, 0, 430, 432, 1, 0, 0, 0, 431, 418, 1, 0, 0, 0, 431, 420, + 1, 0, 0, 0, 431, 421, 1, 0, 0, 0, 431, 423, 1, 0, 0, 0, 431, 425, 1, 0, + 0, 0, 431, 426, 1, 0, 0, 0, 432, 55, 1, 0, 0, 0, 433, 434, 5, 54, 0, 0, + 434, 443, 7, 5, 0, 0, 435, 436, 5, 59, 0, 0, 436, 444, 5, 61, 0, 0, 437, + 438, 5, 59, 0, 0, 438, 444, 5, 60, 0, 0, 439, 444, 5, 58, 0, 0, 440, 441, + 5, 92, 0, 0, 441, 444, 5, 36, 0, 0, 442, 444, 5, 57, 0, 0, 443, 435, 1, + 0, 0, 0, 443, 437, 1, 0, 0, 0, 443, 439, 1, 0, 0, 0, 443, 440, 1, 0, 0, + 0, 443, 442, 1, 0, 0, 0, 444, 57, 1, 0, 0, 0, 445, 446, 5, 64, 0, 0, 446, + 447, 3, 12, 6, 0, 447, 448, 5, 7, 0, 0, 448, 449, 3, 12, 6, 0, 449, 450, + 5, 8, 0, 0, 450, 458, 1, 0, 0, 0, 451, 455, 3, 56, 28, 0, 452, 454, 3, + 56, 28, 0, 453, 452, 1, 0, 0, 0, 454, 457, 1, 0, 0, 0, 455, 453, 1, 0, + 0, 0, 455, 456, 1, 0, 0, 0, 456, 459, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, + 458, 451, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 59, 1, 0, 0, 0, 460, 461, + 7, 6, 0, 0, 461, 61, 1, 0, 0, 0, 462, 464, 3, 26, 13, 0, 463, 462, 1, 0, + 0, 0, 464, 467, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, + 466, 468, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 468, 469, 5, 36, 0, 0, 469, + 470, 5, 139, 0, 0, 470, 472, 5, 7, 0, 0, 471, 473, 3, 22, 11, 0, 472, 471, + 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 476, 5, 8, + 0, 0, 475, 477, 3, 60, 30, 0, 476, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, + 0, 478, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, + 481, 5, 1, 0, 0, 481, 482, 3, 122, 61, 0, 482, 483, 5, 2, 0, 0, 483, 63, + 1, 0, 0, 0, 484, 486, 3, 26, 13, 0, 485, 484, 1, 0, 0, 0, 486, 489, 1, + 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 490, 1, 0, 0, + 0, 489, 487, 1, 0, 0, 0, 490, 491, 5, 37, 0, 0, 491, 492, 5, 139, 0, 0, + 492, 494, 5, 7, 0, 0, 493, 495, 3, 50, 25, 0, 494, 493, 1, 0, 0, 0, 494, + 495, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 5, 8, 0, 0, 497, 499, + 3, 60, 30, 0, 498, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 498, 1, + 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 503, 1, 0, 0, 0, 502, 504, 3, 66, 33, + 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, + 506, 5, 1, 0, 0, 506, 507, 3, 126, 63, 0, 507, 508, 5, 2, 0, 0, 508, 65, + 1, 0, 0, 0, 509, 521, 5, 91, 0, 0, 510, 512, 5, 35, 0, 0, 511, 510, 1, + 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 514, 5, 7, 0, + 0, 514, 515, 3, 48, 24, 0, 515, 516, 5, 8, 0, 0, 516, 522, 1, 0, 0, 0, + 517, 518, 5, 7, 0, 0, 518, 519, 3, 46, 23, 0, 519, 520, 5, 8, 0, 0, 520, + 522, 1, 0, 0, 0, 521, 511, 1, 0, 0, 0, 521, 517, 1, 0, 0, 0, 522, 67, 1, + 0, 0, 0, 523, 524, 3, 70, 35, 0, 524, 525, 5, 6, 0, 0, 525, 69, 1, 0, 0, + 0, 526, 528, 5, 93, 0, 0, 527, 529, 5, 127, 0, 0, 528, 527, 1, 0, 0, 0, + 528, 529, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 535, 3, 72, 36, 0, 531, + 532, 5, 9, 0, 0, 532, 534, 3, 72, 36, 0, 533, 531, 1, 0, 0, 0, 534, 537, + 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 539, 1, 0, + 0, 0, 537, 535, 1, 0, 0, 0, 538, 526, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, + 539, 548, 1, 0, 0, 0, 540, 549, 3, 74, 37, 0, 541, 549, 3, 80, 40, 0, 542, + 549, 3, 84, 42, 0, 543, 549, 3, 86, 43, 0, 544, 549, 3, 88, 44, 0, 545, + 549, 3, 102, 51, 0, 546, 549, 3, 106, 53, 0, 547, 549, 3, 110, 55, 0, 548, + 540, 1, 0, 0, 0, 548, 541, 1, 0, 0, 0, 548, 542, 1, 0, 0, 0, 548, 543, + 1, 0, 0, 0, 548, 544, 1, 0, 0, 0, 548, 545, 1, 0, 0, 0, 548, 546, 1, 0, + 0, 0, 548, 547, 1, 0, 0, 0, 549, 71, 1, 0, 0, 0, 550, 563, 3, 12, 6, 0, + 551, 560, 5, 7, 0, 0, 552, 557, 3, 12, 6, 0, 553, 554, 5, 9, 0, 0, 554, + 556, 3, 12, 6, 0, 555, 553, 1, 0, 0, 0, 556, 559, 1, 0, 0, 0, 557, 555, + 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 561, 1, 0, 0, 0, 559, 557, 1, 0, + 0, 0, 560, 552, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, + 562, 564, 5, 8, 0, 0, 563, 551, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, + 565, 1, 0, 0, 0, 565, 566, 5, 82, 0, 0, 566, 567, 5, 7, 0, 0, 567, 568, + 3, 88, 44, 0, 568, 569, 5, 8, 0, 0, 569, 73, 1, 0, 0, 0, 570, 571, 5, 42, + 0, 0, 571, 572, 5, 35, 0, 0, 572, 573, 3, 12, 6, 0, 573, 577, 5, 7, 0, + 0, 574, 578, 3, 36, 18, 0, 575, 578, 3, 76, 38, 0, 576, 578, 3, 40, 20, + 0, 577, 574, 1, 0, 0, 0, 577, 575, 1, 0, 0, 0, 577, 576, 1, 0, 0, 0, 578, + 587, 1, 0, 0, 0, 579, 583, 5, 9, 0, 0, 580, 584, 3, 36, 18, 0, 581, 584, + 3, 76, 38, 0, 582, 584, 3, 40, 20, 0, 583, 580, 1, 0, 0, 0, 583, 581, 1, + 0, 0, 0, 583, 582, 1, 0, 0, 0, 584, 586, 1, 0, 0, 0, 585, 579, 1, 0, 0, + 0, 586, 589, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, + 590, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 590, 591, 5, 8, 0, 0, 591, 75, 1, + 0, 0, 0, 592, 593, 5, 49, 0, 0, 593, 595, 3, 12, 6, 0, 594, 592, 1, 0, + 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 597, 3, 78, 39, + 0, 597, 77, 1, 0, 0, 0, 598, 599, 5, 52, 0, 0, 599, 600, 5, 53, 0, 0, 600, + 601, 5, 7, 0, 0, 601, 602, 3, 14, 7, 0, 602, 603, 5, 8, 0, 0, 603, 622, + 1, 0, 0, 0, 604, 605, 5, 56, 0, 0, 605, 606, 5, 7, 0, 0, 606, 607, 3, 14, + 7, 0, 607, 608, 5, 8, 0, 0, 608, 622, 1, 0, 0, 0, 609, 610, 5, 50, 0, 0, + 610, 611, 5, 7, 0, 0, 611, 612, 3, 112, 56, 0, 612, 613, 5, 8, 0, 0, 613, + 622, 1, 0, 0, 0, 614, 615, 5, 51, 0, 0, 615, 616, 5, 53, 0, 0, 616, 617, + 5, 7, 0, 0, 617, 618, 3, 12, 6, 0, 618, 619, 5, 8, 0, 0, 619, 620, 3, 58, + 29, 0, 620, 622, 1, 0, 0, 0, 621, 598, 1, 0, 0, 0, 621, 604, 1, 0, 0, 0, + 621, 609, 1, 0, 0, 0, 621, 614, 1, 0, 0, 0, 622, 79, 1, 0, 0, 0, 623, 624, + 5, 43, 0, 0, 624, 625, 5, 35, 0, 0, 625, 626, 3, 12, 6, 0, 626, 627, 3, + 82, 41, 0, 627, 81, 1, 0, 0, 0, 628, 629, 5, 43, 0, 0, 629, 630, 5, 44, + 0, 0, 630, 631, 3, 12, 6, 0, 631, 636, 5, 59, 0, 0, 632, 633, 5, 66, 0, + 0, 633, 637, 5, 61, 0, 0, 634, 635, 5, 60, 0, 0, 635, 637, 3, 10, 5, 0, + 636, 632, 1, 0, 0, 0, 636, 634, 1, 0, 0, 0, 637, 672, 1, 0, 0, 0, 638, + 639, 5, 43, 0, 0, 639, 640, 5, 44, 0, 0, 640, 641, 3, 12, 6, 0, 641, 647, + 5, 46, 0, 0, 642, 643, 5, 66, 0, 0, 643, 648, 5, 61, 0, 0, 644, 648, 5, + 60, 0, 0, 645, 646, 5, 49, 0, 0, 646, 648, 3, 12, 6, 0, 647, 642, 1, 0, + 0, 0, 647, 644, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, 672, 1, 0, 0, 0, + 649, 650, 5, 45, 0, 0, 650, 651, 5, 44, 0, 0, 651, 652, 3, 12, 6, 0, 652, + 653, 3, 16, 8, 0, 653, 672, 1, 0, 0, 0, 654, 655, 5, 46, 0, 0, 655, 656, + 5, 44, 0, 0, 656, 672, 3, 12, 6, 0, 657, 658, 5, 47, 0, 0, 658, 659, 5, + 44, 0, 0, 659, 660, 3, 12, 6, 0, 660, 661, 5, 48, 0, 0, 661, 662, 3, 12, + 6, 0, 662, 672, 1, 0, 0, 0, 663, 664, 5, 47, 0, 0, 664, 665, 5, 48, 0, + 0, 665, 672, 3, 12, 6, 0, 666, 667, 5, 45, 0, 0, 667, 672, 3, 76, 38, 0, + 668, 669, 5, 46, 0, 0, 669, 670, 5, 49, 0, 0, 670, 672, 3, 12, 6, 0, 671, + 628, 1, 0, 0, 0, 671, 638, 1, 0, 0, 0, 671, 649, 1, 0, 0, 0, 671, 654, + 1, 0, 0, 0, 671, 657, 1, 0, 0, 0, 671, 663, 1, 0, 0, 0, 671, 666, 1, 0, + 0, 0, 671, 668, 1, 0, 0, 0, 672, 83, 1, 0, 0, 0, 673, 675, 5, 42, 0, 0, + 674, 676, 5, 56, 0, 0, 675, 674, 1, 0, 0, 0, 675, 676, 1, 0, 0, 0, 676, + 677, 1, 0, 0, 0, 677, 679, 5, 67, 0, 0, 678, 680, 3, 12, 6, 0, 679, 678, + 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 682, 5, 54, + 0, 0, 682, 683, 3, 12, 6, 0, 683, 684, 5, 7, 0, 0, 684, 685, 3, 14, 7, + 0, 685, 686, 5, 8, 0, 0, 686, 85, 1, 0, 0, 0, 687, 688, 5, 46, 0, 0, 688, + 691, 5, 67, 0, 0, 689, 690, 5, 117, 0, 0, 690, 692, 5, 75, 0, 0, 691, 689, + 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 3, 12, + 6, 0, 694, 87, 1, 0, 0, 0, 695, 701, 3, 94, 47, 0, 696, 697, 3, 90, 45, + 0, 697, 698, 3, 94, 47, 0, 698, 700, 1, 0, 0, 0, 699, 696, 1, 0, 0, 0, + 700, 703, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 701, 702, 1, 0, 0, 0, 702, + 714, 1, 0, 0, 0, 703, 701, 1, 0, 0, 0, 704, 705, 5, 87, 0, 0, 705, 706, + 5, 88, 0, 0, 706, 711, 3, 92, 46, 0, 707, 708, 5, 9, 0, 0, 708, 710, 3, + 92, 46, 0, 709, 707, 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, 711, 709, 1, 0, + 0, 0, 711, 712, 1, 0, 0, 0, 712, 715, 1, 0, 0, 0, 713, 711, 1, 0, 0, 0, + 714, 704, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 718, 1, 0, 0, 0, 716, + 717, 5, 85, 0, 0, 717, 719, 3, 112, 56, 0, 718, 716, 1, 0, 0, 0, 718, 719, + 1, 0, 0, 0, 719, 722, 1, 0, 0, 0, 720, 721, 5, 86, 0, 0, 721, 723, 3, 112, + 56, 0, 722, 720, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 89, 1, 0, 0, 0, + 724, 726, 5, 106, 0, 0, 725, 727, 5, 76, 0, 0, 726, 725, 1, 0, 0, 0, 726, + 727, 1, 0, 0, 0, 727, 731, 1, 0, 0, 0, 728, 731, 5, 107, 0, 0, 729, 731, + 5, 108, 0, 0, 730, 724, 1, 0, 0, 0, 730, 728, 1, 0, 0, 0, 730, 729, 1, + 0, 0, 0, 731, 91, 1, 0, 0, 0, 732, 734, 3, 112, 56, 0, 733, 735, 7, 7, + 0, 0, 734, 733, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 738, 1, 0, 0, 0, + 736, 737, 5, 109, 0, 0, 737, 739, 7, 8, 0, 0, 738, 736, 1, 0, 0, 0, 738, + 739, 1, 0, 0, 0, 739, 93, 1, 0, 0, 0, 740, 742, 5, 102, 0, 0, 741, 743, + 5, 98, 0, 0, 742, 741, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 1, 0, + 0, 0, 744, 749, 3, 100, 50, 0, 745, 746, 5, 9, 0, 0, 746, 748, 3, 100, + 50, 0, 747, 745, 1, 0, 0, 0, 748, 751, 1, 0, 0, 0, 749, 747, 1, 0, 0, 0, + 749, 750, 1, 0, 0, 0, 750, 760, 1, 0, 0, 0, 751, 749, 1, 0, 0, 0, 752, + 753, 5, 99, 0, 0, 753, 757, 3, 96, 48, 0, 754, 756, 3, 98, 49, 0, 755, + 754, 1, 0, 0, 0, 756, 759, 1, 0, 0, 0, 757, 755, 1, 0, 0, 0, 757, 758, + 1, 0, 0, 0, 758, 761, 1, 0, 0, 0, 759, 757, 1, 0, 0, 0, 760, 752, 1, 0, + 0, 0, 760, 761, 1, 0, 0, 0, 761, 764, 1, 0, 0, 0, 762, 763, 5, 100, 0, + 0, 763, 765, 3, 112, 56, 0, 764, 762, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, + 765, 773, 1, 0, 0, 0, 766, 767, 5, 89, 0, 0, 767, 768, 5, 88, 0, 0, 768, + 771, 3, 118, 59, 0, 769, 770, 5, 90, 0, 0, 770, 772, 3, 112, 56, 0, 771, + 769, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 774, 1, 0, 0, 0, 773, 766, + 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 789, 1, 0, 0, 0, 775, 776, 5, 125, + 0, 0, 776, 777, 3, 12, 6, 0, 777, 778, 5, 82, 0, 0, 778, 786, 3, 114, 57, + 0, 779, 780, 5, 9, 0, 0, 780, 781, 3, 12, 6, 0, 781, 782, 5, 82, 0, 0, + 782, 783, 3, 114, 57, 0, 783, 785, 1, 0, 0, 0, 784, 779, 1, 0, 0, 0, 785, + 788, 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 790, + 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 789, 775, 1, 0, 0, 0, 789, 790, 1, 0, + 0, 0, 790, 95, 1, 0, 0, 0, 791, 796, 3, 12, 6, 0, 792, 794, 5, 82, 0, 0, + 793, 792, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, + 797, 3, 12, 6, 0, 796, 793, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 808, + 1, 0, 0, 0, 798, 799, 5, 7, 0, 0, 799, 800, 3, 88, 44, 0, 800, 805, 5, + 8, 0, 0, 801, 803, 5, 82, 0, 0, 802, 801, 1, 0, 0, 0, 802, 803, 1, 0, 0, + 0, 803, 804, 1, 0, 0, 0, 804, 806, 3, 12, 6, 0, 805, 802, 1, 0, 0, 0, 805, + 806, 1, 0, 0, 0, 806, 808, 1, 0, 0, 0, 807, 791, 1, 0, 0, 0, 807, 798, + 1, 0, 0, 0, 808, 97, 1, 0, 0, 0, 809, 811, 7, 9, 0, 0, 810, 809, 1, 0, + 0, 0, 810, 811, 1, 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 813, 5, 78, 0, 0, + 813, 814, 3, 96, 48, 0, 814, 815, 5, 54, 0, 0, 815, 816, 3, 112, 56, 0, + 816, 99, 1, 0, 0, 0, 817, 822, 3, 112, 56, 0, 818, 820, 5, 82, 0, 0, 819, + 818, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 823, + 3, 12, 6, 0, 822, 819, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 831, 1, 0, + 0, 0, 824, 825, 3, 12, 6, 0, 825, 826, 5, 12, 0, 0, 826, 828, 1, 0, 0, + 0, 827, 824, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, + 831, 5, 14, 0, 0, 830, 817, 1, 0, 0, 0, 830, 827, 1, 0, 0, 0, 831, 101, + 1, 0, 0, 0, 832, 833, 5, 63, 0, 0, 833, 838, 3, 12, 6, 0, 834, 836, 5, + 82, 0, 0, 835, 834, 1, 0, 0, 0, 835, 836, 1, 0, 0, 0, 836, 837, 1, 0, 0, + 0, 837, 839, 3, 12, 6, 0, 838, 835, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, + 840, 1, 0, 0, 0, 840, 841, 5, 59, 0, 0, 841, 846, 3, 104, 52, 0, 842, 843, + 5, 9, 0, 0, 843, 845, 3, 104, 52, 0, 844, 842, 1, 0, 0, 0, 845, 848, 1, + 0, 0, 0, 846, 844, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 857, 1, 0, 0, + 0, 848, 846, 1, 0, 0, 0, 849, 850, 5, 99, 0, 0, 850, 854, 3, 96, 48, 0, + 851, 853, 3, 98, 49, 0, 852, 851, 1, 0, 0, 0, 853, 856, 1, 0, 0, 0, 854, + 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, 856, 854, + 1, 0, 0, 0, 857, 849, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 861, 1, 0, + 0, 0, 859, 860, 5, 100, 0, 0, 860, 862, 3, 112, 56, 0, 861, 859, 1, 0, + 0, 0, 861, 862, 1, 0, 0, 0, 862, 103, 1, 0, 0, 0, 863, 864, 3, 12, 6, 0, + 864, 865, 5, 15, 0, 0, 865, 866, 3, 112, 56, 0, 866, 105, 1, 0, 0, 0, 867, + 868, 5, 103, 0, 0, 868, 869, 5, 113, 0, 0, 869, 874, 3, 12, 6, 0, 870, + 872, 5, 82, 0, 0, 871, 870, 1, 0, 0, 0, 871, 872, 1, 0, 0, 0, 872, 873, + 1, 0, 0, 0, 873, 875, 3, 12, 6, 0, 874, 871, 1, 0, 0, 0, 874, 875, 1, 0, + 0, 0, 875, 880, 1, 0, 0, 0, 876, 877, 5, 7, 0, 0, 877, 878, 3, 14, 7, 0, + 878, 879, 5, 8, 0, 0, 879, 881, 1, 0, 0, 0, 880, 876, 1, 0, 0, 0, 880, + 881, 1, 0, 0, 0, 881, 897, 1, 0, 0, 0, 882, 883, 5, 104, 0, 0, 883, 884, + 5, 7, 0, 0, 884, 885, 3, 118, 59, 0, 885, 893, 5, 8, 0, 0, 886, 887, 5, + 9, 0, 0, 887, 888, 5, 7, 0, 0, 888, 889, 3, 118, 59, 0, 889, 890, 5, 8, + 0, 0, 890, 892, 1, 0, 0, 0, 891, 886, 1, 0, 0, 0, 892, 895, 1, 0, 0, 0, + 893, 891, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 898, 1, 0, 0, 0, 895, + 893, 1, 0, 0, 0, 896, 898, 3, 88, 44, 0, 897, 882, 1, 0, 0, 0, 897, 896, + 1, 0, 0, 0, 898, 900, 1, 0, 0, 0, 899, 901, 3, 108, 54, 0, 900, 899, 1, + 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 107, 1, 0, 0, 0, 902, 903, 5, 54, 0, + 0, 903, 911, 5, 114, 0, 0, 904, 905, 5, 7, 0, 0, 905, 906, 3, 14, 7, 0, + 906, 909, 5, 8, 0, 0, 907, 908, 5, 100, 0, 0, 908, 910, 3, 112, 56, 0, + 909, 907, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 912, 1, 0, 0, 0, 911, + 904, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 929, + 5, 55, 0, 0, 914, 930, 5, 115, 0, 0, 915, 916, 5, 63, 0, 0, 916, 917, 5, + 59, 0, 0, 917, 922, 3, 104, 52, 0, 918, 919, 5, 9, 0, 0, 919, 921, 3, 104, + 52, 0, 920, 918, 1, 0, 0, 0, 921, 924, 1, 0, 0, 0, 922, 920, 1, 0, 0, 0, + 922, 923, 1, 0, 0, 0, 923, 927, 1, 0, 0, 0, 924, 922, 1, 0, 0, 0, 925, + 926, 5, 100, 0, 0, 926, 928, 3, 112, 56, 0, 927, 925, 1, 0, 0, 0, 927, + 928, 1, 0, 0, 0, 928, 930, 1, 0, 0, 0, 929, 914, 1, 0, 0, 0, 929, 915, + 1, 0, 0, 0, 930, 109, 1, 0, 0, 0, 931, 932, 5, 62, 0, 0, 932, 933, 5, 99, + 0, 0, 933, 938, 3, 12, 6, 0, 934, 936, 5, 82, 0, 0, 935, 934, 1, 0, 0, + 0, 935, 936, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 939, 3, 12, 6, 0, 938, + 935, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0, 939, 942, 1, 0, 0, 0, 940, 941, + 5, 100, 0, 0, 941, 943, 3, 112, 56, 0, 942, 940, 1, 0, 0, 0, 942, 943, + 1, 0, 0, 0, 943, 111, 1, 0, 0, 0, 944, 945, 6, 56, -1, 0, 945, 946, 5, + 7, 0, 0, 946, 947, 3, 112, 56, 0, 947, 949, 5, 8, 0, 0, 948, 950, 3, 18, + 9, 0, 949, 948, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 1018, 1, 0, 0, 0, + 951, 952, 7, 0, 0, 0, 952, 1018, 3, 112, 56, 20, 953, 955, 3, 10, 5, 0, + 954, 956, 3, 18, 9, 0, 955, 954, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956, + 1018, 1, 0, 0, 0, 957, 964, 3, 120, 60, 0, 958, 959, 5, 126, 0, 0, 959, + 960, 5, 7, 0, 0, 960, 961, 5, 100, 0, 0, 961, 962, 3, 112, 56, 0, 962, + 963, 5, 8, 0, 0, 963, 965, 1, 0, 0, 0, 964, 958, 1, 0, 0, 0, 964, 965, + 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 969, 5, 123, 0, 0, 967, 970, 3, + 114, 57, 0, 968, 970, 5, 139, 0, 0, 969, 967, 1, 0, 0, 0, 969, 968, 1, + 0, 0, 0, 970, 1018, 1, 0, 0, 0, 971, 973, 3, 120, 60, 0, 972, 974, 3, 18, + 9, 0, 973, 972, 1, 0, 0, 0, 973, 974, 1, 0, 0, 0, 974, 1018, 1, 0, 0, 0, + 975, 977, 3, 20, 10, 0, 976, 978, 3, 18, 9, 0, 977, 976, 1, 0, 0, 0, 977, + 978, 1, 0, 0, 0, 978, 1018, 1, 0, 0, 0, 979, 980, 3, 12, 6, 0, 980, 981, + 5, 12, 0, 0, 981, 983, 1, 0, 0, 0, 982, 979, 1, 0, 0, 0, 982, 983, 1, 0, + 0, 0, 983, 984, 1, 0, 0, 0, 984, 986, 3, 12, 6, 0, 985, 987, 3, 18, 9, + 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 1018, 1, 0, 0, 0, 988, + 990, 5, 94, 0, 0, 989, 991, 3, 112, 56, 0, 990, 989, 1, 0, 0, 0, 990, 991, + 1, 0, 0, 0, 991, 993, 1, 0, 0, 0, 992, 994, 3, 116, 58, 0, 993, 992, 1, + 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 993, 1, 0, 0, 0, 995, 996, 1, 0, 0, + 0, 996, 999, 1, 0, 0, 0, 997, 998, 5, 119, 0, 0, 998, 1000, 3, 112, 56, + 0, 999, 997, 1, 0, 0, 0, 999, 1000, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, + 1001, 1002, 5, 97, 0, 0, 1002, 1018, 1, 0, 0, 0, 1003, 1005, 5, 66, 0, + 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, + 0, 1006, 1008, 5, 75, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1008, 1, 0, 0, + 0, 1008, 1009, 1, 0, 0, 0, 1009, 1010, 5, 7, 0, 0, 1010, 1011, 3, 88, 44, + 0, 1011, 1013, 5, 8, 0, 0, 1012, 1014, 3, 18, 9, 0, 1013, 1012, 1, 0, 0, + 0, 1013, 1014, 1, 0, 0, 0, 1014, 1018, 1, 0, 0, 0, 1015, 1016, 5, 66, 0, + 0, 1016, 1018, 3, 112, 56, 3, 1017, 944, 1, 0, 0, 0, 1017, 951, 1, 0, 0, + 0, 1017, 953, 1, 0, 0, 0, 1017, 957, 1, 0, 0, 0, 1017, 971, 1, 0, 0, 0, + 1017, 975, 1, 0, 0, 0, 1017, 982, 1, 0, 0, 0, 1017, 988, 1, 0, 0, 0, 1017, + 1007, 1, 0, 0, 0, 1017, 1015, 1, 0, 0, 0, 1018, 1104, 1, 0, 0, 0, 1019, + 1020, 10, 18, 0, 0, 1020, 1021, 7, 10, 0, 0, 1021, 1103, 3, 112, 56, 19, + 1022, 1023, 10, 17, 0, 0, 1023, 1024, 7, 0, 0, 0, 1024, 1103, 3, 112, 56, + 18, 1025, 1026, 10, 9, 0, 0, 1026, 1027, 5, 13, 0, 0, 1027, 1103, 3, 112, + 56, 10, 1028, 1030, 10, 7, 0, 0, 1029, 1031, 5, 66, 0, 0, 1030, 1029, 1, + 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1033, 7, + 11, 0, 0, 1033, 1103, 3, 112, 56, 8, 1034, 1036, 10, 6, 0, 0, 1035, 1037, + 5, 66, 0, 0, 1036, 1035, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1038, + 1, 0, 0, 0, 1038, 1039, 5, 73, 0, 0, 1039, 1040, 3, 112, 56, 0, 1040, 1041, + 5, 68, 0, 0, 1041, 1042, 3, 112, 56, 7, 1042, 1103, 1, 0, 0, 0, 1043, 1044, + 10, 5, 0, 0, 1044, 1045, 7, 12, 0, 0, 1045, 1103, 3, 112, 56, 6, 1046, + 1047, 10, 2, 0, 0, 1047, 1048, 5, 68, 0, 0, 1048, 1103, 3, 112, 56, 3, + 1049, 1050, 10, 1, 0, 0, 1050, 1051, 5, 69, 0, 0, 1051, 1103, 3, 112, 56, + 2, 1052, 1053, 10, 22, 0, 0, 1053, 1054, 5, 12, 0, 0, 1054, 1056, 3, 12, + 6, 0, 1055, 1057, 3, 18, 9, 0, 1056, 1055, 1, 0, 0, 0, 1056, 1057, 1, 0, + 0, 0, 1057, 1103, 1, 0, 0, 0, 1058, 1059, 10, 21, 0, 0, 1059, 1068, 5, + 3, 0, 0, 1060, 1069, 3, 112, 56, 0, 1061, 1063, 3, 112, 56, 0, 1062, 1061, + 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1066, + 5, 5, 0, 0, 1065, 1067, 3, 112, 56, 0, 1066, 1065, 1, 0, 0, 0, 1066, 1067, + 1, 0, 0, 0, 1067, 1069, 1, 0, 0, 0, 1068, 1060, 1, 0, 0, 0, 1068, 1062, + 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1072, 5, 4, 0, 0, 1071, 1073, + 3, 18, 9, 0, 1072, 1071, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1103, + 1, 0, 0, 0, 1074, 1075, 10, 19, 0, 0, 1075, 1076, 5, 101, 0, 0, 1076, 1103, + 3, 12, 6, 0, 1077, 1079, 10, 8, 0, 0, 1078, 1080, 5, 66, 0, 0, 1079, 1078, + 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, + 5, 72, 0, 0, 1082, 1085, 5, 7, 0, 0, 1083, 1086, 3, 118, 59, 0, 1084, 1086, + 3, 88, 44, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1084, 1, 0, 0, 0, 1086, 1087, + 1, 0, 0, 0, 1087, 1088, 5, 8, 0, 0, 1088, 1103, 1, 0, 0, 0, 1089, 1090, + 10, 4, 0, 0, 1090, 1092, 5, 74, 0, 0, 1091, 1093, 5, 66, 0, 0, 1092, 1091, + 1, 0, 0, 0, 1092, 1093, 1, 0, 0, 0, 1093, 1100, 1, 0, 0, 0, 1094, 1095, + 5, 98, 0, 0, 1095, 1096, 5, 99, 0, 0, 1096, 1101, 3, 112, 56, 0, 1097, + 1101, 5, 61, 0, 0, 1098, 1101, 5, 129, 0, 0, 1099, 1101, 5, 130, 0, 0, + 1100, 1094, 1, 0, 0, 0, 1100, 1097, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, + 1100, 1099, 1, 0, 0, 0, 1101, 1103, 1, 0, 0, 0, 1102, 1019, 1, 0, 0, 0, + 1102, 1022, 1, 0, 0, 0, 1102, 1025, 1, 0, 0, 0, 1102, 1028, 1, 0, 0, 0, + 1102, 1034, 1, 0, 0, 0, 1102, 1043, 1, 0, 0, 0, 1102, 1046, 1, 0, 0, 0, + 1102, 1049, 1, 0, 0, 0, 1102, 1052, 1, 0, 0, 0, 1102, 1058, 1, 0, 0, 0, + 1102, 1074, 1, 0, 0, 0, 1102, 1077, 1, 0, 0, 0, 1102, 1089, 1, 0, 0, 0, + 1103, 1106, 1, 0, 0, 0, 1104, 1102, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, + 1105, 113, 1, 0, 0, 0, 1106, 1104, 1, 0, 0, 0, 1107, 1111, 5, 7, 0, 0, + 1108, 1109, 5, 124, 0, 0, 1109, 1110, 5, 88, 0, 0, 1110, 1112, 3, 118, + 59, 0, 1111, 1108, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1123, 1, 0, + 0, 0, 1113, 1114, 5, 87, 0, 0, 1114, 1115, 5, 88, 0, 0, 1115, 1120, 3, + 92, 46, 0, 1116, 1117, 5, 9, 0, 0, 1117, 1119, 3, 92, 46, 0, 1118, 1116, + 1, 0, 0, 0, 1119, 1122, 1, 0, 0, 0, 1120, 1118, 1, 0, 0, 0, 1120, 1121, + 1, 0, 0, 0, 1121, 1124, 1, 0, 0, 0, 1122, 1120, 1, 0, 0, 0, 1123, 1113, + 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, + 5, 8, 0, 0, 1126, 115, 1, 0, 0, 0, 1127, 1128, 5, 95, 0, 0, 1128, 1129, + 3, 112, 56, 0, 1129, 1130, 5, 96, 0, 0, 1130, 1131, 3, 112, 56, 0, 1131, + 117, 1, 0, 0, 0, 1132, 1137, 3, 112, 56, 0, 1133, 1134, 5, 9, 0, 0, 1134, + 1136, 3, 112, 56, 0, 1135, 1133, 1, 0, 0, 0, 1136, 1139, 1, 0, 0, 0, 1137, + 1135, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 119, 1, 0, 0, 0, 1139, + 1137, 1, 0, 0, 0, 1140, 1141, 3, 12, 6, 0, 1141, 1147, 5, 7, 0, 0, 1142, + 1144, 5, 98, 0, 0, 1143, 1142, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, + 1145, 1, 0, 0, 0, 1145, 1148, 3, 118, 59, 0, 1146, 1148, 5, 14, 0, 0, 1147, + 1143, 1, 0, 0, 0, 1147, 1146, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, + 1149, 1, 0, 0, 0, 1149, 1150, 5, 8, 0, 0, 1150, 121, 1, 0, 0, 0, 1151, + 1152, 3, 124, 62, 0, 1152, 1153, 5, 6, 0, 0, 1153, 1155, 1, 0, 0, 0, 1154, + 1151, 1, 0, 0, 0, 1155, 1158, 1, 0, 0, 0, 1156, 1154, 1, 0, 0, 0, 1156, + 1157, 1, 0, 0, 0, 1157, 123, 1, 0, 0, 0, 1158, 1156, 1, 0, 0, 0, 1159, + 1180, 3, 70, 35, 0, 1160, 1161, 5, 139, 0, 0, 1161, 1163, 5, 7, 0, 0, 1162, + 1164, 3, 130, 65, 0, 1163, 1162, 1, 0, 0, 0, 1163, 1164, 1, 0, 0, 0, 1164, + 1165, 1, 0, 0, 0, 1165, 1180, 5, 8, 0, 0, 1166, 1167, 3, 22, 11, 0, 1167, + 1168, 5, 15, 0, 0, 1168, 1170, 1, 0, 0, 0, 1169, 1166, 1, 0, 0, 0, 1169, + 1170, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 5, 139, 0, 0, 1172, + 1173, 5, 12, 0, 0, 1173, 1174, 5, 139, 0, 0, 1174, 1176, 5, 7, 0, 0, 1175, + 1177, 3, 130, 65, 0, 1176, 1175, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, + 1178, 1, 0, 0, 0, 1178, 1180, 5, 8, 0, 0, 1179, 1159, 1, 0, 0, 0, 1179, + 1160, 1, 0, 0, 0, 1179, 1169, 1, 0, 0, 0, 1180, 125, 1, 0, 0, 0, 1181, + 1183, 3, 132, 66, 0, 1182, 1181, 1, 0, 0, 0, 1183, 1186, 1, 0, 0, 0, 1184, + 1182, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 127, 1, 0, 0, 0, 1186, + 1184, 1, 0, 0, 0, 1187, 1188, 6, 64, -1, 0, 1188, 1189, 5, 7, 0, 0, 1189, + 1190, 3, 128, 64, 0, 1190, 1192, 5, 8, 0, 0, 1191, 1193, 3, 18, 9, 0, 1192, + 1191, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1219, 1, 0, 0, 0, 1194, + 1195, 7, 13, 0, 0, 1195, 1219, 3, 128, 64, 13, 1196, 1198, 3, 10, 5, 0, + 1197, 1199, 3, 18, 9, 0, 1198, 1197, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, + 1199, 1219, 1, 0, 0, 0, 1200, 1202, 3, 136, 68, 0, 1201, 1203, 3, 18, 9, + 0, 1202, 1201, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1219, 1, 0, 0, + 0, 1204, 1206, 3, 20, 10, 0, 1205, 1207, 3, 18, 9, 0, 1206, 1205, 1, 0, + 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1219, 1, 0, 0, 0, 1208, 1210, 5, 3, + 0, 0, 1209, 1211, 3, 130, 65, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, + 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1214, 5, 4, 0, 0, 1213, 1215, 3, + 18, 9, 0, 1214, 1213, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 1219, 1, + 0, 0, 0, 1216, 1217, 5, 66, 0, 0, 1217, 1219, 3, 128, 64, 3, 1218, 1187, + 1, 0, 0, 0, 1218, 1194, 1, 0, 0, 0, 1218, 1196, 1, 0, 0, 0, 1218, 1200, + 1, 0, 0, 0, 1218, 1204, 1, 0, 0, 0, 1218, 1208, 1, 0, 0, 0, 1218, 1216, + 1, 0, 0, 0, 1219, 1275, 1, 0, 0, 0, 1220, 1221, 10, 12, 0, 0, 1221, 1222, + 7, 10, 0, 0, 1222, 1274, 3, 128, 64, 13, 1223, 1224, 10, 11, 0, 0, 1224, + 1225, 7, 0, 0, 0, 1225, 1274, 3, 128, 64, 12, 1226, 1227, 10, 6, 0, 0, + 1227, 1228, 5, 13, 0, 0, 1228, 1274, 3, 128, 64, 7, 1229, 1230, 10, 5, + 0, 0, 1230, 1231, 7, 12, 0, 0, 1231, 1274, 3, 128, 64, 6, 1232, 1233, 10, + 2, 0, 0, 1233, 1234, 5, 68, 0, 0, 1234, 1274, 3, 128, 64, 3, 1235, 1236, + 10, 1, 0, 0, 1236, 1237, 5, 69, 0, 0, 1237, 1274, 3, 128, 64, 2, 1238, + 1239, 10, 15, 0, 0, 1239, 1240, 5, 12, 0, 0, 1240, 1242, 5, 139, 0, 0, + 1241, 1243, 3, 18, 9, 0, 1242, 1241, 1, 0, 0, 0, 1242, 1243, 1, 0, 0, 0, + 1243, 1274, 1, 0, 0, 0, 1244, 1245, 10, 14, 0, 0, 1245, 1254, 5, 3, 0, + 0, 1246, 1255, 3, 128, 64, 0, 1247, 1249, 3, 128, 64, 0, 1248, 1247, 1, + 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1252, 5, + 5, 0, 0, 1251, 1253, 3, 128, 64, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, + 1, 0, 0, 0, 1253, 1255, 1, 0, 0, 0, 1254, 1246, 1, 0, 0, 0, 1254, 1248, + 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1258, 5, 4, 0, 0, 1257, 1259, + 3, 18, 9, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1274, + 1, 0, 0, 0, 1260, 1261, 10, 4, 0, 0, 1261, 1263, 5, 74, 0, 0, 1262, 1264, + 5, 66, 0, 0, 1263, 1262, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1271, + 1, 0, 0, 0, 1265, 1266, 5, 98, 0, 0, 1266, 1267, 5, 99, 0, 0, 1267, 1272, + 3, 128, 64, 0, 1268, 1272, 5, 61, 0, 0, 1269, 1272, 5, 129, 0, 0, 1270, + 1272, 5, 130, 0, 0, 1271, 1265, 1, 0, 0, 0, 1271, 1268, 1, 0, 0, 0, 1271, + 1269, 1, 0, 0, 0, 1271, 1270, 1, 0, 0, 0, 1272, 1274, 1, 0, 0, 0, 1273, + 1220, 1, 0, 0, 0, 1273, 1223, 1, 0, 0, 0, 1273, 1226, 1, 0, 0, 0, 1273, + 1229, 1, 0, 0, 0, 1273, 1232, 1, 0, 0, 0, 1273, 1235, 1, 0, 0, 0, 1273, + 1238, 1, 0, 0, 0, 1273, 1244, 1, 0, 0, 0, 1273, 1260, 1, 0, 0, 0, 1274, + 1277, 1, 0, 0, 0, 1275, 1273, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, + 129, 1, 0, 0, 0, 1277, 1275, 1, 0, 0, 0, 1278, 1283, 3, 128, 64, 0, 1279, + 1280, 5, 9, 0, 0, 1280, 1282, 3, 128, 64, 0, 1281, 1279, 1, 0, 0, 0, 1282, + 1285, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, + 131, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1286, 1287, 5, 140, 0, 0, 1287, + 1288, 3, 16, 8, 0, 1288, 1289, 5, 6, 0, 0, 1289, 1367, 1, 0, 0, 0, 1290, + 1295, 3, 134, 67, 0, 1291, 1292, 5, 9, 0, 0, 1292, 1294, 3, 134, 67, 0, + 1293, 1291, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, + 1295, 1296, 1, 0, 0, 0, 1296, 1298, 1, 0, 0, 0, 1297, 1295, 1, 0, 0, 0, + 1298, 1299, 5, 30, 0, 0, 1299, 1301, 1, 0, 0, 0, 1300, 1290, 1, 0, 0, 0, + 1300, 1301, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1303, 3, 136, 68, + 0, 1303, 1304, 5, 6, 0, 0, 1304, 1367, 1, 0, 0, 0, 1305, 1307, 3, 128, + 64, 0, 1306, 1308, 3, 16, 8, 0, 1307, 1306, 1, 0, 0, 0, 1307, 1308, 1, + 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 5, 30, 0, 0, 1310, 1311, 3, + 128, 64, 0, 1311, 1312, 5, 6, 0, 0, 1312, 1367, 1, 0, 0, 0, 1313, 1314, + 5, 116, 0, 0, 1314, 1315, 5, 140, 0, 0, 1315, 1319, 5, 72, 0, 0, 1316, + 1320, 3, 140, 70, 0, 1317, 1320, 3, 20, 10, 0, 1318, 1320, 3, 70, 35, 0, + 1319, 1316, 1, 0, 0, 0, 1319, 1317, 1, 0, 0, 0, 1319, 1318, 1, 0, 0, 0, + 1320, 1321, 1, 0, 0, 0, 1321, 1325, 5, 1, 0, 0, 1322, 1324, 3, 132, 66, + 0, 1323, 1322, 1, 0, 0, 0, 1324, 1327, 1, 0, 0, 0, 1325, 1323, 1, 0, 0, + 0, 1325, 1326, 1, 0, 0, 0, 1326, 1328, 1, 0, 0, 0, 1327, 1325, 1, 0, 0, + 0, 1328, 1329, 5, 2, 0, 0, 1329, 1367, 1, 0, 0, 0, 1330, 1331, 5, 117, + 0, 0, 1331, 1336, 3, 138, 69, 0, 1332, 1333, 5, 118, 0, 0, 1333, 1335, + 3, 138, 69, 0, 1334, 1332, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, + 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1348, 1, 0, 0, 0, 1338, 1336, + 1, 0, 0, 0, 1339, 1340, 5, 119, 0, 0, 1340, 1344, 5, 1, 0, 0, 1341, 1343, + 3, 132, 66, 0, 1342, 1341, 1, 0, 0, 0, 1343, 1346, 1, 0, 0, 0, 1344, 1342, + 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 1, 0, 0, 0, 1346, 1344, + 1, 0, 0, 0, 1347, 1349, 5, 2, 0, 0, 1348, 1339, 1, 0, 0, 0, 1348, 1349, + 1, 0, 0, 0, 1349, 1367, 1, 0, 0, 0, 1350, 1351, 3, 70, 35, 0, 1351, 1352, + 5, 6, 0, 0, 1352, 1367, 1, 0, 0, 0, 1353, 1354, 5, 120, 0, 0, 1354, 1367, + 5, 6, 0, 0, 1355, 1358, 5, 121, 0, 0, 1356, 1359, 3, 130, 65, 0, 1357, + 1359, 3, 70, 35, 0, 1358, 1356, 1, 0, 0, 0, 1358, 1357, 1, 0, 0, 0, 1358, + 1359, 1, 0, 0, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1367, 5, 6, 0, 0, 1361, + 1362, 5, 121, 0, 0, 1362, 1363, 5, 122, 0, 0, 1363, 1364, 3, 130, 65, 0, + 1364, 1365, 5, 6, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1286, 1, 0, 0, 0, + 1366, 1300, 1, 0, 0, 0, 1366, 1305, 1, 0, 0, 0, 1366, 1313, 1, 0, 0, 0, + 1366, 1330, 1, 0, 0, 0, 1366, 1350, 1, 0, 0, 0, 1366, 1353, 1, 0, 0, 0, + 1366, 1355, 1, 0, 0, 0, 1366, 1361, 1, 0, 0, 0, 1367, 133, 1, 0, 0, 0, + 1368, 1369, 7, 14, 0, 0, 1369, 135, 1, 0, 0, 0, 1370, 1371, 5, 139, 0, + 0, 1371, 1373, 5, 7, 0, 0, 1372, 1374, 3, 130, 65, 0, 1373, 1372, 1, 0, + 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1376, 5, 8, + 0, 0, 1376, 137, 1, 0, 0, 0, 1377, 1378, 3, 128, 64, 0, 1378, 1382, 5, + 1, 0, 0, 1379, 1381, 3, 132, 66, 0, 1380, 1379, 1, 0, 0, 0, 1381, 1384, + 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1382, 1383, 1, 0, 0, 0, 1383, 1385, + 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1385, 1386, 5, 2, 0, 0, 1386, 139, + 1, 0, 0, 0, 1387, 1388, 3, 128, 64, 0, 1388, 1389, 5, 31, 0, 0, 1389, 1390, + 3, 128, 64, 0, 1390, 141, 1, 0, 0, 0, 184, 145, 163, 167, 175, 181, 188, + 197, 201, 213, 221, 223, 237, 240, 260, 265, 279, 283, 293, 301, 311, 322, + 335, 341, 346, 348, 351, 356, 362, 367, 370, 377, 387, 398, 404, 410, 416, + 431, 443, 455, 458, 465, 472, 478, 487, 494, 500, 503, 511, 521, 528, 535, + 538, 548, 557, 560, 563, 577, 583, 587, 594, 621, 636, 647, 671, 675, 679, + 691, 701, 711, 714, 718, 722, 726, 730, 734, 738, 742, 749, 757, 760, 764, + 771, 773, 786, 789, 793, 796, 802, 805, 807, 810, 819, 822, 827, 830, 835, + 838, 846, 854, 857, 861, 871, 874, 880, 893, 897, 900, 909, 911, 922, 927, + 929, 935, 938, 942, 949, 955, 964, 969, 973, 977, 982, 986, 990, 995, 999, + 1004, 1007, 1013, 1017, 1030, 1036, 1056, 1062, 1066, 1068, 1072, 1079, + 1085, 1092, 1100, 1102, 1104, 1111, 1120, 1123, 1137, 1143, 1147, 1156, + 1163, 1169, 1176, 1179, 1184, 1192, 1198, 1202, 1206, 1210, 1214, 1218, + 1242, 1248, 1252, 1254, 1258, 1263, 1271, 1273, 1275, 1283, 1295, 1300, + 1307, 1319, 1325, 1336, 1344, 1348, 1358, 1366, 1373, 1382, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -11709,15 +11710,25 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state goto errorExit } } - { - p.SetState(678) + p.SetState(679) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) - var _x = p.Identifier() + if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { + { + p.SetState(678) + + var _x = p.Identifier() + + localctx.(*Create_index_statementContext).name = _x + } - localctx.(*Create_index_statementContext).name = _x } { - p.SetState(679) + p.SetState(681) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -11725,14 +11736,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(680) + p.SetState(682) var _x = p.Identifier() localctx.(*Create_index_statementContext).table = _x } { - p.SetState(681) + p.SetState(683) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -11740,14 +11751,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(682) + p.SetState(684) var _x = p.Identifier_list() localctx.(*Create_index_statementContext).columns = _x } { - p.SetState(683) + p.SetState(685) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -11886,7 +11897,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement p.EnterOuterAlt(localctx, 1) { - p.SetState(685) + p.SetState(687) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11894,14 +11905,14 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } } { - p.SetState(686) + p.SetState(688) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(689) + p.SetState(691) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11910,7 +11921,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement if _la == KuneiformParserIF { { - p.SetState(687) + p.SetState(689) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -11918,7 +11929,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } } { - p.SetState(688) + p.SetState(690) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -11928,7 +11939,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } { - p.SetState(691) + p.SetState(693) var _x = p.Identifier() @@ -12242,10 +12253,10 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(693) + p.SetState(695) p.Select_core() } - p.SetState(699) + p.SetState(701) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12254,22 +12265,22 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for (int64((_la-106)) & ^0x3f) == 0 && ((int64(1)<<(_la-106))&7) != 0 { { - p.SetState(694) + p.SetState(696) p.Compound_operator() } { - p.SetState(695) + p.SetState(697) p.Select_core() } - p.SetState(701) + p.SetState(703) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(712) + p.SetState(714) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12278,7 +12289,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserORDER { { - p.SetState(702) + p.SetState(704) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -12286,7 +12297,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(703) + p.SetState(705) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -12294,10 +12305,10 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(704) + p.SetState(706) p.Ordering_term() } - p.SetState(709) + p.SetState(711) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12306,7 +12317,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(705) + p.SetState(707) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -12314,11 +12325,11 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(706) + p.SetState(708) p.Ordering_term() } - p.SetState(711) + p.SetState(713) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12327,7 +12338,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(716) + p.SetState(718) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12336,7 +12347,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserLIMIT { { - p.SetState(714) + p.SetState(716) p.Match(KuneiformParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -12344,7 +12355,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(715) + p.SetState(717) var _x = p.sql_expr(0) @@ -12352,7 +12363,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(720) + p.SetState(722) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12361,7 +12372,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserOFFSET { { - p.SetState(718) + p.SetState(720) p.Match(KuneiformParserOFFSET) if p.HasError() { // Recognition error - abort rule @@ -12369,7 +12380,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(719) + p.SetState(721) var _x = p.sql_expr(0) @@ -12479,7 +12490,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex p.EnterRule(localctx, 90, KuneiformParserRULE_compound_operator) var _la int - p.SetState(728) + p.SetState(730) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12489,14 +12500,14 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserUNION: p.EnterOuterAlt(localctx, 1) { - p.SetState(722) + p.SetState(724) p.Match(KuneiformParserUNION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(724) + p.SetState(726) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12505,7 +12516,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex if _la == KuneiformParserALL { { - p.SetState(723) + p.SetState(725) p.Match(KuneiformParserALL) if p.HasError() { // Recognition error - abort rule @@ -12518,7 +12529,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserINTERSECT: p.EnterOuterAlt(localctx, 2) { - p.SetState(726) + p.SetState(728) p.Match(KuneiformParserINTERSECT) if p.HasError() { // Recognition error - abort rule @@ -12529,7 +12540,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserEXCEPT: p.EnterOuterAlt(localctx, 3) { - p.SetState(727) + p.SetState(729) p.Match(KuneiformParserEXCEPT) if p.HasError() { // Recognition error - abort rule @@ -12667,10 +12678,10 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(730) + p.SetState(732) p.sql_expr(0) } - p.SetState(732) + p.SetState(734) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12679,7 +12690,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserASC || _la == KuneiformParserDESC { { - p.SetState(731) + p.SetState(733) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserASC || _la == KuneiformParserDESC) { @@ -12691,7 +12702,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } - p.SetState(736) + p.SetState(738) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12700,7 +12711,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserNULLS { { - p.SetState(734) + p.SetState(736) p.Match(KuneiformParserNULLS) if p.HasError() { // Recognition error - abort rule @@ -12708,7 +12719,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } { - p.SetState(735) + p.SetState(737) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserFIRST || _la == KuneiformParserLAST) { @@ -13146,14 +13157,14 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(738) + p.SetState(740) p.Match(KuneiformParserSELECT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(740) + p.SetState(742) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13162,7 +13173,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserDISTINCT { { - p.SetState(739) + p.SetState(741) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -13172,10 +13183,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } { - p.SetState(742) + p.SetState(744) p.Result_column() } - p.SetState(747) + p.SetState(749) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13184,7 +13195,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(743) + p.SetState(745) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -13192,18 +13203,18 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(744) + p.SetState(746) p.Result_column() } - p.SetState(749) + p.SetState(751) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(758) + p.SetState(760) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13212,7 +13223,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserFROM { { - p.SetState(750) + p.SetState(752) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -13220,10 +13231,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(751) + p.SetState(753) p.Relation() } - p.SetState(755) + p.SetState(757) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13232,11 +13243,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(752) + p.SetState(754) p.Join() } - p.SetState(757) + p.SetState(759) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13245,7 +13256,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(762) + p.SetState(764) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13254,7 +13265,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWHERE { { - p.SetState(760) + p.SetState(762) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -13262,7 +13273,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(761) + p.SetState(763) var _x = p.sql_expr(0) @@ -13270,7 +13281,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(771) + p.SetState(773) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13279,7 +13290,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserGROUP { { - p.SetState(764) + p.SetState(766) p.Match(KuneiformParserGROUP) if p.HasError() { // Recognition error - abort rule @@ -13287,7 +13298,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(765) + p.SetState(767) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -13295,13 +13306,13 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(766) + p.SetState(768) var _x = p.Sql_expr_list() localctx.(*Select_coreContext).group_by = _x } - p.SetState(769) + p.SetState(771) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13310,7 +13321,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserHAVING { { - p.SetState(767) + p.SetState(769) p.Match(KuneiformParserHAVING) if p.HasError() { // Recognition error - abort rule @@ -13318,7 +13329,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(768) + p.SetState(770) var _x = p.sql_expr(0) @@ -13328,7 +13339,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(787) + p.SetState(789) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13337,7 +13348,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWINDOW { { - p.SetState(773) + p.SetState(775) p.Match(KuneiformParserWINDOW) if p.HasError() { // Recognition error - abort rule @@ -13345,11 +13356,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(774) + p.SetState(776) p.Identifier() } { - p.SetState(775) + p.SetState(777) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13357,10 +13368,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(776) + p.SetState(778) p.Window() } - p.SetState(784) + p.SetState(786) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13369,7 +13380,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(777) + p.SetState(779) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -13377,11 +13388,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(778) + p.SetState(780) p.Identifier() } { - p.SetState(779) + p.SetState(781) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13389,11 +13400,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(780) + p.SetState(782) p.Window() } - p.SetState(786) + p.SetState(788) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13635,7 +13646,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { p.EnterRule(localctx, 96, KuneiformParserRULE_relation) var _la int - p.SetState(805) + p.SetState(807) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13646,13 +13657,13 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewTable_relationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(789) + p.SetState(791) var _x = p.Identifier() localctx.(*Table_relationContext).table_name = _x } - p.SetState(794) + p.SetState(796) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13660,7 +13671,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(791) + p.SetState(793) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13669,7 +13680,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(790) + p.SetState(792) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13679,7 +13690,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(793) + p.SetState(795) var _x = p.Identifier() @@ -13692,7 +13703,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewSubquery_relationContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(796) + p.SetState(798) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -13700,18 +13711,18 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } } { - p.SetState(797) + p.SetState(799) p.Select_statement() } { - p.SetState(798) + p.SetState(800) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(803) + p.SetState(805) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13719,7 +13730,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(800) + p.SetState(802) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13728,7 +13739,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(799) + p.SetState(801) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13738,7 +13749,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(802) + p.SetState(804) var _x = p.Identifier() @@ -13898,7 +13909,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(808) + p.SetState(810) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13907,7 +13918,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { if (int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0 { { - p.SetState(807) + p.SetState(809) _la = p.GetTokenStream().LA(1) if !((int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0) { @@ -13920,7 +13931,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } { - p.SetState(810) + p.SetState(812) p.Match(KuneiformParserJOIN) if p.HasError() { // Recognition error - abort rule @@ -13928,11 +13939,11 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(811) + p.SetState(813) p.Relation() } { - p.SetState(812) + p.SetState(814) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -13940,7 +13951,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(813) + p.SetState(815) p.sql_expr(0) } @@ -14137,21 +14148,21 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { p.EnterRule(localctx, 100, KuneiformParserRULE_result_column) var _la int - p.SetState(828) + p.SetState(830) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 93, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 94, p.GetParserRuleContext()) { case 1: localctx = NewExpression_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(815) + p.SetState(817) p.sql_expr(0) } - p.SetState(820) + p.SetState(822) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14159,7 +14170,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(817) + p.SetState(819) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14168,7 +14179,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserAS { { - p.SetState(816) + p.SetState(818) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14178,7 +14189,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(819) + p.SetState(821) p.Identifier() } @@ -14187,7 +14198,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { case 2: localctx = NewWildcard_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(825) + p.SetState(827) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14196,14 +14207,14 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(822) + p.SetState(824) var _x = p.Identifier() localctx.(*Wildcard_result_columnContext).table_name = _x } { - p.SetState(823) + p.SetState(825) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -14213,7 +14224,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(827) + p.SetState(829) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -14539,7 +14550,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(830) + p.SetState(832) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -14547,13 +14558,13 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(831) + p.SetState(833) var _x = p.Identifier() localctx.(*Update_statementContext).table_name = _x } - p.SetState(836) + p.SetState(838) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14561,7 +14572,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(833) + p.SetState(835) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14570,7 +14581,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserAS { { - p.SetState(832) + p.SetState(834) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14580,7 +14591,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(835) + p.SetState(837) var _x = p.Identifier() @@ -14589,7 +14600,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(838) + p.SetState(840) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -14597,10 +14608,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(839) + p.SetState(841) p.Update_set_clause() } - p.SetState(844) + p.SetState(846) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14609,7 +14620,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(840) + p.SetState(842) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -14617,18 +14628,18 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(841) + p.SetState(843) p.Update_set_clause() } - p.SetState(846) + p.SetState(848) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(855) + p.SetState(857) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14637,7 +14648,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserFROM { { - p.SetState(847) + p.SetState(849) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -14645,10 +14656,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(848) + p.SetState(850) p.Relation() } - p.SetState(852) + p.SetState(854) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14657,11 +14668,11 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(849) + p.SetState(851) p.Join() } - p.SetState(854) + p.SetState(856) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14670,7 +14681,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } - p.SetState(859) + p.SetState(861) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14679,7 +14690,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(857) + p.SetState(859) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -14687,7 +14698,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(858) + p.SetState(860) var _x = p.sql_expr(0) @@ -14827,14 +14838,14 @@ func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContex p.EnterRule(localctx, 104, KuneiformParserRULE_update_set_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(861) + p.SetState(863) var _x = p.Identifier() localctx.(*Update_set_clauseContext).column = _x } { - p.SetState(862) + p.SetState(864) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -14842,7 +14853,7 @@ func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContex } } { - p.SetState(863) + p.SetState(865) p.sql_expr(0) } @@ -15151,7 +15162,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(865) + p.SetState(867) p.Match(KuneiformParserINSERT) if p.HasError() { // Recognition error - abort rule @@ -15159,7 +15170,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(866) + p.SetState(868) p.Match(KuneiformParserINTO) if p.HasError() { // Recognition error - abort rule @@ -15167,13 +15178,13 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(867) + p.SetState(869) var _x = p.Identifier() localctx.(*Insert_statementContext).table_name = _x } - p.SetState(872) + p.SetState(874) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15181,7 +15192,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(869) + p.SetState(871) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15190,7 +15201,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserAS { { - p.SetState(868) + p.SetState(870) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -15200,7 +15211,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } { - p.SetState(871) + p.SetState(873) var _x = p.Identifier() @@ -15208,7 +15219,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(878) + p.SetState(880) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15217,7 +15228,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserLPAREN { { - p.SetState(874) + p.SetState(876) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15225,14 +15236,14 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(875) + p.SetState(877) var _x = p.Identifier_list() localctx.(*Insert_statementContext).target_columns = _x } { - p.SetState(876) + p.SetState(878) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15241,7 +15252,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(895) + p.SetState(897) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15250,7 +15261,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) switch p.GetTokenStream().LA(1) { case KuneiformParserVALUES: { - p.SetState(880) + p.SetState(882) p.Match(KuneiformParserVALUES) if p.HasError() { // Recognition error - abort rule @@ -15258,7 +15269,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(881) + p.SetState(883) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15266,18 +15277,18 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(882) + p.SetState(884) p.Sql_expr_list() } { - p.SetState(883) + p.SetState(885) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(891) + p.SetState(893) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15286,7 +15297,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(884) + p.SetState(886) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15294,7 +15305,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(885) + p.SetState(887) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15302,11 +15313,11 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(886) + p.SetState(888) p.Sql_expr_list() } { - p.SetState(887) + p.SetState(889) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15314,7 +15325,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(893) + p.SetState(895) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15324,7 +15335,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) case KuneiformParserSELECT: { - p.SetState(894) + p.SetState(896) p.Select_statement() } @@ -15332,7 +15343,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(898) + p.SetState(900) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15341,7 +15352,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserON { { - p.SetState(897) + p.SetState(899) p.Upsert_clause() } @@ -15628,7 +15639,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(900) + p.SetState(902) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -15636,14 +15647,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(901) + p.SetState(903) p.Match(KuneiformParserCONFLICT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(909) + p.SetState(911) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15652,7 +15663,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserLPAREN { { - p.SetState(902) + p.SetState(904) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15660,21 +15671,21 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(903) + p.SetState(905) var _x = p.Identifier_list() localctx.(*Upsert_clauseContext).conflict_columns = _x } { - p.SetState(904) + p.SetState(906) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(907) + p.SetState(909) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15683,7 +15694,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(905) + p.SetState(907) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -15691,7 +15702,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(906) + p.SetState(908) var _x = p.sql_expr(0) @@ -15702,14 +15713,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } { - p.SetState(911) + p.SetState(913) p.Match(KuneiformParserDO) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(927) + p.SetState(929) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15718,7 +15729,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserNOTHING: { - p.SetState(912) + p.SetState(914) p.Match(KuneiformParserNOTHING) if p.HasError() { // Recognition error - abort rule @@ -15728,7 +15739,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { case KuneiformParserUPDATE: { - p.SetState(913) + p.SetState(915) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -15736,7 +15747,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(914) + p.SetState(916) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -15744,10 +15755,10 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(915) + p.SetState(917) p.Update_set_clause() } - p.SetState(920) + p.SetState(922) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15756,7 +15767,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { for _la == KuneiformParserCOMMA { { - p.SetState(916) + p.SetState(918) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15764,18 +15775,18 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(917) + p.SetState(919) p.Update_set_clause() } - p.SetState(922) + p.SetState(924) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(925) + p.SetState(927) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15784,7 +15795,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(923) + p.SetState(925) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -15792,7 +15803,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(924) + p.SetState(926) var _x = p.sql_expr(0) @@ -16002,7 +16013,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(929) + p.SetState(931) p.Match(KuneiformParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -16010,7 +16021,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(930) + p.SetState(932) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -16018,13 +16029,13 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(931) + p.SetState(933) var _x = p.Identifier() localctx.(*Delete_statementContext).table_name = _x } - p.SetState(936) + p.SetState(938) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16032,7 +16043,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(933) + p.SetState(935) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16041,7 +16052,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserAS { { - p.SetState(932) + p.SetState(934) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -16051,7 +16062,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } { - p.SetState(935) + p.SetState(937) var _x = p.Identifier() @@ -16059,7 +16070,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } - p.SetState(940) + p.SetState(942) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16068,7 +16079,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(938) + p.SetState(940) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -16076,7 +16087,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(939) + p.SetState(941) var _x = p.sql_expr(0) @@ -17825,20 +17836,20 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(1015) + p.SetState(1017) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 128, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 129, p.GetParserRuleContext()) { case 1: localctx = NewParen_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(943) + p.SetState(945) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17846,23 +17857,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(944) + p.SetState(946) p.sql_expr(0) } { - p.SetState(945) + p.SetState(947) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(947) + p.SetState(949) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 114, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { { - p.SetState(946) + p.SetState(948) p.Type_cast() } @@ -17875,7 +17886,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(949) + p.SetState(951) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -17886,7 +17897,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(950) + p.SetState(952) p.sql_expr(20) } @@ -17895,15 +17906,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(951) + p.SetState(953) p.Literal() } - p.SetState(953) + p.SetState(955) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 116, p.GetParserRuleContext()) == 1 { { - p.SetState(952) + p.SetState(954) p.Type_cast() } @@ -17916,10 +17927,10 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(955) + p.SetState(957) p.Sql_function_call() } - p.SetState(962) + p.SetState(964) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17928,7 +17939,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserFILTER { { - p.SetState(956) + p.SetState(958) p.Match(KuneiformParserFILTER) if p.HasError() { // Recognition error - abort rule @@ -17936,7 +17947,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(957) + p.SetState(959) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17944,7 +17955,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(958) + p.SetState(960) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -17952,11 +17963,11 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(959) + p.SetState(961) p.sql_expr(0) } { - p.SetState(960) + p.SetState(962) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -17966,14 +17977,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(964) + p.SetState(966) p.Match(KuneiformParserOVER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(967) + p.SetState(969) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17982,13 +17993,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN: { - p.SetState(965) + p.SetState(967) p.Window() } case KuneiformParserIDENTIFIER: { - p.SetState(966) + p.SetState(968) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -18006,15 +18017,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(969) + p.SetState(971) p.Sql_function_call() } - p.SetState(971) + p.SetState(973) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 119, p.GetParserRuleContext()) == 1 { { - p.SetState(970) + p.SetState(972) p.Type_cast() } @@ -18027,15 +18038,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(973) + p.SetState(975) p.Variable() } - p.SetState(975) + p.SetState(977) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 119, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { { - p.SetState(974) + p.SetState(976) p.Type_cast() } @@ -18047,19 +18058,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewColumn_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(980) + p.SetState(982) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { { - p.SetState(977) + p.SetState(979) var _x = p.Identifier() localctx.(*Column_sql_exprContext).table = _x } { - p.SetState(978) + p.SetState(980) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -18071,18 +18082,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(982) + p.SetState(984) var _x = p.Identifier() localctx.(*Column_sql_exprContext).column = _x } - p.SetState(984) + p.SetState(986) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 122, p.GetParserRuleContext()) == 1 { { - p.SetState(983) + p.SetState(985) p.Type_cast() } @@ -18095,14 +18106,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(986) + p.SetState(988) p.Match(KuneiformParserCASE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(988) + p.SetState(990) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18111,7 +18122,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(987) + p.SetState(989) var _x = p.sql_expr(0) @@ -18119,7 +18130,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(991) + p.SetState(993) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18128,18 +18139,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { for ok := true; ok; ok = _la == KuneiformParserWHEN { { - p.SetState(990) + p.SetState(992) p.When_then_clause() } - p.SetState(993) + p.SetState(995) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(997) + p.SetState(999) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18148,7 +18159,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserELSE { { - p.SetState(995) + p.SetState(997) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -18156,7 +18167,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(996) + p.SetState(998) var _x = p.sql_expr(0) @@ -18165,7 +18176,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(999) + p.SetState(1001) p.Match(KuneiformParserEND) if p.HasError() { // Recognition error - abort rule @@ -18177,7 +18188,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewSubquery_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(1005) + p.SetState(1007) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18185,7 +18196,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserNOT || _la == KuneiformParserEXISTS { - p.SetState(1002) + p.SetState(1004) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18194,7 +18205,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1001) + p.SetState(1003) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18204,7 +18215,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1004) + p.SetState(1006) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -18214,7 +18225,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1007) + p.SetState(1009) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -18222,23 +18233,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1008) + p.SetState(1010) p.Select_statement() } { - p.SetState(1009) + p.SetState(1011) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1011) + p.SetState(1013) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 127, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 128, p.GetParserRuleContext()) == 1 { { - p.SetState(1010) + p.SetState(1012) p.Type_cast() } @@ -18252,7 +18263,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _prevctx = localctx { - p.SetState(1013) + p.SetState(1015) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18261,7 +18272,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1014) + p.SetState(1016) p.sql_expr(3) } @@ -18269,12 +18280,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1102) + p.SetState(1104) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 142, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -18284,26 +18295,26 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1100) + p.SetState(1102) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 140, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) { case 1: localctx = NewArithmetic_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1017) + p.SetState(1019) if !(p.Precpred(p.GetParserRuleContext(), 18)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", "")) goto errorExit } { - p.SetState(1018) + p.SetState(1020) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -18314,7 +18325,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1019) + p.SetState(1021) var _x = p.sql_expr(19) @@ -18326,14 +18337,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1020) + p.SetState(1022) if !(p.Precpred(p.GetParserRuleContext(), 17)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", "")) goto errorExit } { - p.SetState(1021) + p.SetState(1023) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -18344,7 +18355,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1022) + p.SetState(1024) var _x = p.sql_expr(18) @@ -18356,14 +18367,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1023) + p.SetState(1025) if !(p.Precpred(p.GetParserRuleContext(), 9)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) goto errorExit } { - p.SetState(1024) + p.SetState(1026) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -18371,7 +18382,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1025) + p.SetState(1027) var _x = p.sql_expr(10) @@ -18383,13 +18394,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Like_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1026) + p.SetState(1028) if !(p.Precpred(p.GetParserRuleContext(), 7)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) goto errorExit } - p.SetState(1028) + p.SetState(1030) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18398,7 +18409,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1027) + p.SetState(1029) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18408,7 +18419,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1030) + p.SetState(1032) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserLIKE || _la == KuneiformParserILIKE) { @@ -18419,7 +18430,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1031) + p.SetState(1033) var _x = p.sql_expr(8) @@ -18431,13 +18442,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Between_sql_exprContext).element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1032) + p.SetState(1034) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } - p.SetState(1034) + p.SetState(1036) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18446,7 +18457,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1033) + p.SetState(1035) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18456,7 +18467,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1036) + p.SetState(1038) p.Match(KuneiformParserBETWEEN) if p.HasError() { // Recognition error - abort rule @@ -18464,14 +18475,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1037) + p.SetState(1039) var _x = p.sql_expr(0) localctx.(*Between_sql_exprContext).lower = _x } { - p.SetState(1038) + p.SetState(1040) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -18479,7 +18490,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1039) + p.SetState(1041) var _x = p.sql_expr(7) @@ -18491,14 +18502,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Comparison_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1041) + p.SetState(1043) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1042) + p.SetState(1044) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -18509,7 +18520,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1043) + p.SetState(1045) var _x = p.sql_expr(6) @@ -18521,14 +18532,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1044) + p.SetState(1046) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1045) + p.SetState(1047) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -18536,7 +18547,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1046) + p.SetState(1048) var _x = p.sql_expr(3) @@ -18548,14 +18559,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1047) + p.SetState(1049) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1048) + p.SetState(1050) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -18563,7 +18574,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1049) + p.SetState(1051) var _x = p.sql_expr(2) @@ -18573,14 +18584,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 9: localctx = NewField_access_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1050) + p.SetState(1052) if !(p.Precpred(p.GetParserRuleContext(), 22)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 22)", "")) goto errorExit } { - p.SetState(1051) + p.SetState(1053) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -18588,15 +18599,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1052) + p.SetState(1054) p.Identifier() } - p.SetState(1054) + p.SetState(1056) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 132, p.GetParserRuleContext()) == 1 { { - p.SetState(1053) + p.SetState(1055) p.Type_cast() } @@ -18609,30 +18620,30 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Array_access_sql_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1056) + p.SetState(1058) if !(p.Precpred(p.GetParserRuleContext(), 21)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 21)", "")) goto errorExit } { - p.SetState(1057) + p.SetState(1059) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1066) + p.SetState(1068) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 134, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) { case 1: { - p.SetState(1058) + p.SetState(1060) var _x = p.sql_expr(0) @@ -18640,7 +18651,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } case 2: - p.SetState(1060) + p.SetState(1062) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18649,7 +18660,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1059) + p.SetState(1061) var _x = p.sql_expr(0) @@ -18658,14 +18669,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1062) + p.SetState(1064) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1064) + p.SetState(1066) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18674,7 +18685,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1063) + p.SetState(1065) var _x = p.sql_expr(0) @@ -18687,19 +18698,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1068) + p.SetState(1070) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1070) + p.SetState(1072) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 136, p.GetParserRuleContext()) == 1 { { - p.SetState(1069) + p.SetState(1071) p.Type_cast() } @@ -18710,14 +18721,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 11: localctx = NewCollate_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1072) + p.SetState(1074) if !(p.Precpred(p.GetParserRuleContext(), 19)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", "")) goto errorExit } { - p.SetState(1073) + p.SetState(1075) p.Match(KuneiformParserCOLLATE) if p.HasError() { // Recognition error - abort rule @@ -18725,20 +18736,20 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1074) + p.SetState(1076) p.Identifier() } case 12: localctx = NewIn_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1075) + p.SetState(1077) if !(p.Precpred(p.GetParserRuleContext(), 8)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) goto errorExit } - p.SetState(1077) + p.SetState(1079) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18747,7 +18758,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1076) + p.SetState(1078) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18757,7 +18768,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1079) + p.SetState(1081) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule @@ -18765,14 +18776,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1080) + p.SetState(1082) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1083) + p.SetState(1085) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18781,13 +18792,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1081) + p.SetState(1083) p.Sql_expr_list() } case KuneiformParserSELECT: { - p.SetState(1082) + p.SetState(1084) p.Select_statement() } @@ -18796,7 +18807,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1085) + p.SetState(1087) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -18809,21 +18820,21 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Is_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1087) + p.SetState(1089) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1088) + p.SetState(1090) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1090) + p.SetState(1092) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18832,7 +18843,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1089) + p.SetState(1091) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18841,7 +18852,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1098) + p.SetState(1100) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18850,7 +18861,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1092) + p.SetState(1094) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -18858,7 +18869,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1093) + p.SetState(1095) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -18866,7 +18877,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1094) + p.SetState(1096) var _x = p.sql_expr(0) @@ -18875,7 +18886,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserNULL: { - p.SetState(1095) + p.SetState(1097) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -18885,7 +18896,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserTRUE: { - p.SetState(1096) + p.SetState(1098) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -18895,7 +18906,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserFALSE: { - p.SetState(1097) + p.SetState(1099) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -18913,12 +18924,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1104) + p.SetState(1106) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 142, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -19118,14 +19129,14 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1105) + p.SetState(1107) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1109) + p.SetState(1111) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19134,7 +19145,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserPARTITION { { - p.SetState(1106) + p.SetState(1108) p.Match(KuneiformParserPARTITION) if p.HasError() { // Recognition error - abort rule @@ -19142,7 +19153,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1107) + p.SetState(1109) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -19150,7 +19161,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1108) + p.SetState(1110) var _x = p.Sql_expr_list() @@ -19158,7 +19169,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } - p.SetState(1121) + p.SetState(1123) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19167,7 +19178,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserORDER { { - p.SetState(1111) + p.SetState(1113) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -19175,7 +19186,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1112) + p.SetState(1114) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -19183,10 +19194,10 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1113) + p.SetState(1115) p.Ordering_term() } - p.SetState(1118) + p.SetState(1120) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19195,7 +19206,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1114) + p.SetState(1116) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -19203,11 +19214,11 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1115) + p.SetState(1117) p.Ordering_term() } - p.SetState(1120) + p.SetState(1122) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19217,7 +19228,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } { - p.SetState(1123) + p.SetState(1125) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19381,7 +19392,7 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) p.EnterRule(localctx, 116, KuneiformParserRULE_when_then_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(1125) + p.SetState(1127) p.Match(KuneiformParserWHEN) if p.HasError() { // Recognition error - abort rule @@ -19389,14 +19400,14 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(1126) + p.SetState(1128) var _x = p.sql_expr(0) localctx.(*When_then_clauseContext).when_condition = _x } { - p.SetState(1127) + p.SetState(1129) p.Match(KuneiformParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -19404,7 +19415,7 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(1128) + p.SetState(1130) var _x = p.sql_expr(0) @@ -19547,10 +19558,10 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1130) + p.SetState(1132) p.sql_expr(0) } - p.SetState(1135) + p.SetState(1137) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19559,7 +19570,7 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1131) + p.SetState(1133) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -19567,11 +19578,11 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { } } { - p.SetState(1132) + p.SetState(1134) p.sql_expr(0) } - p.SetState(1137) + p.SetState(1139) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19730,25 +19741,25 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex localctx = NewNormal_call_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1138) + p.SetState(1140) p.Identifier() } { - p.SetState(1139) + p.SetState(1141) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1145) + p.SetState(1147) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserDISTINCT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: - p.SetState(1141) + p.SetState(1143) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19757,7 +19768,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex if _la == KuneiformParserDISTINCT { { - p.SetState(1140) + p.SetState(1142) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -19767,13 +19778,13 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex } { - p.SetState(1143) + p.SetState(1145) p.Sql_expr_list() } case KuneiformParserSTAR: { - p.SetState(1144) + p.SetState(1146) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -19786,7 +19797,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex default: } { - p.SetState(1147) + p.SetState(1149) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19929,7 +19940,7 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1154) + p.SetState(1156) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19938,11 +19949,11 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-4611602455543676928) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&492581209245185) != 0) { { - p.SetState(1149) + p.SetState(1151) p.Action_statement() } { - p.SetState(1150) + p.SetState(1152) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19950,7 +19961,7 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { } } - p.SetState(1156) + p.SetState(1158) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20214,18 +20225,18 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) p.EnterRule(localctx, 124, KuneiformParserRULE_action_statement) var _la int - p.SetState(1177) + p.SetState(1179) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 152, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 153, p.GetParserRuleContext()) { case 1: localctx = NewSql_actionContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1157) + p.SetState(1159) p.Sql_statement() } @@ -20233,7 +20244,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) localctx = NewLocal_actionContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(1158) + p.SetState(1160) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20241,14 +20252,14 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1159) + p.SetState(1161) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1161) + p.SetState(1163) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20257,13 +20268,13 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1160) + p.SetState(1162) p.Procedure_expr_list() } } { - p.SetState(1163) + p.SetState(1165) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20274,7 +20285,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) case 3: localctx = NewExtension_actionContext(p, localctx) p.EnterOuterAlt(localctx, 3) - p.SetState(1167) + p.SetState(1169) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20283,11 +20294,11 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(1164) + p.SetState(1166) p.Variable_list() } { - p.SetState(1165) + p.SetState(1167) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -20297,7 +20308,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } { - p.SetState(1169) + p.SetState(1171) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20305,7 +20316,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1170) + p.SetState(1172) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -20313,7 +20324,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1171) + p.SetState(1173) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20321,14 +20332,14 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1172) + p.SetState(1174) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1174) + p.SetState(1176) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20337,13 +20348,13 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1173) + p.SetState(1175) p.Procedure_expr_list() } } { - p.SetState(1176) + p.SetState(1178) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20480,7 +20491,7 @@ func (p *KuneiformParser) Procedure_block() (localctx IProcedure_blockContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1182) + p.SetState(1184) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20489,11 +20500,11 @@ func (p *KuneiformParser) Procedure_block() (localctx IProcedure_blockContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1179) + p.SetState(1181) p.Proc_statement() } - p.SetState(1184) + p.SetState(1186) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21525,20 +21536,20 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(1216) + p.SetState(1218) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 161, p.GetParserRuleContext()) { case 1: localctx = NewParen_procedure_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1186) + p.SetState(1188) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -21546,23 +21557,23 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1187) + p.SetState(1189) p.procedure_expr(0) } { - p.SetState(1188) + p.SetState(1190) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1190) + p.SetState(1192) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 154, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) == 1 { { - p.SetState(1189) + p.SetState(1191) p.Type_cast() } @@ -21575,7 +21586,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1192) + p.SetState(1194) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&3147776) != 0) { @@ -21586,7 +21597,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1193) + p.SetState(1195) p.procedure_expr(13) } @@ -21595,15 +21606,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1194) + p.SetState(1196) p.Literal() } - p.SetState(1196) + p.SetState(1198) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { { - p.SetState(1195) + p.SetState(1197) p.Type_cast() } @@ -21616,15 +21627,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1198) + p.SetState(1200) p.Procedure_function_call() } - p.SetState(1200) + p.SetState(1202) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { { - p.SetState(1199) + p.SetState(1201) p.Type_cast() } @@ -21637,15 +21648,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1202) + p.SetState(1204) p.Variable() } - p.SetState(1204) + p.SetState(1206) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 158, p.GetParserRuleContext()) == 1 { { - p.SetState(1203) + p.SetState(1205) p.Type_cast() } @@ -21658,14 +21669,14 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1206) + p.SetState(1208) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1208) + p.SetState(1210) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21674,25 +21685,25 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1207) + p.SetState(1209) p.Procedure_expr_list() } } { - p.SetState(1210) + p.SetState(1212) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1212) + p.SetState(1214) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 159, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { { - p.SetState(1211) + p.SetState(1213) p.Type_cast() } @@ -21706,7 +21717,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex _prevctx = localctx { - p.SetState(1214) + p.SetState(1216) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -21715,7 +21726,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1215) + p.SetState(1217) p.procedure_expr(3) } @@ -21723,12 +21734,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1273) + p.SetState(1275) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 170, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -21738,24 +21749,24 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1271) + p.SetState(1273) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 168, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) { case 1: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1218) + p.SetState(1220) if !(p.Precpred(p.GetParserRuleContext(), 12)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 12)", "")) goto errorExit } { - p.SetState(1219) + p.SetState(1221) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -21766,21 +21777,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1220) + p.SetState(1222) p.procedure_expr(13) } case 2: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1221) + p.SetState(1223) if !(p.Precpred(p.GetParserRuleContext(), 11)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 11)", "")) goto errorExit } { - p.SetState(1222) + p.SetState(1224) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -21791,21 +21802,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1223) + p.SetState(1225) p.procedure_expr(12) } case 3: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1224) + p.SetState(1226) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } { - p.SetState(1225) + p.SetState(1227) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -21813,21 +21824,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1226) + p.SetState(1228) p.procedure_expr(7) } case 4: localctx = NewComparison_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1227) + p.SetState(1229) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1228) + p.SetState(1230) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -21838,21 +21849,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1229) + p.SetState(1231) p.procedure_expr(6) } case 5: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1230) + p.SetState(1232) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1231) + p.SetState(1233) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -21860,21 +21871,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1232) + p.SetState(1234) p.procedure_expr(3) } case 6: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1233) + p.SetState(1235) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1234) + p.SetState(1236) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -21882,21 +21893,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1235) + p.SetState(1237) p.procedure_expr(2) } case 7: localctx = NewField_access_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1236) + p.SetState(1238) if !(p.Precpred(p.GetParserRuleContext(), 15)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", "")) goto errorExit } { - p.SetState(1237) + p.SetState(1239) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -21904,19 +21915,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1238) + p.SetState(1240) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1240) + p.SetState(1242) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 161, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 162, p.GetParserRuleContext()) == 1 { { - p.SetState(1239) + p.SetState(1241) p.Type_cast() } @@ -21929,30 +21940,30 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Array_access_procedure_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1242) + p.SetState(1244) if !(p.Precpred(p.GetParserRuleContext(), 14)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) goto errorExit } { - p.SetState(1243) + p.SetState(1245) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1252) + p.SetState(1254) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 164, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) { case 1: { - p.SetState(1244) + p.SetState(1246) var _x = p.procedure_expr(0) @@ -21960,7 +21971,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } case 2: - p.SetState(1246) + p.SetState(1248) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21969,7 +21980,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1245) + p.SetState(1247) var _x = p.procedure_expr(0) @@ -21978,14 +21989,14 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1248) + p.SetState(1250) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1250) + p.SetState(1252) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21994,7 +22005,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1249) + p.SetState(1251) var _x = p.procedure_expr(0) @@ -22007,19 +22018,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } { - p.SetState(1254) + p.SetState(1256) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1256) + p.SetState(1258) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 166, p.GetParserRuleContext()) == 1 { { - p.SetState(1255) + p.SetState(1257) p.Type_cast() } @@ -22032,21 +22043,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Is_procedure_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1258) + p.SetState(1260) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1259) + p.SetState(1261) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1261) + p.SetState(1263) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22055,7 +22066,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if _la == KuneiformParserNOT { { - p.SetState(1260) + p.SetState(1262) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -22064,7 +22075,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1269) + p.SetState(1271) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22073,7 +22084,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1263) + p.SetState(1265) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -22081,7 +22092,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1264) + p.SetState(1266) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -22089,7 +22100,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1265) + p.SetState(1267) var _x = p.procedure_expr(0) @@ -22098,7 +22109,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserNULL: { - p.SetState(1266) + p.SetState(1268) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -22108,7 +22119,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserTRUE: { - p.SetState(1267) + p.SetState(1269) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -22118,7 +22129,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserFALSE: { - p.SetState(1268) + p.SetState(1270) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -22136,12 +22147,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1275) + p.SetState(1277) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 170, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -22283,10 +22294,10 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo p.EnterOuterAlt(localctx, 1) { - p.SetState(1276) + p.SetState(1278) p.procedure_expr(0) } - p.SetState(1281) + p.SetState(1283) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22295,7 +22306,7 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo for _la == KuneiformParserCOMMA { { - p.SetState(1277) + p.SetState(1279) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -22303,11 +22314,11 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo } } { - p.SetState(1278) + p.SetState(1280) p.procedure_expr(0) } - p.SetState(1283) + p.SetState(1285) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23122,18 +23133,18 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { p.EnterRule(localctx, 132, KuneiformParserRULE_proc_statement) var _la int - p.SetState(1364) + p.SetState(1366) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 180, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 181, p.GetParserRuleContext()) { case 1: localctx = NewStmt_variable_declarationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1284) + p.SetState(1286) p.Match(KuneiformParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -23141,11 +23152,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1285) + p.SetState(1287) p.Type_() } { - p.SetState(1286) + p.SetState(1288) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23156,7 +23167,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 2: localctx = NewStmt_procedure_callContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(1298) + p.SetState(1300) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23165,11 +23176,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE { { - p.SetState(1288) + p.SetState(1290) p.Variable_or_underscore() } - p.SetState(1293) + p.SetState(1295) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23178,7 +23189,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1289) + p.SetState(1291) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -23187,11 +23198,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1290) + p.SetState(1292) p.Variable_or_underscore() } - p.SetState(1295) + p.SetState(1297) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23199,7 +23210,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1296) + p.SetState(1298) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -23209,11 +23220,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1300) + p.SetState(1302) p.Procedure_function_call() } { - p.SetState(1301) + p.SetState(1303) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23225,10 +23236,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_variable_assignmentContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(1303) + p.SetState(1305) p.procedure_expr(0) } - p.SetState(1305) + p.SetState(1307) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23237,13 +23248,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserIDENTIFIER { { - p.SetState(1304) + p.SetState(1306) p.Type_() } } { - p.SetState(1307) + p.SetState(1309) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -23251,11 +23262,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1308) + p.SetState(1310) p.procedure_expr(0) } { - p.SetState(1309) + p.SetState(1311) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23267,7 +23278,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_for_loopContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(1311) + p.SetState(1313) p.Match(KuneiformParserFOR) if p.HasError() { // Recognition error - abort rule @@ -23275,7 +23286,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1312) + p.SetState(1314) var _m = p.Match(KuneiformParserVARIABLE) @@ -23286,29 +23297,29 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1313) + p.SetState(1315) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1317) + p.SetState(1319) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 174, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 175, p.GetParserRuleContext()) { case 1: { - p.SetState(1314) + p.SetState(1316) p.Range_() } case 2: { - p.SetState(1315) + p.SetState(1317) var _x = p.Variable() @@ -23317,7 +23328,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 3: { - p.SetState(1316) + p.SetState(1318) p.Sql_statement() } @@ -23325,14 +23336,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { goto errorExit } { - p.SetState(1319) + p.SetState(1321) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1323) + p.SetState(1325) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23341,11 +23352,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1320) + p.SetState(1322) p.Proc_statement() } - p.SetState(1325) + p.SetState(1327) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23353,7 +23364,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1326) + p.SetState(1328) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -23365,7 +23376,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_ifContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(1328) + p.SetState(1330) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -23373,10 +23384,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1329) + p.SetState(1331) p.If_then_block() } - p.SetState(1334) + p.SetState(1336) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23385,7 +23396,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserELSEIF { { - p.SetState(1330) + p.SetState(1332) p.Match(KuneiformParserELSEIF) if p.HasError() { // Recognition error - abort rule @@ -23393,18 +23404,18 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1331) + p.SetState(1333) p.If_then_block() } - p.SetState(1336) + p.SetState(1338) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(1346) + p.SetState(1348) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23413,7 +23424,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserELSE { { - p.SetState(1337) + p.SetState(1339) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -23421,14 +23432,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1338) + p.SetState(1340) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1342) + p.SetState(1344) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23437,11 +23448,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1339) + p.SetState(1341) p.Proc_statement() } - p.SetState(1344) + p.SetState(1346) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23449,7 +23460,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1345) + p.SetState(1347) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -23463,11 +23474,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(1348) + p.SetState(1350) p.Sql_statement() } { - p.SetState(1349) + p.SetState(1351) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23479,7 +23490,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_breakContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(1351) + p.SetState(1353) p.Match(KuneiformParserBREAK) if p.HasError() { // Recognition error - abort rule @@ -23487,7 +23498,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1352) + p.SetState(1354) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23499,14 +23510,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_returnContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(1353) + p.SetState(1355) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1356) + p.SetState(1358) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23514,13 +23525,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLBRACKET, KuneiformParserLPAREN, KuneiformParserEXCL, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1354) + p.SetState(1356) p.Procedure_expr_list() } case KuneiformParserCREATE, KuneiformParserALTER, KuneiformParserDROP, KuneiformParserDELETE, KuneiformParserUPDATE, KuneiformParserWITH, KuneiformParserSELECT, KuneiformParserINSERT: { - p.SetState(1355) + p.SetState(1357) p.Sql_statement() } @@ -23529,7 +23540,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { default: } { - p.SetState(1358) + p.SetState(1360) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23541,7 +23552,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_return_nextContext(p, localctx) p.EnterOuterAlt(localctx, 9) { - p.SetState(1359) + p.SetState(1361) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule @@ -23549,7 +23560,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1360) + p.SetState(1362) p.Match(KuneiformParserNEXT) if p.HasError() { // Recognition error - abort rule @@ -23557,11 +23568,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1361) + p.SetState(1363) p.Procedure_expr_list() } { - p.SetState(1362) + p.SetState(1364) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23666,7 +23677,7 @@ func (p *KuneiformParser) Variable_or_underscore() (localctx IVariable_or_unders p.EnterOuterAlt(localctx, 1) { - p.SetState(1366) + p.SetState(1368) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE) { @@ -23808,7 +23819,7 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio localctx = NewNormal_call_procedureContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1368) + p.SetState(1370) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -23816,14 +23827,14 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio } } { - p.SetState(1369) + p.SetState(1371) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1371) + p.SetState(1373) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23832,13 +23843,13 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1370) + p.SetState(1372) p.Procedure_expr_list() } } { - p.SetState(1373) + p.SetState(1375) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -23999,18 +24010,18 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1375) + p.SetState(1377) p.procedure_expr(0) } { - p.SetState(1376) + p.SetState(1378) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1380) + p.SetState(1382) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24019,11 +24030,11 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1377) + p.SetState(1379) p.Proc_statement() } - p.SetState(1382) + p.SetState(1384) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24031,7 +24042,7 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1383) + p.SetState(1385) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -24168,11 +24179,11 @@ func (p *KuneiformParser) Range_() (localctx IRangeContext) { p.EnterRule(localctx, 140, KuneiformParserRULE_range) p.EnterOuterAlt(localctx, 1) { - p.SetState(1385) + p.SetState(1387) p.procedure_expr(0) } { - p.SetState(1386) + p.SetState(1388) p.Match(KuneiformParserRANGE) if p.HasError() { // Recognition error - abort rule @@ -24180,7 +24191,7 @@ func (p *KuneiformParser) Range_() (localctx IRangeContext) { } } { - p.SetState(1387) + p.SetState(1389) p.procedure_expr(0) } diff --git a/parse/grammar/KuneiformParser.g4 b/parse/grammar/KuneiformParser.g4 index 2151d8840..bfa618d9e 100644 --- a/parse/grammar/KuneiformParser.g4 +++ b/parse/grammar/KuneiformParser.g4 @@ -266,7 +266,7 @@ alter_table_action: ; create_index_statement: - CREATE UNIQUE? INDEX name=identifier ON table=identifier LPAREN columns=identifier_list RPAREN + CREATE UNIQUE? INDEX name=identifier? ON table=identifier LPAREN columns=identifier_list RPAREN ; drop_index_statement: From 78c883034edd69aac4604a15afad094a84db2505 Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Fri, 25 Oct 2024 14:20:36 -0500 Subject: [PATCH 06/11] add/drop index statement --- internal/engine/generate/generate_test.go | 61 +++++++++++++++++++++++ internal/engine/generate/plpgsql.go | 14 ++++++ parse/analyze.go | 8 +++ parse/antlr.go | 52 +++++++++++++------ parse/ast.go | 52 +++++++++++++++++-- parse/parse_test.go | 61 +++++++++++++++++++++++ 6 files changed, 230 insertions(+), 18 deletions(-) diff --git a/internal/engine/generate/generate_test.go b/internal/engine/generate/generate_test.go index cbb4f46fe..3852e7cee 100644 --- a/internal/engine/generate/generate_test.go +++ b/internal/engine/generate/generate_test.go @@ -310,6 +310,67 @@ func TestGenerateDDLStatement(t *testing.T) { }, }, }, + { + name: "create index", + want: `CREATE INDEX abc ON user(name);`, + sql: &parse.SQLStatement{ + SQL: &parse.CreateIndexStatement{ + Index: parse.Index{ + Name: "abc", + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeBTree, + }, + }, + }, + }, + { + name: "create unique index", + want: `CREATE UNIQUE INDEX abc ON user(name);`, + sql: &parse.SQLStatement{ + SQL: &parse.CreateIndexStatement{ + Index: parse.Index{ + Name: "abc", + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeUnique, + }, + }, + }, + }, + { + name: "create index with no name", + want: `CREATE INDEX ON user(name);`, + sql: &parse.SQLStatement{ + SQL: &parse.CreateIndexStatement{ + Index: parse.Index{ + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeBTree, + }, + }, + }, + }, + { + name: "drop index", + want: `DROP INDEX abc;`, + sql: &parse.SQLStatement{ + SQL: &parse.DropIndexStatement{ + Name: "abc", + }, + }, + }, + + { + name: "drop index check exist", + want: `DROP INDEX IF EXISTS abc;`, + sql: &parse.SQLStatement{ + SQL: &parse.DropIndexStatement{ + Name: "abc", + CheckExist: true, + }, + }, + }, } for _, tt := range tests { diff --git a/internal/engine/generate/plpgsql.go b/internal/engine/generate/plpgsql.go index 079b52792..5dbd201b6 100644 --- a/internal/engine/generate/plpgsql.go +++ b/internal/engine/generate/plpgsql.go @@ -876,6 +876,20 @@ func (s *sqlGenerator) VisitAlterTableStatement(p0 *parse.AlterTableStatement) a return str.String() } +func (s *sqlGenerator) VisitCreateIndexStatement(p0 *parse.CreateIndexStatement) any { + return "CREATE " + p0.Index.String() +} + +func (s *sqlGenerator) VisitDropIndexStatement(p0 *parse.DropIndexStatement) any { + str := strings.Builder{} + str.WriteString("DROP INDEX ") + if p0.CheckExist { + str.WriteString("IF EXISTS ") + } + str.WriteString(p0.Name) + return str.String() +} + // procedureGenerator is a visitor that generates plpgsql code. type procedureGenerator struct { sqlGenerator diff --git a/parse/analyze.go b/parse/analyze.go index 823666765..8afd25e65 100644 --- a/parse/analyze.go +++ b/parse/analyze.go @@ -2059,6 +2059,14 @@ func (s *sqlAnalyzer) VisitAlterTableStatement(p0 *AlterTableStatement) any { panic("sqlAnalyzer: not implemented") } +func (s *sqlAnalyzer) VisitCreateIndexStatement(p0 *CreateIndexStatement) any { + panic("sqlAnalyzer: not implemented") +} + +func (s *sqlAnalyzer) VisitDropIndexStatement(p0 *DropIndexStatement) any { + panic("sqlAnalyzer: not implemented") +} + // tableToRelation converts a table to a relation. func tableToRelation(t *types.Table) *Relation { attrs := make([]*Attribute, len(t.Columns)) diff --git a/parse/antlr.go b/parse/antlr.go index a4aac7abe..d870eaad0 100644 --- a/parse/antlr.go +++ b/parse/antlr.go @@ -49,16 +49,6 @@ func (s *schemaVisitor) VisitFk_action(ctx *gen.Fk_actionContext) interface{} { panic("implement me") } -func (s *schemaVisitor) VisitCreate_index_statement(ctx *gen.Create_index_statementContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitDrop_index_statement(ctx *gen.Drop_index_statementContext) interface{} { - //TODO implement me - panic("implement me") -} - // getTextFromStream gets the text from the input stream for a given range. // This is a hack over a bug in the generated antlr code, where it will try // to access index out of bounds. @@ -930,10 +920,10 @@ func (s *schemaVisitor) VisitSql_statement(ctx *gen.Sql_statementContext) any { stmt.SQL = ctx.Create_table_statement().Accept(s).(*CreateTableStatement) case ctx.Alter_table_statement() != nil: stmt.SQL = ctx.Alter_table_statement().Accept(s).(*AlterTableStatement) - //case ctx.Create_index_statement() != nil: - // stmt.SQL = ctx.Create_index_statement().Accept(s).(*CreateIndexStatement) - //case ctx.Drop_index_statement() != nil: - // stmt.SQL = ctx.Drop_index_statement().Accept(s).(*DropIndexStatement) + case ctx.Create_index_statement() != nil: + stmt.SQL = ctx.Create_index_statement().Accept(s).(*CreateIndexStatement) + case ctx.Drop_index_statement() != nil: + stmt.SQL = ctx.Drop_index_statement().Accept(s).(*DropIndexStatement) case ctx.Select_statement() != nil: stmt.SQL = ctx.Select_statement().Accept(s).(*SelectStatement) case ctx.Update_statement() != nil: @@ -1311,6 +1301,40 @@ func (s *schemaVisitor) VisitDrop_table_constraint(ctx *gen.Drop_table_constrain return a } +func (s *schemaVisitor) VisitCreate_index_statement(ctx *gen.Create_index_statementContext) any { + a := &CreateIndexStatement{ + Index: Index{ + On: ctx.GetTable().Accept(s).(string), + Columns: ctx.GetColumns().Accept(s).([]string), + Type: IndexTypeBTree, + }, + } + + if ctx.GetName() != nil { + a.Name = ctx.GetName().Accept(s).(string) + } + + if ctx.UNIQUE() != nil { + a.Type = IndexTypeUnique + } + + a.Set(ctx) + return a +} + +func (s *schemaVisitor) VisitDrop_index_statement(ctx *gen.Drop_index_statementContext) interface{} { + a := &DropIndexStatement{ + Name: ctx.Identifier().Accept(s).(string), + } + + if ctx.EXISTS() != nil { + a.CheckExist = true + } + + a.Set(ctx) + return a +} + func (s *schemaVisitor) VisitSelect_statement(ctx *gen.Select_statementContext) any { stmt := &SelectStatement{ SelectCores: arr[*SelectCore](len(ctx.AllSelect_core())), diff --git a/parse/ast.go b/parse/ast.go index 68e78acab..399075a60 100644 --- a/parse/ast.go +++ b/parse/ast.go @@ -780,23 +780,38 @@ const ( // Index represents non-inline index declaration. type Index struct { Position - //Constraint Name string + On string Columns []string Type IndexType } func (i *Index) String() string { - if i.Type == IndexTypeUnique && i.Name == "" { //inline + if i.Type == IndexTypeUnique && len(i.Columns) == 0 { //inline return "UNIQUE" } + str := strings.Builder{} + str.WriteString("INDEX") + if i.Name != "" { + str.WriteString(" " + i.Name) + } + if i.On != "" { + str.WriteString(" ON " + i.On) + } + str.WriteString("(" + strings.Join(i.Columns, ", ") + ")") + + //s := "INDEX " + i.Name + " (" + strings.Join(i.Columns, ", ") + ")" + //if i.On != "" { + // s = "INDEX " + i.Name + " ON " + i.On + " (" + strings.Join(i.Columns, ", ") + ")" + //} + switch i.Type { case IndexTypeBTree: - return "INDEX " + i.Name + " (" + strings.Join(i.Columns, ", ") + ")" + return str.String() case IndexTypeUnique: - return "UNIQUE INDEX " + i.Name + " (" + strings.Join(i.Columns, ", ") + ")" + return "UNIQUE " + str.String() default: // should not happen panic("unknown index type") @@ -1059,6 +1074,33 @@ func (a *DropTableConstraint) ToSQL() string { return "DROP CONSTRAINT " + a.Name } +type CreateIndexStatement struct { + Index +} + +func (s *CreateIndexStatement) Accept(v Visitor) any { + return v.VisitCreateIndexStatement(s) +} + +func (s *CreateIndexStatement) StmtType() SQLStatementType { + return SQLStatementTypeCreateIndex +} + +type DropIndexStatement struct { + Position + + Name string + CheckExist bool +} + +func (s *DropIndexStatement) Accept(v Visitor) any { + return v.VisitDropIndexStatement(s) +} + +func (s *DropIndexStatement) StmtType() SQLStatementType { + return SQLStatementTypeDropIndex +} + // SelectStatement is a SELECT statement. type SelectStatement struct { Position @@ -1620,6 +1662,8 @@ type SQLVisitor interface { // DDL VisitCreateTableStatement(*CreateTableStatement) any VisitAlterTableStatement(*AlterTableStatement) any + VisitCreateIndexStatement(*CreateIndexStatement) any + VisitDropIndexStatement(*DropIndexStatement) any } // UnimplementedSqlVisitor is meant to be used when an implementing visitor only intends diff --git a/parse/parse_test.go b/parse/parse_test.go index 2e68783ab..c8280cf3b 100644 --- a/parse/parse_test.go +++ b/parse/parse_test.go @@ -2306,6 +2306,67 @@ primary key (name) }, }, }, + { + name: "create index", + sql: `CREATE INDEX abc ON user(name);`, + want: &parse.SQLStatement{ + SQL: &parse.CreateIndexStatement{ + Index: parse.Index{ + Name: "abc", + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeBTree, + }, + }, + }, + }, + { + name: "create unique index", + sql: `CREATE UNIQUE INDEX abc ON user(name);`, + want: &parse.SQLStatement{ + SQL: &parse.CreateIndexStatement{ + Index: parse.Index{ + Name: "abc", + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeUnique, + }, + }, + }, + }, + { + name: "create index with no name", + sql: `CREATE INDEX ON user(name);`, + want: &parse.SQLStatement{ + SQL: &parse.CreateIndexStatement{ + Index: parse.Index{ + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeBTree, + }, + }, + }, + }, + { + name: "drop index", + sql: `DROP INDEX abc;`, + want: &parse.SQLStatement{ + SQL: &parse.DropIndexStatement{ + Name: "abc", + }, + }, + }, + + { + name: "drop index check exist", + sql: `DROP INDEX IF EXISTS abc;`, + want: &parse.SQLStatement{ + SQL: &parse.DropIndexStatement{ + Name: "abc", + CheckExist: true, + }, + }, + }, { name: "simple select", sql: "select *, id i, length(username) as name_len from users u where u.id = 1;", From 028fd0e848b983c52818264d43655914c3ff7c53 Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Fri, 25 Oct 2024 14:24:32 -0500 Subject: [PATCH 07/11] adjust --- parse/antlr.go | 14 +- parse/gen/kuneiform_parser.go | 3736 ++++++++++----------- parse/gen/kuneiformparser_base_visitor.go | 4 - parse/gen/kuneiformparser_visitor.go | 3 - parse/grammar/KuneiformParser.g4 | 5 - 5 files changed, 1790 insertions(+), 1972 deletions(-) diff --git a/parse/antlr.go b/parse/antlr.go index d870eaad0..5f4642267 100644 --- a/parse/antlr.go +++ b/parse/antlr.go @@ -39,16 +39,6 @@ type schemaVisitor struct { actions map[string][]ActionStmt } -func (s *schemaVisitor) VisitSrc(ctx *gen.SrcContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (s *schemaVisitor) VisitFk_action(ctx *gen.Fk_actionContext) interface{} { - //TODO implement me - panic("implement me") -} - // getTextFromStream gets the text from the input stream for a given range. // This is a hack over a bug in the generated antlr code, where it will try // to access index out of bounds. @@ -1142,6 +1132,10 @@ func (s *schemaVisitor) VisitFk_constraint(ctx *gen.Fk_constraintContext) any { return c } +func (s *schemaVisitor) VisitFk_action(ctx *gen.Fk_actionContext) interface{} { + panic("implement me") +} + func (s *schemaVisitor) VisitConstraint_def(ctx *gen.Constraint_defContext) any { c := ctx.Unnamed_constraint().Accept(s).(Constraint) if ctx.GetName() != nil { diff --git a/parse/gen/kuneiform_parser.go b/parse/gen/kuneiform_parser.go index 545d2c860..8e490ddf5 100644 --- a/parse/gen/kuneiform_parser.go +++ b/parse/gen/kuneiform_parser.go @@ -76,27 +76,27 @@ func kuneiformparserParserInit() { "HASH_IDENTIFIER", "WS", "BLOCK_COMMENT", "LINE_COMMENT", } staticData.RuleNames = []string{ - "src", "schema_entry", "sql_entry", "action_entry", "procedure_entry", - "literal", "identifier", "identifier_list", "type", "type_cast", "variable", - "variable_list", "schema", "annotation", "database_declaration", "use_declaration", - "table_declaration", "column_def", "c_column_def", "index_def", "c_index_def", - "foreign_key_def", "foreign_key_action", "type_list", "named_type_list", - "typed_variable_list", "constraint", "inline_constraint", "fk_action", - "fk_constraint", "access_modifier", "action_declaration", "procedure_declaration", - "procedure_return", "sql", "sql_statement", "common_table_expression", - "create_table_statement", "constraint_def", "unnamed_constraint", "alter_table_statement", - "alter_table_action", "create_index_statement", "drop_index_statement", - "select_statement", "compound_operator", "ordering_term", "select_core", - "relation", "join", "result_column", "update_statement", "update_set_clause", - "insert_statement", "upsert_clause", "delete_statement", "sql_expr", - "window", "when_then_clause", "sql_expr_list", "sql_function_call", - "action_block", "action_statement", "procedure_block", "procedure_expr", - "procedure_expr_list", "proc_statement", "variable_or_underscore", "procedure_function_call", - "if_then_block", "range", + "schema_entry", "sql_entry", "action_entry", "procedure_entry", "literal", + "identifier", "identifier_list", "type", "type_cast", "variable", "variable_list", + "schema", "annotation", "database_declaration", "use_declaration", "table_declaration", + "column_def", "c_column_def", "index_def", "c_index_def", "foreign_key_def", + "foreign_key_action", "type_list", "named_type_list", "typed_variable_list", + "constraint", "inline_constraint", "fk_action", "fk_constraint", "access_modifier", + "action_declaration", "procedure_declaration", "procedure_return", "sql", + "sql_statement", "common_table_expression", "create_table_statement", + "constraint_def", "unnamed_constraint", "alter_table_statement", "alter_table_action", + "create_index_statement", "drop_index_statement", "select_statement", + "compound_operator", "ordering_term", "select_core", "relation", "join", + "result_column", "update_statement", "update_set_clause", "insert_statement", + "upsert_clause", "delete_statement", "sql_expr", "window", "when_then_clause", + "sql_expr_list", "sql_function_call", "action_block", "action_statement", + "procedure_block", "procedure_expr", "procedure_expr_list", "proc_statement", + "variable_or_underscore", "procedure_function_call", "if_then_block", + "range", } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 145, 1392, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, + 4, 1, 145, 1383, 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, @@ -109,673 +109,669 @@ func kuneiformparserParserInit() { 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, - 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 1, 0, 4, 0, 144, 8, 0, 11, 0, 12, - 0, 145, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, - 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 3, 5, 164, 8, 5, 1, 5, 1, 5, 3, 5, 168, - 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 176, 8, 5, 1, 6, 1, 6, - 1, 6, 1, 6, 3, 6, 182, 8, 6, 1, 7, 1, 7, 1, 7, 5, 7, 187, 8, 7, 10, 7, - 12, 7, 190, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 198, 8, 8, - 1, 8, 1, 8, 3, 8, 202, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, - 11, 1, 11, 5, 11, 212, 8, 11, 10, 11, 12, 11, 215, 9, 11, 1, 12, 1, 12, - 1, 12, 1, 12, 1, 12, 5, 12, 222, 8, 12, 10, 12, 12, 12, 225, 9, 12, 1, - 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 236, - 8, 13, 10, 13, 12, 13, 239, 9, 13, 3, 13, 241, 8, 13, 1, 13, 1, 13, 1, - 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, - 1, 15, 1, 15, 1, 15, 5, 15, 259, 8, 15, 10, 15, 12, 15, 262, 9, 15, 1, - 15, 1, 15, 3, 15, 266, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, - 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 280, 8, 16, 5, 16, 282, - 8, 16, 10, 16, 12, 16, 285, 9, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, - 17, 292, 8, 17, 10, 17, 12, 17, 295, 9, 17, 1, 18, 1, 18, 1, 18, 5, 18, - 300, 8, 18, 10, 18, 12, 18, 303, 9, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, - 19, 1, 19, 1, 20, 3, 20, 312, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, - 1, 20, 1, 21, 1, 21, 1, 21, 3, 21, 323, 8, 21, 1, 21, 1, 21, 1, 21, 1, - 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 334, 8, 21, 10, 21, 12, 21, - 337, 9, 21, 1, 22, 1, 22, 1, 22, 3, 22, 342, 8, 22, 1, 22, 1, 22, 1, 22, - 3, 22, 347, 8, 22, 3, 22, 349, 8, 22, 1, 22, 3, 22, 352, 8, 22, 1, 22, - 1, 22, 1, 22, 3, 22, 357, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 363, - 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 368, 8, 22, 1, 22, 3, 22, 371, 8, 22, - 1, 23, 1, 23, 1, 23, 5, 23, 376, 8, 23, 10, 23, 12, 23, 379, 9, 23, 1, - 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 386, 8, 24, 10, 24, 12, 24, 389, - 9, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 397, 8, 25, 10, - 25, 12, 25, 400, 9, 25, 1, 26, 1, 26, 1, 26, 3, 26, 405, 8, 26, 1, 26, - 1, 26, 1, 26, 1, 26, 3, 26, 411, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, - 26, 417, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, - 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 432, 8, 27, 1, 28, 1, 28, 1, - 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 444, 8, 28, - 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 454, 8, - 29, 10, 29, 12, 29, 457, 9, 29, 3, 29, 459, 8, 29, 1, 30, 1, 30, 1, 31, - 5, 31, 464, 8, 31, 10, 31, 12, 31, 467, 9, 31, 1, 31, 1, 31, 1, 31, 1, - 31, 3, 31, 473, 8, 31, 1, 31, 1, 31, 4, 31, 477, 8, 31, 11, 31, 12, 31, - 478, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 5, 32, 486, 8, 32, 10, 32, 12, - 32, 489, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 495, 8, 32, 1, 32, 1, - 32, 4, 32, 499, 8, 32, 11, 32, 12, 32, 500, 1, 32, 3, 32, 504, 8, 32, 1, - 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 512, 8, 33, 1, 33, 1, 33, - 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 522, 8, 33, 1, 34, 1, - 34, 1, 34, 1, 35, 1, 35, 3, 35, 529, 8, 35, 1, 35, 1, 35, 1, 35, 5, 35, - 534, 8, 35, 10, 35, 12, 35, 537, 9, 35, 3, 35, 539, 8, 35, 1, 35, 1, 35, - 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 549, 8, 35, 1, 36, 1, - 36, 1, 36, 1, 36, 1, 36, 5, 36, 556, 8, 36, 10, 36, 12, 36, 559, 9, 36, - 3, 36, 561, 8, 36, 1, 36, 3, 36, 564, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, - 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 578, 8, - 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 584, 8, 37, 5, 37, 586, 8, 37, 10, - 37, 12, 37, 589, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 595, 8, 38, - 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, - 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, - 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 622, 8, 39, 1, 40, 1, 40, 1, 40, 1, - 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, - 637, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, - 41, 3, 41, 648, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, - 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, - 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 672, 8, 41, 1, 42, 1, 42, 3, 42, - 676, 8, 42, 1, 42, 1, 42, 3, 42, 680, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, - 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 692, 8, 43, 1, 43, 1, - 43, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 700, 8, 44, 10, 44, 12, 44, 703, - 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 710, 8, 44, 10, 44, 12, - 44, 713, 9, 44, 3, 44, 715, 8, 44, 1, 44, 1, 44, 3, 44, 719, 8, 44, 1, - 44, 1, 44, 3, 44, 723, 8, 44, 1, 45, 1, 45, 3, 45, 727, 8, 45, 1, 45, 1, - 45, 3, 45, 731, 8, 45, 1, 46, 1, 46, 3, 46, 735, 8, 46, 1, 46, 1, 46, 3, - 46, 739, 8, 46, 1, 47, 1, 47, 3, 47, 743, 8, 47, 1, 47, 1, 47, 1, 47, 5, - 47, 748, 8, 47, 10, 47, 12, 47, 751, 9, 47, 1, 47, 1, 47, 1, 47, 5, 47, - 756, 8, 47, 10, 47, 12, 47, 759, 9, 47, 3, 47, 761, 8, 47, 1, 47, 1, 47, - 3, 47, 765, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 772, 8, 47, - 3, 47, 774, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 5, 47, 785, 8, 47, 10, 47, 12, 47, 788, 9, 47, 3, 47, 790, 8, - 47, 1, 48, 1, 48, 3, 48, 794, 8, 48, 1, 48, 3, 48, 797, 8, 48, 1, 48, 1, - 48, 1, 48, 1, 48, 3, 48, 803, 8, 48, 1, 48, 3, 48, 806, 8, 48, 3, 48, 808, - 8, 48, 1, 49, 3, 49, 811, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, - 50, 1, 50, 3, 50, 820, 8, 50, 1, 50, 3, 50, 823, 8, 50, 1, 50, 1, 50, 1, - 50, 3, 50, 828, 8, 50, 1, 50, 3, 50, 831, 8, 50, 1, 51, 1, 51, 1, 51, 3, - 51, 836, 8, 51, 1, 51, 3, 51, 839, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, - 51, 845, 8, 51, 10, 51, 12, 51, 848, 9, 51, 1, 51, 1, 51, 1, 51, 5, 51, - 853, 8, 51, 10, 51, 12, 51, 856, 9, 51, 3, 51, 858, 8, 51, 1, 51, 1, 51, - 3, 51, 862, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, - 53, 3, 53, 872, 8, 53, 1, 53, 3, 53, 875, 8, 53, 1, 53, 1, 53, 1, 53, 1, - 53, 3, 53, 881, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, - 1, 53, 1, 53, 5, 53, 892, 8, 53, 10, 53, 12, 53, 895, 9, 53, 1, 53, 3, - 53, 898, 8, 53, 1, 53, 3, 53, 901, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, - 54, 1, 54, 1, 54, 3, 54, 910, 8, 54, 3, 54, 912, 8, 54, 1, 54, 1, 54, 1, - 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 921, 8, 54, 10, 54, 12, 54, 924, - 9, 54, 1, 54, 1, 54, 3, 54, 928, 8, 54, 3, 54, 930, 8, 54, 1, 55, 1, 55, - 1, 55, 1, 55, 3, 55, 936, 8, 55, 1, 55, 3, 55, 939, 8, 55, 1, 55, 1, 55, - 3, 55, 943, 8, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 950, 8, 56, - 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 956, 8, 56, 1, 56, 1, 56, 1, 56, 1, - 56, 1, 56, 1, 56, 1, 56, 3, 56, 965, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, - 970, 8, 56, 1, 56, 1, 56, 3, 56, 974, 8, 56, 1, 56, 1, 56, 3, 56, 978, - 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 983, 8, 56, 1, 56, 1, 56, 3, 56, 987, - 8, 56, 1, 56, 1, 56, 3, 56, 991, 8, 56, 1, 56, 4, 56, 994, 8, 56, 11, 56, - 12, 56, 995, 1, 56, 1, 56, 3, 56, 1000, 8, 56, 1, 56, 1, 56, 1, 56, 3, - 56, 1005, 8, 56, 1, 56, 3, 56, 1008, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, - 3, 56, 1014, 8, 56, 1, 56, 1, 56, 3, 56, 1018, 8, 56, 1, 56, 1, 56, 1, - 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1031, - 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1037, 8, 56, 1, 56, 1, 56, 1, - 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, - 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1057, 8, 56, 1, 56, 1, 56, 1, - 56, 1, 56, 3, 56, 1063, 8, 56, 1, 56, 1, 56, 3, 56, 1067, 8, 56, 3, 56, - 1069, 8, 56, 1, 56, 1, 56, 3, 56, 1073, 8, 56, 1, 56, 1, 56, 1, 56, 1, - 56, 1, 56, 3, 56, 1080, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1086, - 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1093, 8, 56, 1, 56, 1, - 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1101, 8, 56, 5, 56, 1103, 8, 56, - 10, 56, 12, 56, 1106, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1112, 8, - 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 1119, 8, 57, 10, 57, 12, - 57, 1122, 9, 57, 3, 57, 1124, 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, - 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 5, 59, 1136, 8, 59, 10, 59, 12, 59, - 1139, 9, 59, 1, 60, 1, 60, 1, 60, 3, 60, 1144, 8, 60, 1, 60, 1, 60, 3, - 60, 1148, 8, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 5, 61, 1155, 8, 61, - 10, 61, 12, 61, 1158, 9, 61, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1164, 8, - 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1170, 8, 62, 1, 62, 1, 62, 1, 62, - 1, 62, 1, 62, 3, 62, 1177, 8, 62, 1, 62, 3, 62, 1180, 8, 62, 1, 63, 5, - 63, 1183, 8, 63, 10, 63, 12, 63, 1186, 9, 63, 1, 64, 1, 64, 1, 64, 1, 64, - 1, 64, 3, 64, 1193, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1199, 8, - 64, 1, 64, 1, 64, 3, 64, 1203, 8, 64, 1, 64, 1, 64, 3, 64, 1207, 8, 64, - 1, 64, 1, 64, 3, 64, 1211, 8, 64, 1, 64, 1, 64, 3, 64, 1215, 8, 64, 1, - 64, 1, 64, 3, 64, 1219, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, - 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, - 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1243, 8, 64, 1, 64, 1, 64, - 1, 64, 1, 64, 3, 64, 1249, 8, 64, 1, 64, 1, 64, 3, 64, 1253, 8, 64, 3, - 64, 1255, 8, 64, 1, 64, 1, 64, 3, 64, 1259, 8, 64, 1, 64, 1, 64, 1, 64, - 3, 64, 1264, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1272, - 8, 64, 5, 64, 1274, 8, 64, 10, 64, 12, 64, 1277, 9, 64, 1, 65, 1, 65, 1, - 65, 5, 65, 1282, 8, 65, 10, 65, 12, 65, 1285, 9, 65, 1, 66, 1, 66, 1, 66, - 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 1294, 8, 66, 10, 66, 12, 66, 1297, 9, - 66, 1, 66, 1, 66, 3, 66, 1301, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, - 3, 66, 1308, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, - 66, 1, 66, 1, 66, 3, 66, 1320, 8, 66, 1, 66, 1, 66, 5, 66, 1324, 8, 66, - 10, 66, 12, 66, 1327, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, - 5, 66, 1335, 8, 66, 10, 66, 12, 66, 1338, 9, 66, 1, 66, 1, 66, 1, 66, 5, - 66, 1343, 8, 66, 10, 66, 12, 66, 1346, 9, 66, 1, 66, 3, 66, 1349, 8, 66, - 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1359, 8, - 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1367, 8, 66, 1, 67, - 1, 67, 1, 68, 1, 68, 1, 68, 3, 68, 1374, 8, 68, 1, 68, 1, 68, 1, 69, 1, - 69, 1, 69, 5, 69, 1381, 8, 69, 10, 69, 12, 69, 1384, 9, 69, 1, 69, 1, 69, - 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 0, 2, 112, 128, 71, 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, 0, 15, - 1, 0, 20, 21, 1, 0, 129, 130, 1, 0, 140, 141, 3, 0, 52, 52, 56, 56, 67, - 67, 1, 0, 64, 65, 1, 0, 62, 63, 1, 0, 38, 41, 1, 0, 83, 84, 1, 0, 110, - 111, 2, 0, 79, 81, 105, 105, 3, 0, 14, 14, 19, 19, 22, 22, 1, 0, 70, 71, - 2, 0, 15, 16, 23, 27, 2, 0, 11, 11, 20, 21, 2, 0, 29, 29, 140, 140, 1588, - 0, 143, 1, 0, 0, 0, 2, 149, 1, 0, 0, 0, 4, 152, 1, 0, 0, 0, 6, 155, 1, - 0, 0, 0, 8, 158, 1, 0, 0, 0, 10, 175, 1, 0, 0, 0, 12, 181, 1, 0, 0, 0, - 14, 183, 1, 0, 0, 0, 16, 191, 1, 0, 0, 0, 18, 203, 1, 0, 0, 0, 20, 206, - 1, 0, 0, 0, 22, 208, 1, 0, 0, 0, 24, 216, 1, 0, 0, 0, 26, 226, 1, 0, 0, - 0, 28, 244, 1, 0, 0, 0, 30, 248, 1, 0, 0, 0, 32, 271, 1, 0, 0, 0, 34, 288, - 1, 0, 0, 0, 36, 296, 1, 0, 0, 0, 38, 304, 1, 0, 0, 0, 40, 311, 1, 0, 0, - 0, 42, 322, 1, 0, 0, 0, 44, 348, 1, 0, 0, 0, 46, 372, 1, 0, 0, 0, 48, 380, - 1, 0, 0, 0, 50, 390, 1, 0, 0, 0, 52, 410, 1, 0, 0, 0, 54, 431, 1, 0, 0, - 0, 56, 433, 1, 0, 0, 0, 58, 445, 1, 0, 0, 0, 60, 460, 1, 0, 0, 0, 62, 465, - 1, 0, 0, 0, 64, 487, 1, 0, 0, 0, 66, 509, 1, 0, 0, 0, 68, 523, 1, 0, 0, - 0, 70, 538, 1, 0, 0, 0, 72, 550, 1, 0, 0, 0, 74, 570, 1, 0, 0, 0, 76, 594, - 1, 0, 0, 0, 78, 621, 1, 0, 0, 0, 80, 623, 1, 0, 0, 0, 82, 671, 1, 0, 0, - 0, 84, 673, 1, 0, 0, 0, 86, 687, 1, 0, 0, 0, 88, 695, 1, 0, 0, 0, 90, 730, - 1, 0, 0, 0, 92, 732, 1, 0, 0, 0, 94, 740, 1, 0, 0, 0, 96, 807, 1, 0, 0, - 0, 98, 810, 1, 0, 0, 0, 100, 830, 1, 0, 0, 0, 102, 832, 1, 0, 0, 0, 104, - 863, 1, 0, 0, 0, 106, 867, 1, 0, 0, 0, 108, 902, 1, 0, 0, 0, 110, 931, - 1, 0, 0, 0, 112, 1017, 1, 0, 0, 0, 114, 1107, 1, 0, 0, 0, 116, 1127, 1, - 0, 0, 0, 118, 1132, 1, 0, 0, 0, 120, 1140, 1, 0, 0, 0, 122, 1156, 1, 0, - 0, 0, 124, 1179, 1, 0, 0, 0, 126, 1184, 1, 0, 0, 0, 128, 1218, 1, 0, 0, - 0, 130, 1278, 1, 0, 0, 0, 132, 1366, 1, 0, 0, 0, 134, 1368, 1, 0, 0, 0, - 136, 1370, 1, 0, 0, 0, 138, 1377, 1, 0, 0, 0, 140, 1387, 1, 0, 0, 0, 142, - 144, 3, 68, 34, 0, 143, 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 143, - 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 148, 5, 0, - 0, 1, 148, 1, 1, 0, 0, 0, 149, 150, 3, 24, 12, 0, 150, 151, 5, 0, 0, 1, - 151, 3, 1, 0, 0, 0, 152, 153, 3, 68, 34, 0, 153, 154, 5, 0, 0, 1, 154, - 5, 1, 0, 0, 0, 155, 156, 3, 122, 61, 0, 156, 157, 5, 0, 0, 1, 157, 7, 1, - 0, 0, 0, 158, 159, 3, 126, 63, 0, 159, 160, 5, 0, 0, 1, 160, 9, 1, 0, 0, - 0, 161, 176, 5, 128, 0, 0, 162, 164, 7, 0, 0, 0, 163, 162, 1, 0, 0, 0, - 163, 164, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 176, 5, 131, 0, 0, 166, - 168, 7, 0, 0, 0, 167, 166, 1, 0, 0, 0, 167, 168, 1, 0, 0, 0, 168, 169, - 1, 0, 0, 0, 169, 170, 5, 131, 0, 0, 170, 171, 5, 12, 0, 0, 171, 176, 5, - 131, 0, 0, 172, 176, 7, 1, 0, 0, 173, 176, 5, 61, 0, 0, 174, 176, 5, 132, - 0, 0, 175, 161, 1, 0, 0, 0, 175, 163, 1, 0, 0, 0, 175, 167, 1, 0, 0, 0, - 175, 172, 1, 0, 0, 0, 175, 173, 1, 0, 0, 0, 175, 174, 1, 0, 0, 0, 176, - 11, 1, 0, 0, 0, 177, 178, 5, 32, 0, 0, 178, 179, 5, 139, 0, 0, 179, 182, - 5, 32, 0, 0, 180, 182, 5, 139, 0, 0, 181, 177, 1, 0, 0, 0, 181, 180, 1, - 0, 0, 0, 182, 13, 1, 0, 0, 0, 183, 188, 3, 12, 6, 0, 184, 185, 5, 9, 0, - 0, 185, 187, 3, 12, 6, 0, 186, 184, 1, 0, 0, 0, 187, 190, 1, 0, 0, 0, 188, - 186, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 15, 1, 0, 0, 0, 190, 188, 1, - 0, 0, 0, 191, 197, 5, 139, 0, 0, 192, 193, 5, 7, 0, 0, 193, 194, 5, 131, - 0, 0, 194, 195, 5, 9, 0, 0, 195, 196, 5, 131, 0, 0, 196, 198, 5, 8, 0, - 0, 197, 192, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 201, 1, 0, 0, 0, 199, - 200, 5, 3, 0, 0, 200, 202, 5, 4, 0, 0, 201, 199, 1, 0, 0, 0, 201, 202, - 1, 0, 0, 0, 202, 17, 1, 0, 0, 0, 203, 204, 5, 28, 0, 0, 204, 205, 3, 16, - 8, 0, 205, 19, 1, 0, 0, 0, 206, 207, 7, 2, 0, 0, 207, 21, 1, 0, 0, 0, 208, - 213, 3, 20, 10, 0, 209, 210, 5, 9, 0, 0, 210, 212, 3, 20, 10, 0, 211, 209, - 1, 0, 0, 0, 212, 215, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, - 0, 0, 214, 23, 1, 0, 0, 0, 215, 213, 1, 0, 0, 0, 216, 223, 3, 28, 14, 0, - 217, 222, 3, 30, 15, 0, 218, 222, 3, 32, 16, 0, 219, 222, 3, 62, 31, 0, - 220, 222, 3, 64, 32, 0, 221, 217, 1, 0, 0, 0, 221, 218, 1, 0, 0, 0, 221, - 219, 1, 0, 0, 0, 221, 220, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, - 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 25, 1, 0, 0, 0, 225, 223, 1, 0, - 0, 0, 226, 227, 5, 141, 0, 0, 227, 240, 5, 7, 0, 0, 228, 229, 5, 139, 0, - 0, 229, 230, 5, 15, 0, 0, 230, 237, 3, 10, 5, 0, 231, 232, 5, 9, 0, 0, - 232, 233, 5, 139, 0, 0, 233, 234, 5, 15, 0, 0, 234, 236, 3, 10, 5, 0, 235, - 231, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, - 1, 0, 0, 0, 238, 241, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 228, 1, 0, - 0, 0, 240, 241, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 243, 5, 8, 0, 0, - 243, 27, 1, 0, 0, 0, 244, 245, 5, 33, 0, 0, 245, 246, 5, 139, 0, 0, 246, - 247, 5, 6, 0, 0, 247, 29, 1, 0, 0, 0, 248, 249, 5, 34, 0, 0, 249, 265, - 5, 139, 0, 0, 250, 251, 5, 1, 0, 0, 251, 252, 5, 139, 0, 0, 252, 253, 5, - 5, 0, 0, 253, 260, 3, 10, 5, 0, 254, 255, 5, 9, 0, 0, 255, 256, 5, 139, - 0, 0, 256, 257, 5, 5, 0, 0, 257, 259, 3, 10, 5, 0, 258, 254, 1, 0, 0, 0, - 259, 262, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, - 263, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 264, 5, 2, 0, 0, 264, 266, - 1, 0, 0, 0, 265, 250, 1, 0, 0, 0, 265, 266, 1, 0, 0, 0, 266, 267, 1, 0, - 0, 0, 267, 268, 5, 82, 0, 0, 268, 269, 5, 139, 0, 0, 269, 270, 5, 6, 0, - 0, 270, 31, 1, 0, 0, 0, 271, 272, 5, 35, 0, 0, 272, 273, 5, 139, 0, 0, - 273, 274, 5, 1, 0, 0, 274, 283, 3, 34, 17, 0, 275, 279, 5, 9, 0, 0, 276, - 280, 3, 34, 17, 0, 277, 280, 3, 38, 19, 0, 278, 280, 3, 42, 21, 0, 279, - 276, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 278, 1, 0, 0, 0, 280, 282, - 1, 0, 0, 0, 281, 275, 1, 0, 0, 0, 282, 285, 1, 0, 0, 0, 283, 281, 1, 0, - 0, 0, 283, 284, 1, 0, 0, 0, 284, 286, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, - 286, 287, 5, 2, 0, 0, 287, 33, 1, 0, 0, 0, 288, 289, 5, 139, 0, 0, 289, - 293, 3, 16, 8, 0, 290, 292, 3, 52, 26, 0, 291, 290, 1, 0, 0, 0, 292, 295, - 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 35, 1, 0, - 0, 0, 295, 293, 1, 0, 0, 0, 296, 297, 5, 139, 0, 0, 297, 301, 3, 16, 8, - 0, 298, 300, 3, 54, 27, 0, 299, 298, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, - 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 37, 1, 0, 0, 0, 303, 301, - 1, 0, 0, 0, 304, 305, 5, 142, 0, 0, 305, 306, 7, 3, 0, 0, 306, 307, 5, - 7, 0, 0, 307, 308, 3, 14, 7, 0, 308, 309, 5, 8, 0, 0, 309, 39, 1, 0, 0, - 0, 310, 312, 5, 56, 0, 0, 311, 310, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, - 313, 1, 0, 0, 0, 313, 314, 5, 67, 0, 0, 314, 315, 3, 12, 6, 0, 315, 316, - 5, 7, 0, 0, 316, 317, 3, 14, 7, 0, 317, 318, 5, 8, 0, 0, 318, 41, 1, 0, - 0, 0, 319, 320, 5, 51, 0, 0, 320, 323, 5, 53, 0, 0, 321, 323, 5, 133, 0, - 0, 322, 319, 1, 0, 0, 0, 322, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, - 325, 5, 7, 0, 0, 325, 326, 3, 14, 7, 0, 326, 327, 5, 8, 0, 0, 327, 328, - 7, 4, 0, 0, 328, 329, 5, 139, 0, 0, 329, 330, 5, 7, 0, 0, 330, 331, 3, - 14, 7, 0, 331, 335, 5, 8, 0, 0, 332, 334, 3, 44, 22, 0, 333, 332, 1, 0, - 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 335, 336, 1, 0, 0, 0, - 336, 43, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 338, 339, 5, 54, 0, 0, 339, - 342, 5, 63, 0, 0, 340, 342, 5, 134, 0, 0, 341, 338, 1, 0, 0, 0, 341, 340, - 1, 0, 0, 0, 342, 349, 1, 0, 0, 0, 343, 344, 5, 54, 0, 0, 344, 347, 5, 62, - 0, 0, 345, 347, 5, 135, 0, 0, 346, 343, 1, 0, 0, 0, 346, 345, 1, 0, 0, - 0, 347, 349, 1, 0, 0, 0, 348, 341, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 349, - 351, 1, 0, 0, 0, 350, 352, 5, 55, 0, 0, 351, 350, 1, 0, 0, 0, 351, 352, - 1, 0, 0, 0, 352, 370, 1, 0, 0, 0, 353, 354, 5, 92, 0, 0, 354, 357, 5, 36, - 0, 0, 355, 357, 5, 138, 0, 0, 356, 353, 1, 0, 0, 0, 356, 355, 1, 0, 0, - 0, 357, 371, 1, 0, 0, 0, 358, 371, 5, 57, 0, 0, 359, 360, 5, 59, 0, 0, - 360, 363, 5, 61, 0, 0, 361, 363, 5, 137, 0, 0, 362, 359, 1, 0, 0, 0, 362, - 361, 1, 0, 0, 0, 363, 371, 1, 0, 0, 0, 364, 365, 5, 59, 0, 0, 365, 368, - 5, 60, 0, 0, 366, 368, 5, 136, 0, 0, 367, 364, 1, 0, 0, 0, 367, 366, 1, - 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 371, 5, 58, 0, 0, 370, 356, 1, 0, 0, - 0, 370, 358, 1, 0, 0, 0, 370, 362, 1, 0, 0, 0, 370, 367, 1, 0, 0, 0, 370, - 369, 1, 0, 0, 0, 371, 45, 1, 0, 0, 0, 372, 377, 3, 16, 8, 0, 373, 374, - 5, 9, 0, 0, 374, 376, 3, 16, 8, 0, 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, - 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 47, 1, 0, 0, 0, - 379, 377, 1, 0, 0, 0, 380, 381, 5, 139, 0, 0, 381, 387, 3, 16, 8, 0, 382, - 383, 5, 9, 0, 0, 383, 384, 5, 139, 0, 0, 384, 386, 3, 16, 8, 0, 385, 382, - 1, 0, 0, 0, 386, 389, 1, 0, 0, 0, 387, 385, 1, 0, 0, 0, 387, 388, 1, 0, - 0, 0, 388, 49, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 390, 391, 3, 20, 10, 0, - 391, 398, 3, 16, 8, 0, 392, 393, 5, 9, 0, 0, 393, 394, 3, 20, 10, 0, 394, - 395, 3, 16, 8, 0, 395, 397, 1, 0, 0, 0, 396, 392, 1, 0, 0, 0, 397, 400, - 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 51, 1, 0, - 0, 0, 400, 398, 1, 0, 0, 0, 401, 411, 5, 139, 0, 0, 402, 404, 5, 52, 0, - 0, 403, 405, 5, 53, 0, 0, 404, 403, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, - 411, 1, 0, 0, 0, 406, 407, 5, 66, 0, 0, 407, 411, 5, 61, 0, 0, 408, 411, - 5, 60, 0, 0, 409, 411, 5, 56, 0, 0, 410, 401, 1, 0, 0, 0, 410, 402, 1, - 0, 0, 0, 410, 406, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 409, 1, 0, 0, - 0, 411, 416, 1, 0, 0, 0, 412, 413, 5, 7, 0, 0, 413, 414, 3, 10, 5, 0, 414, - 415, 5, 8, 0, 0, 415, 417, 1, 0, 0, 0, 416, 412, 1, 0, 0, 0, 416, 417, - 1, 0, 0, 0, 417, 53, 1, 0, 0, 0, 418, 419, 5, 52, 0, 0, 419, 432, 5, 53, - 0, 0, 420, 432, 5, 56, 0, 0, 421, 422, 5, 66, 0, 0, 422, 432, 5, 61, 0, - 0, 423, 424, 5, 60, 0, 0, 424, 432, 3, 10, 5, 0, 425, 432, 3, 58, 29, 0, - 426, 427, 5, 50, 0, 0, 427, 428, 5, 7, 0, 0, 428, 429, 3, 112, 56, 0, 429, - 430, 5, 8, 0, 0, 430, 432, 1, 0, 0, 0, 431, 418, 1, 0, 0, 0, 431, 420, - 1, 0, 0, 0, 431, 421, 1, 0, 0, 0, 431, 423, 1, 0, 0, 0, 431, 425, 1, 0, - 0, 0, 431, 426, 1, 0, 0, 0, 432, 55, 1, 0, 0, 0, 433, 434, 5, 54, 0, 0, - 434, 443, 7, 5, 0, 0, 435, 436, 5, 59, 0, 0, 436, 444, 5, 61, 0, 0, 437, - 438, 5, 59, 0, 0, 438, 444, 5, 60, 0, 0, 439, 444, 5, 58, 0, 0, 440, 441, - 5, 92, 0, 0, 441, 444, 5, 36, 0, 0, 442, 444, 5, 57, 0, 0, 443, 435, 1, - 0, 0, 0, 443, 437, 1, 0, 0, 0, 443, 439, 1, 0, 0, 0, 443, 440, 1, 0, 0, - 0, 443, 442, 1, 0, 0, 0, 444, 57, 1, 0, 0, 0, 445, 446, 5, 64, 0, 0, 446, - 447, 3, 12, 6, 0, 447, 448, 5, 7, 0, 0, 448, 449, 3, 12, 6, 0, 449, 450, - 5, 8, 0, 0, 450, 458, 1, 0, 0, 0, 451, 455, 3, 56, 28, 0, 452, 454, 3, - 56, 28, 0, 453, 452, 1, 0, 0, 0, 454, 457, 1, 0, 0, 0, 455, 453, 1, 0, - 0, 0, 455, 456, 1, 0, 0, 0, 456, 459, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, - 458, 451, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 59, 1, 0, 0, 0, 460, 461, - 7, 6, 0, 0, 461, 61, 1, 0, 0, 0, 462, 464, 3, 26, 13, 0, 463, 462, 1, 0, - 0, 0, 464, 467, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, - 466, 468, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 468, 469, 5, 36, 0, 0, 469, - 470, 5, 139, 0, 0, 470, 472, 5, 7, 0, 0, 471, 473, 3, 22, 11, 0, 472, 471, - 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 476, 5, 8, - 0, 0, 475, 477, 3, 60, 30, 0, 476, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, - 0, 478, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, - 481, 5, 1, 0, 0, 481, 482, 3, 122, 61, 0, 482, 483, 5, 2, 0, 0, 483, 63, - 1, 0, 0, 0, 484, 486, 3, 26, 13, 0, 485, 484, 1, 0, 0, 0, 486, 489, 1, - 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 490, 1, 0, 0, - 0, 489, 487, 1, 0, 0, 0, 490, 491, 5, 37, 0, 0, 491, 492, 5, 139, 0, 0, - 492, 494, 5, 7, 0, 0, 493, 495, 3, 50, 25, 0, 494, 493, 1, 0, 0, 0, 494, - 495, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 5, 8, 0, 0, 497, 499, - 3, 60, 30, 0, 498, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 498, 1, - 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 503, 1, 0, 0, 0, 502, 504, 3, 66, 33, - 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, - 506, 5, 1, 0, 0, 506, 507, 3, 126, 63, 0, 507, 508, 5, 2, 0, 0, 508, 65, - 1, 0, 0, 0, 509, 521, 5, 91, 0, 0, 510, 512, 5, 35, 0, 0, 511, 510, 1, - 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 514, 5, 7, 0, - 0, 514, 515, 3, 48, 24, 0, 515, 516, 5, 8, 0, 0, 516, 522, 1, 0, 0, 0, - 517, 518, 5, 7, 0, 0, 518, 519, 3, 46, 23, 0, 519, 520, 5, 8, 0, 0, 520, - 522, 1, 0, 0, 0, 521, 511, 1, 0, 0, 0, 521, 517, 1, 0, 0, 0, 522, 67, 1, - 0, 0, 0, 523, 524, 3, 70, 35, 0, 524, 525, 5, 6, 0, 0, 525, 69, 1, 0, 0, - 0, 526, 528, 5, 93, 0, 0, 527, 529, 5, 127, 0, 0, 528, 527, 1, 0, 0, 0, - 528, 529, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 535, 3, 72, 36, 0, 531, - 532, 5, 9, 0, 0, 532, 534, 3, 72, 36, 0, 533, 531, 1, 0, 0, 0, 534, 537, - 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 539, 1, 0, - 0, 0, 537, 535, 1, 0, 0, 0, 538, 526, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, - 539, 548, 1, 0, 0, 0, 540, 549, 3, 74, 37, 0, 541, 549, 3, 80, 40, 0, 542, - 549, 3, 84, 42, 0, 543, 549, 3, 86, 43, 0, 544, 549, 3, 88, 44, 0, 545, - 549, 3, 102, 51, 0, 546, 549, 3, 106, 53, 0, 547, 549, 3, 110, 55, 0, 548, - 540, 1, 0, 0, 0, 548, 541, 1, 0, 0, 0, 548, 542, 1, 0, 0, 0, 548, 543, - 1, 0, 0, 0, 548, 544, 1, 0, 0, 0, 548, 545, 1, 0, 0, 0, 548, 546, 1, 0, - 0, 0, 548, 547, 1, 0, 0, 0, 549, 71, 1, 0, 0, 0, 550, 563, 3, 12, 6, 0, - 551, 560, 5, 7, 0, 0, 552, 557, 3, 12, 6, 0, 553, 554, 5, 9, 0, 0, 554, - 556, 3, 12, 6, 0, 555, 553, 1, 0, 0, 0, 556, 559, 1, 0, 0, 0, 557, 555, - 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 561, 1, 0, 0, 0, 559, 557, 1, 0, - 0, 0, 560, 552, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, - 562, 564, 5, 8, 0, 0, 563, 551, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, - 565, 1, 0, 0, 0, 565, 566, 5, 82, 0, 0, 566, 567, 5, 7, 0, 0, 567, 568, - 3, 88, 44, 0, 568, 569, 5, 8, 0, 0, 569, 73, 1, 0, 0, 0, 570, 571, 5, 42, - 0, 0, 571, 572, 5, 35, 0, 0, 572, 573, 3, 12, 6, 0, 573, 577, 5, 7, 0, - 0, 574, 578, 3, 36, 18, 0, 575, 578, 3, 76, 38, 0, 576, 578, 3, 40, 20, - 0, 577, 574, 1, 0, 0, 0, 577, 575, 1, 0, 0, 0, 577, 576, 1, 0, 0, 0, 578, - 587, 1, 0, 0, 0, 579, 583, 5, 9, 0, 0, 580, 584, 3, 36, 18, 0, 581, 584, - 3, 76, 38, 0, 582, 584, 3, 40, 20, 0, 583, 580, 1, 0, 0, 0, 583, 581, 1, - 0, 0, 0, 583, 582, 1, 0, 0, 0, 584, 586, 1, 0, 0, 0, 585, 579, 1, 0, 0, - 0, 586, 589, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, - 590, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 590, 591, 5, 8, 0, 0, 591, 75, 1, - 0, 0, 0, 592, 593, 5, 49, 0, 0, 593, 595, 3, 12, 6, 0, 594, 592, 1, 0, - 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 597, 3, 78, 39, - 0, 597, 77, 1, 0, 0, 0, 598, 599, 5, 52, 0, 0, 599, 600, 5, 53, 0, 0, 600, - 601, 5, 7, 0, 0, 601, 602, 3, 14, 7, 0, 602, 603, 5, 8, 0, 0, 603, 622, - 1, 0, 0, 0, 604, 605, 5, 56, 0, 0, 605, 606, 5, 7, 0, 0, 606, 607, 3, 14, - 7, 0, 607, 608, 5, 8, 0, 0, 608, 622, 1, 0, 0, 0, 609, 610, 5, 50, 0, 0, - 610, 611, 5, 7, 0, 0, 611, 612, 3, 112, 56, 0, 612, 613, 5, 8, 0, 0, 613, - 622, 1, 0, 0, 0, 614, 615, 5, 51, 0, 0, 615, 616, 5, 53, 0, 0, 616, 617, - 5, 7, 0, 0, 617, 618, 3, 12, 6, 0, 618, 619, 5, 8, 0, 0, 619, 620, 3, 58, - 29, 0, 620, 622, 1, 0, 0, 0, 621, 598, 1, 0, 0, 0, 621, 604, 1, 0, 0, 0, - 621, 609, 1, 0, 0, 0, 621, 614, 1, 0, 0, 0, 622, 79, 1, 0, 0, 0, 623, 624, - 5, 43, 0, 0, 624, 625, 5, 35, 0, 0, 625, 626, 3, 12, 6, 0, 626, 627, 3, - 82, 41, 0, 627, 81, 1, 0, 0, 0, 628, 629, 5, 43, 0, 0, 629, 630, 5, 44, - 0, 0, 630, 631, 3, 12, 6, 0, 631, 636, 5, 59, 0, 0, 632, 633, 5, 66, 0, - 0, 633, 637, 5, 61, 0, 0, 634, 635, 5, 60, 0, 0, 635, 637, 3, 10, 5, 0, - 636, 632, 1, 0, 0, 0, 636, 634, 1, 0, 0, 0, 637, 672, 1, 0, 0, 0, 638, - 639, 5, 43, 0, 0, 639, 640, 5, 44, 0, 0, 640, 641, 3, 12, 6, 0, 641, 647, - 5, 46, 0, 0, 642, 643, 5, 66, 0, 0, 643, 648, 5, 61, 0, 0, 644, 648, 5, - 60, 0, 0, 645, 646, 5, 49, 0, 0, 646, 648, 3, 12, 6, 0, 647, 642, 1, 0, - 0, 0, 647, 644, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, 672, 1, 0, 0, 0, - 649, 650, 5, 45, 0, 0, 650, 651, 5, 44, 0, 0, 651, 652, 3, 12, 6, 0, 652, - 653, 3, 16, 8, 0, 653, 672, 1, 0, 0, 0, 654, 655, 5, 46, 0, 0, 655, 656, - 5, 44, 0, 0, 656, 672, 3, 12, 6, 0, 657, 658, 5, 47, 0, 0, 658, 659, 5, - 44, 0, 0, 659, 660, 3, 12, 6, 0, 660, 661, 5, 48, 0, 0, 661, 662, 3, 12, - 6, 0, 662, 672, 1, 0, 0, 0, 663, 664, 5, 47, 0, 0, 664, 665, 5, 48, 0, - 0, 665, 672, 3, 12, 6, 0, 666, 667, 5, 45, 0, 0, 667, 672, 3, 76, 38, 0, - 668, 669, 5, 46, 0, 0, 669, 670, 5, 49, 0, 0, 670, 672, 3, 12, 6, 0, 671, - 628, 1, 0, 0, 0, 671, 638, 1, 0, 0, 0, 671, 649, 1, 0, 0, 0, 671, 654, - 1, 0, 0, 0, 671, 657, 1, 0, 0, 0, 671, 663, 1, 0, 0, 0, 671, 666, 1, 0, - 0, 0, 671, 668, 1, 0, 0, 0, 672, 83, 1, 0, 0, 0, 673, 675, 5, 42, 0, 0, - 674, 676, 5, 56, 0, 0, 675, 674, 1, 0, 0, 0, 675, 676, 1, 0, 0, 0, 676, - 677, 1, 0, 0, 0, 677, 679, 5, 67, 0, 0, 678, 680, 3, 12, 6, 0, 679, 678, - 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 682, 5, 54, - 0, 0, 682, 683, 3, 12, 6, 0, 683, 684, 5, 7, 0, 0, 684, 685, 3, 14, 7, - 0, 685, 686, 5, 8, 0, 0, 686, 85, 1, 0, 0, 0, 687, 688, 5, 46, 0, 0, 688, - 691, 5, 67, 0, 0, 689, 690, 5, 117, 0, 0, 690, 692, 5, 75, 0, 0, 691, 689, - 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 3, 12, - 6, 0, 694, 87, 1, 0, 0, 0, 695, 701, 3, 94, 47, 0, 696, 697, 3, 90, 45, - 0, 697, 698, 3, 94, 47, 0, 698, 700, 1, 0, 0, 0, 699, 696, 1, 0, 0, 0, - 700, 703, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 701, 702, 1, 0, 0, 0, 702, - 714, 1, 0, 0, 0, 703, 701, 1, 0, 0, 0, 704, 705, 5, 87, 0, 0, 705, 706, - 5, 88, 0, 0, 706, 711, 3, 92, 46, 0, 707, 708, 5, 9, 0, 0, 708, 710, 3, - 92, 46, 0, 709, 707, 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, 711, 709, 1, 0, - 0, 0, 711, 712, 1, 0, 0, 0, 712, 715, 1, 0, 0, 0, 713, 711, 1, 0, 0, 0, - 714, 704, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 718, 1, 0, 0, 0, 716, - 717, 5, 85, 0, 0, 717, 719, 3, 112, 56, 0, 718, 716, 1, 0, 0, 0, 718, 719, - 1, 0, 0, 0, 719, 722, 1, 0, 0, 0, 720, 721, 5, 86, 0, 0, 721, 723, 3, 112, - 56, 0, 722, 720, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 89, 1, 0, 0, 0, - 724, 726, 5, 106, 0, 0, 725, 727, 5, 76, 0, 0, 726, 725, 1, 0, 0, 0, 726, - 727, 1, 0, 0, 0, 727, 731, 1, 0, 0, 0, 728, 731, 5, 107, 0, 0, 729, 731, - 5, 108, 0, 0, 730, 724, 1, 0, 0, 0, 730, 728, 1, 0, 0, 0, 730, 729, 1, - 0, 0, 0, 731, 91, 1, 0, 0, 0, 732, 734, 3, 112, 56, 0, 733, 735, 7, 7, - 0, 0, 734, 733, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 738, 1, 0, 0, 0, - 736, 737, 5, 109, 0, 0, 737, 739, 7, 8, 0, 0, 738, 736, 1, 0, 0, 0, 738, - 739, 1, 0, 0, 0, 739, 93, 1, 0, 0, 0, 740, 742, 5, 102, 0, 0, 741, 743, - 5, 98, 0, 0, 742, 741, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 1, 0, - 0, 0, 744, 749, 3, 100, 50, 0, 745, 746, 5, 9, 0, 0, 746, 748, 3, 100, - 50, 0, 747, 745, 1, 0, 0, 0, 748, 751, 1, 0, 0, 0, 749, 747, 1, 0, 0, 0, - 749, 750, 1, 0, 0, 0, 750, 760, 1, 0, 0, 0, 751, 749, 1, 0, 0, 0, 752, - 753, 5, 99, 0, 0, 753, 757, 3, 96, 48, 0, 754, 756, 3, 98, 49, 0, 755, - 754, 1, 0, 0, 0, 756, 759, 1, 0, 0, 0, 757, 755, 1, 0, 0, 0, 757, 758, - 1, 0, 0, 0, 758, 761, 1, 0, 0, 0, 759, 757, 1, 0, 0, 0, 760, 752, 1, 0, - 0, 0, 760, 761, 1, 0, 0, 0, 761, 764, 1, 0, 0, 0, 762, 763, 5, 100, 0, - 0, 763, 765, 3, 112, 56, 0, 764, 762, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, - 765, 773, 1, 0, 0, 0, 766, 767, 5, 89, 0, 0, 767, 768, 5, 88, 0, 0, 768, - 771, 3, 118, 59, 0, 769, 770, 5, 90, 0, 0, 770, 772, 3, 112, 56, 0, 771, - 769, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 774, 1, 0, 0, 0, 773, 766, - 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 789, 1, 0, 0, 0, 775, 776, 5, 125, - 0, 0, 776, 777, 3, 12, 6, 0, 777, 778, 5, 82, 0, 0, 778, 786, 3, 114, 57, - 0, 779, 780, 5, 9, 0, 0, 780, 781, 3, 12, 6, 0, 781, 782, 5, 82, 0, 0, - 782, 783, 3, 114, 57, 0, 783, 785, 1, 0, 0, 0, 784, 779, 1, 0, 0, 0, 785, - 788, 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 790, - 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 789, 775, 1, 0, 0, 0, 789, 790, 1, 0, - 0, 0, 790, 95, 1, 0, 0, 0, 791, 796, 3, 12, 6, 0, 792, 794, 5, 82, 0, 0, - 793, 792, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, - 797, 3, 12, 6, 0, 796, 793, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 808, - 1, 0, 0, 0, 798, 799, 5, 7, 0, 0, 799, 800, 3, 88, 44, 0, 800, 805, 5, - 8, 0, 0, 801, 803, 5, 82, 0, 0, 802, 801, 1, 0, 0, 0, 802, 803, 1, 0, 0, - 0, 803, 804, 1, 0, 0, 0, 804, 806, 3, 12, 6, 0, 805, 802, 1, 0, 0, 0, 805, - 806, 1, 0, 0, 0, 806, 808, 1, 0, 0, 0, 807, 791, 1, 0, 0, 0, 807, 798, - 1, 0, 0, 0, 808, 97, 1, 0, 0, 0, 809, 811, 7, 9, 0, 0, 810, 809, 1, 0, - 0, 0, 810, 811, 1, 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 813, 5, 78, 0, 0, - 813, 814, 3, 96, 48, 0, 814, 815, 5, 54, 0, 0, 815, 816, 3, 112, 56, 0, - 816, 99, 1, 0, 0, 0, 817, 822, 3, 112, 56, 0, 818, 820, 5, 82, 0, 0, 819, - 818, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 823, - 3, 12, 6, 0, 822, 819, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 831, 1, 0, - 0, 0, 824, 825, 3, 12, 6, 0, 825, 826, 5, 12, 0, 0, 826, 828, 1, 0, 0, - 0, 827, 824, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, - 831, 5, 14, 0, 0, 830, 817, 1, 0, 0, 0, 830, 827, 1, 0, 0, 0, 831, 101, - 1, 0, 0, 0, 832, 833, 5, 63, 0, 0, 833, 838, 3, 12, 6, 0, 834, 836, 5, - 82, 0, 0, 835, 834, 1, 0, 0, 0, 835, 836, 1, 0, 0, 0, 836, 837, 1, 0, 0, - 0, 837, 839, 3, 12, 6, 0, 838, 835, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, - 840, 1, 0, 0, 0, 840, 841, 5, 59, 0, 0, 841, 846, 3, 104, 52, 0, 842, 843, - 5, 9, 0, 0, 843, 845, 3, 104, 52, 0, 844, 842, 1, 0, 0, 0, 845, 848, 1, - 0, 0, 0, 846, 844, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 857, 1, 0, 0, - 0, 848, 846, 1, 0, 0, 0, 849, 850, 5, 99, 0, 0, 850, 854, 3, 96, 48, 0, - 851, 853, 3, 98, 49, 0, 852, 851, 1, 0, 0, 0, 853, 856, 1, 0, 0, 0, 854, - 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, 856, 854, - 1, 0, 0, 0, 857, 849, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 861, 1, 0, - 0, 0, 859, 860, 5, 100, 0, 0, 860, 862, 3, 112, 56, 0, 861, 859, 1, 0, - 0, 0, 861, 862, 1, 0, 0, 0, 862, 103, 1, 0, 0, 0, 863, 864, 3, 12, 6, 0, - 864, 865, 5, 15, 0, 0, 865, 866, 3, 112, 56, 0, 866, 105, 1, 0, 0, 0, 867, - 868, 5, 103, 0, 0, 868, 869, 5, 113, 0, 0, 869, 874, 3, 12, 6, 0, 870, - 872, 5, 82, 0, 0, 871, 870, 1, 0, 0, 0, 871, 872, 1, 0, 0, 0, 872, 873, - 1, 0, 0, 0, 873, 875, 3, 12, 6, 0, 874, 871, 1, 0, 0, 0, 874, 875, 1, 0, - 0, 0, 875, 880, 1, 0, 0, 0, 876, 877, 5, 7, 0, 0, 877, 878, 3, 14, 7, 0, - 878, 879, 5, 8, 0, 0, 879, 881, 1, 0, 0, 0, 880, 876, 1, 0, 0, 0, 880, - 881, 1, 0, 0, 0, 881, 897, 1, 0, 0, 0, 882, 883, 5, 104, 0, 0, 883, 884, - 5, 7, 0, 0, 884, 885, 3, 118, 59, 0, 885, 893, 5, 8, 0, 0, 886, 887, 5, - 9, 0, 0, 887, 888, 5, 7, 0, 0, 888, 889, 3, 118, 59, 0, 889, 890, 5, 8, - 0, 0, 890, 892, 1, 0, 0, 0, 891, 886, 1, 0, 0, 0, 892, 895, 1, 0, 0, 0, - 893, 891, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 898, 1, 0, 0, 0, 895, - 893, 1, 0, 0, 0, 896, 898, 3, 88, 44, 0, 897, 882, 1, 0, 0, 0, 897, 896, - 1, 0, 0, 0, 898, 900, 1, 0, 0, 0, 899, 901, 3, 108, 54, 0, 900, 899, 1, - 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 107, 1, 0, 0, 0, 902, 903, 5, 54, 0, - 0, 903, 911, 5, 114, 0, 0, 904, 905, 5, 7, 0, 0, 905, 906, 3, 14, 7, 0, - 906, 909, 5, 8, 0, 0, 907, 908, 5, 100, 0, 0, 908, 910, 3, 112, 56, 0, - 909, 907, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 912, 1, 0, 0, 0, 911, - 904, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 929, - 5, 55, 0, 0, 914, 930, 5, 115, 0, 0, 915, 916, 5, 63, 0, 0, 916, 917, 5, - 59, 0, 0, 917, 922, 3, 104, 52, 0, 918, 919, 5, 9, 0, 0, 919, 921, 3, 104, - 52, 0, 920, 918, 1, 0, 0, 0, 921, 924, 1, 0, 0, 0, 922, 920, 1, 0, 0, 0, - 922, 923, 1, 0, 0, 0, 923, 927, 1, 0, 0, 0, 924, 922, 1, 0, 0, 0, 925, - 926, 5, 100, 0, 0, 926, 928, 3, 112, 56, 0, 927, 925, 1, 0, 0, 0, 927, - 928, 1, 0, 0, 0, 928, 930, 1, 0, 0, 0, 929, 914, 1, 0, 0, 0, 929, 915, - 1, 0, 0, 0, 930, 109, 1, 0, 0, 0, 931, 932, 5, 62, 0, 0, 932, 933, 5, 99, - 0, 0, 933, 938, 3, 12, 6, 0, 934, 936, 5, 82, 0, 0, 935, 934, 1, 0, 0, - 0, 935, 936, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 939, 3, 12, 6, 0, 938, - 935, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0, 939, 942, 1, 0, 0, 0, 940, 941, - 5, 100, 0, 0, 941, 943, 3, 112, 56, 0, 942, 940, 1, 0, 0, 0, 942, 943, - 1, 0, 0, 0, 943, 111, 1, 0, 0, 0, 944, 945, 6, 56, -1, 0, 945, 946, 5, - 7, 0, 0, 946, 947, 3, 112, 56, 0, 947, 949, 5, 8, 0, 0, 948, 950, 3, 18, - 9, 0, 949, 948, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 1018, 1, 0, 0, 0, - 951, 952, 7, 0, 0, 0, 952, 1018, 3, 112, 56, 20, 953, 955, 3, 10, 5, 0, - 954, 956, 3, 18, 9, 0, 955, 954, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956, - 1018, 1, 0, 0, 0, 957, 964, 3, 120, 60, 0, 958, 959, 5, 126, 0, 0, 959, - 960, 5, 7, 0, 0, 960, 961, 5, 100, 0, 0, 961, 962, 3, 112, 56, 0, 962, - 963, 5, 8, 0, 0, 963, 965, 1, 0, 0, 0, 964, 958, 1, 0, 0, 0, 964, 965, - 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 969, 5, 123, 0, 0, 967, 970, 3, - 114, 57, 0, 968, 970, 5, 139, 0, 0, 969, 967, 1, 0, 0, 0, 969, 968, 1, - 0, 0, 0, 970, 1018, 1, 0, 0, 0, 971, 973, 3, 120, 60, 0, 972, 974, 3, 18, - 9, 0, 973, 972, 1, 0, 0, 0, 973, 974, 1, 0, 0, 0, 974, 1018, 1, 0, 0, 0, - 975, 977, 3, 20, 10, 0, 976, 978, 3, 18, 9, 0, 977, 976, 1, 0, 0, 0, 977, - 978, 1, 0, 0, 0, 978, 1018, 1, 0, 0, 0, 979, 980, 3, 12, 6, 0, 980, 981, - 5, 12, 0, 0, 981, 983, 1, 0, 0, 0, 982, 979, 1, 0, 0, 0, 982, 983, 1, 0, - 0, 0, 983, 984, 1, 0, 0, 0, 984, 986, 3, 12, 6, 0, 985, 987, 3, 18, 9, - 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 1018, 1, 0, 0, 0, 988, - 990, 5, 94, 0, 0, 989, 991, 3, 112, 56, 0, 990, 989, 1, 0, 0, 0, 990, 991, - 1, 0, 0, 0, 991, 993, 1, 0, 0, 0, 992, 994, 3, 116, 58, 0, 993, 992, 1, - 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 993, 1, 0, 0, 0, 995, 996, 1, 0, 0, - 0, 996, 999, 1, 0, 0, 0, 997, 998, 5, 119, 0, 0, 998, 1000, 3, 112, 56, - 0, 999, 997, 1, 0, 0, 0, 999, 1000, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, - 1001, 1002, 5, 97, 0, 0, 1002, 1018, 1, 0, 0, 0, 1003, 1005, 5, 66, 0, - 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, - 0, 1006, 1008, 5, 75, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1008, 1, 0, 0, - 0, 1008, 1009, 1, 0, 0, 0, 1009, 1010, 5, 7, 0, 0, 1010, 1011, 3, 88, 44, - 0, 1011, 1013, 5, 8, 0, 0, 1012, 1014, 3, 18, 9, 0, 1013, 1012, 1, 0, 0, - 0, 1013, 1014, 1, 0, 0, 0, 1014, 1018, 1, 0, 0, 0, 1015, 1016, 5, 66, 0, - 0, 1016, 1018, 3, 112, 56, 3, 1017, 944, 1, 0, 0, 0, 1017, 951, 1, 0, 0, - 0, 1017, 953, 1, 0, 0, 0, 1017, 957, 1, 0, 0, 0, 1017, 971, 1, 0, 0, 0, - 1017, 975, 1, 0, 0, 0, 1017, 982, 1, 0, 0, 0, 1017, 988, 1, 0, 0, 0, 1017, - 1007, 1, 0, 0, 0, 1017, 1015, 1, 0, 0, 0, 1018, 1104, 1, 0, 0, 0, 1019, - 1020, 10, 18, 0, 0, 1020, 1021, 7, 10, 0, 0, 1021, 1103, 3, 112, 56, 19, - 1022, 1023, 10, 17, 0, 0, 1023, 1024, 7, 0, 0, 0, 1024, 1103, 3, 112, 56, - 18, 1025, 1026, 10, 9, 0, 0, 1026, 1027, 5, 13, 0, 0, 1027, 1103, 3, 112, - 56, 10, 1028, 1030, 10, 7, 0, 0, 1029, 1031, 5, 66, 0, 0, 1030, 1029, 1, - 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1033, 7, - 11, 0, 0, 1033, 1103, 3, 112, 56, 8, 1034, 1036, 10, 6, 0, 0, 1035, 1037, - 5, 66, 0, 0, 1036, 1035, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1038, - 1, 0, 0, 0, 1038, 1039, 5, 73, 0, 0, 1039, 1040, 3, 112, 56, 0, 1040, 1041, - 5, 68, 0, 0, 1041, 1042, 3, 112, 56, 7, 1042, 1103, 1, 0, 0, 0, 1043, 1044, - 10, 5, 0, 0, 1044, 1045, 7, 12, 0, 0, 1045, 1103, 3, 112, 56, 6, 1046, - 1047, 10, 2, 0, 0, 1047, 1048, 5, 68, 0, 0, 1048, 1103, 3, 112, 56, 3, - 1049, 1050, 10, 1, 0, 0, 1050, 1051, 5, 69, 0, 0, 1051, 1103, 3, 112, 56, - 2, 1052, 1053, 10, 22, 0, 0, 1053, 1054, 5, 12, 0, 0, 1054, 1056, 3, 12, - 6, 0, 1055, 1057, 3, 18, 9, 0, 1056, 1055, 1, 0, 0, 0, 1056, 1057, 1, 0, - 0, 0, 1057, 1103, 1, 0, 0, 0, 1058, 1059, 10, 21, 0, 0, 1059, 1068, 5, - 3, 0, 0, 1060, 1069, 3, 112, 56, 0, 1061, 1063, 3, 112, 56, 0, 1062, 1061, - 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1066, - 5, 5, 0, 0, 1065, 1067, 3, 112, 56, 0, 1066, 1065, 1, 0, 0, 0, 1066, 1067, - 1, 0, 0, 0, 1067, 1069, 1, 0, 0, 0, 1068, 1060, 1, 0, 0, 0, 1068, 1062, - 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1072, 5, 4, 0, 0, 1071, 1073, - 3, 18, 9, 0, 1072, 1071, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1103, - 1, 0, 0, 0, 1074, 1075, 10, 19, 0, 0, 1075, 1076, 5, 101, 0, 0, 1076, 1103, - 3, 12, 6, 0, 1077, 1079, 10, 8, 0, 0, 1078, 1080, 5, 66, 0, 0, 1079, 1078, - 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, - 5, 72, 0, 0, 1082, 1085, 5, 7, 0, 0, 1083, 1086, 3, 118, 59, 0, 1084, 1086, - 3, 88, 44, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1084, 1, 0, 0, 0, 1086, 1087, - 1, 0, 0, 0, 1087, 1088, 5, 8, 0, 0, 1088, 1103, 1, 0, 0, 0, 1089, 1090, - 10, 4, 0, 0, 1090, 1092, 5, 74, 0, 0, 1091, 1093, 5, 66, 0, 0, 1092, 1091, - 1, 0, 0, 0, 1092, 1093, 1, 0, 0, 0, 1093, 1100, 1, 0, 0, 0, 1094, 1095, - 5, 98, 0, 0, 1095, 1096, 5, 99, 0, 0, 1096, 1101, 3, 112, 56, 0, 1097, - 1101, 5, 61, 0, 0, 1098, 1101, 5, 129, 0, 0, 1099, 1101, 5, 130, 0, 0, - 1100, 1094, 1, 0, 0, 0, 1100, 1097, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, - 1100, 1099, 1, 0, 0, 0, 1101, 1103, 1, 0, 0, 0, 1102, 1019, 1, 0, 0, 0, - 1102, 1022, 1, 0, 0, 0, 1102, 1025, 1, 0, 0, 0, 1102, 1028, 1, 0, 0, 0, - 1102, 1034, 1, 0, 0, 0, 1102, 1043, 1, 0, 0, 0, 1102, 1046, 1, 0, 0, 0, - 1102, 1049, 1, 0, 0, 0, 1102, 1052, 1, 0, 0, 0, 1102, 1058, 1, 0, 0, 0, - 1102, 1074, 1, 0, 0, 0, 1102, 1077, 1, 0, 0, 0, 1102, 1089, 1, 0, 0, 0, - 1103, 1106, 1, 0, 0, 0, 1104, 1102, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, - 1105, 113, 1, 0, 0, 0, 1106, 1104, 1, 0, 0, 0, 1107, 1111, 5, 7, 0, 0, - 1108, 1109, 5, 124, 0, 0, 1109, 1110, 5, 88, 0, 0, 1110, 1112, 3, 118, - 59, 0, 1111, 1108, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1123, 1, 0, - 0, 0, 1113, 1114, 5, 87, 0, 0, 1114, 1115, 5, 88, 0, 0, 1115, 1120, 3, - 92, 46, 0, 1116, 1117, 5, 9, 0, 0, 1117, 1119, 3, 92, 46, 0, 1118, 1116, - 1, 0, 0, 0, 1119, 1122, 1, 0, 0, 0, 1120, 1118, 1, 0, 0, 0, 1120, 1121, - 1, 0, 0, 0, 1121, 1124, 1, 0, 0, 0, 1122, 1120, 1, 0, 0, 0, 1123, 1113, - 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, - 5, 8, 0, 0, 1126, 115, 1, 0, 0, 0, 1127, 1128, 5, 95, 0, 0, 1128, 1129, - 3, 112, 56, 0, 1129, 1130, 5, 96, 0, 0, 1130, 1131, 3, 112, 56, 0, 1131, - 117, 1, 0, 0, 0, 1132, 1137, 3, 112, 56, 0, 1133, 1134, 5, 9, 0, 0, 1134, - 1136, 3, 112, 56, 0, 1135, 1133, 1, 0, 0, 0, 1136, 1139, 1, 0, 0, 0, 1137, - 1135, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 119, 1, 0, 0, 0, 1139, - 1137, 1, 0, 0, 0, 1140, 1141, 3, 12, 6, 0, 1141, 1147, 5, 7, 0, 0, 1142, - 1144, 5, 98, 0, 0, 1143, 1142, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, - 1145, 1, 0, 0, 0, 1145, 1148, 3, 118, 59, 0, 1146, 1148, 5, 14, 0, 0, 1147, - 1143, 1, 0, 0, 0, 1147, 1146, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, - 1149, 1, 0, 0, 0, 1149, 1150, 5, 8, 0, 0, 1150, 121, 1, 0, 0, 0, 1151, - 1152, 3, 124, 62, 0, 1152, 1153, 5, 6, 0, 0, 1153, 1155, 1, 0, 0, 0, 1154, - 1151, 1, 0, 0, 0, 1155, 1158, 1, 0, 0, 0, 1156, 1154, 1, 0, 0, 0, 1156, - 1157, 1, 0, 0, 0, 1157, 123, 1, 0, 0, 0, 1158, 1156, 1, 0, 0, 0, 1159, - 1180, 3, 70, 35, 0, 1160, 1161, 5, 139, 0, 0, 1161, 1163, 5, 7, 0, 0, 1162, - 1164, 3, 130, 65, 0, 1163, 1162, 1, 0, 0, 0, 1163, 1164, 1, 0, 0, 0, 1164, - 1165, 1, 0, 0, 0, 1165, 1180, 5, 8, 0, 0, 1166, 1167, 3, 22, 11, 0, 1167, - 1168, 5, 15, 0, 0, 1168, 1170, 1, 0, 0, 0, 1169, 1166, 1, 0, 0, 0, 1169, - 1170, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 5, 139, 0, 0, 1172, - 1173, 5, 12, 0, 0, 1173, 1174, 5, 139, 0, 0, 1174, 1176, 5, 7, 0, 0, 1175, - 1177, 3, 130, 65, 0, 1176, 1175, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, - 1178, 1, 0, 0, 0, 1178, 1180, 5, 8, 0, 0, 1179, 1159, 1, 0, 0, 0, 1179, - 1160, 1, 0, 0, 0, 1179, 1169, 1, 0, 0, 0, 1180, 125, 1, 0, 0, 0, 1181, - 1183, 3, 132, 66, 0, 1182, 1181, 1, 0, 0, 0, 1183, 1186, 1, 0, 0, 0, 1184, - 1182, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 127, 1, 0, 0, 0, 1186, - 1184, 1, 0, 0, 0, 1187, 1188, 6, 64, -1, 0, 1188, 1189, 5, 7, 0, 0, 1189, - 1190, 3, 128, 64, 0, 1190, 1192, 5, 8, 0, 0, 1191, 1193, 3, 18, 9, 0, 1192, - 1191, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1219, 1, 0, 0, 0, 1194, - 1195, 7, 13, 0, 0, 1195, 1219, 3, 128, 64, 13, 1196, 1198, 3, 10, 5, 0, - 1197, 1199, 3, 18, 9, 0, 1198, 1197, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, - 1199, 1219, 1, 0, 0, 0, 1200, 1202, 3, 136, 68, 0, 1201, 1203, 3, 18, 9, - 0, 1202, 1201, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1219, 1, 0, 0, - 0, 1204, 1206, 3, 20, 10, 0, 1205, 1207, 3, 18, 9, 0, 1206, 1205, 1, 0, - 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1219, 1, 0, 0, 0, 1208, 1210, 5, 3, - 0, 0, 1209, 1211, 3, 130, 65, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, - 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1214, 5, 4, 0, 0, 1213, 1215, 3, - 18, 9, 0, 1214, 1213, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 1219, 1, - 0, 0, 0, 1216, 1217, 5, 66, 0, 0, 1217, 1219, 3, 128, 64, 3, 1218, 1187, - 1, 0, 0, 0, 1218, 1194, 1, 0, 0, 0, 1218, 1196, 1, 0, 0, 0, 1218, 1200, - 1, 0, 0, 0, 1218, 1204, 1, 0, 0, 0, 1218, 1208, 1, 0, 0, 0, 1218, 1216, - 1, 0, 0, 0, 1219, 1275, 1, 0, 0, 0, 1220, 1221, 10, 12, 0, 0, 1221, 1222, - 7, 10, 0, 0, 1222, 1274, 3, 128, 64, 13, 1223, 1224, 10, 11, 0, 0, 1224, - 1225, 7, 0, 0, 0, 1225, 1274, 3, 128, 64, 12, 1226, 1227, 10, 6, 0, 0, - 1227, 1228, 5, 13, 0, 0, 1228, 1274, 3, 128, 64, 7, 1229, 1230, 10, 5, - 0, 0, 1230, 1231, 7, 12, 0, 0, 1231, 1274, 3, 128, 64, 6, 1232, 1233, 10, - 2, 0, 0, 1233, 1234, 5, 68, 0, 0, 1234, 1274, 3, 128, 64, 3, 1235, 1236, - 10, 1, 0, 0, 1236, 1237, 5, 69, 0, 0, 1237, 1274, 3, 128, 64, 2, 1238, - 1239, 10, 15, 0, 0, 1239, 1240, 5, 12, 0, 0, 1240, 1242, 5, 139, 0, 0, - 1241, 1243, 3, 18, 9, 0, 1242, 1241, 1, 0, 0, 0, 1242, 1243, 1, 0, 0, 0, - 1243, 1274, 1, 0, 0, 0, 1244, 1245, 10, 14, 0, 0, 1245, 1254, 5, 3, 0, - 0, 1246, 1255, 3, 128, 64, 0, 1247, 1249, 3, 128, 64, 0, 1248, 1247, 1, - 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1252, 5, - 5, 0, 0, 1251, 1253, 3, 128, 64, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, - 1, 0, 0, 0, 1253, 1255, 1, 0, 0, 0, 1254, 1246, 1, 0, 0, 0, 1254, 1248, - 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1258, 5, 4, 0, 0, 1257, 1259, - 3, 18, 9, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1274, - 1, 0, 0, 0, 1260, 1261, 10, 4, 0, 0, 1261, 1263, 5, 74, 0, 0, 1262, 1264, - 5, 66, 0, 0, 1263, 1262, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1271, - 1, 0, 0, 0, 1265, 1266, 5, 98, 0, 0, 1266, 1267, 5, 99, 0, 0, 1267, 1272, - 3, 128, 64, 0, 1268, 1272, 5, 61, 0, 0, 1269, 1272, 5, 129, 0, 0, 1270, - 1272, 5, 130, 0, 0, 1271, 1265, 1, 0, 0, 0, 1271, 1268, 1, 0, 0, 0, 1271, - 1269, 1, 0, 0, 0, 1271, 1270, 1, 0, 0, 0, 1272, 1274, 1, 0, 0, 0, 1273, - 1220, 1, 0, 0, 0, 1273, 1223, 1, 0, 0, 0, 1273, 1226, 1, 0, 0, 0, 1273, - 1229, 1, 0, 0, 0, 1273, 1232, 1, 0, 0, 0, 1273, 1235, 1, 0, 0, 0, 1273, - 1238, 1, 0, 0, 0, 1273, 1244, 1, 0, 0, 0, 1273, 1260, 1, 0, 0, 0, 1274, - 1277, 1, 0, 0, 0, 1275, 1273, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, - 129, 1, 0, 0, 0, 1277, 1275, 1, 0, 0, 0, 1278, 1283, 3, 128, 64, 0, 1279, - 1280, 5, 9, 0, 0, 1280, 1282, 3, 128, 64, 0, 1281, 1279, 1, 0, 0, 0, 1282, - 1285, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, - 131, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1286, 1287, 5, 140, 0, 0, 1287, - 1288, 3, 16, 8, 0, 1288, 1289, 5, 6, 0, 0, 1289, 1367, 1, 0, 0, 0, 1290, - 1295, 3, 134, 67, 0, 1291, 1292, 5, 9, 0, 0, 1292, 1294, 3, 134, 67, 0, - 1293, 1291, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, - 1295, 1296, 1, 0, 0, 0, 1296, 1298, 1, 0, 0, 0, 1297, 1295, 1, 0, 0, 0, - 1298, 1299, 5, 30, 0, 0, 1299, 1301, 1, 0, 0, 0, 1300, 1290, 1, 0, 0, 0, - 1300, 1301, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1303, 3, 136, 68, - 0, 1303, 1304, 5, 6, 0, 0, 1304, 1367, 1, 0, 0, 0, 1305, 1307, 3, 128, - 64, 0, 1306, 1308, 3, 16, 8, 0, 1307, 1306, 1, 0, 0, 0, 1307, 1308, 1, - 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 5, 30, 0, 0, 1310, 1311, 3, - 128, 64, 0, 1311, 1312, 5, 6, 0, 0, 1312, 1367, 1, 0, 0, 0, 1313, 1314, - 5, 116, 0, 0, 1314, 1315, 5, 140, 0, 0, 1315, 1319, 5, 72, 0, 0, 1316, - 1320, 3, 140, 70, 0, 1317, 1320, 3, 20, 10, 0, 1318, 1320, 3, 70, 35, 0, - 1319, 1316, 1, 0, 0, 0, 1319, 1317, 1, 0, 0, 0, 1319, 1318, 1, 0, 0, 0, - 1320, 1321, 1, 0, 0, 0, 1321, 1325, 5, 1, 0, 0, 1322, 1324, 3, 132, 66, - 0, 1323, 1322, 1, 0, 0, 0, 1324, 1327, 1, 0, 0, 0, 1325, 1323, 1, 0, 0, - 0, 1325, 1326, 1, 0, 0, 0, 1326, 1328, 1, 0, 0, 0, 1327, 1325, 1, 0, 0, - 0, 1328, 1329, 5, 2, 0, 0, 1329, 1367, 1, 0, 0, 0, 1330, 1331, 5, 117, - 0, 0, 1331, 1336, 3, 138, 69, 0, 1332, 1333, 5, 118, 0, 0, 1333, 1335, - 3, 138, 69, 0, 1334, 1332, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, - 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1348, 1, 0, 0, 0, 1338, 1336, - 1, 0, 0, 0, 1339, 1340, 5, 119, 0, 0, 1340, 1344, 5, 1, 0, 0, 1341, 1343, - 3, 132, 66, 0, 1342, 1341, 1, 0, 0, 0, 1343, 1346, 1, 0, 0, 0, 1344, 1342, - 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 1, 0, 0, 0, 1346, 1344, - 1, 0, 0, 0, 1347, 1349, 5, 2, 0, 0, 1348, 1339, 1, 0, 0, 0, 1348, 1349, - 1, 0, 0, 0, 1349, 1367, 1, 0, 0, 0, 1350, 1351, 3, 70, 35, 0, 1351, 1352, - 5, 6, 0, 0, 1352, 1367, 1, 0, 0, 0, 1353, 1354, 5, 120, 0, 0, 1354, 1367, - 5, 6, 0, 0, 1355, 1358, 5, 121, 0, 0, 1356, 1359, 3, 130, 65, 0, 1357, - 1359, 3, 70, 35, 0, 1358, 1356, 1, 0, 0, 0, 1358, 1357, 1, 0, 0, 0, 1358, - 1359, 1, 0, 0, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1367, 5, 6, 0, 0, 1361, - 1362, 5, 121, 0, 0, 1362, 1363, 5, 122, 0, 0, 1363, 1364, 3, 130, 65, 0, - 1364, 1365, 5, 6, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1286, 1, 0, 0, 0, - 1366, 1300, 1, 0, 0, 0, 1366, 1305, 1, 0, 0, 0, 1366, 1313, 1, 0, 0, 0, - 1366, 1330, 1, 0, 0, 0, 1366, 1350, 1, 0, 0, 0, 1366, 1353, 1, 0, 0, 0, - 1366, 1355, 1, 0, 0, 0, 1366, 1361, 1, 0, 0, 0, 1367, 133, 1, 0, 0, 0, - 1368, 1369, 7, 14, 0, 0, 1369, 135, 1, 0, 0, 0, 1370, 1371, 5, 139, 0, - 0, 1371, 1373, 5, 7, 0, 0, 1372, 1374, 3, 130, 65, 0, 1373, 1372, 1, 0, - 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1376, 5, 8, - 0, 0, 1376, 137, 1, 0, 0, 0, 1377, 1378, 3, 128, 64, 0, 1378, 1382, 5, - 1, 0, 0, 1379, 1381, 3, 132, 66, 0, 1380, 1379, 1, 0, 0, 0, 1381, 1384, - 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1382, 1383, 1, 0, 0, 0, 1383, 1385, - 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1385, 1386, 5, 2, 0, 0, 1386, 139, - 1, 0, 0, 0, 1387, 1388, 3, 128, 64, 0, 1388, 1389, 5, 31, 0, 0, 1389, 1390, - 3, 128, 64, 0, 1390, 141, 1, 0, 0, 0, 184, 145, 163, 167, 175, 181, 188, - 197, 201, 213, 221, 223, 237, 240, 260, 265, 279, 283, 293, 301, 311, 322, - 335, 341, 346, 348, 351, 356, 362, 367, 370, 377, 387, 398, 404, 410, 416, - 431, 443, 455, 458, 465, 472, 478, 487, 494, 500, 503, 511, 521, 528, 535, - 538, 548, 557, 560, 563, 577, 583, 587, 594, 621, 636, 647, 671, 675, 679, - 691, 701, 711, 714, 718, 722, 726, 730, 734, 738, 742, 749, 757, 760, 764, - 771, 773, 786, 789, 793, 796, 802, 805, 807, 810, 819, 822, 827, 830, 835, - 838, 846, 854, 857, 861, 871, 874, 880, 893, 897, 900, 909, 911, 922, 927, - 929, 935, 938, 942, 949, 955, 964, 969, 973, 977, 982, 986, 990, 995, 999, - 1004, 1007, 1013, 1017, 1030, 1036, 1056, 1062, 1066, 1068, 1072, 1079, - 1085, 1092, 1100, 1102, 1104, 1111, 1120, 1123, 1137, 1143, 1147, 1156, - 1163, 1169, 1176, 1179, 1184, 1192, 1198, 1202, 1206, 1210, 1214, 1218, - 1242, 1248, 1252, 1254, 1258, 1263, 1271, 1273, 1275, 1283, 1295, 1300, - 1307, 1319, 1325, 1336, 1344, 1348, 1358, 1366, 1373, 1382, + 68, 7, 68, 2, 69, 7, 69, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, + 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 155, 8, 4, 1, 4, 1, 4, 3, 4, + 159, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 167, 8, 4, 1, 5, 1, + 5, 1, 5, 1, 5, 3, 5, 173, 8, 5, 1, 6, 1, 6, 1, 6, 5, 6, 178, 8, 6, 10, + 6, 12, 6, 181, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 189, 8, + 7, 1, 7, 1, 7, 3, 7, 193, 8, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, + 10, 1, 10, 5, 10, 203, 8, 10, 10, 10, 12, 10, 206, 9, 10, 1, 11, 1, 11, + 1, 11, 1, 11, 1, 11, 5, 11, 213, 8, 11, 10, 11, 12, 11, 216, 9, 11, 1, + 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 227, + 8, 12, 10, 12, 12, 12, 230, 9, 12, 3, 12, 232, 8, 12, 1, 12, 1, 12, 1, + 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, + 1, 14, 1, 14, 1, 14, 5, 14, 250, 8, 14, 10, 14, 12, 14, 253, 9, 14, 1, + 14, 1, 14, 3, 14, 257, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, + 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 271, 8, 15, 5, 15, 273, + 8, 15, 10, 15, 12, 15, 276, 9, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 5, + 16, 283, 8, 16, 10, 16, 12, 16, 286, 9, 16, 1, 17, 1, 17, 1, 17, 5, 17, + 291, 8, 17, 10, 17, 12, 17, 294, 9, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, + 18, 1, 18, 1, 19, 3, 19, 303, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, + 1, 19, 1, 20, 1, 20, 1, 20, 3, 20, 314, 8, 20, 1, 20, 1, 20, 1, 20, 1, + 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 325, 8, 20, 10, 20, 12, 20, + 328, 9, 20, 1, 21, 1, 21, 1, 21, 3, 21, 333, 8, 21, 1, 21, 1, 21, 1, 21, + 3, 21, 338, 8, 21, 3, 21, 340, 8, 21, 1, 21, 3, 21, 343, 8, 21, 1, 21, + 1, 21, 1, 21, 3, 21, 348, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 354, + 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 359, 8, 21, 1, 21, 3, 21, 362, 8, 21, + 1, 22, 1, 22, 1, 22, 5, 22, 367, 8, 22, 10, 22, 12, 22, 370, 9, 22, 1, + 23, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 377, 8, 23, 10, 23, 12, 23, 380, + 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 388, 8, 24, 10, + 24, 12, 24, 391, 9, 24, 1, 25, 1, 25, 1, 25, 3, 25, 396, 8, 25, 1, 25, + 1, 25, 1, 25, 1, 25, 3, 25, 402, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, + 25, 408, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, + 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 423, 8, 26, 1, 27, 1, 27, 1, + 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 435, 8, 27, + 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 445, 8, + 28, 10, 28, 12, 28, 448, 9, 28, 3, 28, 450, 8, 28, 1, 29, 1, 29, 1, 30, + 5, 30, 455, 8, 30, 10, 30, 12, 30, 458, 9, 30, 1, 30, 1, 30, 1, 30, 1, + 30, 3, 30, 464, 8, 30, 1, 30, 1, 30, 4, 30, 468, 8, 30, 11, 30, 12, 30, + 469, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 5, 31, 477, 8, 31, 10, 31, 12, + 31, 480, 9, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 486, 8, 31, 1, 31, 1, + 31, 4, 31, 490, 8, 31, 11, 31, 12, 31, 491, 1, 31, 3, 31, 495, 8, 31, 1, + 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 503, 8, 32, 1, 32, 1, 32, + 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 513, 8, 32, 1, 33, 1, + 33, 1, 33, 1, 34, 1, 34, 3, 34, 520, 8, 34, 1, 34, 1, 34, 1, 34, 5, 34, + 525, 8, 34, 10, 34, 12, 34, 528, 9, 34, 3, 34, 530, 8, 34, 1, 34, 1, 34, + 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 540, 8, 34, 1, 35, 1, + 35, 1, 35, 1, 35, 1, 35, 5, 35, 547, 8, 35, 10, 35, 12, 35, 550, 9, 35, + 3, 35, 552, 8, 35, 1, 35, 3, 35, 555, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, + 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 569, 8, + 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 575, 8, 36, 5, 36, 577, 8, 36, 10, + 36, 12, 36, 580, 9, 36, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37, 586, 8, 37, + 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, + 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, + 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 613, 8, 38, 1, 39, 1, 39, 1, 39, 1, + 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, + 628, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, + 40, 3, 40, 639, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, + 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, + 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 663, 8, 40, 1, 41, 1, 41, 3, 41, + 667, 8, 41, 1, 41, 1, 41, 3, 41, 671, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, + 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 683, 8, 42, 1, 42, 1, + 42, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 691, 8, 43, 10, 43, 12, 43, 694, + 9, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 701, 8, 43, 10, 43, 12, + 43, 704, 9, 43, 3, 43, 706, 8, 43, 1, 43, 1, 43, 3, 43, 710, 8, 43, 1, + 43, 1, 43, 3, 43, 714, 8, 43, 1, 44, 1, 44, 3, 44, 718, 8, 44, 1, 44, 1, + 44, 3, 44, 722, 8, 44, 1, 45, 1, 45, 3, 45, 726, 8, 45, 1, 45, 1, 45, 3, + 45, 730, 8, 45, 1, 46, 1, 46, 3, 46, 734, 8, 46, 1, 46, 1, 46, 1, 46, 5, + 46, 739, 8, 46, 10, 46, 12, 46, 742, 9, 46, 1, 46, 1, 46, 1, 46, 5, 46, + 747, 8, 46, 10, 46, 12, 46, 750, 9, 46, 3, 46, 752, 8, 46, 1, 46, 1, 46, + 3, 46, 756, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 763, 8, 46, + 3, 46, 765, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, + 46, 1, 46, 5, 46, 776, 8, 46, 10, 46, 12, 46, 779, 9, 46, 3, 46, 781, 8, + 46, 1, 47, 1, 47, 3, 47, 785, 8, 47, 1, 47, 3, 47, 788, 8, 47, 1, 47, 1, + 47, 1, 47, 1, 47, 3, 47, 794, 8, 47, 1, 47, 3, 47, 797, 8, 47, 3, 47, 799, + 8, 47, 1, 48, 3, 48, 802, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, + 49, 1, 49, 3, 49, 811, 8, 49, 1, 49, 3, 49, 814, 8, 49, 1, 49, 1, 49, 1, + 49, 3, 49, 819, 8, 49, 1, 49, 3, 49, 822, 8, 49, 1, 50, 1, 50, 1, 50, 3, + 50, 827, 8, 50, 1, 50, 3, 50, 830, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, + 50, 836, 8, 50, 10, 50, 12, 50, 839, 9, 50, 1, 50, 1, 50, 1, 50, 5, 50, + 844, 8, 50, 10, 50, 12, 50, 847, 9, 50, 3, 50, 849, 8, 50, 1, 50, 1, 50, + 3, 50, 853, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, + 52, 3, 52, 863, 8, 52, 1, 52, 3, 52, 866, 8, 52, 1, 52, 1, 52, 1, 52, 1, + 52, 3, 52, 872, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, + 1, 52, 1, 52, 5, 52, 883, 8, 52, 10, 52, 12, 52, 886, 9, 52, 1, 52, 3, + 52, 889, 8, 52, 1, 52, 3, 52, 892, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, + 53, 1, 53, 1, 53, 3, 53, 901, 8, 53, 3, 53, 903, 8, 53, 1, 53, 1, 53, 1, + 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 912, 8, 53, 10, 53, 12, 53, 915, + 9, 53, 1, 53, 1, 53, 3, 53, 919, 8, 53, 3, 53, 921, 8, 53, 1, 54, 1, 54, + 1, 54, 1, 54, 3, 54, 927, 8, 54, 1, 54, 3, 54, 930, 8, 54, 1, 54, 1, 54, + 3, 54, 934, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 941, 8, 55, + 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 947, 8, 55, 1, 55, 1, 55, 1, 55, 1, + 55, 1, 55, 1, 55, 1, 55, 3, 55, 956, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, + 961, 8, 55, 1, 55, 1, 55, 3, 55, 965, 8, 55, 1, 55, 1, 55, 3, 55, 969, + 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 974, 8, 55, 1, 55, 1, 55, 3, 55, 978, + 8, 55, 1, 55, 1, 55, 3, 55, 982, 8, 55, 1, 55, 4, 55, 985, 8, 55, 11, 55, + 12, 55, 986, 1, 55, 1, 55, 3, 55, 991, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, + 996, 8, 55, 1, 55, 3, 55, 999, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, + 1005, 8, 55, 1, 55, 1, 55, 3, 55, 1009, 8, 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, 1022, 8, 55, + 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1028, 8, 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, 1, 55, 1, 55, + 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1048, 8, 55, 1, 55, 1, 55, 1, 55, 1, + 55, 3, 55, 1054, 8, 55, 1, 55, 1, 55, 3, 55, 1058, 8, 55, 3, 55, 1060, + 8, 55, 1, 55, 1, 55, 3, 55, 1064, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, + 55, 3, 55, 1071, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1077, 8, 55, + 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1084, 8, 55, 1, 55, 1, 55, 1, + 55, 1, 55, 1, 55, 1, 55, 3, 55, 1092, 8, 55, 5, 55, 1094, 8, 55, 10, 55, + 12, 55, 1097, 9, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1103, 8, 56, 1, + 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1110, 8, 56, 10, 56, 12, 56, 1113, + 9, 56, 3, 56, 1115, 8, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, + 57, 1, 58, 1, 58, 1, 58, 5, 58, 1127, 8, 58, 10, 58, 12, 58, 1130, 9, 58, + 1, 59, 1, 59, 1, 59, 3, 59, 1135, 8, 59, 1, 59, 1, 59, 3, 59, 1139, 8, + 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 5, 60, 1146, 8, 60, 10, 60, 12, + 60, 1149, 9, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1155, 8, 61, 1, 61, + 1, 61, 1, 61, 1, 61, 3, 61, 1161, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, + 61, 3, 61, 1168, 8, 61, 1, 61, 3, 61, 1171, 8, 61, 1, 62, 5, 62, 1174, + 8, 62, 10, 62, 12, 62, 1177, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, + 3, 63, 1184, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1190, 8, 63, 1, + 63, 1, 63, 3, 63, 1194, 8, 63, 1, 63, 1, 63, 3, 63, 1198, 8, 63, 1, 63, + 1, 63, 3, 63, 1202, 8, 63, 1, 63, 1, 63, 3, 63, 1206, 8, 63, 1, 63, 1, + 63, 3, 63, 1210, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, + 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, + 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1234, 8, 63, 1, 63, 1, 63, 1, 63, + 1, 63, 3, 63, 1240, 8, 63, 1, 63, 1, 63, 3, 63, 1244, 8, 63, 3, 63, 1246, + 8, 63, 1, 63, 1, 63, 3, 63, 1250, 8, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1255, + 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1263, 8, 63, 5, + 63, 1265, 8, 63, 10, 63, 12, 63, 1268, 9, 63, 1, 64, 1, 64, 1, 64, 5, 64, + 1273, 8, 64, 10, 64, 12, 64, 1276, 9, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, + 65, 1, 65, 1, 65, 5, 65, 1285, 8, 65, 10, 65, 12, 65, 1288, 9, 65, 1, 65, + 1, 65, 3, 65, 1292, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1299, + 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, + 65, 3, 65, 1311, 8, 65, 1, 65, 1, 65, 5, 65, 1315, 8, 65, 10, 65, 12, 65, + 1318, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1326, 8, + 65, 10, 65, 12, 65, 1329, 9, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1334, 8, 65, + 10, 65, 12, 65, 1337, 9, 65, 1, 65, 3, 65, 1340, 8, 65, 1, 65, 1, 65, 1, + 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1350, 8, 65, 1, 65, 1, 65, + 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1358, 8, 65, 1, 66, 1, 66, 1, 67, 1, + 67, 1, 67, 3, 67, 1365, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 5, 68, + 1372, 8, 68, 10, 68, 12, 68, 1375, 9, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, + 69, 1, 69, 1, 69, 0, 2, 110, 126, 70, 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, 0, 15, 1, 0, 20, 21, 1, 0, + 129, 130, 1, 0, 140, 141, 3, 0, 52, 52, 56, 56, 67, 67, 1, 0, 64, 65, 1, + 0, 62, 63, 1, 0, 38, 41, 1, 0, 83, 84, 1, 0, 110, 111, 2, 0, 79, 81, 105, + 105, 3, 0, 14, 14, 19, 19, 22, 22, 1, 0, 70, 71, 2, 0, 15, 16, 23, 27, + 2, 0, 11, 11, 20, 21, 2, 0, 29, 29, 140, 140, 1579, 0, 140, 1, 0, 0, 0, + 2, 143, 1, 0, 0, 0, 4, 146, 1, 0, 0, 0, 6, 149, 1, 0, 0, 0, 8, 166, 1, + 0, 0, 0, 10, 172, 1, 0, 0, 0, 12, 174, 1, 0, 0, 0, 14, 182, 1, 0, 0, 0, + 16, 194, 1, 0, 0, 0, 18, 197, 1, 0, 0, 0, 20, 199, 1, 0, 0, 0, 22, 207, + 1, 0, 0, 0, 24, 217, 1, 0, 0, 0, 26, 235, 1, 0, 0, 0, 28, 239, 1, 0, 0, + 0, 30, 262, 1, 0, 0, 0, 32, 279, 1, 0, 0, 0, 34, 287, 1, 0, 0, 0, 36, 295, + 1, 0, 0, 0, 38, 302, 1, 0, 0, 0, 40, 313, 1, 0, 0, 0, 42, 339, 1, 0, 0, + 0, 44, 363, 1, 0, 0, 0, 46, 371, 1, 0, 0, 0, 48, 381, 1, 0, 0, 0, 50, 401, + 1, 0, 0, 0, 52, 422, 1, 0, 0, 0, 54, 424, 1, 0, 0, 0, 56, 436, 1, 0, 0, + 0, 58, 451, 1, 0, 0, 0, 60, 456, 1, 0, 0, 0, 62, 478, 1, 0, 0, 0, 64, 500, + 1, 0, 0, 0, 66, 514, 1, 0, 0, 0, 68, 529, 1, 0, 0, 0, 70, 541, 1, 0, 0, + 0, 72, 561, 1, 0, 0, 0, 74, 585, 1, 0, 0, 0, 76, 612, 1, 0, 0, 0, 78, 614, + 1, 0, 0, 0, 80, 662, 1, 0, 0, 0, 82, 664, 1, 0, 0, 0, 84, 678, 1, 0, 0, + 0, 86, 686, 1, 0, 0, 0, 88, 721, 1, 0, 0, 0, 90, 723, 1, 0, 0, 0, 92, 731, + 1, 0, 0, 0, 94, 798, 1, 0, 0, 0, 96, 801, 1, 0, 0, 0, 98, 821, 1, 0, 0, + 0, 100, 823, 1, 0, 0, 0, 102, 854, 1, 0, 0, 0, 104, 858, 1, 0, 0, 0, 106, + 893, 1, 0, 0, 0, 108, 922, 1, 0, 0, 0, 110, 1008, 1, 0, 0, 0, 112, 1098, + 1, 0, 0, 0, 114, 1118, 1, 0, 0, 0, 116, 1123, 1, 0, 0, 0, 118, 1131, 1, + 0, 0, 0, 120, 1147, 1, 0, 0, 0, 122, 1170, 1, 0, 0, 0, 124, 1175, 1, 0, + 0, 0, 126, 1209, 1, 0, 0, 0, 128, 1269, 1, 0, 0, 0, 130, 1357, 1, 0, 0, + 0, 132, 1359, 1, 0, 0, 0, 134, 1361, 1, 0, 0, 0, 136, 1368, 1, 0, 0, 0, + 138, 1378, 1, 0, 0, 0, 140, 141, 3, 22, 11, 0, 141, 142, 5, 0, 0, 1, 142, + 1, 1, 0, 0, 0, 143, 144, 3, 66, 33, 0, 144, 145, 5, 0, 0, 1, 145, 3, 1, + 0, 0, 0, 146, 147, 3, 120, 60, 0, 147, 148, 5, 0, 0, 1, 148, 5, 1, 0, 0, + 0, 149, 150, 3, 124, 62, 0, 150, 151, 5, 0, 0, 1, 151, 7, 1, 0, 0, 0, 152, + 167, 5, 128, 0, 0, 153, 155, 7, 0, 0, 0, 154, 153, 1, 0, 0, 0, 154, 155, + 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 167, 5, 131, 0, 0, 157, 159, 7, + 0, 0, 0, 158, 157, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 160, 1, 0, 0, + 0, 160, 161, 5, 131, 0, 0, 161, 162, 5, 12, 0, 0, 162, 167, 5, 131, 0, + 0, 163, 167, 7, 1, 0, 0, 164, 167, 5, 61, 0, 0, 165, 167, 5, 132, 0, 0, + 166, 152, 1, 0, 0, 0, 166, 154, 1, 0, 0, 0, 166, 158, 1, 0, 0, 0, 166, + 163, 1, 0, 0, 0, 166, 164, 1, 0, 0, 0, 166, 165, 1, 0, 0, 0, 167, 9, 1, + 0, 0, 0, 168, 169, 5, 32, 0, 0, 169, 170, 5, 139, 0, 0, 170, 173, 5, 32, + 0, 0, 171, 173, 5, 139, 0, 0, 172, 168, 1, 0, 0, 0, 172, 171, 1, 0, 0, + 0, 173, 11, 1, 0, 0, 0, 174, 179, 3, 10, 5, 0, 175, 176, 5, 9, 0, 0, 176, + 178, 3, 10, 5, 0, 177, 175, 1, 0, 0, 0, 178, 181, 1, 0, 0, 0, 179, 177, + 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 13, 1, 0, 0, 0, 181, 179, 1, 0, + 0, 0, 182, 188, 5, 139, 0, 0, 183, 184, 5, 7, 0, 0, 184, 185, 5, 131, 0, + 0, 185, 186, 5, 9, 0, 0, 186, 187, 5, 131, 0, 0, 187, 189, 5, 8, 0, 0, + 188, 183, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 192, 1, 0, 0, 0, 190, + 191, 5, 3, 0, 0, 191, 193, 5, 4, 0, 0, 192, 190, 1, 0, 0, 0, 192, 193, + 1, 0, 0, 0, 193, 15, 1, 0, 0, 0, 194, 195, 5, 28, 0, 0, 195, 196, 3, 14, + 7, 0, 196, 17, 1, 0, 0, 0, 197, 198, 7, 2, 0, 0, 198, 19, 1, 0, 0, 0, 199, + 204, 3, 18, 9, 0, 200, 201, 5, 9, 0, 0, 201, 203, 3, 18, 9, 0, 202, 200, + 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, + 0, 0, 205, 21, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 214, 3, 26, 13, 0, + 208, 213, 3, 28, 14, 0, 209, 213, 3, 30, 15, 0, 210, 213, 3, 60, 30, 0, + 211, 213, 3, 62, 31, 0, 212, 208, 1, 0, 0, 0, 212, 209, 1, 0, 0, 0, 212, + 210, 1, 0, 0, 0, 212, 211, 1, 0, 0, 0, 213, 216, 1, 0, 0, 0, 214, 212, + 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 23, 1, 0, 0, 0, 216, 214, 1, 0, + 0, 0, 217, 218, 5, 141, 0, 0, 218, 231, 5, 7, 0, 0, 219, 220, 5, 139, 0, + 0, 220, 221, 5, 15, 0, 0, 221, 228, 3, 8, 4, 0, 222, 223, 5, 9, 0, 0, 223, + 224, 5, 139, 0, 0, 224, 225, 5, 15, 0, 0, 225, 227, 3, 8, 4, 0, 226, 222, + 1, 0, 0, 0, 227, 230, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, + 0, 0, 229, 232, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 231, 219, 1, 0, 0, 0, + 231, 232, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 234, 5, 8, 0, 0, 234, + 25, 1, 0, 0, 0, 235, 236, 5, 33, 0, 0, 236, 237, 5, 139, 0, 0, 237, 238, + 5, 6, 0, 0, 238, 27, 1, 0, 0, 0, 239, 240, 5, 34, 0, 0, 240, 256, 5, 139, + 0, 0, 241, 242, 5, 1, 0, 0, 242, 243, 5, 139, 0, 0, 243, 244, 5, 5, 0, + 0, 244, 251, 3, 8, 4, 0, 245, 246, 5, 9, 0, 0, 246, 247, 5, 139, 0, 0, + 247, 248, 5, 5, 0, 0, 248, 250, 3, 8, 4, 0, 249, 245, 1, 0, 0, 0, 250, + 253, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 251, 252, 1, 0, 0, 0, 252, 254, + 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 254, 255, 5, 2, 0, 0, 255, 257, 1, 0, + 0, 0, 256, 241, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 258, 1, 0, 0, 0, + 258, 259, 5, 82, 0, 0, 259, 260, 5, 139, 0, 0, 260, 261, 5, 6, 0, 0, 261, + 29, 1, 0, 0, 0, 262, 263, 5, 35, 0, 0, 263, 264, 5, 139, 0, 0, 264, 265, + 5, 1, 0, 0, 265, 274, 3, 32, 16, 0, 266, 270, 5, 9, 0, 0, 267, 271, 3, + 32, 16, 0, 268, 271, 3, 36, 18, 0, 269, 271, 3, 40, 20, 0, 270, 267, 1, + 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271, 273, 1, 0, 0, + 0, 272, 266, 1, 0, 0, 0, 273, 276, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, + 275, 1, 0, 0, 0, 275, 277, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 277, 278, + 5, 2, 0, 0, 278, 31, 1, 0, 0, 0, 279, 280, 5, 139, 0, 0, 280, 284, 3, 14, + 7, 0, 281, 283, 3, 50, 25, 0, 282, 281, 1, 0, 0, 0, 283, 286, 1, 0, 0, + 0, 284, 282, 1, 0, 0, 0, 284, 285, 1, 0, 0, 0, 285, 33, 1, 0, 0, 0, 286, + 284, 1, 0, 0, 0, 287, 288, 5, 139, 0, 0, 288, 292, 3, 14, 7, 0, 289, 291, + 3, 52, 26, 0, 290, 289, 1, 0, 0, 0, 291, 294, 1, 0, 0, 0, 292, 290, 1, + 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 35, 1, 0, 0, 0, 294, 292, 1, 0, 0, + 0, 295, 296, 5, 142, 0, 0, 296, 297, 7, 3, 0, 0, 297, 298, 5, 7, 0, 0, + 298, 299, 3, 12, 6, 0, 299, 300, 5, 8, 0, 0, 300, 37, 1, 0, 0, 0, 301, + 303, 5, 56, 0, 0, 302, 301, 1, 0, 0, 0, 302, 303, 1, 0, 0, 0, 303, 304, + 1, 0, 0, 0, 304, 305, 5, 67, 0, 0, 305, 306, 3, 10, 5, 0, 306, 307, 5, + 7, 0, 0, 307, 308, 3, 12, 6, 0, 308, 309, 5, 8, 0, 0, 309, 39, 1, 0, 0, + 0, 310, 311, 5, 51, 0, 0, 311, 314, 5, 53, 0, 0, 312, 314, 5, 133, 0, 0, + 313, 310, 1, 0, 0, 0, 313, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, + 316, 5, 7, 0, 0, 316, 317, 3, 12, 6, 0, 317, 318, 5, 8, 0, 0, 318, 319, + 7, 4, 0, 0, 319, 320, 5, 139, 0, 0, 320, 321, 5, 7, 0, 0, 321, 322, 3, + 12, 6, 0, 322, 326, 5, 8, 0, 0, 323, 325, 3, 42, 21, 0, 324, 323, 1, 0, + 0, 0, 325, 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, + 327, 41, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 329, 330, 5, 54, 0, 0, 330, + 333, 5, 63, 0, 0, 331, 333, 5, 134, 0, 0, 332, 329, 1, 0, 0, 0, 332, 331, + 1, 0, 0, 0, 333, 340, 1, 0, 0, 0, 334, 335, 5, 54, 0, 0, 335, 338, 5, 62, + 0, 0, 336, 338, 5, 135, 0, 0, 337, 334, 1, 0, 0, 0, 337, 336, 1, 0, 0, + 0, 338, 340, 1, 0, 0, 0, 339, 332, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 340, + 342, 1, 0, 0, 0, 341, 343, 5, 55, 0, 0, 342, 341, 1, 0, 0, 0, 342, 343, + 1, 0, 0, 0, 343, 361, 1, 0, 0, 0, 344, 345, 5, 92, 0, 0, 345, 348, 5, 36, + 0, 0, 346, 348, 5, 138, 0, 0, 347, 344, 1, 0, 0, 0, 347, 346, 1, 0, 0, + 0, 348, 362, 1, 0, 0, 0, 349, 362, 5, 57, 0, 0, 350, 351, 5, 59, 0, 0, + 351, 354, 5, 61, 0, 0, 352, 354, 5, 137, 0, 0, 353, 350, 1, 0, 0, 0, 353, + 352, 1, 0, 0, 0, 354, 362, 1, 0, 0, 0, 355, 356, 5, 59, 0, 0, 356, 359, + 5, 60, 0, 0, 357, 359, 5, 136, 0, 0, 358, 355, 1, 0, 0, 0, 358, 357, 1, + 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 362, 5, 58, 0, 0, 361, 347, 1, 0, 0, + 0, 361, 349, 1, 0, 0, 0, 361, 353, 1, 0, 0, 0, 361, 358, 1, 0, 0, 0, 361, + 360, 1, 0, 0, 0, 362, 43, 1, 0, 0, 0, 363, 368, 3, 14, 7, 0, 364, 365, + 5, 9, 0, 0, 365, 367, 3, 14, 7, 0, 366, 364, 1, 0, 0, 0, 367, 370, 1, 0, + 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 45, 1, 0, 0, 0, + 370, 368, 1, 0, 0, 0, 371, 372, 5, 139, 0, 0, 372, 378, 3, 14, 7, 0, 373, + 374, 5, 9, 0, 0, 374, 375, 5, 139, 0, 0, 375, 377, 3, 14, 7, 0, 376, 373, + 1, 0, 0, 0, 377, 380, 1, 0, 0, 0, 378, 376, 1, 0, 0, 0, 378, 379, 1, 0, + 0, 0, 379, 47, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 381, 382, 3, 18, 9, 0, + 382, 389, 3, 14, 7, 0, 383, 384, 5, 9, 0, 0, 384, 385, 3, 18, 9, 0, 385, + 386, 3, 14, 7, 0, 386, 388, 1, 0, 0, 0, 387, 383, 1, 0, 0, 0, 388, 391, + 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 49, 1, 0, + 0, 0, 391, 389, 1, 0, 0, 0, 392, 402, 5, 139, 0, 0, 393, 395, 5, 52, 0, + 0, 394, 396, 5, 53, 0, 0, 395, 394, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, + 402, 1, 0, 0, 0, 397, 398, 5, 66, 0, 0, 398, 402, 5, 61, 0, 0, 399, 402, + 5, 60, 0, 0, 400, 402, 5, 56, 0, 0, 401, 392, 1, 0, 0, 0, 401, 393, 1, + 0, 0, 0, 401, 397, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, 400, 1, 0, 0, + 0, 402, 407, 1, 0, 0, 0, 403, 404, 5, 7, 0, 0, 404, 405, 3, 8, 4, 0, 405, + 406, 5, 8, 0, 0, 406, 408, 1, 0, 0, 0, 407, 403, 1, 0, 0, 0, 407, 408, + 1, 0, 0, 0, 408, 51, 1, 0, 0, 0, 409, 410, 5, 52, 0, 0, 410, 423, 5, 53, + 0, 0, 411, 423, 5, 56, 0, 0, 412, 413, 5, 66, 0, 0, 413, 423, 5, 61, 0, + 0, 414, 415, 5, 60, 0, 0, 415, 423, 3, 8, 4, 0, 416, 423, 3, 56, 28, 0, + 417, 418, 5, 50, 0, 0, 418, 419, 5, 7, 0, 0, 419, 420, 3, 110, 55, 0, 420, + 421, 5, 8, 0, 0, 421, 423, 1, 0, 0, 0, 422, 409, 1, 0, 0, 0, 422, 411, + 1, 0, 0, 0, 422, 412, 1, 0, 0, 0, 422, 414, 1, 0, 0, 0, 422, 416, 1, 0, + 0, 0, 422, 417, 1, 0, 0, 0, 423, 53, 1, 0, 0, 0, 424, 425, 5, 54, 0, 0, + 425, 434, 7, 5, 0, 0, 426, 427, 5, 59, 0, 0, 427, 435, 5, 61, 0, 0, 428, + 429, 5, 59, 0, 0, 429, 435, 5, 60, 0, 0, 430, 435, 5, 58, 0, 0, 431, 432, + 5, 92, 0, 0, 432, 435, 5, 36, 0, 0, 433, 435, 5, 57, 0, 0, 434, 426, 1, + 0, 0, 0, 434, 428, 1, 0, 0, 0, 434, 430, 1, 0, 0, 0, 434, 431, 1, 0, 0, + 0, 434, 433, 1, 0, 0, 0, 435, 55, 1, 0, 0, 0, 436, 437, 5, 64, 0, 0, 437, + 438, 3, 10, 5, 0, 438, 439, 5, 7, 0, 0, 439, 440, 3, 10, 5, 0, 440, 441, + 5, 8, 0, 0, 441, 449, 1, 0, 0, 0, 442, 446, 3, 54, 27, 0, 443, 445, 3, + 54, 27, 0, 444, 443, 1, 0, 0, 0, 445, 448, 1, 0, 0, 0, 446, 444, 1, 0, + 0, 0, 446, 447, 1, 0, 0, 0, 447, 450, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, + 449, 442, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 57, 1, 0, 0, 0, 451, 452, + 7, 6, 0, 0, 452, 59, 1, 0, 0, 0, 453, 455, 3, 24, 12, 0, 454, 453, 1, 0, + 0, 0, 455, 458, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, + 457, 459, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 459, 460, 5, 36, 0, 0, 460, + 461, 5, 139, 0, 0, 461, 463, 5, 7, 0, 0, 462, 464, 3, 20, 10, 0, 463, 462, + 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 467, 5, 8, + 0, 0, 466, 468, 3, 58, 29, 0, 467, 466, 1, 0, 0, 0, 468, 469, 1, 0, 0, + 0, 469, 467, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, + 472, 5, 1, 0, 0, 472, 473, 3, 120, 60, 0, 473, 474, 5, 2, 0, 0, 474, 61, + 1, 0, 0, 0, 475, 477, 3, 24, 12, 0, 476, 475, 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, 37, 0, 0, 482, 483, 5, 139, 0, 0, + 483, 485, 5, 7, 0, 0, 484, 486, 3, 48, 24, 0, 485, 484, 1, 0, 0, 0, 485, + 486, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 489, 5, 8, 0, 0, 488, 490, + 3, 58, 29, 0, 489, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 489, 1, + 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 494, 1, 0, 0, 0, 493, 495, 3, 64, 32, + 0, 494, 493, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, + 497, 5, 1, 0, 0, 497, 498, 3, 124, 62, 0, 498, 499, 5, 2, 0, 0, 499, 63, + 1, 0, 0, 0, 500, 512, 5, 91, 0, 0, 501, 503, 5, 35, 0, 0, 502, 501, 1, + 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 5, 7, 0, + 0, 505, 506, 3, 46, 23, 0, 506, 507, 5, 8, 0, 0, 507, 513, 1, 0, 0, 0, + 508, 509, 5, 7, 0, 0, 509, 510, 3, 44, 22, 0, 510, 511, 5, 8, 0, 0, 511, + 513, 1, 0, 0, 0, 512, 502, 1, 0, 0, 0, 512, 508, 1, 0, 0, 0, 513, 65, 1, + 0, 0, 0, 514, 515, 3, 68, 34, 0, 515, 516, 5, 6, 0, 0, 516, 67, 1, 0, 0, + 0, 517, 519, 5, 93, 0, 0, 518, 520, 5, 127, 0, 0, 519, 518, 1, 0, 0, 0, + 519, 520, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 526, 3, 70, 35, 0, 522, + 523, 5, 9, 0, 0, 523, 525, 3, 70, 35, 0, 524, 522, 1, 0, 0, 0, 525, 528, + 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 530, 1, 0, + 0, 0, 528, 526, 1, 0, 0, 0, 529, 517, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, + 530, 539, 1, 0, 0, 0, 531, 540, 3, 72, 36, 0, 532, 540, 3, 78, 39, 0, 533, + 540, 3, 82, 41, 0, 534, 540, 3, 84, 42, 0, 535, 540, 3, 86, 43, 0, 536, + 540, 3, 100, 50, 0, 537, 540, 3, 104, 52, 0, 538, 540, 3, 108, 54, 0, 539, + 531, 1, 0, 0, 0, 539, 532, 1, 0, 0, 0, 539, 533, 1, 0, 0, 0, 539, 534, + 1, 0, 0, 0, 539, 535, 1, 0, 0, 0, 539, 536, 1, 0, 0, 0, 539, 537, 1, 0, + 0, 0, 539, 538, 1, 0, 0, 0, 540, 69, 1, 0, 0, 0, 541, 554, 3, 10, 5, 0, + 542, 551, 5, 7, 0, 0, 543, 548, 3, 10, 5, 0, 544, 545, 5, 9, 0, 0, 545, + 547, 3, 10, 5, 0, 546, 544, 1, 0, 0, 0, 547, 550, 1, 0, 0, 0, 548, 546, + 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 552, 1, 0, 0, 0, 550, 548, 1, 0, + 0, 0, 551, 543, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, + 553, 555, 5, 8, 0, 0, 554, 542, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, + 556, 1, 0, 0, 0, 556, 557, 5, 82, 0, 0, 557, 558, 5, 7, 0, 0, 558, 559, + 3, 86, 43, 0, 559, 560, 5, 8, 0, 0, 560, 71, 1, 0, 0, 0, 561, 562, 5, 42, + 0, 0, 562, 563, 5, 35, 0, 0, 563, 564, 3, 10, 5, 0, 564, 568, 5, 7, 0, + 0, 565, 569, 3, 34, 17, 0, 566, 569, 3, 74, 37, 0, 567, 569, 3, 38, 19, + 0, 568, 565, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 568, 567, 1, 0, 0, 0, 569, + 578, 1, 0, 0, 0, 570, 574, 5, 9, 0, 0, 571, 575, 3, 34, 17, 0, 572, 575, + 3, 74, 37, 0, 573, 575, 3, 38, 19, 0, 574, 571, 1, 0, 0, 0, 574, 572, 1, + 0, 0, 0, 574, 573, 1, 0, 0, 0, 575, 577, 1, 0, 0, 0, 576, 570, 1, 0, 0, + 0, 577, 580, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, + 581, 1, 0, 0, 0, 580, 578, 1, 0, 0, 0, 581, 582, 5, 8, 0, 0, 582, 73, 1, + 0, 0, 0, 583, 584, 5, 49, 0, 0, 584, 586, 3, 10, 5, 0, 585, 583, 1, 0, + 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 588, 3, 76, 38, + 0, 588, 75, 1, 0, 0, 0, 589, 590, 5, 52, 0, 0, 590, 591, 5, 53, 0, 0, 591, + 592, 5, 7, 0, 0, 592, 593, 3, 12, 6, 0, 593, 594, 5, 8, 0, 0, 594, 613, + 1, 0, 0, 0, 595, 596, 5, 56, 0, 0, 596, 597, 5, 7, 0, 0, 597, 598, 3, 12, + 6, 0, 598, 599, 5, 8, 0, 0, 599, 613, 1, 0, 0, 0, 600, 601, 5, 50, 0, 0, + 601, 602, 5, 7, 0, 0, 602, 603, 3, 110, 55, 0, 603, 604, 5, 8, 0, 0, 604, + 613, 1, 0, 0, 0, 605, 606, 5, 51, 0, 0, 606, 607, 5, 53, 0, 0, 607, 608, + 5, 7, 0, 0, 608, 609, 3, 10, 5, 0, 609, 610, 5, 8, 0, 0, 610, 611, 3, 56, + 28, 0, 611, 613, 1, 0, 0, 0, 612, 589, 1, 0, 0, 0, 612, 595, 1, 0, 0, 0, + 612, 600, 1, 0, 0, 0, 612, 605, 1, 0, 0, 0, 613, 77, 1, 0, 0, 0, 614, 615, + 5, 43, 0, 0, 615, 616, 5, 35, 0, 0, 616, 617, 3, 10, 5, 0, 617, 618, 3, + 80, 40, 0, 618, 79, 1, 0, 0, 0, 619, 620, 5, 43, 0, 0, 620, 621, 5, 44, + 0, 0, 621, 622, 3, 10, 5, 0, 622, 627, 5, 59, 0, 0, 623, 624, 5, 66, 0, + 0, 624, 628, 5, 61, 0, 0, 625, 626, 5, 60, 0, 0, 626, 628, 3, 8, 4, 0, + 627, 623, 1, 0, 0, 0, 627, 625, 1, 0, 0, 0, 628, 663, 1, 0, 0, 0, 629, + 630, 5, 43, 0, 0, 630, 631, 5, 44, 0, 0, 631, 632, 3, 10, 5, 0, 632, 638, + 5, 46, 0, 0, 633, 634, 5, 66, 0, 0, 634, 639, 5, 61, 0, 0, 635, 639, 5, + 60, 0, 0, 636, 637, 5, 49, 0, 0, 637, 639, 3, 10, 5, 0, 638, 633, 1, 0, + 0, 0, 638, 635, 1, 0, 0, 0, 638, 636, 1, 0, 0, 0, 639, 663, 1, 0, 0, 0, + 640, 641, 5, 45, 0, 0, 641, 642, 5, 44, 0, 0, 642, 643, 3, 10, 5, 0, 643, + 644, 3, 14, 7, 0, 644, 663, 1, 0, 0, 0, 645, 646, 5, 46, 0, 0, 646, 647, + 5, 44, 0, 0, 647, 663, 3, 10, 5, 0, 648, 649, 5, 47, 0, 0, 649, 650, 5, + 44, 0, 0, 650, 651, 3, 10, 5, 0, 651, 652, 5, 48, 0, 0, 652, 653, 3, 10, + 5, 0, 653, 663, 1, 0, 0, 0, 654, 655, 5, 47, 0, 0, 655, 656, 5, 48, 0, + 0, 656, 663, 3, 10, 5, 0, 657, 658, 5, 45, 0, 0, 658, 663, 3, 74, 37, 0, + 659, 660, 5, 46, 0, 0, 660, 661, 5, 49, 0, 0, 661, 663, 3, 10, 5, 0, 662, + 619, 1, 0, 0, 0, 662, 629, 1, 0, 0, 0, 662, 640, 1, 0, 0, 0, 662, 645, + 1, 0, 0, 0, 662, 648, 1, 0, 0, 0, 662, 654, 1, 0, 0, 0, 662, 657, 1, 0, + 0, 0, 662, 659, 1, 0, 0, 0, 663, 81, 1, 0, 0, 0, 664, 666, 5, 42, 0, 0, + 665, 667, 5, 56, 0, 0, 666, 665, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, + 668, 1, 0, 0, 0, 668, 670, 5, 67, 0, 0, 669, 671, 3, 10, 5, 0, 670, 669, + 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 673, 5, 54, + 0, 0, 673, 674, 3, 10, 5, 0, 674, 675, 5, 7, 0, 0, 675, 676, 3, 12, 6, + 0, 676, 677, 5, 8, 0, 0, 677, 83, 1, 0, 0, 0, 678, 679, 5, 46, 0, 0, 679, + 682, 5, 67, 0, 0, 680, 681, 5, 117, 0, 0, 681, 683, 5, 75, 0, 0, 682, 680, + 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 685, 3, 10, + 5, 0, 685, 85, 1, 0, 0, 0, 686, 692, 3, 92, 46, 0, 687, 688, 3, 88, 44, + 0, 688, 689, 3, 92, 46, 0, 689, 691, 1, 0, 0, 0, 690, 687, 1, 0, 0, 0, + 691, 694, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, + 705, 1, 0, 0, 0, 694, 692, 1, 0, 0, 0, 695, 696, 5, 87, 0, 0, 696, 697, + 5, 88, 0, 0, 697, 702, 3, 90, 45, 0, 698, 699, 5, 9, 0, 0, 699, 701, 3, + 90, 45, 0, 700, 698, 1, 0, 0, 0, 701, 704, 1, 0, 0, 0, 702, 700, 1, 0, + 0, 0, 702, 703, 1, 0, 0, 0, 703, 706, 1, 0, 0, 0, 704, 702, 1, 0, 0, 0, + 705, 695, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 709, 1, 0, 0, 0, 707, + 708, 5, 85, 0, 0, 708, 710, 3, 110, 55, 0, 709, 707, 1, 0, 0, 0, 709, 710, + 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, 711, 712, 5, 86, 0, 0, 712, 714, 3, 110, + 55, 0, 713, 711, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 87, 1, 0, 0, 0, + 715, 717, 5, 106, 0, 0, 716, 718, 5, 76, 0, 0, 717, 716, 1, 0, 0, 0, 717, + 718, 1, 0, 0, 0, 718, 722, 1, 0, 0, 0, 719, 722, 5, 107, 0, 0, 720, 722, + 5, 108, 0, 0, 721, 715, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 721, 720, 1, + 0, 0, 0, 722, 89, 1, 0, 0, 0, 723, 725, 3, 110, 55, 0, 724, 726, 7, 7, + 0, 0, 725, 724, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 729, 1, 0, 0, 0, + 727, 728, 5, 109, 0, 0, 728, 730, 7, 8, 0, 0, 729, 727, 1, 0, 0, 0, 729, + 730, 1, 0, 0, 0, 730, 91, 1, 0, 0, 0, 731, 733, 5, 102, 0, 0, 732, 734, + 5, 98, 0, 0, 733, 732, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 735, 1, 0, + 0, 0, 735, 740, 3, 98, 49, 0, 736, 737, 5, 9, 0, 0, 737, 739, 3, 98, 49, + 0, 738, 736, 1, 0, 0, 0, 739, 742, 1, 0, 0, 0, 740, 738, 1, 0, 0, 0, 740, + 741, 1, 0, 0, 0, 741, 751, 1, 0, 0, 0, 742, 740, 1, 0, 0, 0, 743, 744, + 5, 99, 0, 0, 744, 748, 3, 94, 47, 0, 745, 747, 3, 96, 48, 0, 746, 745, + 1, 0, 0, 0, 747, 750, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 748, 749, 1, 0, + 0, 0, 749, 752, 1, 0, 0, 0, 750, 748, 1, 0, 0, 0, 751, 743, 1, 0, 0, 0, + 751, 752, 1, 0, 0, 0, 752, 755, 1, 0, 0, 0, 753, 754, 5, 100, 0, 0, 754, + 756, 3, 110, 55, 0, 755, 753, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 764, + 1, 0, 0, 0, 757, 758, 5, 89, 0, 0, 758, 759, 5, 88, 0, 0, 759, 762, 3, + 116, 58, 0, 760, 761, 5, 90, 0, 0, 761, 763, 3, 110, 55, 0, 762, 760, 1, + 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 765, 1, 0, 0, 0, 764, 757, 1, 0, 0, + 0, 764, 765, 1, 0, 0, 0, 765, 780, 1, 0, 0, 0, 766, 767, 5, 125, 0, 0, + 767, 768, 3, 10, 5, 0, 768, 769, 5, 82, 0, 0, 769, 777, 3, 112, 56, 0, + 770, 771, 5, 9, 0, 0, 771, 772, 3, 10, 5, 0, 772, 773, 5, 82, 0, 0, 773, + 774, 3, 112, 56, 0, 774, 776, 1, 0, 0, 0, 775, 770, 1, 0, 0, 0, 776, 779, + 1, 0, 0, 0, 777, 775, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 781, 1, 0, + 0, 0, 779, 777, 1, 0, 0, 0, 780, 766, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, + 781, 93, 1, 0, 0, 0, 782, 787, 3, 10, 5, 0, 783, 785, 5, 82, 0, 0, 784, + 783, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 788, + 3, 10, 5, 0, 787, 784, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 799, 1, 0, + 0, 0, 789, 790, 5, 7, 0, 0, 790, 791, 3, 86, 43, 0, 791, 796, 5, 8, 0, + 0, 792, 794, 5, 82, 0, 0, 793, 792, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, + 795, 1, 0, 0, 0, 795, 797, 3, 10, 5, 0, 796, 793, 1, 0, 0, 0, 796, 797, + 1, 0, 0, 0, 797, 799, 1, 0, 0, 0, 798, 782, 1, 0, 0, 0, 798, 789, 1, 0, + 0, 0, 799, 95, 1, 0, 0, 0, 800, 802, 7, 9, 0, 0, 801, 800, 1, 0, 0, 0, + 801, 802, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 804, 5, 78, 0, 0, 804, + 805, 3, 94, 47, 0, 805, 806, 5, 54, 0, 0, 806, 807, 3, 110, 55, 0, 807, + 97, 1, 0, 0, 0, 808, 813, 3, 110, 55, 0, 809, 811, 5, 82, 0, 0, 810, 809, + 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 814, 3, 10, + 5, 0, 813, 810, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 822, 1, 0, 0, 0, + 815, 816, 3, 10, 5, 0, 816, 817, 5, 12, 0, 0, 817, 819, 1, 0, 0, 0, 818, + 815, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, 820, 822, + 5, 14, 0, 0, 821, 808, 1, 0, 0, 0, 821, 818, 1, 0, 0, 0, 822, 99, 1, 0, + 0, 0, 823, 824, 5, 63, 0, 0, 824, 829, 3, 10, 5, 0, 825, 827, 5, 82, 0, + 0, 826, 825, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, + 830, 3, 10, 5, 0, 829, 826, 1, 0, 0, 0, 829, 830, 1, 0, 0, 0, 830, 831, + 1, 0, 0, 0, 831, 832, 5, 59, 0, 0, 832, 837, 3, 102, 51, 0, 833, 834, 5, + 9, 0, 0, 834, 836, 3, 102, 51, 0, 835, 833, 1, 0, 0, 0, 836, 839, 1, 0, + 0, 0, 837, 835, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 848, 1, 0, 0, 0, + 839, 837, 1, 0, 0, 0, 840, 841, 5, 99, 0, 0, 841, 845, 3, 94, 47, 0, 842, + 844, 3, 96, 48, 0, 843, 842, 1, 0, 0, 0, 844, 847, 1, 0, 0, 0, 845, 843, + 1, 0, 0, 0, 845, 846, 1, 0, 0, 0, 846, 849, 1, 0, 0, 0, 847, 845, 1, 0, + 0, 0, 848, 840, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 852, 1, 0, 0, 0, + 850, 851, 5, 100, 0, 0, 851, 853, 3, 110, 55, 0, 852, 850, 1, 0, 0, 0, + 852, 853, 1, 0, 0, 0, 853, 101, 1, 0, 0, 0, 854, 855, 3, 10, 5, 0, 855, + 856, 5, 15, 0, 0, 856, 857, 3, 110, 55, 0, 857, 103, 1, 0, 0, 0, 858, 859, + 5, 103, 0, 0, 859, 860, 5, 113, 0, 0, 860, 865, 3, 10, 5, 0, 861, 863, + 5, 82, 0, 0, 862, 861, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 864, 1, 0, + 0, 0, 864, 866, 3, 10, 5, 0, 865, 862, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, + 866, 871, 1, 0, 0, 0, 867, 868, 5, 7, 0, 0, 868, 869, 3, 12, 6, 0, 869, + 870, 5, 8, 0, 0, 870, 872, 1, 0, 0, 0, 871, 867, 1, 0, 0, 0, 871, 872, + 1, 0, 0, 0, 872, 888, 1, 0, 0, 0, 873, 874, 5, 104, 0, 0, 874, 875, 5, + 7, 0, 0, 875, 876, 3, 116, 58, 0, 876, 884, 5, 8, 0, 0, 877, 878, 5, 9, + 0, 0, 878, 879, 5, 7, 0, 0, 879, 880, 3, 116, 58, 0, 880, 881, 5, 8, 0, + 0, 881, 883, 1, 0, 0, 0, 882, 877, 1, 0, 0, 0, 883, 886, 1, 0, 0, 0, 884, + 882, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 889, 1, 0, 0, 0, 886, 884, + 1, 0, 0, 0, 887, 889, 3, 86, 43, 0, 888, 873, 1, 0, 0, 0, 888, 887, 1, + 0, 0, 0, 889, 891, 1, 0, 0, 0, 890, 892, 3, 106, 53, 0, 891, 890, 1, 0, + 0, 0, 891, 892, 1, 0, 0, 0, 892, 105, 1, 0, 0, 0, 893, 894, 5, 54, 0, 0, + 894, 902, 5, 114, 0, 0, 895, 896, 5, 7, 0, 0, 896, 897, 3, 12, 6, 0, 897, + 900, 5, 8, 0, 0, 898, 899, 5, 100, 0, 0, 899, 901, 3, 110, 55, 0, 900, + 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 903, 1, 0, 0, 0, 902, 895, + 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 920, 5, 55, + 0, 0, 905, 921, 5, 115, 0, 0, 906, 907, 5, 63, 0, 0, 907, 908, 5, 59, 0, + 0, 908, 913, 3, 102, 51, 0, 909, 910, 5, 9, 0, 0, 910, 912, 3, 102, 51, + 0, 911, 909, 1, 0, 0, 0, 912, 915, 1, 0, 0, 0, 913, 911, 1, 0, 0, 0, 913, + 914, 1, 0, 0, 0, 914, 918, 1, 0, 0, 0, 915, 913, 1, 0, 0, 0, 916, 917, + 5, 100, 0, 0, 917, 919, 3, 110, 55, 0, 918, 916, 1, 0, 0, 0, 918, 919, + 1, 0, 0, 0, 919, 921, 1, 0, 0, 0, 920, 905, 1, 0, 0, 0, 920, 906, 1, 0, + 0, 0, 921, 107, 1, 0, 0, 0, 922, 923, 5, 62, 0, 0, 923, 924, 5, 99, 0, + 0, 924, 929, 3, 10, 5, 0, 925, 927, 5, 82, 0, 0, 926, 925, 1, 0, 0, 0, + 926, 927, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 930, 3, 10, 5, 0, 929, + 926, 1, 0, 0, 0, 929, 930, 1, 0, 0, 0, 930, 933, 1, 0, 0, 0, 931, 932, + 5, 100, 0, 0, 932, 934, 3, 110, 55, 0, 933, 931, 1, 0, 0, 0, 933, 934, + 1, 0, 0, 0, 934, 109, 1, 0, 0, 0, 935, 936, 6, 55, -1, 0, 936, 937, 5, + 7, 0, 0, 937, 938, 3, 110, 55, 0, 938, 940, 5, 8, 0, 0, 939, 941, 3, 16, + 8, 0, 940, 939, 1, 0, 0, 0, 940, 941, 1, 0, 0, 0, 941, 1009, 1, 0, 0, 0, + 942, 943, 7, 0, 0, 0, 943, 1009, 3, 110, 55, 20, 944, 946, 3, 8, 4, 0, + 945, 947, 3, 16, 8, 0, 946, 945, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, + 1009, 1, 0, 0, 0, 948, 955, 3, 118, 59, 0, 949, 950, 5, 126, 0, 0, 950, + 951, 5, 7, 0, 0, 951, 952, 5, 100, 0, 0, 952, 953, 3, 110, 55, 0, 953, + 954, 5, 8, 0, 0, 954, 956, 1, 0, 0, 0, 955, 949, 1, 0, 0, 0, 955, 956, + 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 960, 5, 123, 0, 0, 958, 961, 3, + 112, 56, 0, 959, 961, 5, 139, 0, 0, 960, 958, 1, 0, 0, 0, 960, 959, 1, + 0, 0, 0, 961, 1009, 1, 0, 0, 0, 962, 964, 3, 118, 59, 0, 963, 965, 3, 16, + 8, 0, 964, 963, 1, 0, 0, 0, 964, 965, 1, 0, 0, 0, 965, 1009, 1, 0, 0, 0, + 966, 968, 3, 18, 9, 0, 967, 969, 3, 16, 8, 0, 968, 967, 1, 0, 0, 0, 968, + 969, 1, 0, 0, 0, 969, 1009, 1, 0, 0, 0, 970, 971, 3, 10, 5, 0, 971, 972, + 5, 12, 0, 0, 972, 974, 1, 0, 0, 0, 973, 970, 1, 0, 0, 0, 973, 974, 1, 0, + 0, 0, 974, 975, 1, 0, 0, 0, 975, 977, 3, 10, 5, 0, 976, 978, 3, 16, 8, + 0, 977, 976, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 1009, 1, 0, 0, 0, 979, + 981, 5, 94, 0, 0, 980, 982, 3, 110, 55, 0, 981, 980, 1, 0, 0, 0, 981, 982, + 1, 0, 0, 0, 982, 984, 1, 0, 0, 0, 983, 985, 3, 114, 57, 0, 984, 983, 1, + 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 984, 1, 0, 0, 0, 986, 987, 1, 0, 0, + 0, 987, 990, 1, 0, 0, 0, 988, 989, 5, 119, 0, 0, 989, 991, 3, 110, 55, + 0, 990, 988, 1, 0, 0, 0, 990, 991, 1, 0, 0, 0, 991, 992, 1, 0, 0, 0, 992, + 993, 5, 97, 0, 0, 993, 1009, 1, 0, 0, 0, 994, 996, 5, 66, 0, 0, 995, 994, + 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 997, 1, 0, 0, 0, 997, 999, 5, 75, + 0, 0, 998, 995, 1, 0, 0, 0, 998, 999, 1, 0, 0, 0, 999, 1000, 1, 0, 0, 0, + 1000, 1001, 5, 7, 0, 0, 1001, 1002, 3, 86, 43, 0, 1002, 1004, 5, 8, 0, + 0, 1003, 1005, 3, 16, 8, 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, + 0, 1005, 1009, 1, 0, 0, 0, 1006, 1007, 5, 66, 0, 0, 1007, 1009, 3, 110, + 55, 3, 1008, 935, 1, 0, 0, 0, 1008, 942, 1, 0, 0, 0, 1008, 944, 1, 0, 0, + 0, 1008, 948, 1, 0, 0, 0, 1008, 962, 1, 0, 0, 0, 1008, 966, 1, 0, 0, 0, + 1008, 973, 1, 0, 0, 0, 1008, 979, 1, 0, 0, 0, 1008, 998, 1, 0, 0, 0, 1008, + 1006, 1, 0, 0, 0, 1009, 1095, 1, 0, 0, 0, 1010, 1011, 10, 18, 0, 0, 1011, + 1012, 7, 10, 0, 0, 1012, 1094, 3, 110, 55, 19, 1013, 1014, 10, 17, 0, 0, + 1014, 1015, 7, 0, 0, 0, 1015, 1094, 3, 110, 55, 18, 1016, 1017, 10, 9, + 0, 0, 1017, 1018, 5, 13, 0, 0, 1018, 1094, 3, 110, 55, 10, 1019, 1021, + 10, 7, 0, 0, 1020, 1022, 5, 66, 0, 0, 1021, 1020, 1, 0, 0, 0, 1021, 1022, + 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1024, 7, 11, 0, 0, 1024, 1094, + 3, 110, 55, 8, 1025, 1027, 10, 6, 0, 0, 1026, 1028, 5, 66, 0, 0, 1027, + 1026, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, + 1030, 5, 73, 0, 0, 1030, 1031, 3, 110, 55, 0, 1031, 1032, 5, 68, 0, 0, + 1032, 1033, 3, 110, 55, 7, 1033, 1094, 1, 0, 0, 0, 1034, 1035, 10, 5, 0, + 0, 1035, 1036, 7, 12, 0, 0, 1036, 1094, 3, 110, 55, 6, 1037, 1038, 10, + 2, 0, 0, 1038, 1039, 5, 68, 0, 0, 1039, 1094, 3, 110, 55, 3, 1040, 1041, + 10, 1, 0, 0, 1041, 1042, 5, 69, 0, 0, 1042, 1094, 3, 110, 55, 2, 1043, + 1044, 10, 22, 0, 0, 1044, 1045, 5, 12, 0, 0, 1045, 1047, 3, 10, 5, 0, 1046, + 1048, 3, 16, 8, 0, 1047, 1046, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, + 1094, 1, 0, 0, 0, 1049, 1050, 10, 21, 0, 0, 1050, 1059, 5, 3, 0, 0, 1051, + 1060, 3, 110, 55, 0, 1052, 1054, 3, 110, 55, 0, 1053, 1052, 1, 0, 0, 0, + 1053, 1054, 1, 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 1057, 5, 5, 0, 0, + 1056, 1058, 3, 110, 55, 0, 1057, 1056, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, + 0, 1058, 1060, 1, 0, 0, 0, 1059, 1051, 1, 0, 0, 0, 1059, 1053, 1, 0, 0, + 0, 1060, 1061, 1, 0, 0, 0, 1061, 1063, 5, 4, 0, 0, 1062, 1064, 3, 16, 8, + 0, 1063, 1062, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1094, 1, 0, 0, + 0, 1065, 1066, 10, 19, 0, 0, 1066, 1067, 5, 101, 0, 0, 1067, 1094, 3, 10, + 5, 0, 1068, 1070, 10, 8, 0, 0, 1069, 1071, 5, 66, 0, 0, 1070, 1069, 1, + 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1073, 5, + 72, 0, 0, 1073, 1076, 5, 7, 0, 0, 1074, 1077, 3, 116, 58, 0, 1075, 1077, + 3, 86, 43, 0, 1076, 1074, 1, 0, 0, 0, 1076, 1075, 1, 0, 0, 0, 1077, 1078, + 1, 0, 0, 0, 1078, 1079, 5, 8, 0, 0, 1079, 1094, 1, 0, 0, 0, 1080, 1081, + 10, 4, 0, 0, 1081, 1083, 5, 74, 0, 0, 1082, 1084, 5, 66, 0, 0, 1083, 1082, + 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1091, 1, 0, 0, 0, 1085, 1086, + 5, 98, 0, 0, 1086, 1087, 5, 99, 0, 0, 1087, 1092, 3, 110, 55, 0, 1088, + 1092, 5, 61, 0, 0, 1089, 1092, 5, 129, 0, 0, 1090, 1092, 5, 130, 0, 0, + 1091, 1085, 1, 0, 0, 0, 1091, 1088, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, + 1091, 1090, 1, 0, 0, 0, 1092, 1094, 1, 0, 0, 0, 1093, 1010, 1, 0, 0, 0, + 1093, 1013, 1, 0, 0, 0, 1093, 1016, 1, 0, 0, 0, 1093, 1019, 1, 0, 0, 0, + 1093, 1025, 1, 0, 0, 0, 1093, 1034, 1, 0, 0, 0, 1093, 1037, 1, 0, 0, 0, + 1093, 1040, 1, 0, 0, 0, 1093, 1043, 1, 0, 0, 0, 1093, 1049, 1, 0, 0, 0, + 1093, 1065, 1, 0, 0, 0, 1093, 1068, 1, 0, 0, 0, 1093, 1080, 1, 0, 0, 0, + 1094, 1097, 1, 0, 0, 0, 1095, 1093, 1, 0, 0, 0, 1095, 1096, 1, 0, 0, 0, + 1096, 111, 1, 0, 0, 0, 1097, 1095, 1, 0, 0, 0, 1098, 1102, 5, 7, 0, 0, + 1099, 1100, 5, 124, 0, 0, 1100, 1101, 5, 88, 0, 0, 1101, 1103, 3, 116, + 58, 0, 1102, 1099, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1114, 1, 0, + 0, 0, 1104, 1105, 5, 87, 0, 0, 1105, 1106, 5, 88, 0, 0, 1106, 1111, 3, + 90, 45, 0, 1107, 1108, 5, 9, 0, 0, 1108, 1110, 3, 90, 45, 0, 1109, 1107, + 1, 0, 0, 0, 1110, 1113, 1, 0, 0, 0, 1111, 1109, 1, 0, 0, 0, 1111, 1112, + 1, 0, 0, 0, 1112, 1115, 1, 0, 0, 0, 1113, 1111, 1, 0, 0, 0, 1114, 1104, + 1, 0, 0, 0, 1114, 1115, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, + 5, 8, 0, 0, 1117, 113, 1, 0, 0, 0, 1118, 1119, 5, 95, 0, 0, 1119, 1120, + 3, 110, 55, 0, 1120, 1121, 5, 96, 0, 0, 1121, 1122, 3, 110, 55, 0, 1122, + 115, 1, 0, 0, 0, 1123, 1128, 3, 110, 55, 0, 1124, 1125, 5, 9, 0, 0, 1125, + 1127, 3, 110, 55, 0, 1126, 1124, 1, 0, 0, 0, 1127, 1130, 1, 0, 0, 0, 1128, + 1126, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 117, 1, 0, 0, 0, 1130, + 1128, 1, 0, 0, 0, 1131, 1132, 3, 10, 5, 0, 1132, 1138, 5, 7, 0, 0, 1133, + 1135, 5, 98, 0, 0, 1134, 1133, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, + 1136, 1, 0, 0, 0, 1136, 1139, 3, 116, 58, 0, 1137, 1139, 5, 14, 0, 0, 1138, + 1134, 1, 0, 0, 0, 1138, 1137, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, + 1140, 1, 0, 0, 0, 1140, 1141, 5, 8, 0, 0, 1141, 119, 1, 0, 0, 0, 1142, + 1143, 3, 122, 61, 0, 1143, 1144, 5, 6, 0, 0, 1144, 1146, 1, 0, 0, 0, 1145, + 1142, 1, 0, 0, 0, 1146, 1149, 1, 0, 0, 0, 1147, 1145, 1, 0, 0, 0, 1147, + 1148, 1, 0, 0, 0, 1148, 121, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1150, + 1171, 3, 68, 34, 0, 1151, 1152, 5, 139, 0, 0, 1152, 1154, 5, 7, 0, 0, 1153, + 1155, 3, 128, 64, 0, 1154, 1153, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, + 1156, 1, 0, 0, 0, 1156, 1171, 5, 8, 0, 0, 1157, 1158, 3, 20, 10, 0, 1158, + 1159, 5, 15, 0, 0, 1159, 1161, 1, 0, 0, 0, 1160, 1157, 1, 0, 0, 0, 1160, + 1161, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1163, 5, 139, 0, 0, 1163, + 1164, 5, 12, 0, 0, 1164, 1165, 5, 139, 0, 0, 1165, 1167, 5, 7, 0, 0, 1166, + 1168, 3, 128, 64, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, + 1169, 1, 0, 0, 0, 1169, 1171, 5, 8, 0, 0, 1170, 1150, 1, 0, 0, 0, 1170, + 1151, 1, 0, 0, 0, 1170, 1160, 1, 0, 0, 0, 1171, 123, 1, 0, 0, 0, 1172, + 1174, 3, 130, 65, 0, 1173, 1172, 1, 0, 0, 0, 1174, 1177, 1, 0, 0, 0, 1175, + 1173, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 125, 1, 0, 0, 0, 1177, + 1175, 1, 0, 0, 0, 1178, 1179, 6, 63, -1, 0, 1179, 1180, 5, 7, 0, 0, 1180, + 1181, 3, 126, 63, 0, 1181, 1183, 5, 8, 0, 0, 1182, 1184, 3, 16, 8, 0, 1183, + 1182, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1210, 1, 0, 0, 0, 1185, + 1186, 7, 13, 0, 0, 1186, 1210, 3, 126, 63, 13, 1187, 1189, 3, 8, 4, 0, + 1188, 1190, 3, 16, 8, 0, 1189, 1188, 1, 0, 0, 0, 1189, 1190, 1, 0, 0, 0, + 1190, 1210, 1, 0, 0, 0, 1191, 1193, 3, 134, 67, 0, 1192, 1194, 3, 16, 8, + 0, 1193, 1192, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1210, 1, 0, 0, + 0, 1195, 1197, 3, 18, 9, 0, 1196, 1198, 3, 16, 8, 0, 1197, 1196, 1, 0, + 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1210, 1, 0, 0, 0, 1199, 1201, 5, 3, + 0, 0, 1200, 1202, 3, 128, 64, 0, 1201, 1200, 1, 0, 0, 0, 1201, 1202, 1, + 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1205, 5, 4, 0, 0, 1204, 1206, 3, + 16, 8, 0, 1205, 1204, 1, 0, 0, 0, 1205, 1206, 1, 0, 0, 0, 1206, 1210, 1, + 0, 0, 0, 1207, 1208, 5, 66, 0, 0, 1208, 1210, 3, 126, 63, 3, 1209, 1178, + 1, 0, 0, 0, 1209, 1185, 1, 0, 0, 0, 1209, 1187, 1, 0, 0, 0, 1209, 1191, + 1, 0, 0, 0, 1209, 1195, 1, 0, 0, 0, 1209, 1199, 1, 0, 0, 0, 1209, 1207, + 1, 0, 0, 0, 1210, 1266, 1, 0, 0, 0, 1211, 1212, 10, 12, 0, 0, 1212, 1213, + 7, 10, 0, 0, 1213, 1265, 3, 126, 63, 13, 1214, 1215, 10, 11, 0, 0, 1215, + 1216, 7, 0, 0, 0, 1216, 1265, 3, 126, 63, 12, 1217, 1218, 10, 6, 0, 0, + 1218, 1219, 5, 13, 0, 0, 1219, 1265, 3, 126, 63, 7, 1220, 1221, 10, 5, + 0, 0, 1221, 1222, 7, 12, 0, 0, 1222, 1265, 3, 126, 63, 6, 1223, 1224, 10, + 2, 0, 0, 1224, 1225, 5, 68, 0, 0, 1225, 1265, 3, 126, 63, 3, 1226, 1227, + 10, 1, 0, 0, 1227, 1228, 5, 69, 0, 0, 1228, 1265, 3, 126, 63, 2, 1229, + 1230, 10, 15, 0, 0, 1230, 1231, 5, 12, 0, 0, 1231, 1233, 5, 139, 0, 0, + 1232, 1234, 3, 16, 8, 0, 1233, 1232, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, + 1234, 1265, 1, 0, 0, 0, 1235, 1236, 10, 14, 0, 0, 1236, 1245, 5, 3, 0, + 0, 1237, 1246, 3, 126, 63, 0, 1238, 1240, 3, 126, 63, 0, 1239, 1238, 1, + 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1243, 5, + 5, 0, 0, 1242, 1244, 3, 126, 63, 0, 1243, 1242, 1, 0, 0, 0, 1243, 1244, + 1, 0, 0, 0, 1244, 1246, 1, 0, 0, 0, 1245, 1237, 1, 0, 0, 0, 1245, 1239, + 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1249, 5, 4, 0, 0, 1248, 1250, + 3, 16, 8, 0, 1249, 1248, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1265, + 1, 0, 0, 0, 1251, 1252, 10, 4, 0, 0, 1252, 1254, 5, 74, 0, 0, 1253, 1255, + 5, 66, 0, 0, 1254, 1253, 1, 0, 0, 0, 1254, 1255, 1, 0, 0, 0, 1255, 1262, + 1, 0, 0, 0, 1256, 1257, 5, 98, 0, 0, 1257, 1258, 5, 99, 0, 0, 1258, 1263, + 3, 126, 63, 0, 1259, 1263, 5, 61, 0, 0, 1260, 1263, 5, 129, 0, 0, 1261, + 1263, 5, 130, 0, 0, 1262, 1256, 1, 0, 0, 0, 1262, 1259, 1, 0, 0, 0, 1262, + 1260, 1, 0, 0, 0, 1262, 1261, 1, 0, 0, 0, 1263, 1265, 1, 0, 0, 0, 1264, + 1211, 1, 0, 0, 0, 1264, 1214, 1, 0, 0, 0, 1264, 1217, 1, 0, 0, 0, 1264, + 1220, 1, 0, 0, 0, 1264, 1223, 1, 0, 0, 0, 1264, 1226, 1, 0, 0, 0, 1264, + 1229, 1, 0, 0, 0, 1264, 1235, 1, 0, 0, 0, 1264, 1251, 1, 0, 0, 0, 1265, + 1268, 1, 0, 0, 0, 1266, 1264, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, + 127, 1, 0, 0, 0, 1268, 1266, 1, 0, 0, 0, 1269, 1274, 3, 126, 63, 0, 1270, + 1271, 5, 9, 0, 0, 1271, 1273, 3, 126, 63, 0, 1272, 1270, 1, 0, 0, 0, 1273, + 1276, 1, 0, 0, 0, 1274, 1272, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, + 129, 1, 0, 0, 0, 1276, 1274, 1, 0, 0, 0, 1277, 1278, 5, 140, 0, 0, 1278, + 1279, 3, 14, 7, 0, 1279, 1280, 5, 6, 0, 0, 1280, 1358, 1, 0, 0, 0, 1281, + 1286, 3, 132, 66, 0, 1282, 1283, 5, 9, 0, 0, 1283, 1285, 3, 132, 66, 0, + 1284, 1282, 1, 0, 0, 0, 1285, 1288, 1, 0, 0, 0, 1286, 1284, 1, 0, 0, 0, + 1286, 1287, 1, 0, 0, 0, 1287, 1289, 1, 0, 0, 0, 1288, 1286, 1, 0, 0, 0, + 1289, 1290, 5, 30, 0, 0, 1290, 1292, 1, 0, 0, 0, 1291, 1281, 1, 0, 0, 0, + 1291, 1292, 1, 0, 0, 0, 1292, 1293, 1, 0, 0, 0, 1293, 1294, 3, 134, 67, + 0, 1294, 1295, 5, 6, 0, 0, 1295, 1358, 1, 0, 0, 0, 1296, 1298, 3, 126, + 63, 0, 1297, 1299, 3, 14, 7, 0, 1298, 1297, 1, 0, 0, 0, 1298, 1299, 1, + 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1301, 5, 30, 0, 0, 1301, 1302, 3, + 126, 63, 0, 1302, 1303, 5, 6, 0, 0, 1303, 1358, 1, 0, 0, 0, 1304, 1305, + 5, 116, 0, 0, 1305, 1306, 5, 140, 0, 0, 1306, 1310, 5, 72, 0, 0, 1307, + 1311, 3, 138, 69, 0, 1308, 1311, 3, 18, 9, 0, 1309, 1311, 3, 68, 34, 0, + 1310, 1307, 1, 0, 0, 0, 1310, 1308, 1, 0, 0, 0, 1310, 1309, 1, 0, 0, 0, + 1311, 1312, 1, 0, 0, 0, 1312, 1316, 5, 1, 0, 0, 1313, 1315, 3, 130, 65, + 0, 1314, 1313, 1, 0, 0, 0, 1315, 1318, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, + 0, 1316, 1317, 1, 0, 0, 0, 1317, 1319, 1, 0, 0, 0, 1318, 1316, 1, 0, 0, + 0, 1319, 1320, 5, 2, 0, 0, 1320, 1358, 1, 0, 0, 0, 1321, 1322, 5, 117, + 0, 0, 1322, 1327, 3, 136, 68, 0, 1323, 1324, 5, 118, 0, 0, 1324, 1326, + 3, 136, 68, 0, 1325, 1323, 1, 0, 0, 0, 1326, 1329, 1, 0, 0, 0, 1327, 1325, + 1, 0, 0, 0, 1327, 1328, 1, 0, 0, 0, 1328, 1339, 1, 0, 0, 0, 1329, 1327, + 1, 0, 0, 0, 1330, 1331, 5, 119, 0, 0, 1331, 1335, 5, 1, 0, 0, 1332, 1334, + 3, 130, 65, 0, 1333, 1332, 1, 0, 0, 0, 1334, 1337, 1, 0, 0, 0, 1335, 1333, + 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1338, 1, 0, 0, 0, 1337, 1335, + 1, 0, 0, 0, 1338, 1340, 5, 2, 0, 0, 1339, 1330, 1, 0, 0, 0, 1339, 1340, + 1, 0, 0, 0, 1340, 1358, 1, 0, 0, 0, 1341, 1342, 3, 68, 34, 0, 1342, 1343, + 5, 6, 0, 0, 1343, 1358, 1, 0, 0, 0, 1344, 1345, 5, 120, 0, 0, 1345, 1358, + 5, 6, 0, 0, 1346, 1349, 5, 121, 0, 0, 1347, 1350, 3, 128, 64, 0, 1348, + 1350, 3, 68, 34, 0, 1349, 1347, 1, 0, 0, 0, 1349, 1348, 1, 0, 0, 0, 1349, + 1350, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1358, 5, 6, 0, 0, 1352, + 1353, 5, 121, 0, 0, 1353, 1354, 5, 122, 0, 0, 1354, 1355, 3, 128, 64, 0, + 1355, 1356, 5, 6, 0, 0, 1356, 1358, 1, 0, 0, 0, 1357, 1277, 1, 0, 0, 0, + 1357, 1291, 1, 0, 0, 0, 1357, 1296, 1, 0, 0, 0, 1357, 1304, 1, 0, 0, 0, + 1357, 1321, 1, 0, 0, 0, 1357, 1341, 1, 0, 0, 0, 1357, 1344, 1, 0, 0, 0, + 1357, 1346, 1, 0, 0, 0, 1357, 1352, 1, 0, 0, 0, 1358, 131, 1, 0, 0, 0, + 1359, 1360, 7, 14, 0, 0, 1360, 133, 1, 0, 0, 0, 1361, 1362, 5, 139, 0, + 0, 1362, 1364, 5, 7, 0, 0, 1363, 1365, 3, 128, 64, 0, 1364, 1363, 1, 0, + 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1367, 5, 8, + 0, 0, 1367, 135, 1, 0, 0, 0, 1368, 1369, 3, 126, 63, 0, 1369, 1373, 5, + 1, 0, 0, 1370, 1372, 3, 130, 65, 0, 1371, 1370, 1, 0, 0, 0, 1372, 1375, + 1, 0, 0, 0, 1373, 1371, 1, 0, 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 1376, + 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1376, 1377, 5, 2, 0, 0, 1377, 137, + 1, 0, 0, 0, 1378, 1379, 3, 126, 63, 0, 1379, 1380, 5, 31, 0, 0, 1380, 1381, + 3, 126, 63, 0, 1381, 139, 1, 0, 0, 0, 183, 154, 158, 166, 172, 179, 188, + 192, 204, 212, 214, 228, 231, 251, 256, 270, 274, 284, 292, 302, 313, 326, + 332, 337, 339, 342, 347, 353, 358, 361, 368, 378, 389, 395, 401, 407, 422, + 434, 446, 449, 456, 463, 469, 478, 485, 491, 494, 502, 512, 519, 526, 529, + 539, 548, 551, 554, 568, 574, 578, 585, 612, 627, 638, 662, 666, 670, 682, + 692, 702, 705, 709, 713, 717, 721, 725, 729, 733, 740, 748, 751, 755, 762, + 764, 777, 780, 784, 787, 793, 796, 798, 801, 810, 813, 818, 821, 826, 829, + 837, 845, 848, 852, 862, 865, 871, 884, 888, 891, 900, 902, 913, 918, 920, + 926, 929, 933, 940, 946, 955, 960, 964, 968, 973, 977, 981, 986, 990, 995, + 998, 1004, 1008, 1021, 1027, 1047, 1053, 1057, 1059, 1063, 1070, 1076, + 1083, 1091, 1093, 1095, 1102, 1111, 1114, 1128, 1134, 1138, 1147, 1154, + 1160, 1167, 1170, 1175, 1183, 1189, 1193, 1197, 1201, 1205, 1209, 1233, + 1239, 1243, 1245, 1249, 1254, 1262, 1264, 1266, 1274, 1286, 1291, 1298, + 1310, 1316, 1327, 1335, 1339, 1349, 1357, 1364, 1373, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -963,238 +959,78 @@ const ( // KuneiformParser rules. const ( - KuneiformParserRULE_src = 0 - KuneiformParserRULE_schema_entry = 1 - KuneiformParserRULE_sql_entry = 2 - KuneiformParserRULE_action_entry = 3 - KuneiformParserRULE_procedure_entry = 4 - KuneiformParserRULE_literal = 5 - KuneiformParserRULE_identifier = 6 - KuneiformParserRULE_identifier_list = 7 - KuneiformParserRULE_type = 8 - KuneiformParserRULE_type_cast = 9 - KuneiformParserRULE_variable = 10 - KuneiformParserRULE_variable_list = 11 - KuneiformParserRULE_schema = 12 - KuneiformParserRULE_annotation = 13 - KuneiformParserRULE_database_declaration = 14 - KuneiformParserRULE_use_declaration = 15 - KuneiformParserRULE_table_declaration = 16 - KuneiformParserRULE_column_def = 17 - KuneiformParserRULE_c_column_def = 18 - KuneiformParserRULE_index_def = 19 - KuneiformParserRULE_c_index_def = 20 - KuneiformParserRULE_foreign_key_def = 21 - KuneiformParserRULE_foreign_key_action = 22 - KuneiformParserRULE_type_list = 23 - KuneiformParserRULE_named_type_list = 24 - KuneiformParserRULE_typed_variable_list = 25 - KuneiformParserRULE_constraint = 26 - KuneiformParserRULE_inline_constraint = 27 - KuneiformParserRULE_fk_action = 28 - KuneiformParserRULE_fk_constraint = 29 - KuneiformParserRULE_access_modifier = 30 - KuneiformParserRULE_action_declaration = 31 - KuneiformParserRULE_procedure_declaration = 32 - KuneiformParserRULE_procedure_return = 33 - KuneiformParserRULE_sql = 34 - KuneiformParserRULE_sql_statement = 35 - KuneiformParserRULE_common_table_expression = 36 - KuneiformParserRULE_create_table_statement = 37 - KuneiformParserRULE_constraint_def = 38 - KuneiformParserRULE_unnamed_constraint = 39 - KuneiformParserRULE_alter_table_statement = 40 - KuneiformParserRULE_alter_table_action = 41 - KuneiformParserRULE_create_index_statement = 42 - KuneiformParserRULE_drop_index_statement = 43 - KuneiformParserRULE_select_statement = 44 - KuneiformParserRULE_compound_operator = 45 - KuneiformParserRULE_ordering_term = 46 - KuneiformParserRULE_select_core = 47 - KuneiformParserRULE_relation = 48 - KuneiformParserRULE_join = 49 - KuneiformParserRULE_result_column = 50 - KuneiformParserRULE_update_statement = 51 - KuneiformParserRULE_update_set_clause = 52 - KuneiformParserRULE_insert_statement = 53 - KuneiformParserRULE_upsert_clause = 54 - KuneiformParserRULE_delete_statement = 55 - KuneiformParserRULE_sql_expr = 56 - KuneiformParserRULE_window = 57 - KuneiformParserRULE_when_then_clause = 58 - KuneiformParserRULE_sql_expr_list = 59 - KuneiformParserRULE_sql_function_call = 60 - KuneiformParserRULE_action_block = 61 - KuneiformParserRULE_action_statement = 62 - KuneiformParserRULE_procedure_block = 63 - KuneiformParserRULE_procedure_expr = 64 - KuneiformParserRULE_procedure_expr_list = 65 - KuneiformParserRULE_proc_statement = 66 - KuneiformParserRULE_variable_or_underscore = 67 - KuneiformParserRULE_procedure_function_call = 68 - KuneiformParserRULE_if_then_block = 69 - KuneiformParserRULE_range = 70 + KuneiformParserRULE_schema_entry = 0 + KuneiformParserRULE_sql_entry = 1 + KuneiformParserRULE_action_entry = 2 + KuneiformParserRULE_procedure_entry = 3 + KuneiformParserRULE_literal = 4 + KuneiformParserRULE_identifier = 5 + KuneiformParserRULE_identifier_list = 6 + KuneiformParserRULE_type = 7 + KuneiformParserRULE_type_cast = 8 + KuneiformParserRULE_variable = 9 + KuneiformParserRULE_variable_list = 10 + KuneiformParserRULE_schema = 11 + KuneiformParserRULE_annotation = 12 + KuneiformParserRULE_database_declaration = 13 + KuneiformParserRULE_use_declaration = 14 + KuneiformParserRULE_table_declaration = 15 + KuneiformParserRULE_column_def = 16 + KuneiformParserRULE_c_column_def = 17 + KuneiformParserRULE_index_def = 18 + KuneiformParserRULE_c_index_def = 19 + KuneiformParserRULE_foreign_key_def = 20 + KuneiformParserRULE_foreign_key_action = 21 + KuneiformParserRULE_type_list = 22 + KuneiformParserRULE_named_type_list = 23 + KuneiformParserRULE_typed_variable_list = 24 + KuneiformParserRULE_constraint = 25 + KuneiformParserRULE_inline_constraint = 26 + KuneiformParserRULE_fk_action = 27 + KuneiformParserRULE_fk_constraint = 28 + KuneiformParserRULE_access_modifier = 29 + KuneiformParserRULE_action_declaration = 30 + KuneiformParserRULE_procedure_declaration = 31 + KuneiformParserRULE_procedure_return = 32 + KuneiformParserRULE_sql = 33 + KuneiformParserRULE_sql_statement = 34 + KuneiformParserRULE_common_table_expression = 35 + KuneiformParserRULE_create_table_statement = 36 + KuneiformParserRULE_constraint_def = 37 + KuneiformParserRULE_unnamed_constraint = 38 + KuneiformParserRULE_alter_table_statement = 39 + KuneiformParserRULE_alter_table_action = 40 + KuneiformParserRULE_create_index_statement = 41 + KuneiformParserRULE_drop_index_statement = 42 + KuneiformParserRULE_select_statement = 43 + KuneiformParserRULE_compound_operator = 44 + KuneiformParserRULE_ordering_term = 45 + KuneiformParserRULE_select_core = 46 + KuneiformParserRULE_relation = 47 + KuneiformParserRULE_join = 48 + KuneiformParserRULE_result_column = 49 + KuneiformParserRULE_update_statement = 50 + KuneiformParserRULE_update_set_clause = 51 + KuneiformParserRULE_insert_statement = 52 + KuneiformParserRULE_upsert_clause = 53 + KuneiformParserRULE_delete_statement = 54 + KuneiformParserRULE_sql_expr = 55 + KuneiformParserRULE_window = 56 + KuneiformParserRULE_when_then_clause = 57 + KuneiformParserRULE_sql_expr_list = 58 + KuneiformParserRULE_sql_function_call = 59 + KuneiformParserRULE_action_block = 60 + KuneiformParserRULE_action_statement = 61 + KuneiformParserRULE_procedure_block = 62 + KuneiformParserRULE_procedure_expr = 63 + KuneiformParserRULE_procedure_expr_list = 64 + KuneiformParserRULE_proc_statement = 65 + KuneiformParserRULE_variable_or_underscore = 66 + KuneiformParserRULE_procedure_function_call = 67 + KuneiformParserRULE_if_then_block = 68 + KuneiformParserRULE_range = 69 ) -// ISrcContext is an interface to support dynamic dispatch. -type ISrcContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // Getter signatures - EOF() antlr.TerminalNode - AllSql() []ISqlContext - Sql(i int) ISqlContext - - // IsSrcContext differentiates from other interfaces. - IsSrcContext() -} - -type SrcContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySrcContext() *SrcContext { - var p = new(SrcContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_src - return p -} - -func InitEmptySrcContext(p *SrcContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_src -} - -func (*SrcContext) IsSrcContext() {} - -func NewSrcContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SrcContext { - var p = new(SrcContext) - - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) - - p.parser = parser - p.RuleIndex = KuneiformParserRULE_src - - return p -} - -func (s *SrcContext) GetParser() antlr.Parser { return s.parser } - -func (s *SrcContext) EOF() antlr.TerminalNode { - return s.GetToken(KuneiformParserEOF, 0) -} - -func (s *SrcContext) AllSql() []ISqlContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISqlContext); ok { - len++ - } - } - - tst := make([]ISqlContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISqlContext); ok { - tst[i] = t.(ISqlContext) - i++ - } - } - - return tst -} - -func (s *SrcContext) Sql(i int) ISqlContext { - var t antlr.RuleContext - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISqlContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISqlContext) -} - -func (s *SrcContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *SrcContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *SrcContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case KuneiformParserVisitor: - return t.VisitSrc(s) - - default: - return t.VisitChildren(s) - } -} - -func (p *KuneiformParser) Src() (localctx ISrcContext) { - localctx = NewSrcContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 0, KuneiformParserRULE_src) - var _la int - - p.EnterOuterAlt(localctx, 1) - p.SetState(143) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - for ok := true; ok; ok = ((int64((_la-42)) & ^0x3f) == 0 && ((int64(1)<<(_la-42))&3461016313637371923) != 0) { - { - p.SetState(142) - p.Sql() - } - - p.SetState(145) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(147) - p.Match(KuneiformParserEOF) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - -errorExit: - if p.HasError() { - v := p.GetError() - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - p.SetError(nil) - } - p.ExitRule() - return localctx - goto errorExit // Trick to prevent compiler error if the label is not used -} - // ISchema_entryContext is an interface to support dynamic dispatch. type ISchema_entryContext interface { antlr.ParserRuleContext @@ -1282,14 +1118,14 @@ func (s *Schema_entryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Schema_entry() (localctx ISchema_entryContext) { localctx = NewSchema_entryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 2, KuneiformParserRULE_schema_entry) + p.EnterRule(localctx, 0, KuneiformParserRULE_schema_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(149) + p.SetState(140) p.Schema() } { - p.SetState(150) + p.SetState(141) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1397,14 +1233,14 @@ func (s *Sql_entryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Sql_entry() (localctx ISql_entryContext) { localctx = NewSql_entryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 4, KuneiformParserRULE_sql_entry) + p.EnterRule(localctx, 2, KuneiformParserRULE_sql_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(152) + p.SetState(143) p.Sql() } { - p.SetState(153) + p.SetState(144) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1512,14 +1348,14 @@ func (s *Action_entryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Action_entry() (localctx IAction_entryContext) { localctx = NewAction_entryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 6, KuneiformParserRULE_action_entry) + p.EnterRule(localctx, 4, KuneiformParserRULE_action_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(155) + p.SetState(146) p.Action_block() } { - p.SetState(156) + p.SetState(147) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1627,14 +1463,14 @@ func (s *Procedure_entryContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Procedure_entry() (localctx IProcedure_entryContext) { localctx = NewProcedure_entryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 8, KuneiformParserRULE_procedure_entry) + p.EnterRule(localctx, 6, KuneiformParserRULE_procedure_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(158) + p.SetState(149) p.Procedure_block() } { - p.SetState(159) + p.SetState(150) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1931,21 +1767,21 @@ func (s *Binary_literalContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewLiteralContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 10, KuneiformParserRULE_literal) + p.EnterRule(localctx, 8, KuneiformParserRULE_literal) var _la int - p.SetState(175) + p.SetState(166) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 3, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 2, p.GetParserRuleContext()) { case 1: localctx = NewString_literalContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(161) + p.SetState(152) p.Match(KuneiformParserSTRING_) if p.HasError() { // Recognition error - abort rule @@ -1956,7 +1792,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { case 2: localctx = NewInteger_literalContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(163) + p.SetState(154) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1965,7 +1801,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { if _la == KuneiformParserPLUS || _la == KuneiformParserMINUS { { - p.SetState(162) + p.SetState(153) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -1978,7 +1814,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } { - p.SetState(165) + p.SetState(156) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -1989,7 +1825,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { case 3: localctx = NewDecimal_literalContext(p, localctx) p.EnterOuterAlt(localctx, 3) - p.SetState(167) + p.SetState(158) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1998,7 +1834,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { if _la == KuneiformParserPLUS || _la == KuneiformParserMINUS { { - p.SetState(166) + p.SetState(157) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -2011,7 +1847,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } { - p.SetState(169) + p.SetState(160) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2019,7 +1855,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } } { - p.SetState(170) + p.SetState(161) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -2027,7 +1863,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } } { - p.SetState(171) + p.SetState(162) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2039,7 +1875,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewBoolean_literalContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(172) + p.SetState(163) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserTRUE || _la == KuneiformParserFALSE) { @@ -2054,7 +1890,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewNull_literalContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(173) + p.SetState(164) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -2066,7 +1902,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewBinary_literalContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(174) + p.SetState(165) p.Match(KuneiformParserBINARY_) if p.HasError() { // Recognition error - abort rule @@ -2171,8 +2007,8 @@ func (s *IdentifierContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { localctx = NewIdentifierContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, KuneiformParserRULE_identifier) - p.SetState(181) + p.EnterRule(localctx, 10, KuneiformParserRULE_identifier) + p.SetState(172) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2182,7 +2018,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { case KuneiformParserDOUBLE_QUOTE: p.EnterOuterAlt(localctx, 1) { - p.SetState(177) + p.SetState(168) p.Match(KuneiformParserDOUBLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -2190,7 +2026,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { } } { - p.SetState(178) + p.SetState(169) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -2198,7 +2034,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { } } { - p.SetState(179) + p.SetState(170) p.Match(KuneiformParserDOUBLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -2209,7 +2045,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { case KuneiformParserIDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(180) + p.SetState(171) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -2353,15 +2189,15 @@ func (s *Identifier_listContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { localctx = NewIdentifier_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 14, KuneiformParserRULE_identifier_list) + p.EnterRule(localctx, 12, KuneiformParserRULE_identifier_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(183) + p.SetState(174) p.Identifier() } - p.SetState(188) + p.SetState(179) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2370,7 +2206,7 @@ func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(184) + p.SetState(175) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2378,11 +2214,11 @@ func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { } } { - p.SetState(185) + p.SetState(176) p.Identifier() } - p.SetState(190) + p.SetState(181) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2508,22 +2344,22 @@ func (s *TypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Type_() (localctx ITypeContext) { localctx = NewTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 16, KuneiformParserRULE_type) + p.EnterRule(localctx, 14, KuneiformParserRULE_type) p.EnterOuterAlt(localctx, 1) { - p.SetState(191) + p.SetState(182) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(197) + p.SetState(188) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 6, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 5, p.GetParserRuleContext()) == 1 { { - p.SetState(192) + p.SetState(183) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -2531,7 +2367,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(193) + p.SetState(184) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2539,7 +2375,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(194) + p.SetState(185) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2547,7 +2383,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(195) + p.SetState(186) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2555,7 +2391,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(196) + p.SetState(187) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -2566,12 +2402,12 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } else if p.HasError() { // JIM goto errorExit } - p.SetState(201) + p.SetState(192) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 7, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 6, p.GetParserRuleContext()) == 1 { { - p.SetState(199) + p.SetState(190) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -2579,7 +2415,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(200) + p.SetState(191) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -2691,10 +2527,10 @@ func (s *Type_castContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Type_cast() (localctx IType_castContext) { localctx = NewType_castContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 18, KuneiformParserRULE_type_cast) + p.EnterRule(localctx, 16, KuneiformParserRULE_type_cast) p.EnterOuterAlt(localctx, 1) { - p.SetState(203) + p.SetState(194) p.Match(KuneiformParserTYPE_CAST) if p.HasError() { // Recognition error - abort rule @@ -2702,7 +2538,7 @@ func (p *KuneiformParser) Type_cast() (localctx IType_castContext) { } } { - p.SetState(204) + p.SetState(195) p.Type_() } @@ -2794,12 +2630,12 @@ func (s *VariableContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Variable() (localctx IVariableContext) { localctx = NewVariableContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 20, KuneiformParserRULE_variable) + p.EnterRule(localctx, 18, KuneiformParserRULE_variable) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(206) + p.SetState(197) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE) { @@ -2941,15 +2777,15 @@ func (s *Variable_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { localctx = NewVariable_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 22, KuneiformParserRULE_variable_list) + p.EnterRule(localctx, 20, KuneiformParserRULE_variable_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(208) + p.SetState(199) p.Variable() } - p.SetState(213) + p.SetState(204) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2958,7 +2794,7 @@ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(209) + p.SetState(200) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2966,11 +2802,11 @@ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { } } { - p.SetState(210) + p.SetState(201) p.Variable() } - p.SetState(215) + p.SetState(206) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3245,15 +3081,15 @@ func (s *SchemaContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Schema() (localctx ISchemaContext) { localctx = NewSchemaContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 24, KuneiformParserRULE_schema) + p.EnterRule(localctx, 22, KuneiformParserRULE_schema) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(216) + p.SetState(207) p.Database_declaration() } - p.SetState(223) + p.SetState(214) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3261,34 +3097,34 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { _la = p.GetTokenStream().LA(1) for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&257698037760) != 0) || _la == KuneiformParserCONTEXTUAL_VARIABLE { - p.SetState(221) + p.SetState(212) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 9, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 8, p.GetParserRuleContext()) { case 1: { - p.SetState(217) + p.SetState(208) p.Use_declaration() } case 2: { - p.SetState(218) + p.SetState(209) p.Table_declaration() } case 3: { - p.SetState(219) + p.SetState(210) p.Action_declaration() } case 4: { - p.SetState(220) + p.SetState(211) p.Procedure_declaration() } @@ -3296,7 +3132,7 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { goto errorExit } - p.SetState(225) + p.SetState(216) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3470,12 +3306,12 @@ func (s *AnnotationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { localctx = NewAnnotationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 26, KuneiformParserRULE_annotation) + p.EnterRule(localctx, 24, KuneiformParserRULE_annotation) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(226) + p.SetState(217) p.Match(KuneiformParserCONTEXTUAL_VARIABLE) if p.HasError() { // Recognition error - abort rule @@ -3483,14 +3319,14 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(227) + p.SetState(218) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(240) + p.SetState(231) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3499,7 +3335,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { if _la == KuneiformParserIDENTIFIER { { - p.SetState(228) + p.SetState(219) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3507,7 +3343,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(229) + p.SetState(220) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -3515,10 +3351,10 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(230) + p.SetState(221) p.Literal() } - p.SetState(237) + p.SetState(228) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3527,7 +3363,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { for _la == KuneiformParserCOMMA { { - p.SetState(231) + p.SetState(222) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -3535,7 +3371,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(232) + p.SetState(223) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3543,7 +3379,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(233) + p.SetState(224) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -3551,11 +3387,11 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(234) + p.SetState(225) p.Literal() } - p.SetState(239) + p.SetState(230) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3565,7 +3401,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } { - p.SetState(242) + p.SetState(233) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -3666,10 +3502,10 @@ func (s *Database_declarationContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declarationContext) { localctx = NewDatabase_declarationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 28, KuneiformParserRULE_database_declaration) + p.EnterRule(localctx, 26, KuneiformParserRULE_database_declaration) p.EnterOuterAlt(localctx, 1) { - p.SetState(244) + p.SetState(235) p.Match(KuneiformParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -3677,7 +3513,7 @@ func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declaration } } { - p.SetState(245) + p.SetState(236) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3685,7 +3521,7 @@ func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declaration } } { - p.SetState(246) + p.SetState(237) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -3869,12 +3705,12 @@ func (s *Use_declarationContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { localctx = NewUse_declarationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 30, KuneiformParserRULE_use_declaration) + p.EnterRule(localctx, 28, KuneiformParserRULE_use_declaration) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(248) + p.SetState(239) p.Match(KuneiformParserUSE) if p.HasError() { // Recognition error - abort rule @@ -3882,14 +3718,14 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(249) + p.SetState(240) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(265) + p.SetState(256) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3898,7 +3734,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { if _la == KuneiformParserLBRACE { { - p.SetState(250) + p.SetState(241) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -3906,7 +3742,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(251) + p.SetState(242) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3914,7 +3750,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(252) + p.SetState(243) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule @@ -3922,10 +3758,10 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(253) + p.SetState(244) p.Literal() } - p.SetState(260) + p.SetState(251) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3934,7 +3770,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { for _la == KuneiformParserCOMMA { { - p.SetState(254) + p.SetState(245) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -3942,7 +3778,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(255) + p.SetState(246) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3950,7 +3786,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(256) + p.SetState(247) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule @@ -3958,11 +3794,11 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(257) + p.SetState(248) p.Literal() } - p.SetState(262) + p.SetState(253) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3970,7 +3806,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(263) + p.SetState(254) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -3980,7 +3816,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } { - p.SetState(267) + p.SetState(258) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -3988,7 +3824,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(268) + p.SetState(259) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3996,7 +3832,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(269) + p.SetState(260) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -4241,12 +4077,12 @@ func (s *Table_declarationContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContext) { localctx = NewTable_declarationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 32, KuneiformParserRULE_table_declaration) + p.EnterRule(localctx, 30, KuneiformParserRULE_table_declaration) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(271) + p.SetState(262) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -4254,7 +4090,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(272) + p.SetState(263) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -4262,7 +4098,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(273) + p.SetState(264) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -4270,10 +4106,10 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(274) + p.SetState(265) p.Column_def() } - p.SetState(283) + p.SetState(274) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4282,14 +4118,14 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex for _la == KuneiformParserCOMMA { { - p.SetState(275) + p.SetState(266) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(279) + p.SetState(270) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4298,19 +4134,19 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex switch p.GetTokenStream().LA(1) { case KuneiformParserIDENTIFIER: { - p.SetState(276) + p.SetState(267) p.Column_def() } case KuneiformParserHASH_IDENTIFIER: { - p.SetState(277) + p.SetState(268) p.Index_def() } case KuneiformParserFOREIGN, KuneiformParserLEGACY_FOREIGN_KEY: { - p.SetState(278) + p.SetState(269) p.Foreign_key_def() } @@ -4319,7 +4155,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex goto errorExit } - p.SetState(285) + p.SetState(276) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4327,7 +4163,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex _la = p.GetTokenStream().LA(1) } { - p.SetState(286) + p.SetState(277) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -4489,12 +4325,12 @@ func (s *Column_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { localctx = NewColumn_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 34, KuneiformParserRULE_column_def) + p.EnterRule(localctx, 32, KuneiformParserRULE_column_def) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(288) + p.SetState(279) var _m = p.Match(KuneiformParserIDENTIFIER) @@ -4505,10 +4341,10 @@ func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { } } { - p.SetState(289) + p.SetState(280) p.Type_() } - p.SetState(293) + p.SetState(284) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4517,11 +4353,11 @@ func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { for ((int64((_la-52)) & ^0x3f) == 0 && ((int64(1)<<(_la-52))&16657) != 0) || _la == KuneiformParserIDENTIFIER { { - p.SetState(290) + p.SetState(281) p.Constraint() } - p.SetState(295) + p.SetState(286) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4683,12 +4519,12 @@ func (s *C_column_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) C_column_def() (localctx IC_column_defContext) { localctx = NewC_column_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 36, KuneiformParserRULE_c_column_def) + p.EnterRule(localctx, 34, KuneiformParserRULE_c_column_def) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(296) + p.SetState(287) var _m = p.Match(KuneiformParserIDENTIFIER) @@ -4699,10 +4535,10 @@ func (p *KuneiformParser) C_column_def() (localctx IC_column_defContext) { } } { - p.SetState(297) + p.SetState(288) p.Type_() } - p.SetState(301) + p.SetState(292) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4711,11 +4547,11 @@ func (p *KuneiformParser) C_column_def() (localctx IC_column_defContext) { for (int64((_la-50)) & ^0x3f) == 0 && ((int64(1)<<(_la-50))&83013) != 0 { { - p.SetState(298) + p.SetState(289) p.Inline_constraint() } - p.SetState(303) + p.SetState(294) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4859,12 +4695,12 @@ func (s *Index_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { localctx = NewIndex_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 38, KuneiformParserRULE_index_def) + p.EnterRule(localctx, 36, KuneiformParserRULE_index_def) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(304) + p.SetState(295) p.Match(KuneiformParserHASH_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -4872,7 +4708,7 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { } } { - p.SetState(305) + p.SetState(296) _la = p.GetTokenStream().LA(1) if !((int64((_la-52)) & ^0x3f) == 0 && ((int64(1)<<(_la-52))&32785) != 0) { @@ -4883,7 +4719,7 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { } } { - p.SetState(306) + p.SetState(297) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -4891,14 +4727,14 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { } } { - p.SetState(307) + p.SetState(298) var _x = p.Identifier_list() localctx.(*Index_defContext).columns = _x } { - p.SetState(308) + p.SetState(299) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -5049,11 +4885,11 @@ func (s *C_index_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { localctx = NewC_index_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 40, KuneiformParserRULE_c_index_def) + p.EnterRule(localctx, 38, KuneiformParserRULE_c_index_def) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(311) + p.SetState(302) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5062,7 +4898,7 @@ func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { if _la == KuneiformParserUNIQUE { { - p.SetState(310) + p.SetState(301) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -5072,7 +4908,7 @@ func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { } { - p.SetState(313) + p.SetState(304) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule @@ -5080,11 +4916,11 @@ func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { } } { - p.SetState(314) + p.SetState(305) p.Identifier() } { - p.SetState(315) + p.SetState(306) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -5092,14 +4928,14 @@ func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { } } { - p.SetState(316) + p.SetState(307) var _x = p.Identifier_list() localctx.(*C_index_defContext).columns = _x } { - p.SetState(317) + p.SetState(308) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -5354,11 +5190,11 @@ func (s *Foreign_key_defContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { localctx = NewForeign_key_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 42, KuneiformParserRULE_foreign_key_def) + p.EnterRule(localctx, 40, KuneiformParserRULE_foreign_key_def) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(322) + p.SetState(313) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5367,7 +5203,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserFOREIGN: { - p.SetState(319) + p.SetState(310) p.Match(KuneiformParserFOREIGN) if p.HasError() { // Recognition error - abort rule @@ -5375,7 +5211,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(320) + p.SetState(311) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -5385,7 +5221,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { case KuneiformParserLEGACY_FOREIGN_KEY: { - p.SetState(321) + p.SetState(312) p.Match(KuneiformParserLEGACY_FOREIGN_KEY) if p.HasError() { // Recognition error - abort rule @@ -5398,7 +5234,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { goto errorExit } { - p.SetState(324) + p.SetState(315) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -5406,14 +5242,14 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(325) + p.SetState(316) var _x = p.Identifier_list() localctx.(*Foreign_key_defContext).child_keys = _x } { - p.SetState(326) + p.SetState(317) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -5421,7 +5257,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(327) + p.SetState(318) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserREFERENCES || _la == KuneiformParserREF) { @@ -5432,7 +5268,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(328) + p.SetState(319) var _m = p.Match(KuneiformParserIDENTIFIER) @@ -5443,7 +5279,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(329) + p.SetState(320) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -5451,21 +5287,21 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(330) + p.SetState(321) var _x = p.Identifier_list() localctx.(*Foreign_key_defContext).parent_keys = _x } { - p.SetState(331) + p.SetState(322) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(335) + p.SetState(326) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5474,11 +5310,11 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { for _la == KuneiformParserON || _la == KuneiformParserLEGACY_ON_UPDATE || _la == KuneiformParserLEGACY_ON_DELETE { { - p.SetState(332) + p.SetState(323) p.Foreign_key_action() } - p.SetState(337) + p.SetState(328) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5644,19 +5480,19 @@ func (s *Foreign_key_actionContext) Accept(visitor antlr.ParseTreeVisitor) inter func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionContext) { localctx = NewForeign_key_actionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 44, KuneiformParserRULE_foreign_key_action) + p.EnterRule(localctx, 42, KuneiformParserRULE_foreign_key_action) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(348) + p.SetState(339) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 24, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 23, p.GetParserRuleContext()) { case 1: - p.SetState(341) + p.SetState(332) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5665,7 +5501,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserON: { - p.SetState(338) + p.SetState(329) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -5673,7 +5509,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(339) + p.SetState(330) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -5683,7 +5519,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_ON_UPDATE: { - p.SetState(340) + p.SetState(331) p.Match(KuneiformParserLEGACY_ON_UPDATE) if p.HasError() { // Recognition error - abort rule @@ -5697,7 +5533,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } case 2: - p.SetState(346) + p.SetState(337) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5706,7 +5542,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserON: { - p.SetState(343) + p.SetState(334) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -5714,7 +5550,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(344) + p.SetState(335) p.Match(KuneiformParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -5724,7 +5560,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_ON_DELETE: { - p.SetState(345) + p.SetState(336) p.Match(KuneiformParserLEGACY_ON_DELETE) if p.HasError() { // Recognition error - abort rule @@ -5740,7 +5576,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(351) + p.SetState(342) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5749,7 +5585,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont if _la == KuneiformParserDO { { - p.SetState(350) + p.SetState(341) p.Match(KuneiformParserDO) if p.HasError() { // Recognition error - abort rule @@ -5758,15 +5594,15 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } - p.SetState(370) + p.SetState(361) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 29, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 28, p.GetParserRuleContext()) { case 1: - p.SetState(356) + p.SetState(347) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5775,7 +5611,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserNO: { - p.SetState(353) + p.SetState(344) p.Match(KuneiformParserNO) if p.HasError() { // Recognition error - abort rule @@ -5783,7 +5619,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(354) + p.SetState(345) p.Match(KuneiformParserACTION) if p.HasError() { // Recognition error - abort rule @@ -5793,7 +5629,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_NO_ACTION: { - p.SetState(355) + p.SetState(346) p.Match(KuneiformParserLEGACY_NO_ACTION) if p.HasError() { // Recognition error - abort rule @@ -5808,7 +5644,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case 2: { - p.SetState(358) + p.SetState(349) p.Match(KuneiformParserCASCADE) if p.HasError() { // Recognition error - abort rule @@ -5817,7 +5653,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } case 3: - p.SetState(362) + p.SetState(353) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5826,7 +5662,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserSET: { - p.SetState(359) + p.SetState(350) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -5834,7 +5670,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(360) + p.SetState(351) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -5844,7 +5680,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_SET_NULL: { - p.SetState(361) + p.SetState(352) p.Match(KuneiformParserLEGACY_SET_NULL) if p.HasError() { // Recognition error - abort rule @@ -5858,7 +5694,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } case 4: - p.SetState(367) + p.SetState(358) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5867,7 +5703,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserSET: { - p.SetState(364) + p.SetState(355) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -5875,7 +5711,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(365) + p.SetState(356) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -5885,7 +5721,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_SET_DEFAULT: { - p.SetState(366) + p.SetState(357) p.Match(KuneiformParserLEGACY_SET_DEFAULT) if p.HasError() { // Recognition error - abort rule @@ -5900,7 +5736,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case 5: { - p.SetState(369) + p.SetState(360) p.Match(KuneiformParserRESTRICT) if p.HasError() { // Recognition error - abort rule @@ -6043,15 +5879,15 @@ func (s *Type_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Type_list() (localctx IType_listContext) { localctx = NewType_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 46, KuneiformParserRULE_type_list) + p.EnterRule(localctx, 44, KuneiformParserRULE_type_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(372) + p.SetState(363) p.Type_() } - p.SetState(377) + p.SetState(368) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6060,7 +5896,7 @@ func (p *KuneiformParser) Type_list() (localctx IType_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(373) + p.SetState(364) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -6068,11 +5904,11 @@ func (p *KuneiformParser) Type_list() (localctx IType_listContext) { } } { - p.SetState(374) + p.SetState(365) p.Type_() } - p.SetState(379) + p.SetState(370) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6221,12 +6057,12 @@ func (s *Named_type_listContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { localctx = NewNamed_type_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 48, KuneiformParserRULE_named_type_list) + p.EnterRule(localctx, 46, KuneiformParserRULE_named_type_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(380) + p.SetState(371) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -6234,10 +6070,10 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { } } { - p.SetState(381) + p.SetState(372) p.Type_() } - p.SetState(387) + p.SetState(378) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6246,7 +6082,7 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(382) + p.SetState(373) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -6254,7 +6090,7 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { } } { - p.SetState(383) + p.SetState(374) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -6262,11 +6098,11 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { } } { - p.SetState(384) + p.SetState(375) p.Type_() } - p.SetState(389) + p.SetState(380) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6448,19 +6284,19 @@ func (s *Typed_variable_listContext) Accept(visitor antlr.ParseTreeVisitor) inte func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listContext) { localctx = NewTyped_variable_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 50, KuneiformParserRULE_typed_variable_list) + p.EnterRule(localctx, 48, KuneiformParserRULE_typed_variable_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(390) + p.SetState(381) p.Variable() } { - p.SetState(391) + p.SetState(382) p.Type_() } - p.SetState(398) + p.SetState(389) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6469,7 +6305,7 @@ func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listCo for _la == KuneiformParserCOMMA { { - p.SetState(392) + p.SetState(383) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -6477,15 +6313,15 @@ func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listCo } } { - p.SetState(393) + p.SetState(384) p.Variable() } { - p.SetState(394) + p.SetState(385) p.Type_() } - p.SetState(400) + p.SetState(391) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6633,11 +6469,11 @@ func (s *ConstraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { localctx = NewConstraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 52, KuneiformParserRULE_constraint) + p.EnterRule(localctx, 50, KuneiformParserRULE_constraint) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(410) + p.SetState(401) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6646,7 +6482,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserIDENTIFIER: { - p.SetState(401) + p.SetState(392) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -6656,14 +6492,14 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserPRIMARY: { - p.SetState(402) + p.SetState(393) p.Match(KuneiformParserPRIMARY) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(404) + p.SetState(395) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6672,7 +6508,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { if _la == KuneiformParserKEY { { - p.SetState(403) + p.SetState(394) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -6684,7 +6520,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserNOT: { - p.SetState(406) + p.SetState(397) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -6692,7 +6528,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { } } { - p.SetState(407) + p.SetState(398) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -6702,7 +6538,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserDEFAULT: { - p.SetState(408) + p.SetState(399) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -6712,7 +6548,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserUNIQUE: { - p.SetState(409) + p.SetState(400) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -6724,7 +6560,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(416) + p.SetState(407) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6733,7 +6569,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { if _la == KuneiformParserLPAREN { { - p.SetState(412) + p.SetState(403) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -6741,11 +6577,11 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { } } { - p.SetState(413) + p.SetState(404) p.Literal() } { - p.SetState(414) + p.SetState(405) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -6929,8 +6765,8 @@ func (s *Inline_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContext) { localctx = NewInline_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 54, KuneiformParserRULE_inline_constraint) - p.SetState(431) + p.EnterRule(localctx, 52, KuneiformParserRULE_inline_constraint) + p.SetState(422) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6940,7 +6776,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserPRIMARY: p.EnterOuterAlt(localctx, 1) { - p.SetState(418) + p.SetState(409) p.Match(KuneiformParserPRIMARY) if p.HasError() { // Recognition error - abort rule @@ -6948,7 +6784,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(419) + p.SetState(410) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -6959,7 +6795,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserUNIQUE: p.EnterOuterAlt(localctx, 2) { - p.SetState(420) + p.SetState(411) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -6970,7 +6806,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserNOT: p.EnterOuterAlt(localctx, 3) { - p.SetState(421) + p.SetState(412) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -6978,7 +6814,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(422) + p.SetState(413) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -6989,7 +6825,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserDEFAULT: p.EnterOuterAlt(localctx, 4) { - p.SetState(423) + p.SetState(414) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -6997,21 +6833,21 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(424) + p.SetState(415) p.Literal() } case KuneiformParserREFERENCES: p.EnterOuterAlt(localctx, 5) { - p.SetState(425) + p.SetState(416) p.Fk_constraint() } case KuneiformParserCHECK: p.EnterOuterAlt(localctx, 6) { - p.SetState(426) + p.SetState(417) p.Match(KuneiformParserCHECK) if p.HasError() { // Recognition error - abort rule @@ -7020,7 +6856,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } { - p.SetState(427) + p.SetState(418) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -7028,11 +6864,11 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(428) + p.SetState(419) p.sql_expr(0) } { - p.SetState(429) + p.SetState(420) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -7173,12 +7009,12 @@ func (s *Fk_actionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { localctx = NewFk_actionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 56, KuneiformParserRULE_fk_action) + p.EnterRule(localctx, 54, KuneiformParserRULE_fk_action) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(433) + p.SetState(424) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -7186,7 +7022,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(434) + p.SetState(425) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserDELETE || _la == KuneiformParserUPDATE) { @@ -7196,16 +7032,16 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { p.Consume() } } - p.SetState(443) + p.SetState(434) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 37, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 36, p.GetParserRuleContext()) { case 1: { - p.SetState(435) + p.SetState(426) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -7213,7 +7049,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(436) + p.SetState(427) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -7223,7 +7059,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 2: { - p.SetState(437) + p.SetState(428) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -7231,7 +7067,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(438) + p.SetState(429) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -7241,7 +7077,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 3: { - p.SetState(439) + p.SetState(430) p.Match(KuneiformParserRESTRICT) if p.HasError() { // Recognition error - abort rule @@ -7251,7 +7087,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 4: { - p.SetState(440) + p.SetState(431) p.Match(KuneiformParserNO) if p.HasError() { // Recognition error - abort rule @@ -7259,7 +7095,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(441) + p.SetState(432) p.Match(KuneiformParserACTION) if p.HasError() { // Recognition error - abort rule @@ -7269,7 +7105,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 5: { - p.SetState(442) + p.SetState(433) p.Match(KuneiformParserCASCADE) if p.HasError() { // Recognition error - abort rule @@ -7482,12 +7318,12 @@ func (s *Fk_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { localctx = NewFk_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 58, KuneiformParserRULE_fk_constraint) + p.EnterRule(localctx, 56, KuneiformParserRULE_fk_constraint) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(445) + p.SetState(436) p.Match(KuneiformParserREFERENCES) if p.HasError() { // Recognition error - abort rule @@ -7495,7 +7331,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } } { - p.SetState(446) + p.SetState(437) var _x = p.Identifier() @@ -7503,7 +7339,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } { - p.SetState(447) + p.SetState(438) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -7511,14 +7347,14 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } } { - p.SetState(448) + p.SetState(439) var _x = p.Identifier() localctx.(*Fk_constraintContext).column = _x } { - p.SetState(449) + p.SetState(440) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -7526,7 +7362,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } } - p.SetState(458) + p.SetState(449) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7535,10 +7371,10 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { if _la == KuneiformParserON { { - p.SetState(451) + p.SetState(442) p.Fk_action() } - p.SetState(455) + p.SetState(446) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7547,11 +7383,11 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { for _la == KuneiformParserON { { - p.SetState(452) + p.SetState(443) p.Fk_action() } - p.SetState(457) + p.SetState(448) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7659,12 +7495,12 @@ func (s *Access_modifierContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Access_modifier() (localctx IAccess_modifierContext) { localctx = NewAccess_modifierContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 60, KuneiformParserRULE_access_modifier) + p.EnterRule(localctx, 58, KuneiformParserRULE_access_modifier) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(460) + p.SetState(451) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { @@ -7903,11 +7739,11 @@ func (s *Action_declarationContext) Accept(visitor antlr.ParseTreeVisitor) inter func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationContext) { localctx = NewAction_declarationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 62, KuneiformParserRULE_action_declaration) + p.EnterRule(localctx, 60, KuneiformParserRULE_action_declaration) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(465) + p.SetState(456) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7916,11 +7752,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont for _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(462) + p.SetState(453) p.Annotation() } - p.SetState(467) + p.SetState(458) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7928,7 +7764,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont _la = p.GetTokenStream().LA(1) } { - p.SetState(468) + p.SetState(459) p.Match(KuneiformParserACTION) if p.HasError() { // Recognition error - abort rule @@ -7936,7 +7772,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(469) + p.SetState(460) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -7944,14 +7780,14 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(470) + p.SetState(461) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(472) + p.SetState(463) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7960,20 +7796,20 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(471) + p.SetState(462) p.Variable_list() } } { - p.SetState(474) + p.SetState(465) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(476) + p.SetState(467) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7982,11 +7818,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { { - p.SetState(475) + p.SetState(466) p.Access_modifier() } - p.SetState(478) + p.SetState(469) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7994,7 +7830,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont _la = p.GetTokenStream().LA(1) } { - p.SetState(480) + p.SetState(471) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -8002,11 +7838,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(481) + p.SetState(472) p.Action_block() } { - p.SetState(482) + p.SetState(473) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -8259,11 +8095,11 @@ func (s *Procedure_declarationContext) Accept(visitor antlr.ParseTreeVisitor) in func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarationContext) { localctx = NewProcedure_declarationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 64, KuneiformParserRULE_procedure_declaration) + p.EnterRule(localctx, 62, KuneiformParserRULE_procedure_declaration) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(487) + p.SetState(478) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8272,11 +8108,11 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati for _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(484) + p.SetState(475) p.Annotation() } - p.SetState(489) + p.SetState(480) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8284,7 +8120,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati _la = p.GetTokenStream().LA(1) } { - p.SetState(490) + p.SetState(481) p.Match(KuneiformParserPROCEDURE) if p.HasError() { // Recognition error - abort rule @@ -8292,7 +8128,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(491) + p.SetState(482) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -8300,14 +8136,14 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(492) + p.SetState(483) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(494) + p.SetState(485) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8316,20 +8152,20 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(493) + p.SetState(484) p.Typed_variable_list() } } { - p.SetState(496) + p.SetState(487) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(498) + p.SetState(489) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8338,18 +8174,18 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { { - p.SetState(497) + p.SetState(488) p.Access_modifier() } - p.SetState(500) + p.SetState(491) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(503) + p.SetState(494) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8358,13 +8194,13 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati if _la == KuneiformParserRETURNS { { - p.SetState(502) + p.SetState(493) p.Procedure_return() } } { - p.SetState(505) + p.SetState(496) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -8372,11 +8208,11 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(506) + p.SetState(497) p.Procedure_block() } { - p.SetState(507) + p.SetState(498) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -8544,27 +8380,27 @@ func (s *Procedure_returnContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) { localctx = NewProcedure_returnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 66, KuneiformParserRULE_procedure_return) + p.EnterRule(localctx, 64, KuneiformParserRULE_procedure_return) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(509) + p.SetState(500) p.Match(KuneiformParserRETURNS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(521) + p.SetState(512) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 48, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 47, p.GetParserRuleContext()) { case 1: - p.SetState(511) + p.SetState(502) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8573,7 +8409,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) if _la == KuneiformParserTABLE { { - p.SetState(510) + p.SetState(501) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -8583,7 +8419,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } { - p.SetState(513) + p.SetState(504) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -8591,14 +8427,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } } { - p.SetState(514) + p.SetState(505) var _x = p.Named_type_list() localctx.(*Procedure_returnContext).return_columns = _x } { - p.SetState(515) + p.SetState(506) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -8608,7 +8444,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) case 2: { - p.SetState(517) + p.SetState(508) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -8616,14 +8452,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } } { - p.SetState(518) + p.SetState(509) var _x = p.Type_list() localctx.(*Procedure_returnContext).unnamed_return_types = _x } { - p.SetState(519) + p.SetState(510) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -8735,14 +8571,14 @@ func (s *SqlContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Sql() (localctx ISqlContext) { localctx = NewSqlContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 68, KuneiformParserRULE_sql) + p.EnterRule(localctx, 66, KuneiformParserRULE_sql) p.EnterOuterAlt(localctx, 1) { - p.SetState(523) + p.SetState(514) p.Sql_statement() } { - p.SetState(524) + p.SetState(515) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -9027,11 +8863,11 @@ func (s *Sql_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { localctx = NewSql_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 70, KuneiformParserRULE_sql_statement) + p.EnterRule(localctx, 68, KuneiformParserRULE_sql_statement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(538) + p.SetState(529) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9040,14 +8876,14 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { if _la == KuneiformParserWITH { { - p.SetState(526) + p.SetState(517) p.Match(KuneiformParserWITH) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(528) + p.SetState(519) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9056,7 +8892,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { if _la == KuneiformParserRECURSIVE { { - p.SetState(527) + p.SetState(518) p.Match(KuneiformParserRECURSIVE) if p.HasError() { // Recognition error - abort rule @@ -9066,10 +8902,10 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } { - p.SetState(530) + p.SetState(521) p.Common_table_expression() } - p.SetState(535) + p.SetState(526) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9078,7 +8914,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { for _la == KuneiformParserCOMMA { { - p.SetState(531) + p.SetState(522) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -9086,11 +8922,11 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } } { - p.SetState(532) + p.SetState(523) p.Common_table_expression() } - p.SetState(537) + p.SetState(528) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9099,58 +8935,58 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } } - p.SetState(548) + p.SetState(539) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 52, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 51, p.GetParserRuleContext()) { case 1: { - p.SetState(540) + p.SetState(531) p.Create_table_statement() } case 2: { - p.SetState(541) + p.SetState(532) p.Alter_table_statement() } case 3: { - p.SetState(542) + p.SetState(533) p.Create_index_statement() } case 4: { - p.SetState(543) + p.SetState(534) p.Drop_index_statement() } case 5: { - p.SetState(544) + p.SetState(535) p.Select_statement() } case 6: { - p.SetState(545) + p.SetState(536) p.Update_statement() } case 7: { - p.SetState(546) + p.SetState(537) p.Insert_statement() } case 8: { - p.SetState(547) + p.SetState(538) p.Delete_statement() } @@ -9331,15 +9167,15 @@ func (s *Common_table_expressionContext) Accept(visitor antlr.ParseTreeVisitor) func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expressionContext) { localctx = NewCommon_table_expressionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 72, KuneiformParserRULE_common_table_expression) + p.EnterRule(localctx, 70, KuneiformParserRULE_common_table_expression) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(550) + p.SetState(541) p.Identifier() } - p.SetState(563) + p.SetState(554) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9348,14 +9184,14 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr if _la == KuneiformParserLPAREN { { - p.SetState(551) + p.SetState(542) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(560) + p.SetState(551) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9364,10 +9200,10 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(552) + p.SetState(543) p.Identifier() } - p.SetState(557) + p.SetState(548) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9376,7 +9212,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr for _la == KuneiformParserCOMMA { { - p.SetState(553) + p.SetState(544) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -9384,11 +9220,11 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(554) + p.SetState(545) p.Identifier() } - p.SetState(559) + p.SetState(550) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9398,7 +9234,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } { - p.SetState(562) + p.SetState(553) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9408,7 +9244,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } { - p.SetState(565) + p.SetState(556) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -9416,7 +9252,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(566) + p.SetState(557) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -9424,11 +9260,11 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(567) + p.SetState(558) p.Select_statement() } { - p.SetState(568) + p.SetState(559) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9701,12 +9537,12 @@ func (s *Create_table_statementContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_statementContext) { localctx = NewCreate_table_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 74, KuneiformParserRULE_create_table_statement) + p.EnterRule(localctx, 72, KuneiformParserRULE_create_table_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(570) + p.SetState(561) p.Match(KuneiformParserCREATE) if p.HasError() { // Recognition error - abort rule @@ -9714,7 +9550,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state } } { - p.SetState(571) + p.SetState(562) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -9722,49 +9558,49 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state } } { - p.SetState(572) + p.SetState(563) var _x = p.Identifier() localctx.(*Create_table_statementContext).name = _x } { - p.SetState(573) + p.SetState(564) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(577) + p.SetState(568) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 56, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 55, p.GetParserRuleContext()) { case 1: { - p.SetState(574) + p.SetState(565) p.C_column_def() } case 2: { - p.SetState(575) + p.SetState(566) p.Constraint_def() } case 3: { - p.SetState(576) + p.SetState(567) p.C_index_def() } case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(587) + p.SetState(578) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9773,35 +9609,35 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state for _la == KuneiformParserCOMMA { { - p.SetState(579) + p.SetState(570) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(583) + p.SetState(574) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 57, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 56, p.GetParserRuleContext()) { case 1: { - p.SetState(580) + p.SetState(571) p.C_column_def() } case 2: { - p.SetState(581) + p.SetState(572) p.Constraint_def() } case 3: { - p.SetState(582) + p.SetState(573) p.C_index_def() } @@ -9809,7 +9645,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state goto errorExit } - p.SetState(589) + p.SetState(580) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9817,7 +9653,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state _la = p.GetTokenStream().LA(1) } { - p.SetState(590) + p.SetState(581) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9953,11 +9789,11 @@ func (s *Constraint_defContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *KuneiformParser) Constraint_def() (localctx IConstraint_defContext) { localctx = NewConstraint_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 76, KuneiformParserRULE_constraint_def) + p.EnterRule(localctx, 74, KuneiformParserRULE_constraint_def) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(594) + p.SetState(585) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9966,7 +9802,7 @@ func (p *KuneiformParser) Constraint_def() (localctx IConstraint_defContext) { if _la == KuneiformParserCONSTRAINT { { - p.SetState(592) + p.SetState(583) p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule @@ -9974,7 +9810,7 @@ func (p *KuneiformParser) Constraint_def() (localctx IConstraint_defContext) { } } { - p.SetState(593) + p.SetState(584) var _x = p.Identifier() @@ -9983,7 +9819,7 @@ func (p *KuneiformParser) Constraint_def() (localctx IConstraint_defContext) { } { - p.SetState(596) + p.SetState(587) p.Unnamed_constraint() } @@ -10168,8 +10004,8 @@ func (s *Unnamed_constraintContext) Accept(visitor antlr.ParseTreeVisitor) inter func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintContext) { localctx = NewUnnamed_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 78, KuneiformParserRULE_unnamed_constraint) - p.SetState(621) + p.EnterRule(localctx, 76, KuneiformParserRULE_unnamed_constraint) + p.SetState(612) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10179,7 +10015,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont case KuneiformParserPRIMARY: p.EnterOuterAlt(localctx, 1) { - p.SetState(598) + p.SetState(589) p.Match(KuneiformParserPRIMARY) if p.HasError() { // Recognition error - abort rule @@ -10187,7 +10023,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(599) + p.SetState(590) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -10195,7 +10031,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(600) + p.SetState(591) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10203,11 +10039,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(601) + p.SetState(592) p.Identifier_list() } { - p.SetState(602) + p.SetState(593) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10218,7 +10054,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont case KuneiformParserUNIQUE: p.EnterOuterAlt(localctx, 2) { - p.SetState(604) + p.SetState(595) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -10226,7 +10062,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(605) + p.SetState(596) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10234,11 +10070,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(606) + p.SetState(597) p.Identifier_list() } { - p.SetState(607) + p.SetState(598) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10249,7 +10085,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont case KuneiformParserCHECK: p.EnterOuterAlt(localctx, 3) { - p.SetState(609) + p.SetState(600) p.Match(KuneiformParserCHECK) if p.HasError() { // Recognition error - abort rule @@ -10257,7 +10093,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(610) + p.SetState(601) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10265,11 +10101,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(611) + p.SetState(602) p.sql_expr(0) } { - p.SetState(612) + p.SetState(603) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10280,7 +10116,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont case KuneiformParserFOREIGN: p.EnterOuterAlt(localctx, 4) { - p.SetState(614) + p.SetState(605) p.Match(KuneiformParserFOREIGN) if p.HasError() { // Recognition error - abort rule @@ -10288,7 +10124,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(615) + p.SetState(606) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -10296,7 +10132,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(616) + p.SetState(607) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10304,11 +10140,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(617) + p.SetState(608) p.Identifier() } { - p.SetState(618) + p.SetState(609) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10316,7 +10152,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(619) + p.SetState(610) p.Fk_constraint() } @@ -10458,10 +10294,10 @@ func (s *Alter_table_statementContext) Accept(visitor antlr.ParseTreeVisitor) in func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_statementContext) { localctx = NewAlter_table_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 80, KuneiformParserRULE_alter_table_statement) + p.EnterRule(localctx, 78, KuneiformParserRULE_alter_table_statement) p.EnterOuterAlt(localctx, 1) { - p.SetState(623) + p.SetState(614) p.Match(KuneiformParserALTER) if p.HasError() { // Recognition error - abort rule @@ -10469,7 +10305,7 @@ func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_stateme } } { - p.SetState(624) + p.SetState(615) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -10477,14 +10313,14 @@ func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_stateme } } { - p.SetState(625) + p.SetState(616) var _x = p.Identifier() localctx.(*Alter_table_statementContext).table = _x } { - p.SetState(626) + p.SetState(617) p.Alter_table_action() } @@ -11126,19 +10962,19 @@ func (s *Drop_columnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionContext) { localctx = NewAlter_table_actionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 82, KuneiformParserRULE_alter_table_action) - p.SetState(671) + p.EnterRule(localctx, 80, KuneiformParserRULE_alter_table_action) + p.SetState(662) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 63, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 62, p.GetParserRuleContext()) { case 1: localctx = NewAdd_column_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(628) + p.SetState(619) p.Match(KuneiformParserALTER) if p.HasError() { // Recognition error - abort rule @@ -11146,7 +10982,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(629) + p.SetState(620) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11154,21 +10990,21 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(630) + p.SetState(621) var _x = p.Identifier() localctx.(*Add_column_constraintContext).column = _x } { - p.SetState(631) + p.SetState(622) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(636) + p.SetState(627) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11177,7 +11013,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserNOT: { - p.SetState(632) + p.SetState(623) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -11185,7 +11021,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(633) + p.SetState(624) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -11195,7 +11031,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont case KuneiformParserDEFAULT: { - p.SetState(634) + p.SetState(625) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -11203,7 +11039,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(635) + p.SetState(626) p.Literal() } @@ -11216,7 +11052,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewDrop_column_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(638) + p.SetState(629) p.Match(KuneiformParserALTER) if p.HasError() { // Recognition error - abort rule @@ -11224,7 +11060,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(639) + p.SetState(630) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11232,21 +11068,21 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(640) + p.SetState(631) var _x = p.Identifier() localctx.(*Drop_column_constraintContext).column = _x } { - p.SetState(641) + p.SetState(632) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(647) + p.SetState(638) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11255,7 +11091,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserNOT: { - p.SetState(642) + p.SetState(633) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -11263,7 +11099,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(643) + p.SetState(634) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -11273,7 +11109,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont case KuneiformParserDEFAULT: { - p.SetState(644) + p.SetState(635) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -11283,7 +11119,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont case KuneiformParserCONSTRAINT: { - p.SetState(645) + p.SetState(636) p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule @@ -11291,7 +11127,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(646) + p.SetState(637) p.Identifier() } @@ -11304,7 +11140,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewAdd_columnContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(649) + p.SetState(640) p.Match(KuneiformParserADD) if p.HasError() { // Recognition error - abort rule @@ -11312,7 +11148,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(650) + p.SetState(641) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11320,14 +11156,14 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(651) + p.SetState(642) var _x = p.Identifier() localctx.(*Add_columnContext).column = _x } { - p.SetState(652) + p.SetState(643) p.Type_() } @@ -11335,7 +11171,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewDrop_columnContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(654) + p.SetState(645) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11343,7 +11179,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(655) + p.SetState(646) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11351,7 +11187,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(656) + p.SetState(647) var _x = p.Identifier() @@ -11362,7 +11198,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewRename_columnContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(657) + p.SetState(648) p.Match(KuneiformParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -11370,7 +11206,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(658) + p.SetState(649) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11378,14 +11214,14 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(659) + p.SetState(650) var _x = p.Identifier() localctx.(*Rename_columnContext).old_column = _x } { - p.SetState(660) + p.SetState(651) p.Match(KuneiformParserTO) if p.HasError() { // Recognition error - abort rule @@ -11393,7 +11229,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(661) + p.SetState(652) var _x = p.Identifier() @@ -11404,7 +11240,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewRename_tableContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(663) + p.SetState(654) p.Match(KuneiformParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -11412,7 +11248,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(664) + p.SetState(655) p.Match(KuneiformParserTO) if p.HasError() { // Recognition error - abort rule @@ -11420,7 +11256,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(665) + p.SetState(656) var _x = p.Identifier() @@ -11431,7 +11267,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewAdd_table_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(666) + p.SetState(657) p.Match(KuneiformParserADD) if p.HasError() { // Recognition error - abort rule @@ -11439,7 +11275,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(667) + p.SetState(658) p.Constraint_def() } @@ -11447,7 +11283,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewDrop_table_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(668) + p.SetState(659) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11455,7 +11291,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(669) + p.SetState(660) p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule @@ -11463,7 +11299,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(670) + p.SetState(661) p.Identifier() } @@ -11672,19 +11508,19 @@ func (s *Create_index_statementContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_statementContext) { localctx = NewCreate_index_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 84, KuneiformParserRULE_create_index_statement) + p.EnterRule(localctx, 82, KuneiformParserRULE_create_index_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(673) + p.SetState(664) p.Match(KuneiformParserCREATE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(675) + p.SetState(666) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11693,7 +11529,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state if _la == KuneiformParserUNIQUE { { - p.SetState(674) + p.SetState(665) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -11703,14 +11539,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } { - p.SetState(677) + p.SetState(668) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(679) + p.SetState(670) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11719,7 +11555,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(678) + p.SetState(669) var _x = p.Identifier() @@ -11728,7 +11564,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } { - p.SetState(681) + p.SetState(672) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -11736,14 +11572,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(682) + p.SetState(673) var _x = p.Identifier() localctx.(*Create_index_statementContext).table = _x } { - p.SetState(683) + p.SetState(674) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -11751,14 +11587,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(684) + p.SetState(675) var _x = p.Identifier_list() localctx.(*Create_index_statementContext).columns = _x } { - p.SetState(685) + p.SetState(676) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -11892,12 +11728,12 @@ func (s *Drop_index_statementContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statementContext) { localctx = NewDrop_index_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 86, KuneiformParserRULE_drop_index_statement) + p.EnterRule(localctx, 84, KuneiformParserRULE_drop_index_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(687) + p.SetState(678) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11905,14 +11741,14 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } } { - p.SetState(688) + p.SetState(679) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(691) + p.SetState(682) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11921,7 +11757,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement if _la == KuneiformParserIF { { - p.SetState(689) + p.SetState(680) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -11929,7 +11765,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } } { - p.SetState(690) + p.SetState(681) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -11939,7 +11775,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } { - p.SetState(693) + p.SetState(684) var _x = p.Identifier() @@ -12248,15 +12084,15 @@ func (s *Select_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) { localctx = NewSelect_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 88, KuneiformParserRULE_select_statement) + p.EnterRule(localctx, 86, KuneiformParserRULE_select_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(695) + p.SetState(686) p.Select_core() } - p.SetState(701) + p.SetState(692) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12265,22 +12101,22 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for (int64((_la-106)) & ^0x3f) == 0 && ((int64(1)<<(_la-106))&7) != 0 { { - p.SetState(696) + p.SetState(687) p.Compound_operator() } { - p.SetState(697) + p.SetState(688) p.Select_core() } - p.SetState(703) + p.SetState(694) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(714) + p.SetState(705) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12289,7 +12125,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserORDER { { - p.SetState(704) + p.SetState(695) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -12297,7 +12133,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(705) + p.SetState(696) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -12305,10 +12141,10 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(706) + p.SetState(697) p.Ordering_term() } - p.SetState(711) + p.SetState(702) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12317,7 +12153,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(707) + p.SetState(698) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -12325,11 +12161,11 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(708) + p.SetState(699) p.Ordering_term() } - p.SetState(713) + p.SetState(704) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12338,7 +12174,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(718) + p.SetState(709) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12347,7 +12183,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserLIMIT { { - p.SetState(716) + p.SetState(707) p.Match(KuneiformParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -12355,7 +12191,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(717) + p.SetState(708) var _x = p.sql_expr(0) @@ -12363,7 +12199,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(722) + p.SetState(713) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12372,7 +12208,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserOFFSET { { - p.SetState(720) + p.SetState(711) p.Match(KuneiformParserOFFSET) if p.HasError() { // Recognition error - abort rule @@ -12380,7 +12216,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(721) + p.SetState(712) var _x = p.sql_expr(0) @@ -12487,10 +12323,10 @@ func (s *Compound_operatorContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContext) { localctx = NewCompound_operatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 90, KuneiformParserRULE_compound_operator) + p.EnterRule(localctx, 88, KuneiformParserRULE_compound_operator) var _la int - p.SetState(730) + p.SetState(721) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12500,14 +12336,14 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserUNION: p.EnterOuterAlt(localctx, 1) { - p.SetState(724) + p.SetState(715) p.Match(KuneiformParserUNION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(726) + p.SetState(717) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12516,7 +12352,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex if _la == KuneiformParserALL { { - p.SetState(725) + p.SetState(716) p.Match(KuneiformParserALL) if p.HasError() { // Recognition error - abort rule @@ -12529,7 +12365,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserINTERSECT: p.EnterOuterAlt(localctx, 2) { - p.SetState(728) + p.SetState(719) p.Match(KuneiformParserINTERSECT) if p.HasError() { // Recognition error - abort rule @@ -12540,7 +12376,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserEXCEPT: p.EnterOuterAlt(localctx, 3) { - p.SetState(729) + p.SetState(720) p.Match(KuneiformParserEXCEPT) if p.HasError() { // Recognition error - abort rule @@ -12673,15 +12509,15 @@ func (s *Ordering_termContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { localctx = NewOrdering_termContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 92, KuneiformParserRULE_ordering_term) + p.EnterRule(localctx, 90, KuneiformParserRULE_ordering_term) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(732) + p.SetState(723) p.sql_expr(0) } - p.SetState(734) + p.SetState(725) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12690,7 +12526,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserASC || _la == KuneiformParserDESC { { - p.SetState(733) + p.SetState(724) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserASC || _la == KuneiformParserDESC) { @@ -12702,7 +12538,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } - p.SetState(738) + p.SetState(729) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12711,7 +12547,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserNULLS { { - p.SetState(736) + p.SetState(727) p.Match(KuneiformParserNULLS) if p.HasError() { // Recognition error - abort rule @@ -12719,7 +12555,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } { - p.SetState(737) + p.SetState(728) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserFIRST || _la == KuneiformParserLAST) { @@ -13152,19 +12988,19 @@ func (s *Select_coreContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { localctx = NewSelect_coreContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 94, KuneiformParserRULE_select_core) + p.EnterRule(localctx, 92, KuneiformParserRULE_select_core) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(740) + p.SetState(731) p.Match(KuneiformParserSELECT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(742) + p.SetState(733) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13173,7 +13009,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserDISTINCT { { - p.SetState(741) + p.SetState(732) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -13183,10 +13019,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } { - p.SetState(744) + p.SetState(735) p.Result_column() } - p.SetState(749) + p.SetState(740) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13195,7 +13031,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(745) + p.SetState(736) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -13203,18 +13039,18 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(746) + p.SetState(737) p.Result_column() } - p.SetState(751) + p.SetState(742) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(760) + p.SetState(751) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13223,7 +13059,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserFROM { { - p.SetState(752) + p.SetState(743) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -13231,10 +13067,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(753) + p.SetState(744) p.Relation() } - p.SetState(757) + p.SetState(748) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13243,11 +13079,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(754) + p.SetState(745) p.Join() } - p.SetState(759) + p.SetState(750) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13256,7 +13092,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(764) + p.SetState(755) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13265,7 +13101,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWHERE { { - p.SetState(762) + p.SetState(753) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -13273,7 +13109,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(763) + p.SetState(754) var _x = p.sql_expr(0) @@ -13281,7 +13117,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(773) + p.SetState(764) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13290,7 +13126,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserGROUP { { - p.SetState(766) + p.SetState(757) p.Match(KuneiformParserGROUP) if p.HasError() { // Recognition error - abort rule @@ -13298,7 +13134,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(767) + p.SetState(758) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -13306,13 +13142,13 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(768) + p.SetState(759) var _x = p.Sql_expr_list() localctx.(*Select_coreContext).group_by = _x } - p.SetState(771) + p.SetState(762) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13321,7 +13157,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserHAVING { { - p.SetState(769) + p.SetState(760) p.Match(KuneiformParserHAVING) if p.HasError() { // Recognition error - abort rule @@ -13329,7 +13165,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(770) + p.SetState(761) var _x = p.sql_expr(0) @@ -13339,7 +13175,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(789) + p.SetState(780) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13348,7 +13184,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWINDOW { { - p.SetState(775) + p.SetState(766) p.Match(KuneiformParserWINDOW) if p.HasError() { // Recognition error - abort rule @@ -13356,11 +13192,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(776) + p.SetState(767) p.Identifier() } { - p.SetState(777) + p.SetState(768) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13368,10 +13204,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(778) + p.SetState(769) p.Window() } - p.SetState(786) + p.SetState(777) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13380,7 +13216,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(779) + p.SetState(770) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -13388,11 +13224,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(780) + p.SetState(771) p.Identifier() } { - p.SetState(781) + p.SetState(772) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13400,11 +13236,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(782) + p.SetState(773) p.Window() } - p.SetState(788) + p.SetState(779) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13643,10 +13479,10 @@ func (s *Subquery_relationContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewRelationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 96, KuneiformParserRULE_relation) + p.EnterRule(localctx, 94, KuneiformParserRULE_relation) var _la int - p.SetState(807) + p.SetState(798) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13657,13 +13493,13 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewTable_relationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(791) + p.SetState(782) var _x = p.Identifier() localctx.(*Table_relationContext).table_name = _x } - p.SetState(796) + p.SetState(787) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13671,7 +13507,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(793) + p.SetState(784) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13680,7 +13516,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(792) + p.SetState(783) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13690,7 +13526,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(795) + p.SetState(786) var _x = p.Identifier() @@ -13703,7 +13539,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewSubquery_relationContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(798) + p.SetState(789) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -13711,18 +13547,18 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } } { - p.SetState(799) + p.SetState(790) p.Select_statement() } { - p.SetState(800) + p.SetState(791) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(805) + p.SetState(796) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13730,7 +13566,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(802) + p.SetState(793) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13739,7 +13575,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(801) + p.SetState(792) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13749,7 +13585,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(804) + p.SetState(795) var _x = p.Identifier() @@ -13905,11 +13741,11 @@ func (s *JoinContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Join() (localctx IJoinContext) { localctx = NewJoinContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 98, KuneiformParserRULE_join) + p.EnterRule(localctx, 96, KuneiformParserRULE_join) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(810) + p.SetState(801) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13918,7 +13754,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { if (int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0 { { - p.SetState(809) + p.SetState(800) _la = p.GetTokenStream().LA(1) if !((int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0) { @@ -13931,7 +13767,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } { - p.SetState(812) + p.SetState(803) p.Match(KuneiformParserJOIN) if p.HasError() { // Recognition error - abort rule @@ -13939,11 +13775,11 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(813) + p.SetState(804) p.Relation() } { - p.SetState(814) + p.SetState(805) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -13951,7 +13787,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(815) + p.SetState(806) p.sql_expr(0) } @@ -14145,24 +13981,24 @@ func (s *Wildcard_result_columnContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { localctx = NewResult_columnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 100, KuneiformParserRULE_result_column) + p.EnterRule(localctx, 98, KuneiformParserRULE_result_column) var _la int - p.SetState(830) + p.SetState(821) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 94, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 93, p.GetParserRuleContext()) { case 1: localctx = NewExpression_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(817) + p.SetState(808) p.sql_expr(0) } - p.SetState(822) + p.SetState(813) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14170,7 +14006,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(819) + p.SetState(810) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14179,7 +14015,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserAS { { - p.SetState(818) + p.SetState(809) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14189,7 +14025,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(821) + p.SetState(812) p.Identifier() } @@ -14198,7 +14034,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { case 2: localctx = NewWildcard_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(827) + p.SetState(818) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14207,14 +14043,14 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(824) + p.SetState(815) var _x = p.Identifier() localctx.(*Wildcard_result_columnContext).table_name = _x } { - p.SetState(825) + p.SetState(816) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -14224,7 +14060,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(829) + p.SetState(820) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -14545,12 +14381,12 @@ func (s *Update_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) { localctx = NewUpdate_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 102, KuneiformParserRULE_update_statement) + p.EnterRule(localctx, 100, KuneiformParserRULE_update_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(832) + p.SetState(823) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -14558,13 +14394,13 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(833) + p.SetState(824) var _x = p.Identifier() localctx.(*Update_statementContext).table_name = _x } - p.SetState(838) + p.SetState(829) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14572,7 +14408,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(835) + p.SetState(826) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14581,7 +14417,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserAS { { - p.SetState(834) + p.SetState(825) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14591,7 +14427,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(837) + p.SetState(828) var _x = p.Identifier() @@ -14600,7 +14436,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(840) + p.SetState(831) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -14608,10 +14444,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(841) + p.SetState(832) p.Update_set_clause() } - p.SetState(846) + p.SetState(837) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14620,7 +14456,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(842) + p.SetState(833) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -14628,18 +14464,18 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(843) + p.SetState(834) p.Update_set_clause() } - p.SetState(848) + p.SetState(839) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(857) + p.SetState(848) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14648,7 +14484,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserFROM { { - p.SetState(849) + p.SetState(840) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -14656,10 +14492,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(850) + p.SetState(841) p.Relation() } - p.SetState(854) + p.SetState(845) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14668,11 +14504,11 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(851) + p.SetState(842) p.Join() } - p.SetState(856) + p.SetState(847) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14681,7 +14517,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } - p.SetState(861) + p.SetState(852) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14690,7 +14526,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(859) + p.SetState(850) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -14698,7 +14534,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(860) + p.SetState(851) var _x = p.sql_expr(0) @@ -14835,17 +14671,17 @@ func (s *Update_set_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContext) { localctx = NewUpdate_set_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 104, KuneiformParserRULE_update_set_clause) + p.EnterRule(localctx, 102, KuneiformParserRULE_update_set_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(863) + p.SetState(854) var _x = p.Identifier() localctx.(*Update_set_clauseContext).column = _x } { - p.SetState(864) + p.SetState(855) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -14853,7 +14689,7 @@ func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContex } } { - p.SetState(865) + p.SetState(856) p.sql_expr(0) } @@ -15157,12 +14993,12 @@ func (s *Insert_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) { localctx = NewInsert_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 106, KuneiformParserRULE_insert_statement) + p.EnterRule(localctx, 104, KuneiformParserRULE_insert_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(867) + p.SetState(858) p.Match(KuneiformParserINSERT) if p.HasError() { // Recognition error - abort rule @@ -15170,7 +15006,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(868) + p.SetState(859) p.Match(KuneiformParserINTO) if p.HasError() { // Recognition error - abort rule @@ -15178,13 +15014,13 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(869) + p.SetState(860) var _x = p.Identifier() localctx.(*Insert_statementContext).table_name = _x } - p.SetState(874) + p.SetState(865) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15192,7 +15028,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(871) + p.SetState(862) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15201,7 +15037,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserAS { { - p.SetState(870) + p.SetState(861) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -15211,7 +15047,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } { - p.SetState(873) + p.SetState(864) var _x = p.Identifier() @@ -15219,7 +15055,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(880) + p.SetState(871) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15228,7 +15064,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserLPAREN { { - p.SetState(876) + p.SetState(867) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15236,14 +15072,14 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(877) + p.SetState(868) var _x = p.Identifier_list() localctx.(*Insert_statementContext).target_columns = _x } { - p.SetState(878) + p.SetState(869) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15252,7 +15088,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(897) + p.SetState(888) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15261,7 +15097,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) switch p.GetTokenStream().LA(1) { case KuneiformParserVALUES: { - p.SetState(882) + p.SetState(873) p.Match(KuneiformParserVALUES) if p.HasError() { // Recognition error - abort rule @@ -15269,7 +15105,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(883) + p.SetState(874) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15277,18 +15113,18 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(884) + p.SetState(875) p.Sql_expr_list() } { - p.SetState(885) + p.SetState(876) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(893) + p.SetState(884) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15297,7 +15133,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(886) + p.SetState(877) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15305,7 +15141,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(887) + p.SetState(878) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15313,11 +15149,11 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(888) + p.SetState(879) p.Sql_expr_list() } { - p.SetState(889) + p.SetState(880) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15325,7 +15161,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(895) + p.SetState(886) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15335,7 +15171,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) case KuneiformParserSELECT: { - p.SetState(896) + p.SetState(887) p.Select_statement() } @@ -15343,7 +15179,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(900) + p.SetState(891) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15352,7 +15188,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserON { { - p.SetState(899) + p.SetState(890) p.Upsert_clause() } @@ -15634,12 +15470,12 @@ func (s *Upsert_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { localctx = NewUpsert_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 108, KuneiformParserRULE_upsert_clause) + p.EnterRule(localctx, 106, KuneiformParserRULE_upsert_clause) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(902) + p.SetState(893) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -15647,14 +15483,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(903) + p.SetState(894) p.Match(KuneiformParserCONFLICT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(911) + p.SetState(902) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15663,7 +15499,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserLPAREN { { - p.SetState(904) + p.SetState(895) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15671,21 +15507,21 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(905) + p.SetState(896) var _x = p.Identifier_list() localctx.(*Upsert_clauseContext).conflict_columns = _x } { - p.SetState(906) + p.SetState(897) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(909) + p.SetState(900) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15694,7 +15530,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(907) + p.SetState(898) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -15702,7 +15538,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(908) + p.SetState(899) var _x = p.sql_expr(0) @@ -15713,14 +15549,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } { - p.SetState(913) + p.SetState(904) p.Match(KuneiformParserDO) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(929) + p.SetState(920) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15729,7 +15565,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserNOTHING: { - p.SetState(914) + p.SetState(905) p.Match(KuneiformParserNOTHING) if p.HasError() { // Recognition error - abort rule @@ -15739,7 +15575,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { case KuneiformParserUPDATE: { - p.SetState(915) + p.SetState(906) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -15747,7 +15583,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(916) + p.SetState(907) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -15755,10 +15591,10 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(917) + p.SetState(908) p.Update_set_clause() } - p.SetState(922) + p.SetState(913) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15767,7 +15603,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { for _la == KuneiformParserCOMMA { { - p.SetState(918) + p.SetState(909) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15775,18 +15611,18 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(919) + p.SetState(910) p.Update_set_clause() } - p.SetState(924) + p.SetState(915) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(927) + p.SetState(918) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15795,7 +15631,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(925) + p.SetState(916) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -15803,7 +15639,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(926) + p.SetState(917) var _x = p.sql_expr(0) @@ -16008,12 +15844,12 @@ func (s *Delete_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) { localctx = NewDelete_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 110, KuneiformParserRULE_delete_statement) + p.EnterRule(localctx, 108, KuneiformParserRULE_delete_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(931) + p.SetState(922) p.Match(KuneiformParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -16021,7 +15857,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(932) + p.SetState(923) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -16029,13 +15865,13 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(933) + p.SetState(924) var _x = p.Identifier() localctx.(*Delete_statementContext).table_name = _x } - p.SetState(938) + p.SetState(929) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16043,7 +15879,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(935) + p.SetState(926) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16052,7 +15888,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserAS { { - p.SetState(934) + p.SetState(925) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -16062,7 +15898,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } { - p.SetState(937) + p.SetState(928) var _x = p.Identifier() @@ -16070,7 +15906,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } - p.SetState(942) + p.SetState(933) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16079,7 +15915,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(940) + p.SetState(931) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -16087,7 +15923,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(941) + p.SetState(932) var _x = p.sql_expr(0) @@ -17829,27 +17665,27 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewSql_exprContext(p, p.GetParserRuleContext(), _parentState) var _prevctx ISql_exprContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 112 - p.EnterRecursionRule(localctx, 112, KuneiformParserRULE_sql_expr, _p) + _startState := 110 + p.EnterRecursionRule(localctx, 110, KuneiformParserRULE_sql_expr, _p) var _la int var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(1017) + p.SetState(1008) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 129, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 128, p.GetParserRuleContext()) { case 1: localctx = NewParen_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(945) + p.SetState(936) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17857,23 +17693,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(946) + p.SetState(937) p.sql_expr(0) } { - p.SetState(947) + p.SetState(938) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(949) + p.SetState(940) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 114, p.GetParserRuleContext()) == 1 { { - p.SetState(948) + p.SetState(939) p.Type_cast() } @@ -17886,7 +17722,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(951) + p.SetState(942) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -17897,7 +17733,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(952) + p.SetState(943) p.sql_expr(20) } @@ -17906,15 +17742,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(953) + p.SetState(944) p.Literal() } - p.SetState(955) + p.SetState(946) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 116, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { { - p.SetState(954) + p.SetState(945) p.Type_cast() } @@ -17927,10 +17763,10 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(957) + p.SetState(948) p.Sql_function_call() } - p.SetState(964) + p.SetState(955) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17939,7 +17775,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserFILTER { { - p.SetState(958) + p.SetState(949) p.Match(KuneiformParserFILTER) if p.HasError() { // Recognition error - abort rule @@ -17947,7 +17783,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(959) + p.SetState(950) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17955,7 +17791,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(960) + p.SetState(951) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -17963,11 +17799,11 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(961) + p.SetState(952) p.sql_expr(0) } { - p.SetState(962) + p.SetState(953) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -17977,14 +17813,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(966) + p.SetState(957) p.Match(KuneiformParserOVER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(969) + p.SetState(960) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17993,13 +17829,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN: { - p.SetState(967) + p.SetState(958) p.Window() } case KuneiformParserIDENTIFIER: { - p.SetState(968) + p.SetState(959) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -18017,15 +17853,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(971) + p.SetState(962) p.Sql_function_call() } - p.SetState(973) + p.SetState(964) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 119, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) == 1 { { - p.SetState(972) + p.SetState(963) p.Type_cast() } @@ -18038,15 +17874,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(975) + p.SetState(966) p.Variable() } - p.SetState(977) + p.SetState(968) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 119, p.GetParserRuleContext()) == 1 { { - p.SetState(976) + p.SetState(967) p.Type_cast() } @@ -18058,19 +17894,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewColumn_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(982) + p.SetState(973) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { { - p.SetState(979) + p.SetState(970) var _x = p.Identifier() localctx.(*Column_sql_exprContext).table = _x } { - p.SetState(980) + p.SetState(971) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -18082,18 +17918,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(984) + p.SetState(975) var _x = p.Identifier() localctx.(*Column_sql_exprContext).column = _x } - p.SetState(986) + p.SetState(977) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 122, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { { - p.SetState(985) + p.SetState(976) p.Type_cast() } @@ -18106,14 +17942,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(988) + p.SetState(979) p.Match(KuneiformParserCASE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(990) + p.SetState(981) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18122,7 +17958,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(989) + p.SetState(980) var _x = p.sql_expr(0) @@ -18130,7 +17966,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(993) + p.SetState(984) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18139,18 +17975,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { for ok := true; ok; ok = _la == KuneiformParserWHEN { { - p.SetState(992) + p.SetState(983) p.When_then_clause() } - p.SetState(995) + p.SetState(986) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(999) + p.SetState(990) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18159,7 +17995,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserELSE { { - p.SetState(997) + p.SetState(988) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -18167,7 +18003,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(998) + p.SetState(989) var _x = p.sql_expr(0) @@ -18176,7 +18012,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1001) + p.SetState(992) p.Match(KuneiformParserEND) if p.HasError() { // Recognition error - abort rule @@ -18188,7 +18024,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewSubquery_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(1007) + p.SetState(998) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18196,7 +18032,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserNOT || _la == KuneiformParserEXISTS { - p.SetState(1004) + p.SetState(995) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18205,7 +18041,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1003) + p.SetState(994) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18215,7 +18051,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1006) + p.SetState(997) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -18225,7 +18061,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1009) + p.SetState(1000) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -18233,23 +18069,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1010) + p.SetState(1001) p.Select_statement() } { - p.SetState(1011) + p.SetState(1002) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1013) + p.SetState(1004) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 128, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 127, p.GetParserRuleContext()) == 1 { { - p.SetState(1012) + p.SetState(1003) p.Type_cast() } @@ -18263,7 +18099,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _prevctx = localctx { - p.SetState(1015) + p.SetState(1006) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18272,7 +18108,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1016) + p.SetState(1007) p.sql_expr(3) } @@ -18280,12 +18116,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1104) + p.SetState(1095) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 142, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -18295,26 +18131,26 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1102) + p.SetState(1093) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 140, p.GetParserRuleContext()) { case 1: localctx = NewArithmetic_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1019) + p.SetState(1010) if !(p.Precpred(p.GetParserRuleContext(), 18)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", "")) goto errorExit } { - p.SetState(1020) + p.SetState(1011) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -18325,7 +18161,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1021) + p.SetState(1012) var _x = p.sql_expr(19) @@ -18337,14 +18173,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1022) + p.SetState(1013) if !(p.Precpred(p.GetParserRuleContext(), 17)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", "")) goto errorExit } { - p.SetState(1023) + p.SetState(1014) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -18355,7 +18191,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1024) + p.SetState(1015) var _x = p.sql_expr(18) @@ -18367,14 +18203,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1025) + p.SetState(1016) if !(p.Precpred(p.GetParserRuleContext(), 9)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) goto errorExit } { - p.SetState(1026) + p.SetState(1017) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -18382,7 +18218,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1027) + p.SetState(1018) var _x = p.sql_expr(10) @@ -18394,13 +18230,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Like_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1028) + p.SetState(1019) if !(p.Precpred(p.GetParserRuleContext(), 7)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) goto errorExit } - p.SetState(1030) + p.SetState(1021) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18409,7 +18245,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1029) + p.SetState(1020) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18419,7 +18255,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1032) + p.SetState(1023) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserLIKE || _la == KuneiformParserILIKE) { @@ -18430,7 +18266,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1033) + p.SetState(1024) var _x = p.sql_expr(8) @@ -18442,13 +18278,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Between_sql_exprContext).element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1034) + p.SetState(1025) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } - p.SetState(1036) + p.SetState(1027) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18457,7 +18293,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1035) + p.SetState(1026) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18467,7 +18303,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1038) + p.SetState(1029) p.Match(KuneiformParserBETWEEN) if p.HasError() { // Recognition error - abort rule @@ -18475,14 +18311,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1039) + p.SetState(1030) var _x = p.sql_expr(0) localctx.(*Between_sql_exprContext).lower = _x } { - p.SetState(1040) + p.SetState(1031) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -18490,7 +18326,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1041) + p.SetState(1032) var _x = p.sql_expr(7) @@ -18502,14 +18338,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Comparison_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1043) + p.SetState(1034) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1044) + p.SetState(1035) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -18520,7 +18356,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1045) + p.SetState(1036) var _x = p.sql_expr(6) @@ -18532,14 +18368,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1046) + p.SetState(1037) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1047) + p.SetState(1038) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -18547,7 +18383,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1048) + p.SetState(1039) var _x = p.sql_expr(3) @@ -18559,14 +18395,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1049) + p.SetState(1040) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1050) + p.SetState(1041) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -18574,7 +18410,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1051) + p.SetState(1042) var _x = p.sql_expr(2) @@ -18584,14 +18420,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 9: localctx = NewField_access_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1052) + p.SetState(1043) if !(p.Precpred(p.GetParserRuleContext(), 22)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 22)", "")) goto errorExit } { - p.SetState(1053) + p.SetState(1044) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -18599,15 +18435,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1054) + p.SetState(1045) p.Identifier() } - p.SetState(1056) + p.SetState(1047) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 132, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 { { - p.SetState(1055) + p.SetState(1046) p.Type_cast() } @@ -18620,30 +18456,30 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Array_access_sql_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1058) + p.SetState(1049) if !(p.Precpred(p.GetParserRuleContext(), 21)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 21)", "")) goto errorExit } { - p.SetState(1059) + p.SetState(1050) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1068) + p.SetState(1059) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 134, p.GetParserRuleContext()) { case 1: { - p.SetState(1060) + p.SetState(1051) var _x = p.sql_expr(0) @@ -18651,7 +18487,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } case 2: - p.SetState(1062) + p.SetState(1053) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18660,7 +18496,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1061) + p.SetState(1052) var _x = p.sql_expr(0) @@ -18669,14 +18505,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1064) + p.SetState(1055) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1066) + p.SetState(1057) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18685,7 +18521,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1065) + p.SetState(1056) var _x = p.sql_expr(0) @@ -18698,19 +18534,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1070) + p.SetState(1061) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1072) + p.SetState(1063) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 136, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) == 1 { { - p.SetState(1071) + p.SetState(1062) p.Type_cast() } @@ -18721,14 +18557,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 11: localctx = NewCollate_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1074) + p.SetState(1065) if !(p.Precpred(p.GetParserRuleContext(), 19)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", "")) goto errorExit } { - p.SetState(1075) + p.SetState(1066) p.Match(KuneiformParserCOLLATE) if p.HasError() { // Recognition error - abort rule @@ -18736,20 +18572,20 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1076) + p.SetState(1067) p.Identifier() } case 12: localctx = NewIn_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1077) + p.SetState(1068) if !(p.Precpred(p.GetParserRuleContext(), 8)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) goto errorExit } - p.SetState(1079) + p.SetState(1070) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18758,7 +18594,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1078) + p.SetState(1069) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18768,7 +18604,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1081) + p.SetState(1072) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule @@ -18776,14 +18612,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1082) + p.SetState(1073) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1085) + p.SetState(1076) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18792,13 +18628,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1083) + p.SetState(1074) p.Sql_expr_list() } case KuneiformParserSELECT: { - p.SetState(1084) + p.SetState(1075) p.Select_statement() } @@ -18807,7 +18643,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1087) + p.SetState(1078) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -18820,21 +18656,21 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Is_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1089) + p.SetState(1080) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1090) + p.SetState(1081) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1092) + p.SetState(1083) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18843,7 +18679,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1091) + p.SetState(1082) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18852,7 +18688,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1100) + p.SetState(1091) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18861,7 +18697,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1094) + p.SetState(1085) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -18869,7 +18705,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1095) + p.SetState(1086) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -18877,7 +18713,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1096) + p.SetState(1087) var _x = p.sql_expr(0) @@ -18886,7 +18722,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserNULL: { - p.SetState(1097) + p.SetState(1088) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -18896,7 +18732,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserTRUE: { - p.SetState(1098) + p.SetState(1089) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -18906,7 +18742,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserFALSE: { - p.SetState(1099) + p.SetState(1090) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -18924,12 +18760,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1106) + p.SetState(1097) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 142, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -19124,19 +18960,19 @@ func (s *WindowContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Window() (localctx IWindowContext) { localctx = NewWindowContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 114, KuneiformParserRULE_window) + p.EnterRule(localctx, 112, KuneiformParserRULE_window) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1107) + p.SetState(1098) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1111) + p.SetState(1102) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19145,7 +18981,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserPARTITION { { - p.SetState(1108) + p.SetState(1099) p.Match(KuneiformParserPARTITION) if p.HasError() { // Recognition error - abort rule @@ -19153,7 +18989,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1109) + p.SetState(1100) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -19161,7 +18997,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1110) + p.SetState(1101) var _x = p.Sql_expr_list() @@ -19169,7 +19005,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } - p.SetState(1123) + p.SetState(1114) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19178,7 +19014,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserORDER { { - p.SetState(1113) + p.SetState(1104) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -19186,7 +19022,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1114) + p.SetState(1105) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -19194,10 +19030,10 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1115) + p.SetState(1106) p.Ordering_term() } - p.SetState(1120) + p.SetState(1111) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19206,7 +19042,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1116) + p.SetState(1107) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -19214,11 +19050,11 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1117) + p.SetState(1108) p.Ordering_term() } - p.SetState(1122) + p.SetState(1113) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19228,7 +19064,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } { - p.SetState(1125) + p.SetState(1116) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19389,10 +19225,10 @@ func (s *When_then_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) { localctx = NewWhen_then_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 116, KuneiformParserRULE_when_then_clause) + p.EnterRule(localctx, 114, KuneiformParserRULE_when_then_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(1127) + p.SetState(1118) p.Match(KuneiformParserWHEN) if p.HasError() { // Recognition error - abort rule @@ -19400,14 +19236,14 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(1128) + p.SetState(1119) var _x = p.sql_expr(0) localctx.(*When_then_clauseContext).when_condition = _x } { - p.SetState(1129) + p.SetState(1120) p.Match(KuneiformParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -19415,7 +19251,7 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(1130) + p.SetState(1121) var _x = p.sql_expr(0) @@ -19553,15 +19389,15 @@ func (s *Sql_expr_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { localctx = NewSql_expr_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 118, KuneiformParserRULE_sql_expr_list) + p.EnterRule(localctx, 116, KuneiformParserRULE_sql_expr_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1132) + p.SetState(1123) p.sql_expr(0) } - p.SetState(1137) + p.SetState(1128) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19570,7 +19406,7 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1133) + p.SetState(1124) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -19578,11 +19414,11 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { } } { - p.SetState(1134) + p.SetState(1125) p.sql_expr(0) } - p.SetState(1139) + p.SetState(1130) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19735,31 +19571,31 @@ func (s *Normal_call_sqlContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContext) { localctx = NewSql_function_callContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 120, KuneiformParserRULE_sql_function_call) + p.EnterRule(localctx, 118, KuneiformParserRULE_sql_function_call) var _la int localctx = NewNormal_call_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1140) + p.SetState(1131) p.Identifier() } { - p.SetState(1141) + p.SetState(1132) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1147) + p.SetState(1138) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserDISTINCT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: - p.SetState(1143) + p.SetState(1134) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19768,7 +19604,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex if _la == KuneiformParserDISTINCT { { - p.SetState(1142) + p.SetState(1133) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -19778,13 +19614,13 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex } { - p.SetState(1145) + p.SetState(1136) p.Sql_expr_list() } case KuneiformParserSTAR: { - p.SetState(1146) + p.SetState(1137) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -19797,7 +19633,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex default: } { - p.SetState(1149) + p.SetState(1140) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19936,11 +19772,11 @@ func (s *Action_blockContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { localctx = NewAction_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 122, KuneiformParserRULE_action_block) + p.EnterRule(localctx, 120, KuneiformParserRULE_action_block) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1156) + p.SetState(1147) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19949,11 +19785,11 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-4611602455543676928) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&492581209245185) != 0) { { - p.SetState(1151) + p.SetState(1142) p.Action_statement() } { - p.SetState(1152) + p.SetState(1143) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19961,7 +19797,7 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { } } - p.SetState(1158) + p.SetState(1149) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20222,21 +20058,21 @@ func (s *Sql_actionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) { localctx = NewAction_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 124, KuneiformParserRULE_action_statement) + p.EnterRule(localctx, 122, KuneiformParserRULE_action_statement) var _la int - p.SetState(1179) + p.SetState(1170) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 153, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 152, p.GetParserRuleContext()) { case 1: localctx = NewSql_actionContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1159) + p.SetState(1150) p.Sql_statement() } @@ -20244,7 +20080,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) localctx = NewLocal_actionContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(1160) + p.SetState(1151) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20252,14 +20088,14 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1161) + p.SetState(1152) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1163) + p.SetState(1154) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20268,13 +20104,13 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1162) + p.SetState(1153) p.Procedure_expr_list() } } { - p.SetState(1165) + p.SetState(1156) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20285,7 +20121,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) case 3: localctx = NewExtension_actionContext(p, localctx) p.EnterOuterAlt(localctx, 3) - p.SetState(1169) + p.SetState(1160) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20294,11 +20130,11 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(1166) + p.SetState(1157) p.Variable_list() } { - p.SetState(1167) + p.SetState(1158) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -20308,7 +20144,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } { - p.SetState(1171) + p.SetState(1162) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20316,7 +20152,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1172) + p.SetState(1163) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -20324,7 +20160,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1173) + p.SetState(1164) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20332,14 +20168,14 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1174) + p.SetState(1165) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1176) + p.SetState(1167) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20348,13 +20184,13 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1175) + p.SetState(1166) p.Procedure_expr_list() } } { - p.SetState(1178) + p.SetState(1169) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20487,11 +20323,11 @@ func (s *Procedure_blockContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Procedure_block() (localctx IProcedure_blockContext) { localctx = NewProcedure_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 126, KuneiformParserRULE_procedure_block) + p.EnterRule(localctx, 124, KuneiformParserRULE_procedure_block) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1184) + p.SetState(1175) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20500,11 +20336,11 @@ func (p *KuneiformParser) Procedure_block() (localctx IProcedure_blockContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1181) + p.SetState(1172) p.Proc_statement() } - p.SetState(1186) + p.SetState(1177) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21529,27 +21365,27 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx = NewProcedure_exprContext(p, p.GetParserRuleContext(), _parentState) var _prevctx IProcedure_exprContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 128 - p.EnterRecursionRule(localctx, 128, KuneiformParserRULE_procedure_expr, _p) + _startState := 126 + p.EnterRecursionRule(localctx, 126, KuneiformParserRULE_procedure_expr, _p) var _la int var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(1218) + p.SetState(1209) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 161, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) { case 1: localctx = NewParen_procedure_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1188) + p.SetState(1179) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -21557,23 +21393,23 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1189) + p.SetState(1180) p.procedure_expr(0) } { - p.SetState(1190) + p.SetState(1181) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1192) + p.SetState(1183) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 154, p.GetParserRuleContext()) == 1 { { - p.SetState(1191) + p.SetState(1182) p.Type_cast() } @@ -21586,7 +21422,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1194) + p.SetState(1185) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&3147776) != 0) { @@ -21597,7 +21433,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1195) + p.SetState(1186) p.procedure_expr(13) } @@ -21606,15 +21442,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1196) + p.SetState(1187) p.Literal() } - p.SetState(1198) + p.SetState(1189) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) == 1 { { - p.SetState(1197) + p.SetState(1188) p.Type_cast() } @@ -21627,15 +21463,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1200) + p.SetState(1191) p.Procedure_function_call() } - p.SetState(1202) + p.SetState(1193) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { { - p.SetState(1201) + p.SetState(1192) p.Type_cast() } @@ -21648,15 +21484,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1204) + p.SetState(1195) p.Variable() } - p.SetState(1206) + p.SetState(1197) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 158, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { { - p.SetState(1205) + p.SetState(1196) p.Type_cast() } @@ -21669,14 +21505,14 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1208) + p.SetState(1199) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1210) + p.SetState(1201) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21685,25 +21521,25 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1209) + p.SetState(1200) p.Procedure_expr_list() } } { - p.SetState(1212) + p.SetState(1203) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1214) + p.SetState(1205) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 159, p.GetParserRuleContext()) == 1 { { - p.SetState(1213) + p.SetState(1204) p.Type_cast() } @@ -21717,7 +21553,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex _prevctx = localctx { - p.SetState(1216) + p.SetState(1207) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -21726,7 +21562,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1217) + p.SetState(1208) p.procedure_expr(3) } @@ -21734,12 +21570,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1275) + p.SetState(1266) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 170, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -21749,24 +21585,24 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1273) + p.SetState(1264) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 168, p.GetParserRuleContext()) { case 1: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1220) + p.SetState(1211) if !(p.Precpred(p.GetParserRuleContext(), 12)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 12)", "")) goto errorExit } { - p.SetState(1221) + p.SetState(1212) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -21777,21 +21613,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1222) + p.SetState(1213) p.procedure_expr(13) } case 2: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1223) + p.SetState(1214) if !(p.Precpred(p.GetParserRuleContext(), 11)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 11)", "")) goto errorExit } { - p.SetState(1224) + p.SetState(1215) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -21802,21 +21638,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1225) + p.SetState(1216) p.procedure_expr(12) } case 3: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1226) + p.SetState(1217) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } { - p.SetState(1227) + p.SetState(1218) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -21824,21 +21660,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1228) + p.SetState(1219) p.procedure_expr(7) } case 4: localctx = NewComparison_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1229) + p.SetState(1220) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1230) + p.SetState(1221) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -21849,21 +21685,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1231) + p.SetState(1222) p.procedure_expr(6) } case 5: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1232) + p.SetState(1223) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1233) + p.SetState(1224) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -21871,21 +21707,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1234) + p.SetState(1225) p.procedure_expr(3) } case 6: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1235) + p.SetState(1226) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1236) + p.SetState(1227) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -21893,21 +21729,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1237) + p.SetState(1228) p.procedure_expr(2) } case 7: localctx = NewField_access_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1238) + p.SetState(1229) if !(p.Precpred(p.GetParserRuleContext(), 15)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", "")) goto errorExit } { - p.SetState(1239) + p.SetState(1230) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -21915,19 +21751,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1240) + p.SetState(1231) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1242) + p.SetState(1233) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 162, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 161, p.GetParserRuleContext()) == 1 { { - p.SetState(1241) + p.SetState(1232) p.Type_cast() } @@ -21940,30 +21776,30 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Array_access_procedure_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1244) + p.SetState(1235) if !(p.Precpred(p.GetParserRuleContext(), 14)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) goto errorExit } { - p.SetState(1245) + p.SetState(1236) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1254) + p.SetState(1245) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 164, p.GetParserRuleContext()) { case 1: { - p.SetState(1246) + p.SetState(1237) var _x = p.procedure_expr(0) @@ -21971,7 +21807,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } case 2: - p.SetState(1248) + p.SetState(1239) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21980,7 +21816,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1247) + p.SetState(1238) var _x = p.procedure_expr(0) @@ -21989,14 +21825,14 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1250) + p.SetState(1241) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1252) + p.SetState(1243) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22005,7 +21841,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1251) + p.SetState(1242) var _x = p.procedure_expr(0) @@ -22018,19 +21854,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } { - p.SetState(1256) + p.SetState(1247) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1258) + p.SetState(1249) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 166, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { { - p.SetState(1257) + p.SetState(1248) p.Type_cast() } @@ -22043,21 +21879,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Is_procedure_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1260) + p.SetState(1251) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1261) + p.SetState(1252) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1263) + p.SetState(1254) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22066,7 +21902,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if _la == KuneiformParserNOT { { - p.SetState(1262) + p.SetState(1253) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -22075,7 +21911,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1271) + p.SetState(1262) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22084,7 +21920,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1265) + p.SetState(1256) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -22092,7 +21928,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1266) + p.SetState(1257) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -22100,7 +21936,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1267) + p.SetState(1258) var _x = p.procedure_expr(0) @@ -22109,7 +21945,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserNULL: { - p.SetState(1268) + p.SetState(1259) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -22119,7 +21955,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserTRUE: { - p.SetState(1269) + p.SetState(1260) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -22129,7 +21965,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserFALSE: { - p.SetState(1270) + p.SetState(1261) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -22147,12 +21983,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1277) + p.SetState(1268) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 170, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -22289,15 +22125,15 @@ func (s *Procedure_expr_listContext) Accept(visitor antlr.ParseTreeVisitor) inte func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listContext) { localctx = NewProcedure_expr_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 130, KuneiformParserRULE_procedure_expr_list) + p.EnterRule(localctx, 128, KuneiformParserRULE_procedure_expr_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1278) + p.SetState(1269) p.procedure_expr(0) } - p.SetState(1283) + p.SetState(1274) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22306,7 +22142,7 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo for _la == KuneiformParserCOMMA { { - p.SetState(1279) + p.SetState(1270) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -22314,11 +22150,11 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo } } { - p.SetState(1280) + p.SetState(1271) p.procedure_expr(0) } - p.SetState(1285) + p.SetState(1276) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23130,21 +22966,21 @@ func (s *Stmt_sqlContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewProc_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 132, KuneiformParserRULE_proc_statement) + p.EnterRule(localctx, 130, KuneiformParserRULE_proc_statement) var _la int - p.SetState(1366) + p.SetState(1357) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 181, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 180, p.GetParserRuleContext()) { case 1: localctx = NewStmt_variable_declarationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1286) + p.SetState(1277) p.Match(KuneiformParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -23152,11 +22988,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1287) + p.SetState(1278) p.Type_() } { - p.SetState(1288) + p.SetState(1279) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23167,7 +23003,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 2: localctx = NewStmt_procedure_callContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(1300) + p.SetState(1291) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23176,11 +23012,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE { { - p.SetState(1290) + p.SetState(1281) p.Variable_or_underscore() } - p.SetState(1295) + p.SetState(1286) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23189,7 +23025,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1291) + p.SetState(1282) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -23198,11 +23034,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1292) + p.SetState(1283) p.Variable_or_underscore() } - p.SetState(1297) + p.SetState(1288) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23210,7 +23046,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1298) + p.SetState(1289) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -23220,11 +23056,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1302) + p.SetState(1293) p.Procedure_function_call() } { - p.SetState(1303) + p.SetState(1294) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23236,10 +23072,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_variable_assignmentContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(1305) + p.SetState(1296) p.procedure_expr(0) } - p.SetState(1307) + p.SetState(1298) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23248,13 +23084,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserIDENTIFIER { { - p.SetState(1306) + p.SetState(1297) p.Type_() } } { - p.SetState(1309) + p.SetState(1300) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -23262,11 +23098,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1310) + p.SetState(1301) p.procedure_expr(0) } { - p.SetState(1311) + p.SetState(1302) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23278,7 +23114,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_for_loopContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(1313) + p.SetState(1304) p.Match(KuneiformParserFOR) if p.HasError() { // Recognition error - abort rule @@ -23286,7 +23122,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1314) + p.SetState(1305) var _m = p.Match(KuneiformParserVARIABLE) @@ -23297,29 +23133,29 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1315) + p.SetState(1306) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1319) + p.SetState(1310) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 175, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 174, p.GetParserRuleContext()) { case 1: { - p.SetState(1316) + p.SetState(1307) p.Range_() } case 2: { - p.SetState(1317) + p.SetState(1308) var _x = p.Variable() @@ -23328,7 +23164,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 3: { - p.SetState(1318) + p.SetState(1309) p.Sql_statement() } @@ -23336,14 +23172,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { goto errorExit } { - p.SetState(1321) + p.SetState(1312) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1325) + p.SetState(1316) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23352,11 +23188,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1322) + p.SetState(1313) p.Proc_statement() } - p.SetState(1327) + p.SetState(1318) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23364,7 +23200,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1328) + p.SetState(1319) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -23376,7 +23212,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_ifContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(1330) + p.SetState(1321) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -23384,10 +23220,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1331) + p.SetState(1322) p.If_then_block() } - p.SetState(1336) + p.SetState(1327) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23396,7 +23232,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserELSEIF { { - p.SetState(1332) + p.SetState(1323) p.Match(KuneiformParserELSEIF) if p.HasError() { // Recognition error - abort rule @@ -23404,18 +23240,18 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1333) + p.SetState(1324) p.If_then_block() } - p.SetState(1338) + p.SetState(1329) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(1348) + p.SetState(1339) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23424,7 +23260,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserELSE { { - p.SetState(1339) + p.SetState(1330) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -23432,14 +23268,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1340) + p.SetState(1331) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1344) + p.SetState(1335) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23448,11 +23284,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1341) + p.SetState(1332) p.Proc_statement() } - p.SetState(1346) + p.SetState(1337) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23460,7 +23296,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1347) + p.SetState(1338) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -23474,11 +23310,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(1350) + p.SetState(1341) p.Sql_statement() } { - p.SetState(1351) + p.SetState(1342) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23490,7 +23326,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_breakContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(1353) + p.SetState(1344) p.Match(KuneiformParserBREAK) if p.HasError() { // Recognition error - abort rule @@ -23498,7 +23334,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1354) + p.SetState(1345) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23510,14 +23346,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_returnContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(1355) + p.SetState(1346) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1358) + p.SetState(1349) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23525,13 +23361,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLBRACKET, KuneiformParserLPAREN, KuneiformParserEXCL, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1356) + p.SetState(1347) p.Procedure_expr_list() } case KuneiformParserCREATE, KuneiformParserALTER, KuneiformParserDROP, KuneiformParserDELETE, KuneiformParserUPDATE, KuneiformParserWITH, KuneiformParserSELECT, KuneiformParserINSERT: { - p.SetState(1357) + p.SetState(1348) p.Sql_statement() } @@ -23540,7 +23376,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { default: } { - p.SetState(1360) + p.SetState(1351) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23552,7 +23388,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_return_nextContext(p, localctx) p.EnterOuterAlt(localctx, 9) { - p.SetState(1361) + p.SetState(1352) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule @@ -23560,7 +23396,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1362) + p.SetState(1353) p.Match(KuneiformParserNEXT) if p.HasError() { // Recognition error - abort rule @@ -23568,11 +23404,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1363) + p.SetState(1354) p.Procedure_expr_list() } { - p.SetState(1364) + p.SetState(1355) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23672,12 +23508,12 @@ func (s *Variable_or_underscoreContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Variable_or_underscore() (localctx IVariable_or_underscoreContext) { localctx = NewVariable_or_underscoreContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 134, KuneiformParserRULE_variable_or_underscore) + p.EnterRule(localctx, 132, KuneiformParserRULE_variable_or_underscore) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1368) + p.SetState(1359) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE) { @@ -23813,13 +23649,13 @@ func (s *Normal_call_procedureContext) Accept(visitor antlr.ParseTreeVisitor) in func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_function_callContext) { localctx = NewProcedure_function_callContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 136, KuneiformParserRULE_procedure_function_call) + p.EnterRule(localctx, 134, KuneiformParserRULE_procedure_function_call) var _la int localctx = NewNormal_call_procedureContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1370) + p.SetState(1361) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -23827,14 +23663,14 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio } } { - p.SetState(1371) + p.SetState(1362) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1373) + p.SetState(1364) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23843,13 +23679,13 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1372) + p.SetState(1363) p.Procedure_expr_list() } } { - p.SetState(1375) + p.SetState(1366) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -24005,23 +23841,23 @@ func (s *If_then_blockContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { localctx = NewIf_then_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 138, KuneiformParserRULE_if_then_block) + p.EnterRule(localctx, 136, KuneiformParserRULE_if_then_block) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1377) + p.SetState(1368) p.procedure_expr(0) } { - p.SetState(1378) + p.SetState(1369) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1382) + p.SetState(1373) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24030,11 +23866,11 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1379) + p.SetState(1370) p.Proc_statement() } - p.SetState(1384) + p.SetState(1375) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24042,7 +23878,7 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1385) + p.SetState(1376) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -24176,14 +24012,14 @@ func (s *RangeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Range_() (localctx IRangeContext) { localctx = NewRangeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 140, KuneiformParserRULE_range) + p.EnterRule(localctx, 138, KuneiformParserRULE_range) p.EnterOuterAlt(localctx, 1) { - p.SetState(1387) + p.SetState(1378) p.procedure_expr(0) } { - p.SetState(1388) + p.SetState(1379) p.Match(KuneiformParserRANGE) if p.HasError() { // Recognition error - abort rule @@ -24191,7 +24027,7 @@ func (p *KuneiformParser) Range_() (localctx IRangeContext) { } } { - p.SetState(1389) + p.SetState(1380) p.procedure_expr(0) } @@ -24210,14 +24046,14 @@ errorExit: func (p *KuneiformParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { switch ruleIndex { - case 56: + case 55: var t *Sql_exprContext = nil if localctx != nil { t = localctx.(*Sql_exprContext) } return p.Sql_expr_Sempred(t, predIndex) - case 64: + case 63: var t *Procedure_exprContext = nil if localctx != nil { t = localctx.(*Procedure_exprContext) diff --git a/parse/gen/kuneiformparser_base_visitor.go b/parse/gen/kuneiformparser_base_visitor.go index 1e737a6a8..a8ae637ae 100644 --- a/parse/gen/kuneiformparser_base_visitor.go +++ b/parse/gen/kuneiformparser_base_visitor.go @@ -7,10 +7,6 @@ type BaseKuneiformParserVisitor struct { *antlr.BaseParseTreeVisitor } -func (v *BaseKuneiformParserVisitor) VisitSrc(ctx *SrcContext) interface{} { - return v.VisitChildren(ctx) -} - func (v *BaseKuneiformParserVisitor) VisitSchema_entry(ctx *Schema_entryContext) interface{} { return v.VisitChildren(ctx) } diff --git a/parse/gen/kuneiformparser_visitor.go b/parse/gen/kuneiformparser_visitor.go index af0136449..223866748 100644 --- a/parse/gen/kuneiformparser_visitor.go +++ b/parse/gen/kuneiformparser_visitor.go @@ -7,9 +7,6 @@ import "github.com/antlr4-go/antlr/v4" type KuneiformParserVisitor interface { antlr.ParseTreeVisitor - // Visit a parse tree produced by KuneiformParser#src. - VisitSrc(ctx *SrcContext) interface{} - // Visit a parse tree produced by KuneiformParser#schema_entry. VisitSchema_entry(ctx *Schema_entryContext) interface{} diff --git a/parse/grammar/KuneiformParser.g4 b/parse/grammar/KuneiformParser.g4 index bfa618d9e..89a13a2e3 100644 --- a/parse/grammar/KuneiformParser.g4 +++ b/parse/grammar/KuneiformParser.g4 @@ -17,11 +17,6 @@ options { // can be ambiguous between the different types of entries. Callers will know // which entry to use based on when they are parsing. -src: - sql+ - EOF -; - schema_entry: schema EOF ; From 3e68a060a5bad20735fbe3085d48ff54a2326beb Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Fri, 25 Oct 2024 14:42:43 -0500 Subject: [PATCH 08/11] adjust --- internal/engine/generate/generate_test.go | 1 - parse/antlr.go | 48 ++--------------------- parse/ast.go | 39 ++++++++---------- parse/parse_test.go | 1 - 4 files changed, 19 insertions(+), 70 deletions(-) diff --git a/internal/engine/generate/generate_test.go b/internal/engine/generate/generate_test.go index 3852e7cee..8973b7d84 100644 --- a/internal/engine/generate/generate_test.go +++ b/internal/engine/generate/generate_test.go @@ -222,7 +222,6 @@ func TestGenerateDDLStatement(t *testing.T) { Table: "user", Action: &parse.DropColumnConstraint{ Column: "name", - Type: parse.NAMED, Name: "abc", }, }, diff --git a/parse/antlr.go b/parse/antlr.go index 5f4642267..db4b982e0 100644 --- a/parse/antlr.go +++ b/parse/antlr.go @@ -960,26 +960,6 @@ func (s *schemaVisitor) VisitCreate_table_statement(ctx *gen.Create_table_statem var primaryKey []string - //for _, column := range stmt.Columns { - // for _, constraint := range column.Constraints { - // switch c := constraint.(type) { - // case *ConstraintPrimaryKey: - // c.Columns = []string{column.Name} - // primaryKey = c.Columns - // case *ConstraintUnique: - // c.Columns = []string{column.Name} - // case *ConstraintCheck: - // case *ConstraintForeignKey: - // c.Column = column.Name - // case *ConstraintDefault: - // c.Column = column.Name - // case *ConstraintNotNull: - // c.Column = column.Name - // default: - // panic("unknown constraint type") - // } - // } - //} for _, column := range stmt.Columns { for _, constraint := range column.Constraints { switch constraint.(type) { @@ -1028,19 +1008,6 @@ func (s *schemaVisitor) VisitC_column_def(ctx *gen.C_column_defContext) interfac Constraints: arr[Constraint](len(ctx.AllInline_constraint())), } - // due to unfortunate lexing edge cases to support min/max, we - // have to parse the constraints here. Each constraint is a text, and should be - // one of: - // MIN/MAX/MINLEN/MAXLEN/MIN_LENGTH/MAX_LENGTH/NOTNULL/NOT/NULL/PRIMARY/KEY/PRIMARY_KEY/PK/DEFAULT/UNIQUE - // If NOT is present, it needs to be followed by NULL; similarly, if NULL is present, it needs to be preceded by NOT. - // If PRIMARY is present, it can be followed by key, but does not have to be. key must be preceded by primary. - // MIN, MAX, MINLEN, MAXLEN, MIN_LENGTH, MAX_LENGTH, and DEFAULT must also have a literal following them. - - //type constraint struct { - // ident string - // vals *types.DataType - //} - for i, c := range ctx.AllInline_constraint() { column.Constraints[i] = c.Accept(s).(Constraint) } @@ -1054,26 +1021,19 @@ func (s *schemaVisitor) VisitC_column_def(ctx *gen.C_column_defContext) interfac func (s *schemaVisitor) VisitInline_constraint(ctx *gen.Inline_constraintContext) any { switch { case ctx.PRIMARY() != nil: - c := &ConstraintPrimaryKey{ - //inline: true, - } + c := &ConstraintPrimaryKey{} c.Set(ctx) return c case ctx.UNIQUE() != nil: - c := &ConstraintUnique{ - //inline: true, - } + c := &ConstraintUnique{} c.Set(ctx) return c case ctx.NOT() != nil: - c := &ConstraintNotNull{ - //inline: true, - } + c := &ConstraintNotNull{} c.Set(ctx) return c case ctx.DEFAULT() != nil: c := &ConstraintDefault{ - //inline: true, Value: ctx.Literal().Accept(s).(*ExpressionLiteral), } c.Set(ctx) @@ -1086,7 +1046,6 @@ func (s *schemaVisitor) VisitInline_constraint(ctx *gen.Inline_constraintContext return c case ctx.Fk_constraint() != nil: c := ctx.Fk_constraint().Accept(s).(*ConstraintForeignKey) - //c.inline = true return c default: panic("unknown constraint") @@ -1229,7 +1188,6 @@ func (s *schemaVisitor) VisitDrop_column_constraint(ctx *gen.Drop_column_constra case ctx.DEFAULT() != nil: a.Type = DEFAULT case ctx.CONSTRAINT() != nil: - a.Type = NAMED a.Name = ctx.Identifier(1).Accept(s).(string) default: panic("unknown constraint") diff --git a/parse/ast.go b/parse/ast.go index 399075a60..d759c8206 100644 --- a/parse/ast.go +++ b/parse/ast.go @@ -581,7 +581,6 @@ const ( UNIQUE ConstraintType = "UNIQUE" CHECK ConstraintType = "CHECK" FOREIGN_KEY ConstraintType = "FOREIGN KEY" - NAMED ConstraintType = "NAMED" //CUSTOM ConstraintType = "CUSTOM" ) @@ -597,7 +596,6 @@ type ConstraintPrimaryKey struct { Position Columns []string - //inline bool } func (c *ConstraintPrimaryKey) Accept(visitor Visitor) any { @@ -623,7 +621,6 @@ type ConstraintUnique struct { Name string Columns []string - //inline bool } func (c *ConstraintUnique) Accept(visitor Visitor) any { @@ -657,7 +654,6 @@ type ConstraintDefault struct { Name string Column string Value *ExpressionLiteral - //inline bool } func (c *ConstraintDefault) Accept(visitor Visitor) any { @@ -681,7 +677,6 @@ type ConstraintNotNull struct { Name string Column string - //inline bool } func (c *ConstraintNotNull) Accept(visitor Visitor) any { @@ -705,7 +700,6 @@ type ConstraintCheck struct { Name string Param Expression - //inline bool } func (c *ConstraintCheck) Accept(visitor Visitor) any { @@ -733,7 +727,6 @@ type ConstraintForeignKey struct { Column string Ons []ForeignKeyActionOn Dos []ForeignKeyActionDo - //inline bool } func (c *ConstraintForeignKey) Accept(visitor Visitor) any { @@ -793,20 +786,15 @@ func (i *Index) String() string { } str := strings.Builder{} - str.WriteString("INDEX") + str.WriteString("INDEX ") if i.Name != "" { - str.WriteString(" " + i.Name) + str.WriteString(i.Name + " ") } if i.On != "" { - str.WriteString(" ON " + i.On) + str.WriteString("ON " + i.On) } str.WriteString("(" + strings.Join(i.Columns, ", ") + ")") - //s := "INDEX " + i.Name + " (" + strings.Join(i.Columns, ", ") + ")" - //if i.On != "" { - // s = "INDEX " + i.Name + " ON " + i.On + " (" + strings.Join(i.Columns, ", ") + ")" - //} - switch i.Type { case IndexTypeBTree: return str.String() @@ -961,16 +949,21 @@ func (a *DropColumnConstraint) ToSQL() string { str.WriteString("ALTER COLUMN ") str.WriteString(a.Column) str.WriteString(" DROP ") - switch a.Type { - case NOT_NULL: - str.WriteString("NOT NULL") - case DEFAULT: - str.WriteString("DEFAULT") - case NAMED: + + if a.Type != "" { + switch a.Type { + case NOT_NULL: + str.WriteString("NOT NULL") + case DEFAULT: + str.WriteString("DEFAULT") + default: + panic("unknown constraint type") + } + } + + if a.Name != "" { str.WriteString("CONSTRAINT ") str.WriteString(a.Name) - default: - panic("unknown constraint type") } return str.String() diff --git a/parse/parse_test.go b/parse/parse_test.go index c8280cf3b..2a21d6e5a 100644 --- a/parse/parse_test.go +++ b/parse/parse_test.go @@ -2219,7 +2219,6 @@ primary key (name) Table: "user", Action: &parse.DropColumnConstraint{ Column: "name", - Type: parse.NAMED, Name: "abc", }, }, From 1b6ab4889528b1f32281d61428f84df882b769b0 Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Tue, 29 Oct 2024 13:21:23 -0500 Subject: [PATCH 09/11] adjust grammar --- internal/engine/generate/generate_test.go | 426 ++- internal/engine/generate/plpgsql.go | 27 +- internal/engine/generate/sql.go | 8 +- parse/antlr.go | 179 +- parse/ast.go | 88 +- parse/gen/kuneiform_parser.go | 3691 +++++++++++---------- parse/gen/kuneiformparser_base_visitor.go | 16 +- parse/gen/kuneiformparser_visitor.go | 22 +- parse/grammar/KuneiformParser.g4 | 59 +- parse/parse.go | 35 + parse/parse_test.go | 449 +-- 11 files changed, 2654 insertions(+), 2346 deletions(-) diff --git a/internal/engine/generate/generate_test.go b/internal/engine/generate/generate_test.go index 8973b7d84..b8caa2b76 100644 --- a/internal/engine/generate/generate_test.go +++ b/internal/engine/generate/generate_test.go @@ -17,129 +17,127 @@ import ( func TestGenerateDDLStatement(t *testing.T) { tests := []struct { name string - sql *parse.SQLStatement + sql parse.SQLStmt want string wantErr bool }{ // those are the same as what are in internal.parse.parse_test.Test_SQL, with 'want' and 'sql' swapped { name: "create table", - sql: &parse.SQLStatement{ - SQL: &parse.CreateTableStatement{ - Name: "users", - Columns: []*parse.Column{ - { - Name: "id", - Type: types.IntType, - Constraints: []parse.Constraint{ - &parse.ConstraintPrimaryKey{}, - }, + sql: &parse.CreateTableStatement{ + Name: "users", + Columns: []*parse.Column{ + { + Name: "id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintPrimaryKey{}, }, - { - Name: "name", - Type: types.TextType, - Constraints: []parse.Constraint{ - &parse.ConstraintCheck{ - Param: &parse.ExpressionComparison{ - Left: &parse.ExpressionFunctionCall{ - Name: "length", - Args: []parse.Expression{ - &parse.ExpressionColumn{ - Table: "", - Column: "name", - }, + }, + { + Name: "name", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintCheck{ + Param: &parse.ExpressionComparison{ + Left: &parse.ExpressionFunctionCall{ + Name: "length", + Args: []parse.Expression{ + &parse.ExpressionColumn{ + Table: "", + Column: "name", }, }, - Right: &parse.ExpressionLiteral{ - Type: types.IntType, - Value: int64(10), - }, - Operator: parse.ComparisonOperatorGreaterThan, }, - }, - }, - }, - { - Name: "address", - Type: types.TextType, - Constraints: []parse.Constraint{ - &parse.ConstraintNotNull{}, - &parse.ConstraintDefault{ - Value: &parse.ExpressionLiteral{ - Type: types.TextType, - Value: "usa", + Right: &parse.ExpressionLiteral{ + Type: types.IntType, + Value: int64(10), }, + Operator: parse.ComparisonOperatorGreaterThan, }, }, }, - { - Name: "email", - Type: types.TextType, - Constraints: []parse.Constraint{ - &parse.ConstraintNotNull{}, - &parse.ConstraintUnique{}, - }, - }, - { - Name: "city_id", - Type: types.IntType, - }, - { - Name: "group_id", - Type: types.IntType, - Constraints: []parse.Constraint{ - &parse.ConstraintForeignKey{ - RefTable: "groups", - RefColumn: "id", - Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, - Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, + }, + { + Name: "address", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintNotNull{}, + &parse.ConstraintDefault{ + Value: &parse.ExpressionLiteral{ + Type: types.TextType, + Value: "usa", }, }, }, }, - Indexes: []*parse.Index{ - { - Name: "group_name_unique", - Columns: []string{"group_id", "name"}, - Type: parse.IndexTypeUnique, - }, - { - Name: "ithome", - Columns: []string{"name", "address"}, - Type: parse.IndexTypeBTree, + { + Name: "email", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintNotNull{}, + &parse.ConstraintUnique{}, }, }, - Constraints: []parse.Constraint{ - &parse.ConstraintForeignKey{ - Name: "city_fk", - RefTable: "cities", - RefColumn: "id", - Column: "city_id", - Ons: []parse.ForeignKeyActionOn{parse.ON_UPDATE}, - Dos: []parse.ForeignKeyActionDo{parse.DO_NO_ACTION}, + { + Name: "city_id", + Type: types.IntType, + }, + { + Name: "group_id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintForeignKey{ + RefTable: "groups", + RefColumn: "id", + Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, + }, }, - &parse.ConstraintCheck{ - Param: &parse.ExpressionComparison{ - Left: &parse.ExpressionFunctionCall{ - Name: "length", - Args: []parse.Expression{ - &parse.ExpressionColumn{ - Table: "", - Column: "email", - }, + }, + }, + Indexes: []*parse.TableIndex{ + { + Name: "group_name_unique", + Columns: []string{"group_id", "name"}, + Type: parse.IndexTypeUnique, + }, + { + Name: "ithome", + Columns: []string{"name", "address"}, + Type: parse.IndexTypeBTree, + }, + }, + Constraints: []parse.Constraint{ + &parse.ConstraintForeignKey{ + Name: "city_fk", + RefTable: "cities", + RefColumn: "id", + Column: "city_id", + Ons: []parse.ForeignKeyActionOn{parse.ON_UPDATE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_NO_ACTION}, + }, + &parse.ConstraintCheck{ + Param: &parse.ExpressionComparison{ + Left: &parse.ExpressionFunctionCall{ + Name: "length", + Args: []parse.Expression{ + &parse.ExpressionColumn{ + Table: "", + Column: "email", }, }, - Right: &parse.ExpressionLiteral{ - Type: types.IntType, - Value: int64(1), - }, - Operator: parse.ComparisonOperatorGreaterThan, }, - }, - &parse.ConstraintUnique{ - Columns: []string{ - "city_id", - "address", + Right: &parse.ExpressionLiteral{ + Type: types.IntType, + Value: int64(1), }, + Operator: parse.ComparisonOperatorGreaterThan, + }, + }, + &parse.ConstraintUnique{ + Columns: []string{ + "city_id", + "address", }, }, }, @@ -159,31 +157,46 @@ func TestGenerateDDLStatement(t *testing.T) { );`, }, { - name: "alter table add column constraint NOT NULL", - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.AddColumnConstraint{ - Column: "name", - Type: parse.NOT_NULL, + name: "create table if not exists", + want: `CREATE TABLE IF NOT EXISTS users ( + id int PRIMARY KEY +);`, + sql: &parse.CreateTableStatement{ + Name: "users", + IfNotExists: true, + Columns: []*parse.Column{ + { + Name: "id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintPrimaryKey{}, + }, }, }, }, + }, + { + name: "alter table add column constraint NOT NULL", + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumnConstraint{ + Column: "name", + Type: parse.NOT_NULL, + }, + }, want: "ALTER TABLE user ALTER COLUMN name SET NOT NULL;", }, { name: "alter table add column constraint DEFAULT", want: `ALTER TABLE user ALTER COLUMN name SET DEFAULT 10;`, - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.AddColumnConstraint{ - Column: "name", - Type: parse.DEFAULT, - Value: &parse.ExpressionLiteral{ - Type: types.IntType, - Value: int64(10), - }, + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumnConstraint{ + Column: "name", + Type: parse.DEFAULT, + Value: &parse.ExpressionLiteral{ + Type: types.IntType, + Value: int64(10), }, }, }, @@ -191,64 +204,54 @@ func TestGenerateDDLStatement(t *testing.T) { { name: "alter table drop column constraint NOT NULL", want: `ALTER TABLE user ALTER COLUMN name DROP NOT NULL;`, - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.DropColumnConstraint{ - Column: "name", - Type: parse.NOT_NULL, - }, + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Type: parse.NOT_NULL, }, }, }, { name: "alter table drop column constraint DEFAULT", want: `ALTER TABLE user ALTER COLUMN name DROP DEFAULT;`, - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.DropColumnConstraint{ - Column: "name", - Type: parse.DEFAULT, - }, + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Type: parse.DEFAULT, }, }, }, { name: "alter table drop column constraint named", want: `ALTER TABLE user ALTER COLUMN name DROP CONSTRAINT abc;`, - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.DropColumnConstraint{ - Column: "name", - Name: "abc", - }, + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Name: "abc", }, }, }, { name: "alter table add column", want: `ALTER TABLE user ADD COLUMN abc int;`, - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.AddColumn{ - Name: "abc", - Type: types.IntType, - }, + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumn{ + Name: "abc", + Type: types.IntType, }, }, }, { name: "alter table drop column", want: `ALTER TABLE user DROP COLUMN abc;`, - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.DropColumn{ - Name: "abc", - }, + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumn{ + Name: "abc", }, }, }, @@ -256,43 +259,37 @@ func TestGenerateDDLStatement(t *testing.T) { { name: "alter table rename column", want: `ALTER TABLE user RENAME COLUMN abc TO def;`, - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.RenameColumn{ - OldName: "abc", - NewName: "def", - }, + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.RenameColumn{ + OldName: "abc", + NewName: "def", }, }, }, { name: "alter table rename table", want: `ALTER TABLE user RENAME TO account;`, - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.RenameTable{ - Name: "account", - }, + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.RenameTable{ + Name: "account", }, }, }, { name: "alter table add constraint fk", want: `ALTER TABLE user ADD CONSTRAINT new_fk FOREIGN KEY (city_id) REFERENCES cities(id) ON DELETE CASCADE;`, - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.AddTableConstraint{ - Cons: &parse.ConstraintForeignKey{ - Name: "new_fk", - RefTable: "cities", - RefColumn: "id", - Column: "city_id", - Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, - Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, - }, + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddTableConstraint{ + Cons: &parse.ConstraintForeignKey{ + Name: "new_fk", + RefTable: "cities", + RefColumn: "id", + Column: "city_id", + Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, }, }, }, @@ -300,81 +297,74 @@ func TestGenerateDDLStatement(t *testing.T) { { name: "alter table drop constraint", want: `ALTER TABLE user DROP CONSTRAINT abc;`, - sql: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.DropTableConstraint{ - Name: "abc", - }, + sql: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropTableConstraint{ + Name: "abc", }, }, }, { name: "create index", want: `CREATE INDEX abc ON user(name);`, - sql: &parse.SQLStatement{ - SQL: &parse.CreateIndexStatement{ - Index: parse.Index{ - Name: "abc", - On: "user", - Columns: []string{"name"}, - Type: parse.IndexTypeBTree, - }, - }, + sql: &parse.CreateIndexStatement{ + Name: "abc", + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeBTree, }, }, { name: "create unique index", want: `CREATE UNIQUE INDEX abc ON user(name);`, - sql: &parse.SQLStatement{ - SQL: &parse.CreateIndexStatement{ - Index: parse.Index{ - Name: "abc", - On: "user", - Columns: []string{"name"}, - Type: parse.IndexTypeUnique, - }, - }, + sql: &parse.CreateIndexStatement{ + Name: "abc", + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeUnique, }, }, { name: "create index with no name", want: `CREATE INDEX ON user(name);`, - sql: &parse.SQLStatement{ - SQL: &parse.CreateIndexStatement{ - Index: parse.Index{ - On: "user", - Columns: []string{"name"}, - Type: parse.IndexTypeBTree, - }, - }, + sql: &parse.CreateIndexStatement{ + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeBTree, + }, + }, + { + name: "create index if not exist", + want: `CREATE INDEX IF NOT EXISTS abc ON user(name);`, + sql: &parse.CreateIndexStatement{ + IfNotExists: true, + Name: "abc", + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeBTree, }, }, { name: "drop index", want: `DROP INDEX abc;`, - sql: &parse.SQLStatement{ - SQL: &parse.DropIndexStatement{ - Name: "abc", - }, + sql: &parse.DropIndexStatement{ + Name: "abc", }, }, { - name: "drop index check exist", + name: "drop index if exist", want: `DROP INDEX IF EXISTS abc;`, - sql: &parse.SQLStatement{ - SQL: &parse.DropIndexStatement{ - Name: "abc", - CheckExist: true, - }, + sql: &parse.DropIndexStatement{ + Name: "abc", + CheckExist: true, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := generate.DDL(tt.sql) + got, err := generate.WriteDDL(tt.sql) require.NoError(t, err) assert.Equal(t, tt.want, got) }) diff --git a/internal/engine/generate/plpgsql.go b/internal/engine/generate/plpgsql.go index 5dbd201b6..87821e6bb 100644 --- a/internal/engine/generate/plpgsql.go +++ b/internal/engine/generate/plpgsql.go @@ -794,6 +794,9 @@ func (s *sqlGenerator) VisitCreateTableStatement(p0 *parse.CreateTableStatement) str := strings.Builder{} indent := " " str.WriteString("CREATE TABLE ") + if p0.IfNotExists { + str.WriteString("IF NOT EXISTS ") + } str.WriteString(p0.Name) str.WriteString(" (\n") for i, col := range p0.Columns { @@ -877,7 +880,29 @@ func (s *sqlGenerator) VisitAlterTableStatement(p0 *parse.AlterTableStatement) a } func (s *sqlGenerator) VisitCreateIndexStatement(p0 *parse.CreateIndexStatement) any { - return "CREATE " + p0.Index.String() + str := strings.Builder{} + str.WriteString("CREATE ") + + switch p0.Type { + case parse.IndexTypeBTree: + str.WriteString("INDEX ") + case parse.IndexTypeUnique: + str.WriteString("UNIQUE INDEX ") + default: + // should not happen + panic("unknown index type") + } + + if p0.IfNotExists { + str.WriteString("IF NOT EXISTS ") + } + if p0.Name != "" { + str.WriteString(p0.Name + " ") + } + str.WriteString("ON " + p0.On) + str.WriteString("(" + strings.Join(p0.Columns, ", ") + ")") + + return str.String() } func (s *sqlGenerator) VisitDropIndexStatement(p0 *parse.DropIndexStatement) any { diff --git a/internal/engine/generate/sql.go b/internal/engine/generate/sql.go index 1b7930ba3..068a19047 100644 --- a/internal/engine/generate/sql.go +++ b/internal/engine/generate/sql.go @@ -31,7 +31,10 @@ func WriteSQL(node *parse.SQLStatement, orderParams bool, pgSchema string) (stmt return stmt + ";", sqlGen.orderedParams, nil } -func DDL(node *parse.SQLStatement) (stmt string, err error) { +// WriteDDL converts a DDL node to a string. +// NOTE: this is temporary so that I can write tests, after we shift from *parse.SQLStatement +// to parse.SQLStmt, we can delete this. +func WriteDDL(node parse.SQLStmt) (stmt string, err error) { if node == nil { return "", fmt.Errorf("SQL parse node is nil") } @@ -45,6 +48,5 @@ func DDL(node *parse.SQLStatement) (stmt string, err error) { sqlGen := &sqlGenerator{} stmt = node.Accept(sqlGen).(string) - // stmt[1:] remove the leading "\n" - return stmt[1:] + ";", nil + return stmt + ";", nil } diff --git a/parse/antlr.go b/parse/antlr.go index db4b982e0..11bff9af4 100644 --- a/parse/antlr.go +++ b/parse/antlr.go @@ -79,7 +79,7 @@ func (s *schemaVisitor) VisitProcedure_entry(ctx *gen.Procedure_entryContext) an } func (s *schemaVisitor) VisitSql_entry(ctx *gen.Sql_entryContext) any { - return ctx.Sql().Accept(s) + return ctx.Sql_stmt().Accept(s) } // unknownExpression creates a new literal with an unknown type and null value. @@ -885,12 +885,33 @@ func (s *schemaVisitor) VisitProcedure_return(ctx *gen.Procedure_returnContext) return ret } -// VisitSQL visits a SQL statement. It is the top-level SQL visitor. -func (s *schemaVisitor) VisitSql(ctx *gen.SqlContext) any { - return ctx.Sql_statement().Accept(s) +// VisitSql_stmt_s visits a SQL statement. It is the top-level SQL visitor. +func (s *schemaVisitor) VisitSql_stmt(ctx *gen.Sql_stmtContext) any { + // NOTE: this should be temporary; we should combine dml and ddl. + if ctx.Sql_statement() != nil { + return ctx.Sql_statement().Accept(s) + } else { + return ctx.Ddl_stmt().Accept(s) + } +} + +// VisitDdl_stmt visits a SQL DDL statement. +func (s *schemaVisitor) VisitDdl_stmt(ctx *gen.Ddl_stmtContext) any { + switch { + case ctx.Create_table_statement() != nil: + return ctx.Create_table_statement().Accept(s).(*CreateTableStatement) + case ctx.Alter_table_statement() != nil: + return ctx.Alter_table_statement().Accept(s).(*AlterTableStatement) + case ctx.Create_index_statement() != nil: + return ctx.Create_index_statement().Accept(s).(*CreateIndexStatement) + case ctx.Drop_index_statement() != nil: + return ctx.Drop_index_statement().Accept(s).(*DropIndexStatement) + default: + panic("unknown DDL statement") + } } -// VisitSql_statement visits a SQL statement. It is called by all nested +// VisitSql_statement visits a SQL DML statement. It is called by all nested // sql statements (e.g. in procedures and actions) func (s *schemaVisitor) VisitSql_statement(ctx *gen.Sql_statementContext) any { stmt := &SQLStatement{ @@ -906,14 +927,6 @@ func (s *schemaVisitor) VisitSql_statement(ctx *gen.Sql_statementContext) any { } switch { - case ctx.Create_table_statement() != nil: - stmt.SQL = ctx.Create_table_statement().Accept(s).(*CreateTableStatement) - case ctx.Alter_table_statement() != nil: - stmt.SQL = ctx.Alter_table_statement().Accept(s).(*AlterTableStatement) - case ctx.Create_index_statement() != nil: - stmt.SQL = ctx.Create_index_statement().Accept(s).(*CreateIndexStatement) - case ctx.Drop_index_statement() != nil: - stmt.SQL = ctx.Drop_index_statement().Accept(s).(*DropIndexStatement) case ctx.Select_statement() != nil: stmt.SQL = ctx.Select_statement().Accept(s).(*SelectStatement) case ctx.Update_statement() != nil: @@ -923,7 +936,7 @@ func (s *schemaVisitor) VisitSql_statement(ctx *gen.Sql_statementContext) any { case ctx.Delete_statement() != nil: stmt.SQL = ctx.Delete_statement().Accept(s).(*DeleteStatement) default: - panic("unknown sql statement") + panic("unknown dml statement") } stmt.Set(ctx) @@ -949,16 +962,33 @@ func (s *schemaVisitor) VisitCommon_table_expression(ctx *gen.Common_table_expre func (s *schemaVisitor) VisitCreate_table_statement(ctx *gen.Create_table_statementContext) any { stmt := &CreateTableStatement{ Name: ctx.GetName().Accept(s).(string), - Columns: arr[*Column](len(ctx.AllC_column_def())), - Constraints: arr[Constraint](len(ctx.AllConstraint_def())), - Indexes: arr[*Index](len(ctx.AllC_index_def())), + Columns: arr[*Column](len(ctx.AllTable_column_def())), + Constraints: arr[Constraint](len(ctx.AllTable_constraint_def())), + Indexes: arr[*TableIndex](len(ctx.AllTable_index_def())), } - for i, c := range ctx.AllC_column_def() { - stmt.Columns[i] = c.Accept(s).(*Column) + if ctx.EXISTS() != nil { + stmt.IfNotExists = true } + // for basic validation var primaryKey []string + allColumns := make(map[string]bool) + allConstraints := make(map[string]bool) + allIndexes := make(map[string]bool) + + if len(ctx.AllTable_column_def()) == 0 { + s.errs.RuleErr(ctx, ErrTableDefinition, "no column definitions found") + } + for i, c := range ctx.AllTable_column_def() { + col := c.Accept(s).(*Column) + stmt.Columns[i] = col + if allColumns[col.Name] { + s.errs.RuleErr(c, ErrCollation, "constraint name exists") + } else { + allColumns[col.Name] = true + } + } for _, column := range stmt.Columns { for _, constraint := range column.Constraints { @@ -969,7 +999,7 @@ func (s *schemaVisitor) VisitCreate_table_statement(ctx *gen.Create_table_statem } } - for i, c := range ctx.AllConstraint_def() { + for i, c := range ctx.AllTable_constraint_def() { constraint := c.Accept(s).(Constraint) stmt.Constraints[i] = constraint @@ -980,28 +1010,81 @@ func (s *schemaVisitor) VisitCreate_table_statement(ctx *gen.Create_table_statem continue } + for _, col := range cc.Columns { + if !allColumns[col] { + s.errs.RuleErr(c, ErrUnknownColumn, "primary key on unknown column") + } + } + primaryKey = cc.Columns + case *ConstraintCheck: + if cc.Name != "" { + if allConstraints[cc.Name] { + s.errs.RuleErr(c, ErrCollation, "constraint name exists") + } else { + allConstraints[cc.Name] = true + } + } + case *ConstraintUnique: + if cc.Name != "" { + if allConstraints[cc.Name] { + s.errs.RuleErr(c, ErrCollation, "constraint name exists") + } else { + allConstraints[cc.Name] = true + } + } + + for _, col := range cc.Columns { + if !allColumns[col] { + s.errs.RuleErr(c, ErrUnknownColumn, "primary key on unknown column") + } + } + case *ConstraintForeignKey: + if cc.Name != "" { + if allConstraints[cc.Name] { + s.errs.RuleErr(c, ErrCollation, "constraint name exists") + } else { + allConstraints[cc.Name] = true + } + } + + if !allColumns[cc.RefColumn] { + s.errs.RuleErr(c, ErrUnknownColumn, "index on unknown column") + } + default: + // should not happen + panic("unknown constraint type") } } - for i, c := range ctx.AllC_index_def() { - stmt.Indexes[i] = c.Accept(s).(*Index) + for i, c := range ctx.AllTable_index_def() { + idx := c.Accept(s).(*TableIndex) + stmt.Indexes[i] = idx + + if idx.Name != "" { + if allIndexes[idx.Name] { + s.errs.RuleErr(c, ErrCollation, "index name exists") + } else { + allIndexes[idx.Name] = true + } + } + + for _, col := range idx.Columns { + if !allColumns[col] { + s.errs.RuleErr(c, ErrUnknownColumn, "index on unknown column") + } + } } if len(primaryKey) == 0 { s.errs.RuleErr(ctx, ErrNoPrimaryKey, "no primary key declared") } - //// TODO: improve - //if ctx.GetExtra_comma() != nil { - // s.errs.TokenErr(ctx.GetExtra_comma(), ErrSyntax, "extra comma") - //} - stmt.Set(ctx) return stmt } -func (s *schemaVisitor) VisitC_column_def(ctx *gen.C_column_defContext) interface{} { +func (s *schemaVisitor) VisitTable_column_def(ctx *gen.Table_column_defContext) interface{} { column := &Column{ Name: s.getIdent(ctx.IDENTIFIER()), Type: ctx.Type_().Accept(s).(*types.DataType), @@ -1012,8 +1095,6 @@ func (s *schemaVisitor) VisitC_column_def(ctx *gen.C_column_defContext) interfac column.Constraints[i] = c.Accept(s).(Constraint) } - // TODO: basic validations, like default value should be same as column type - column.Set(ctx) return column } @@ -1081,7 +1162,6 @@ func (s *schemaVisitor) VisitFk_constraint(ctx *gen.Fk_constraintContext) any { c.Dos[i] = DO_NO_ACTION case a.CASCADE() != nil: c.Dos[i] = DO_CASCADE - return c default: panic("unknown foreign key action") } @@ -1095,18 +1175,17 @@ func (s *schemaVisitor) VisitFk_action(ctx *gen.Fk_actionContext) interface{} { panic("implement me") } -func (s *schemaVisitor) VisitConstraint_def(ctx *gen.Constraint_defContext) any { - c := ctx.Unnamed_constraint().Accept(s).(Constraint) +func (s *schemaVisitor) VisitTable_constraint_def(ctx *gen.Table_constraint_defContext) any { + name := "" if ctx.GetName() != nil { - c.SetName(ctx.GetName().Accept(s).(string)) + name = ctx.GetName().Accept(s).(string) } - c.Set(ctx) - return c -} -func (s *schemaVisitor) VisitUnnamed_constraint(ctx *gen.Unnamed_constraintContext) any { switch { case ctx.PRIMARY() != nil: + if name != "" { + s.errs.RuleErr(ctx, ErrTableDefinition, "primary key has name") + } c := &ConstraintPrimaryKey{ Columns: ctx.Identifier_list().Accept(s).([]string), } @@ -1114,6 +1193,7 @@ func (s *schemaVisitor) VisitUnnamed_constraint(ctx *gen.Unnamed_constraintConte return c case ctx.UNIQUE() != nil: c := &ConstraintUnique{ + Name: name, Columns: ctx.Identifier_list().Accept(s).([]string), } c.Set(ctx) @@ -1121,22 +1201,23 @@ func (s *schemaVisitor) VisitUnnamed_constraint(ctx *gen.Unnamed_constraintConte case ctx.CHECK() != nil: param := ctx.Sql_expr().Accept(s).(Expression) c := &ConstraintCheck{ + Name: name, Param: param, } c.Set(ctx) return c case ctx.FOREIGN() != nil: c := ctx.Fk_constraint().Accept(s).(*ConstraintForeignKey) - c.Set(ctx) ////==== - c.Column = ctx.Identifier().Accept(s).(string) + c.Name = name + c.Column = ctx.GetColumn().Accept(s).(string) return c default: panic("unknown constraint") } } -func (s *schemaVisitor) VisitC_index_def(ctx *gen.C_index_defContext) any { - index := &Index{ +func (s *schemaVisitor) VisitTable_index_def(ctx *gen.Table_index_defContext) any { + index := &TableIndex{ Name: ctx.Identifier().Accept(s).(string), Columns: ctx.Identifier_list().Accept(s).([]string), Type: IndexTypeBTree, @@ -1237,7 +1318,7 @@ func (s *schemaVisitor) VisitRename_table(ctx *gen.Rename_tableContext) any { func (s *schemaVisitor) VisitAdd_table_constraint(ctx *gen.Add_table_constraintContext) any { a := &AddTableConstraint{ - Cons: ctx.Constraint_def().Accept(s).(Constraint), + Cons: ctx.Table_constraint_def().Accept(s).(Constraint), } a.Set(ctx) @@ -1255,11 +1336,13 @@ func (s *schemaVisitor) VisitDrop_table_constraint(ctx *gen.Drop_table_constrain func (s *schemaVisitor) VisitCreate_index_statement(ctx *gen.Create_index_statementContext) any { a := &CreateIndexStatement{ - Index: Index{ - On: ctx.GetTable().Accept(s).(string), - Columns: ctx.GetColumns().Accept(s).([]string), - Type: IndexTypeBTree, - }, + On: ctx.GetTable().Accept(s).(string), + Columns: ctx.GetColumns().Accept(s).([]string), + Type: IndexTypeBTree, + } + + if ctx.EXISTS() != nil { + a.IfNotExists = true } if ctx.GetName() != nil { diff --git a/parse/ast.go b/parse/ast.go index d759c8206..70cc37f83 100644 --- a/parse/ast.go +++ b/parse/ast.go @@ -507,11 +507,17 @@ func (c *CommonTableExpression) Accept(v Visitor) any { return v.VisitCommonTableExpression(c) } -// SQLStatement is a SQL statement. +// SQLStmt is top-level statement, can be any SQL statement. +type SQLStmt interface { + Node + StmtType() SQLStatementType +} + +// SQLStatement is a DML statement with common table expression. type SQLStatement struct { Position CTEs []*CommonTableExpression - // Recursive is true if the RECUSRIVE keyword is present. + // Recursive is true if the RECURSIVE keyword is present. Recursive bool // SQL can be an insert, update, delete, or select statement. SQL SQLCore @@ -521,7 +527,11 @@ func (s *SQLStatement) Accept(v Visitor) any { return v.VisitSQLStatement(s) } -// SQLCore is a top-level statement. +func (s *SQLStatement) StmtType() SQLStatementType { + return s.SQL.StmtType() +} + +// SQLCore is a DML statement. // It can be INSERT, UPDATE, DELETE, SELECT. type SQLCore interface { Node @@ -546,10 +556,11 @@ const ( type CreateTableStatement struct { Position - Name string - Columns []*Column + IfNotExists bool + Name string + Columns []*Column // Indexes contains the non-inline indexes - Indexes []*Index + Indexes []*TableIndex // Constraints contains the non-inline constraints Constraints []Constraint } @@ -588,7 +599,6 @@ type Constraint interface { Node ConstraintType() ConstraintType - SetName(string) ToSQL() string } @@ -614,8 +624,6 @@ func (c *ConstraintPrimaryKey) ToSQL() string { return "PRIMARY KEY (" + strings.Join(c.Columns, ", ") + ")" } -func (c *ConstraintPrimaryKey) SetName(name string) {} - type ConstraintUnique struct { Position @@ -644,10 +652,6 @@ func (c *ConstraintUnique) ToSQL() string { return "CONSTRAINT " + c.Name + " " + s } -func (c *ConstraintUnique) SetName(name string) { - c.Name = name -} - type ConstraintDefault struct { Position @@ -668,10 +672,6 @@ func (c *ConstraintDefault) ToSQL() string { return "DEFAULT " + c.Value.String() } -func (c *ConstraintDefault) SetName(name string) { - c.Name = name -} - type ConstraintNotNull struct { Position @@ -691,10 +691,6 @@ func (c *ConstraintNotNull) ToSQL() string { return "NOT NULL" } -func (c *ConstraintNotNull) SetName(name string) { - c.Name = name -} - type ConstraintCheck struct { Position @@ -714,10 +710,6 @@ func (c *ConstraintCheck) ToSQL() string { return "" } -func (c *ConstraintCheck) SetName(name string) { - c.Name = name -} - type ConstraintForeignKey struct { Position @@ -754,10 +746,6 @@ func (c *ConstraintForeignKey) ToSQL() string { return "CONSTRAINT " + c.Name + " FOREIGN KEY (" + c.Column + ") " + s } -func (c *ConstraintForeignKey) SetName(name string) { - c.Name = name -} - type IndexType string const ( @@ -770,40 +758,42 @@ const ( IndexTypeUnique IndexType = "unique" ) -// Index represents non-inline index declaration. -type Index struct { +// TableIndex represents table index declaration, both inline and non-inline. +type TableIndex struct { Position Name string - On string Columns []string Type IndexType } -func (i *Index) String() string { - if i.Type == IndexTypeUnique && len(i.Columns) == 0 { //inline - return "UNIQUE" +func (i *TableIndex) String() string { + if len(i.Columns) == 0 { + if i.Type == IndexTypeUnique { + return "UNIQUE" + } + panic("inline index can only be UNIQUE") } str := strings.Builder{} - str.WriteString("INDEX ") - if i.Name != "" { - str.WriteString(i.Name + " ") - } - if i.On != "" { - str.WriteString("ON " + i.On) - } - str.WriteString("(" + strings.Join(i.Columns, ", ") + ")") switch i.Type { case IndexTypeBTree: - return str.String() + str.WriteString("INDEX ") case IndexTypeUnique: - return "UNIQUE " + str.String() + str.WriteString("UNIQUE INDEX ") default: // should not happen panic("unknown index type") } + + if i.Name != "" { + str.WriteString(i.Name + " ") + } + + str.WriteString("(" + strings.Join(i.Columns, ", ") + ")") + + return str.String() } // ForeignKey is a foreign key in a table. @@ -1068,7 +1058,13 @@ func (a *DropTableConstraint) ToSQL() string { } type CreateIndexStatement struct { - Index + Position + + IfNotExists bool + Name string + On string + Columns []string + Type IndexType } func (s *CreateIndexStatement) Accept(v Visitor) any { diff --git a/parse/gen/kuneiform_parser.go b/parse/gen/kuneiform_parser.go index 8e490ddf5..88be888e8 100644 --- a/parse/gen/kuneiform_parser.go +++ b/parse/gen/kuneiform_parser.go @@ -79,12 +79,12 @@ func kuneiformparserParserInit() { "schema_entry", "sql_entry", "action_entry", "procedure_entry", "literal", "identifier", "identifier_list", "type", "type_cast", "variable", "variable_list", "schema", "annotation", "database_declaration", "use_declaration", "table_declaration", - "column_def", "c_column_def", "index_def", "c_index_def", "foreign_key_def", + "column_def", "table_column_def", "index_def", "table_index_def", "foreign_key_def", "foreign_key_action", "type_list", "named_type_list", "typed_variable_list", "constraint", "inline_constraint", "fk_action", "fk_constraint", "access_modifier", - "action_declaration", "procedure_declaration", "procedure_return", "sql", - "sql_statement", "common_table_expression", "create_table_statement", - "constraint_def", "unnamed_constraint", "alter_table_statement", "alter_table_action", + "action_declaration", "procedure_declaration", "procedure_return", "sql_stmt", + "ddl_stmt", "sql_statement", "common_table_expression", "create_table_statement", + "table_constraint_def", "alter_table_statement", "alter_table_action", "create_index_statement", "drop_index_statement", "select_statement", "compound_operator", "ordering_term", "select_core", "relation", "join", "result_column", "update_statement", "update_set_clause", "insert_statement", @@ -96,7 +96,7 @@ func kuneiformparserParserInit() { } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 145, 1383, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, + 4, 1, 145, 1393, 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, @@ -141,637 +141,643 @@ func kuneiformparserParserInit() { 25, 408, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 423, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 435, 8, 27, - 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 445, 8, - 28, 10, 28, 12, 28, 448, 9, 28, 3, 28, 450, 8, 28, 1, 29, 1, 29, 1, 30, - 5, 30, 455, 8, 30, 10, 30, 12, 30, 458, 9, 30, 1, 30, 1, 30, 1, 30, 1, - 30, 3, 30, 464, 8, 30, 1, 30, 1, 30, 4, 30, 468, 8, 30, 11, 30, 12, 30, - 469, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 5, 31, 477, 8, 31, 10, 31, 12, - 31, 480, 9, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 486, 8, 31, 1, 31, 1, - 31, 4, 31, 490, 8, 31, 11, 31, 12, 31, 491, 1, 31, 3, 31, 495, 8, 31, 1, - 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 503, 8, 32, 1, 32, 1, 32, - 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 513, 8, 32, 1, 33, 1, - 33, 1, 33, 1, 34, 1, 34, 3, 34, 520, 8, 34, 1, 34, 1, 34, 1, 34, 5, 34, - 525, 8, 34, 10, 34, 12, 34, 528, 9, 34, 3, 34, 530, 8, 34, 1, 34, 1, 34, - 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 540, 8, 34, 1, 35, 1, - 35, 1, 35, 1, 35, 1, 35, 5, 35, 547, 8, 35, 10, 35, 12, 35, 550, 9, 35, - 3, 35, 552, 8, 35, 1, 35, 3, 35, 555, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, - 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 569, 8, - 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 575, 8, 36, 5, 36, 577, 8, 36, 10, - 36, 12, 36, 580, 9, 36, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37, 586, 8, 37, - 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, + 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 445, 8, + 28, 3, 28, 447, 8, 28, 1, 29, 1, 29, 1, 30, 5, 30, 452, 8, 30, 10, 30, + 12, 30, 455, 9, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 461, 8, 30, 1, 30, + 1, 30, 4, 30, 465, 8, 30, 11, 30, 12, 30, 466, 1, 30, 1, 30, 1, 30, 1, + 30, 1, 31, 5, 31, 474, 8, 31, 10, 31, 12, 31, 477, 9, 31, 1, 31, 1, 31, + 1, 31, 1, 31, 3, 31, 483, 8, 31, 1, 31, 1, 31, 4, 31, 487, 8, 31, 11, 31, + 12, 31, 488, 1, 31, 3, 31, 492, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, + 1, 32, 3, 32, 500, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, + 32, 1, 32, 3, 32, 510, 8, 32, 1, 33, 1, 33, 3, 33, 514, 8, 33, 1, 33, 1, + 33, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 522, 8, 34, 1, 35, 1, 35, 3, 35, + 526, 8, 35, 1, 35, 1, 35, 1, 35, 5, 35, 531, 8, 35, 10, 35, 12, 35, 534, + 9, 35, 3, 35, 536, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 542, 8, 35, + 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 549, 8, 36, 10, 36, 12, 36, 552, + 9, 36, 3, 36, 554, 8, 36, 1, 36, 3, 36, 557, 8, 36, 1, 36, 1, 36, 1, 36, + 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 569, 8, 37, 1, + 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 576, 8, 37, 1, 37, 1, 37, 1, 37, + 1, 37, 3, 37, 582, 8, 37, 5, 37, 584, 8, 37, 10, 37, 12, 37, 587, 9, 37, + 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 593, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, - 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 613, 8, 38, 1, 39, 1, 39, 1, 39, 1, - 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, - 628, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, - 40, 3, 40, 639, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, - 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, - 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 663, 8, 40, 1, 41, 1, 41, 3, 41, - 667, 8, 41, 1, 41, 1, 41, 3, 41, 671, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, - 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 683, 8, 42, 1, 42, 1, - 42, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 691, 8, 43, 10, 43, 12, 43, 694, - 9, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 701, 8, 43, 10, 43, 12, - 43, 704, 9, 43, 3, 43, 706, 8, 43, 1, 43, 1, 43, 3, 43, 710, 8, 43, 1, - 43, 1, 43, 3, 43, 714, 8, 43, 1, 44, 1, 44, 3, 44, 718, 8, 44, 1, 44, 1, - 44, 3, 44, 722, 8, 44, 1, 45, 1, 45, 3, 45, 726, 8, 45, 1, 45, 1, 45, 3, - 45, 730, 8, 45, 1, 46, 1, 46, 3, 46, 734, 8, 46, 1, 46, 1, 46, 1, 46, 5, - 46, 739, 8, 46, 10, 46, 12, 46, 742, 9, 46, 1, 46, 1, 46, 1, 46, 5, 46, - 747, 8, 46, 10, 46, 12, 46, 750, 9, 46, 3, 46, 752, 8, 46, 1, 46, 1, 46, - 3, 46, 756, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 763, 8, 46, - 3, 46, 765, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, - 46, 1, 46, 5, 46, 776, 8, 46, 10, 46, 12, 46, 779, 9, 46, 3, 46, 781, 8, - 46, 1, 47, 1, 47, 3, 47, 785, 8, 47, 1, 47, 3, 47, 788, 8, 47, 1, 47, 1, - 47, 1, 47, 1, 47, 3, 47, 794, 8, 47, 1, 47, 3, 47, 797, 8, 47, 3, 47, 799, - 8, 47, 1, 48, 3, 48, 802, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, - 49, 1, 49, 3, 49, 811, 8, 49, 1, 49, 3, 49, 814, 8, 49, 1, 49, 1, 49, 1, - 49, 3, 49, 819, 8, 49, 1, 49, 3, 49, 822, 8, 49, 1, 50, 1, 50, 1, 50, 3, - 50, 827, 8, 50, 1, 50, 3, 50, 830, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, - 50, 836, 8, 50, 10, 50, 12, 50, 839, 9, 50, 1, 50, 1, 50, 1, 50, 5, 50, - 844, 8, 50, 10, 50, 12, 50, 847, 9, 50, 3, 50, 849, 8, 50, 1, 50, 1, 50, - 3, 50, 853, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, - 52, 3, 52, 863, 8, 52, 1, 52, 3, 52, 866, 8, 52, 1, 52, 1, 52, 1, 52, 1, - 52, 3, 52, 872, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, - 1, 52, 1, 52, 5, 52, 883, 8, 52, 10, 52, 12, 52, 886, 9, 52, 1, 52, 3, - 52, 889, 8, 52, 1, 52, 3, 52, 892, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, - 53, 1, 53, 1, 53, 3, 53, 901, 8, 53, 3, 53, 903, 8, 53, 1, 53, 1, 53, 1, - 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 912, 8, 53, 10, 53, 12, 53, 915, - 9, 53, 1, 53, 1, 53, 3, 53, 919, 8, 53, 3, 53, 921, 8, 53, 1, 54, 1, 54, - 1, 54, 1, 54, 3, 54, 927, 8, 54, 1, 54, 3, 54, 930, 8, 54, 1, 54, 1, 54, - 3, 54, 934, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 941, 8, 55, - 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 947, 8, 55, 1, 55, 1, 55, 1, 55, 1, - 55, 1, 55, 1, 55, 1, 55, 3, 55, 956, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, - 961, 8, 55, 1, 55, 1, 55, 3, 55, 965, 8, 55, 1, 55, 1, 55, 3, 55, 969, - 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 974, 8, 55, 1, 55, 1, 55, 3, 55, 978, - 8, 55, 1, 55, 1, 55, 3, 55, 982, 8, 55, 1, 55, 4, 55, 985, 8, 55, 11, 55, - 12, 55, 986, 1, 55, 1, 55, 3, 55, 991, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, - 996, 8, 55, 1, 55, 3, 55, 999, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, - 1005, 8, 55, 1, 55, 1, 55, 3, 55, 1009, 8, 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, 1022, 8, 55, - 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1028, 8, 55, 1, 55, 1, 55, 1, 55, 1, + 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 618, + 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, + 40, 1, 40, 1, 40, 1, 40, 3, 40, 633, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, + 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 644, 8, 40, 1, 40, 1, 40, 1, + 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, + 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 668, + 8, 40, 1, 41, 1, 41, 3, 41, 672, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, + 41, 678, 8, 41, 1, 41, 3, 41, 681, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, + 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 693, 8, 42, 1, 42, 1, 42, + 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 701, 8, 43, 10, 43, 12, 43, 704, 9, + 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 711, 8, 43, 10, 43, 12, 43, + 714, 9, 43, 3, 43, 716, 8, 43, 1, 43, 1, 43, 3, 43, 720, 8, 43, 1, 43, + 1, 43, 3, 43, 724, 8, 43, 1, 44, 1, 44, 3, 44, 728, 8, 44, 1, 44, 1, 44, + 3, 44, 732, 8, 44, 1, 45, 1, 45, 3, 45, 736, 8, 45, 1, 45, 1, 45, 3, 45, + 740, 8, 45, 1, 46, 1, 46, 3, 46, 744, 8, 46, 1, 46, 1, 46, 1, 46, 5, 46, + 749, 8, 46, 10, 46, 12, 46, 752, 9, 46, 1, 46, 1, 46, 1, 46, 5, 46, 757, + 8, 46, 10, 46, 12, 46, 760, 9, 46, 3, 46, 762, 8, 46, 1, 46, 1, 46, 3, + 46, 766, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 773, 8, 46, 3, + 46, 775, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, + 1, 46, 5, 46, 786, 8, 46, 10, 46, 12, 46, 789, 9, 46, 3, 46, 791, 8, 46, + 1, 47, 1, 47, 3, 47, 795, 8, 47, 1, 47, 3, 47, 798, 8, 47, 1, 47, 1, 47, + 1, 47, 1, 47, 3, 47, 804, 8, 47, 1, 47, 3, 47, 807, 8, 47, 3, 47, 809, + 8, 47, 1, 48, 3, 48, 812, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, + 49, 1, 49, 3, 49, 821, 8, 49, 1, 49, 3, 49, 824, 8, 49, 1, 49, 1, 49, 1, + 49, 3, 49, 829, 8, 49, 1, 49, 3, 49, 832, 8, 49, 1, 50, 1, 50, 1, 50, 3, + 50, 837, 8, 50, 1, 50, 3, 50, 840, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, + 50, 846, 8, 50, 10, 50, 12, 50, 849, 9, 50, 1, 50, 1, 50, 1, 50, 5, 50, + 854, 8, 50, 10, 50, 12, 50, 857, 9, 50, 3, 50, 859, 8, 50, 1, 50, 1, 50, + 3, 50, 863, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, + 52, 3, 52, 873, 8, 52, 1, 52, 3, 52, 876, 8, 52, 1, 52, 1, 52, 1, 52, 1, + 52, 3, 52, 882, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, + 1, 52, 1, 52, 5, 52, 893, 8, 52, 10, 52, 12, 52, 896, 9, 52, 1, 52, 3, + 52, 899, 8, 52, 1, 52, 3, 52, 902, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, + 53, 1, 53, 1, 53, 3, 53, 911, 8, 53, 3, 53, 913, 8, 53, 1, 53, 1, 53, 1, + 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 922, 8, 53, 10, 53, 12, 53, 925, + 9, 53, 1, 53, 1, 53, 3, 53, 929, 8, 53, 3, 53, 931, 8, 53, 1, 54, 1, 54, + 1, 54, 1, 54, 3, 54, 937, 8, 54, 1, 54, 3, 54, 940, 8, 54, 1, 54, 1, 54, + 3, 54, 944, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 951, 8, 55, + 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 957, 8, 55, 1, 55, 1, 55, 1, 55, 1, + 55, 1, 55, 1, 55, 1, 55, 3, 55, 966, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, + 971, 8, 55, 1, 55, 1, 55, 3, 55, 975, 8, 55, 1, 55, 1, 55, 3, 55, 979, + 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 984, 8, 55, 1, 55, 1, 55, 3, 55, 988, + 8, 55, 1, 55, 1, 55, 3, 55, 992, 8, 55, 1, 55, 4, 55, 995, 8, 55, 11, 55, + 12, 55, 996, 1, 55, 1, 55, 3, 55, 1001, 8, 55, 1, 55, 1, 55, 1, 55, 3, + 55, 1006, 8, 55, 1, 55, 3, 55, 1009, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, + 3, 55, 1015, 8, 55, 1, 55, 1, 55, 3, 55, 1019, 8, 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, 1032, + 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1038, 8, 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, 1, 55, - 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1048, 8, 55, 1, 55, 1, 55, 1, 55, 1, - 55, 3, 55, 1054, 8, 55, 1, 55, 1, 55, 3, 55, 1058, 8, 55, 3, 55, 1060, - 8, 55, 1, 55, 1, 55, 3, 55, 1064, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, - 55, 3, 55, 1071, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1077, 8, 55, - 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1084, 8, 55, 1, 55, 1, 55, 1, - 55, 1, 55, 1, 55, 1, 55, 3, 55, 1092, 8, 55, 5, 55, 1094, 8, 55, 10, 55, - 12, 55, 1097, 9, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1103, 8, 56, 1, - 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1110, 8, 56, 10, 56, 12, 56, 1113, - 9, 56, 3, 56, 1115, 8, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, - 57, 1, 58, 1, 58, 1, 58, 5, 58, 1127, 8, 58, 10, 58, 12, 58, 1130, 9, 58, - 1, 59, 1, 59, 1, 59, 3, 59, 1135, 8, 59, 1, 59, 1, 59, 3, 59, 1139, 8, - 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 5, 60, 1146, 8, 60, 10, 60, 12, - 60, 1149, 9, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1155, 8, 61, 1, 61, - 1, 61, 1, 61, 1, 61, 3, 61, 1161, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, - 61, 3, 61, 1168, 8, 61, 1, 61, 3, 61, 1171, 8, 61, 1, 62, 5, 62, 1174, - 8, 62, 10, 62, 12, 62, 1177, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, - 3, 63, 1184, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1190, 8, 63, 1, - 63, 1, 63, 3, 63, 1194, 8, 63, 1, 63, 1, 63, 3, 63, 1198, 8, 63, 1, 63, - 1, 63, 3, 63, 1202, 8, 63, 1, 63, 1, 63, 3, 63, 1206, 8, 63, 1, 63, 1, - 63, 3, 63, 1210, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, + 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1058, 8, 55, 1, 55, 1, 55, 1, + 55, 1, 55, 3, 55, 1064, 8, 55, 1, 55, 1, 55, 3, 55, 1068, 8, 55, 3, 55, + 1070, 8, 55, 1, 55, 1, 55, 3, 55, 1074, 8, 55, 1, 55, 1, 55, 1, 55, 1, + 55, 1, 55, 3, 55, 1081, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1087, + 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1094, 8, 55, 1, 55, 1, + 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1102, 8, 55, 5, 55, 1104, 8, 55, + 10, 55, 12, 55, 1107, 9, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1113, 8, + 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1120, 8, 56, 10, 56, 12, + 56, 1123, 9, 56, 3, 56, 1125, 8, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, + 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 1137, 8, 58, 10, 58, 12, 58, + 1140, 9, 58, 1, 59, 1, 59, 1, 59, 3, 59, 1145, 8, 59, 1, 59, 1, 59, 3, + 59, 1149, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 5, 60, 1156, 8, 60, + 10, 60, 12, 60, 1159, 9, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1165, 8, + 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1171, 8, 61, 1, 61, 1, 61, 1, 61, + 1, 61, 1, 61, 3, 61, 1178, 8, 61, 1, 61, 3, 61, 1181, 8, 61, 1, 62, 5, + 62, 1184, 8, 62, 10, 62, 12, 62, 1187, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, + 1, 63, 3, 63, 1194, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1200, 8, + 63, 1, 63, 1, 63, 3, 63, 1204, 8, 63, 1, 63, 1, 63, 3, 63, 1208, 8, 63, + 1, 63, 1, 63, 3, 63, 1212, 8, 63, 1, 63, 1, 63, 3, 63, 1216, 8, 63, 1, + 63, 1, 63, 3, 63, 1220, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, - 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1234, 8, 63, 1, 63, 1, 63, 1, 63, - 1, 63, 3, 63, 1240, 8, 63, 1, 63, 1, 63, 3, 63, 1244, 8, 63, 3, 63, 1246, - 8, 63, 1, 63, 1, 63, 3, 63, 1250, 8, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1255, - 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1263, 8, 63, 5, - 63, 1265, 8, 63, 10, 63, 12, 63, 1268, 9, 63, 1, 64, 1, 64, 1, 64, 5, 64, - 1273, 8, 64, 10, 64, 12, 64, 1276, 9, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, - 65, 1, 65, 1, 65, 5, 65, 1285, 8, 65, 10, 65, 12, 65, 1288, 9, 65, 1, 65, - 1, 65, 3, 65, 1292, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1299, - 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, - 65, 3, 65, 1311, 8, 65, 1, 65, 1, 65, 5, 65, 1315, 8, 65, 10, 65, 12, 65, - 1318, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1326, 8, - 65, 10, 65, 12, 65, 1329, 9, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1334, 8, 65, - 10, 65, 12, 65, 1337, 9, 65, 1, 65, 3, 65, 1340, 8, 65, 1, 65, 1, 65, 1, - 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1350, 8, 65, 1, 65, 1, 65, - 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1358, 8, 65, 1, 66, 1, 66, 1, 67, 1, - 67, 1, 67, 3, 67, 1365, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 5, 68, - 1372, 8, 68, 10, 68, 12, 68, 1375, 9, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, - 69, 1, 69, 1, 69, 0, 2, 110, 126, 70, 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, 0, 15, 1, 0, 20, 21, 1, 0, - 129, 130, 1, 0, 140, 141, 3, 0, 52, 52, 56, 56, 67, 67, 1, 0, 64, 65, 1, - 0, 62, 63, 1, 0, 38, 41, 1, 0, 83, 84, 1, 0, 110, 111, 2, 0, 79, 81, 105, - 105, 3, 0, 14, 14, 19, 19, 22, 22, 1, 0, 70, 71, 2, 0, 15, 16, 23, 27, - 2, 0, 11, 11, 20, 21, 2, 0, 29, 29, 140, 140, 1579, 0, 140, 1, 0, 0, 0, - 2, 143, 1, 0, 0, 0, 4, 146, 1, 0, 0, 0, 6, 149, 1, 0, 0, 0, 8, 166, 1, - 0, 0, 0, 10, 172, 1, 0, 0, 0, 12, 174, 1, 0, 0, 0, 14, 182, 1, 0, 0, 0, - 16, 194, 1, 0, 0, 0, 18, 197, 1, 0, 0, 0, 20, 199, 1, 0, 0, 0, 22, 207, - 1, 0, 0, 0, 24, 217, 1, 0, 0, 0, 26, 235, 1, 0, 0, 0, 28, 239, 1, 0, 0, - 0, 30, 262, 1, 0, 0, 0, 32, 279, 1, 0, 0, 0, 34, 287, 1, 0, 0, 0, 36, 295, - 1, 0, 0, 0, 38, 302, 1, 0, 0, 0, 40, 313, 1, 0, 0, 0, 42, 339, 1, 0, 0, - 0, 44, 363, 1, 0, 0, 0, 46, 371, 1, 0, 0, 0, 48, 381, 1, 0, 0, 0, 50, 401, - 1, 0, 0, 0, 52, 422, 1, 0, 0, 0, 54, 424, 1, 0, 0, 0, 56, 436, 1, 0, 0, - 0, 58, 451, 1, 0, 0, 0, 60, 456, 1, 0, 0, 0, 62, 478, 1, 0, 0, 0, 64, 500, - 1, 0, 0, 0, 66, 514, 1, 0, 0, 0, 68, 529, 1, 0, 0, 0, 70, 541, 1, 0, 0, - 0, 72, 561, 1, 0, 0, 0, 74, 585, 1, 0, 0, 0, 76, 612, 1, 0, 0, 0, 78, 614, - 1, 0, 0, 0, 80, 662, 1, 0, 0, 0, 82, 664, 1, 0, 0, 0, 84, 678, 1, 0, 0, - 0, 86, 686, 1, 0, 0, 0, 88, 721, 1, 0, 0, 0, 90, 723, 1, 0, 0, 0, 92, 731, - 1, 0, 0, 0, 94, 798, 1, 0, 0, 0, 96, 801, 1, 0, 0, 0, 98, 821, 1, 0, 0, - 0, 100, 823, 1, 0, 0, 0, 102, 854, 1, 0, 0, 0, 104, 858, 1, 0, 0, 0, 106, - 893, 1, 0, 0, 0, 108, 922, 1, 0, 0, 0, 110, 1008, 1, 0, 0, 0, 112, 1098, - 1, 0, 0, 0, 114, 1118, 1, 0, 0, 0, 116, 1123, 1, 0, 0, 0, 118, 1131, 1, - 0, 0, 0, 120, 1147, 1, 0, 0, 0, 122, 1170, 1, 0, 0, 0, 124, 1175, 1, 0, - 0, 0, 126, 1209, 1, 0, 0, 0, 128, 1269, 1, 0, 0, 0, 130, 1357, 1, 0, 0, - 0, 132, 1359, 1, 0, 0, 0, 134, 1361, 1, 0, 0, 0, 136, 1368, 1, 0, 0, 0, - 138, 1378, 1, 0, 0, 0, 140, 141, 3, 22, 11, 0, 141, 142, 5, 0, 0, 1, 142, - 1, 1, 0, 0, 0, 143, 144, 3, 66, 33, 0, 144, 145, 5, 0, 0, 1, 145, 3, 1, - 0, 0, 0, 146, 147, 3, 120, 60, 0, 147, 148, 5, 0, 0, 1, 148, 5, 1, 0, 0, - 0, 149, 150, 3, 124, 62, 0, 150, 151, 5, 0, 0, 1, 151, 7, 1, 0, 0, 0, 152, - 167, 5, 128, 0, 0, 153, 155, 7, 0, 0, 0, 154, 153, 1, 0, 0, 0, 154, 155, - 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 167, 5, 131, 0, 0, 157, 159, 7, - 0, 0, 0, 158, 157, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 160, 1, 0, 0, - 0, 160, 161, 5, 131, 0, 0, 161, 162, 5, 12, 0, 0, 162, 167, 5, 131, 0, - 0, 163, 167, 7, 1, 0, 0, 164, 167, 5, 61, 0, 0, 165, 167, 5, 132, 0, 0, - 166, 152, 1, 0, 0, 0, 166, 154, 1, 0, 0, 0, 166, 158, 1, 0, 0, 0, 166, - 163, 1, 0, 0, 0, 166, 164, 1, 0, 0, 0, 166, 165, 1, 0, 0, 0, 167, 9, 1, - 0, 0, 0, 168, 169, 5, 32, 0, 0, 169, 170, 5, 139, 0, 0, 170, 173, 5, 32, - 0, 0, 171, 173, 5, 139, 0, 0, 172, 168, 1, 0, 0, 0, 172, 171, 1, 0, 0, - 0, 173, 11, 1, 0, 0, 0, 174, 179, 3, 10, 5, 0, 175, 176, 5, 9, 0, 0, 176, - 178, 3, 10, 5, 0, 177, 175, 1, 0, 0, 0, 178, 181, 1, 0, 0, 0, 179, 177, - 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 13, 1, 0, 0, 0, 181, 179, 1, 0, - 0, 0, 182, 188, 5, 139, 0, 0, 183, 184, 5, 7, 0, 0, 184, 185, 5, 131, 0, - 0, 185, 186, 5, 9, 0, 0, 186, 187, 5, 131, 0, 0, 187, 189, 5, 8, 0, 0, - 188, 183, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 192, 1, 0, 0, 0, 190, - 191, 5, 3, 0, 0, 191, 193, 5, 4, 0, 0, 192, 190, 1, 0, 0, 0, 192, 193, - 1, 0, 0, 0, 193, 15, 1, 0, 0, 0, 194, 195, 5, 28, 0, 0, 195, 196, 3, 14, - 7, 0, 196, 17, 1, 0, 0, 0, 197, 198, 7, 2, 0, 0, 198, 19, 1, 0, 0, 0, 199, - 204, 3, 18, 9, 0, 200, 201, 5, 9, 0, 0, 201, 203, 3, 18, 9, 0, 202, 200, - 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, - 0, 0, 205, 21, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 214, 3, 26, 13, 0, - 208, 213, 3, 28, 14, 0, 209, 213, 3, 30, 15, 0, 210, 213, 3, 60, 30, 0, - 211, 213, 3, 62, 31, 0, 212, 208, 1, 0, 0, 0, 212, 209, 1, 0, 0, 0, 212, - 210, 1, 0, 0, 0, 212, 211, 1, 0, 0, 0, 213, 216, 1, 0, 0, 0, 214, 212, - 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 23, 1, 0, 0, 0, 216, 214, 1, 0, - 0, 0, 217, 218, 5, 141, 0, 0, 218, 231, 5, 7, 0, 0, 219, 220, 5, 139, 0, - 0, 220, 221, 5, 15, 0, 0, 221, 228, 3, 8, 4, 0, 222, 223, 5, 9, 0, 0, 223, - 224, 5, 139, 0, 0, 224, 225, 5, 15, 0, 0, 225, 227, 3, 8, 4, 0, 226, 222, - 1, 0, 0, 0, 227, 230, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, - 0, 0, 229, 232, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 231, 219, 1, 0, 0, 0, - 231, 232, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 234, 5, 8, 0, 0, 234, - 25, 1, 0, 0, 0, 235, 236, 5, 33, 0, 0, 236, 237, 5, 139, 0, 0, 237, 238, - 5, 6, 0, 0, 238, 27, 1, 0, 0, 0, 239, 240, 5, 34, 0, 0, 240, 256, 5, 139, - 0, 0, 241, 242, 5, 1, 0, 0, 242, 243, 5, 139, 0, 0, 243, 244, 5, 5, 0, - 0, 244, 251, 3, 8, 4, 0, 245, 246, 5, 9, 0, 0, 246, 247, 5, 139, 0, 0, - 247, 248, 5, 5, 0, 0, 248, 250, 3, 8, 4, 0, 249, 245, 1, 0, 0, 0, 250, - 253, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 251, 252, 1, 0, 0, 0, 252, 254, - 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 254, 255, 5, 2, 0, 0, 255, 257, 1, 0, - 0, 0, 256, 241, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 258, 1, 0, 0, 0, - 258, 259, 5, 82, 0, 0, 259, 260, 5, 139, 0, 0, 260, 261, 5, 6, 0, 0, 261, - 29, 1, 0, 0, 0, 262, 263, 5, 35, 0, 0, 263, 264, 5, 139, 0, 0, 264, 265, - 5, 1, 0, 0, 265, 274, 3, 32, 16, 0, 266, 270, 5, 9, 0, 0, 267, 271, 3, - 32, 16, 0, 268, 271, 3, 36, 18, 0, 269, 271, 3, 40, 20, 0, 270, 267, 1, - 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271, 273, 1, 0, 0, - 0, 272, 266, 1, 0, 0, 0, 273, 276, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, - 275, 1, 0, 0, 0, 275, 277, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 277, 278, - 5, 2, 0, 0, 278, 31, 1, 0, 0, 0, 279, 280, 5, 139, 0, 0, 280, 284, 3, 14, - 7, 0, 281, 283, 3, 50, 25, 0, 282, 281, 1, 0, 0, 0, 283, 286, 1, 0, 0, - 0, 284, 282, 1, 0, 0, 0, 284, 285, 1, 0, 0, 0, 285, 33, 1, 0, 0, 0, 286, - 284, 1, 0, 0, 0, 287, 288, 5, 139, 0, 0, 288, 292, 3, 14, 7, 0, 289, 291, - 3, 52, 26, 0, 290, 289, 1, 0, 0, 0, 291, 294, 1, 0, 0, 0, 292, 290, 1, - 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 35, 1, 0, 0, 0, 294, 292, 1, 0, 0, - 0, 295, 296, 5, 142, 0, 0, 296, 297, 7, 3, 0, 0, 297, 298, 5, 7, 0, 0, - 298, 299, 3, 12, 6, 0, 299, 300, 5, 8, 0, 0, 300, 37, 1, 0, 0, 0, 301, - 303, 5, 56, 0, 0, 302, 301, 1, 0, 0, 0, 302, 303, 1, 0, 0, 0, 303, 304, - 1, 0, 0, 0, 304, 305, 5, 67, 0, 0, 305, 306, 3, 10, 5, 0, 306, 307, 5, - 7, 0, 0, 307, 308, 3, 12, 6, 0, 308, 309, 5, 8, 0, 0, 309, 39, 1, 0, 0, - 0, 310, 311, 5, 51, 0, 0, 311, 314, 5, 53, 0, 0, 312, 314, 5, 133, 0, 0, - 313, 310, 1, 0, 0, 0, 313, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, - 316, 5, 7, 0, 0, 316, 317, 3, 12, 6, 0, 317, 318, 5, 8, 0, 0, 318, 319, - 7, 4, 0, 0, 319, 320, 5, 139, 0, 0, 320, 321, 5, 7, 0, 0, 321, 322, 3, - 12, 6, 0, 322, 326, 5, 8, 0, 0, 323, 325, 3, 42, 21, 0, 324, 323, 1, 0, - 0, 0, 325, 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, - 327, 41, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 329, 330, 5, 54, 0, 0, 330, - 333, 5, 63, 0, 0, 331, 333, 5, 134, 0, 0, 332, 329, 1, 0, 0, 0, 332, 331, - 1, 0, 0, 0, 333, 340, 1, 0, 0, 0, 334, 335, 5, 54, 0, 0, 335, 338, 5, 62, - 0, 0, 336, 338, 5, 135, 0, 0, 337, 334, 1, 0, 0, 0, 337, 336, 1, 0, 0, - 0, 338, 340, 1, 0, 0, 0, 339, 332, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 340, - 342, 1, 0, 0, 0, 341, 343, 5, 55, 0, 0, 342, 341, 1, 0, 0, 0, 342, 343, - 1, 0, 0, 0, 343, 361, 1, 0, 0, 0, 344, 345, 5, 92, 0, 0, 345, 348, 5, 36, - 0, 0, 346, 348, 5, 138, 0, 0, 347, 344, 1, 0, 0, 0, 347, 346, 1, 0, 0, - 0, 348, 362, 1, 0, 0, 0, 349, 362, 5, 57, 0, 0, 350, 351, 5, 59, 0, 0, - 351, 354, 5, 61, 0, 0, 352, 354, 5, 137, 0, 0, 353, 350, 1, 0, 0, 0, 353, - 352, 1, 0, 0, 0, 354, 362, 1, 0, 0, 0, 355, 356, 5, 59, 0, 0, 356, 359, - 5, 60, 0, 0, 357, 359, 5, 136, 0, 0, 358, 355, 1, 0, 0, 0, 358, 357, 1, - 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 362, 5, 58, 0, 0, 361, 347, 1, 0, 0, - 0, 361, 349, 1, 0, 0, 0, 361, 353, 1, 0, 0, 0, 361, 358, 1, 0, 0, 0, 361, - 360, 1, 0, 0, 0, 362, 43, 1, 0, 0, 0, 363, 368, 3, 14, 7, 0, 364, 365, - 5, 9, 0, 0, 365, 367, 3, 14, 7, 0, 366, 364, 1, 0, 0, 0, 367, 370, 1, 0, - 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 45, 1, 0, 0, 0, - 370, 368, 1, 0, 0, 0, 371, 372, 5, 139, 0, 0, 372, 378, 3, 14, 7, 0, 373, - 374, 5, 9, 0, 0, 374, 375, 5, 139, 0, 0, 375, 377, 3, 14, 7, 0, 376, 373, - 1, 0, 0, 0, 377, 380, 1, 0, 0, 0, 378, 376, 1, 0, 0, 0, 378, 379, 1, 0, - 0, 0, 379, 47, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 381, 382, 3, 18, 9, 0, - 382, 389, 3, 14, 7, 0, 383, 384, 5, 9, 0, 0, 384, 385, 3, 18, 9, 0, 385, - 386, 3, 14, 7, 0, 386, 388, 1, 0, 0, 0, 387, 383, 1, 0, 0, 0, 388, 391, - 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 49, 1, 0, - 0, 0, 391, 389, 1, 0, 0, 0, 392, 402, 5, 139, 0, 0, 393, 395, 5, 52, 0, - 0, 394, 396, 5, 53, 0, 0, 395, 394, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, - 402, 1, 0, 0, 0, 397, 398, 5, 66, 0, 0, 398, 402, 5, 61, 0, 0, 399, 402, - 5, 60, 0, 0, 400, 402, 5, 56, 0, 0, 401, 392, 1, 0, 0, 0, 401, 393, 1, - 0, 0, 0, 401, 397, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, 400, 1, 0, 0, - 0, 402, 407, 1, 0, 0, 0, 403, 404, 5, 7, 0, 0, 404, 405, 3, 8, 4, 0, 405, - 406, 5, 8, 0, 0, 406, 408, 1, 0, 0, 0, 407, 403, 1, 0, 0, 0, 407, 408, - 1, 0, 0, 0, 408, 51, 1, 0, 0, 0, 409, 410, 5, 52, 0, 0, 410, 423, 5, 53, - 0, 0, 411, 423, 5, 56, 0, 0, 412, 413, 5, 66, 0, 0, 413, 423, 5, 61, 0, - 0, 414, 415, 5, 60, 0, 0, 415, 423, 3, 8, 4, 0, 416, 423, 3, 56, 28, 0, - 417, 418, 5, 50, 0, 0, 418, 419, 5, 7, 0, 0, 419, 420, 3, 110, 55, 0, 420, - 421, 5, 8, 0, 0, 421, 423, 1, 0, 0, 0, 422, 409, 1, 0, 0, 0, 422, 411, - 1, 0, 0, 0, 422, 412, 1, 0, 0, 0, 422, 414, 1, 0, 0, 0, 422, 416, 1, 0, - 0, 0, 422, 417, 1, 0, 0, 0, 423, 53, 1, 0, 0, 0, 424, 425, 5, 54, 0, 0, - 425, 434, 7, 5, 0, 0, 426, 427, 5, 59, 0, 0, 427, 435, 5, 61, 0, 0, 428, - 429, 5, 59, 0, 0, 429, 435, 5, 60, 0, 0, 430, 435, 5, 58, 0, 0, 431, 432, - 5, 92, 0, 0, 432, 435, 5, 36, 0, 0, 433, 435, 5, 57, 0, 0, 434, 426, 1, - 0, 0, 0, 434, 428, 1, 0, 0, 0, 434, 430, 1, 0, 0, 0, 434, 431, 1, 0, 0, - 0, 434, 433, 1, 0, 0, 0, 435, 55, 1, 0, 0, 0, 436, 437, 5, 64, 0, 0, 437, - 438, 3, 10, 5, 0, 438, 439, 5, 7, 0, 0, 439, 440, 3, 10, 5, 0, 440, 441, - 5, 8, 0, 0, 441, 449, 1, 0, 0, 0, 442, 446, 3, 54, 27, 0, 443, 445, 3, - 54, 27, 0, 444, 443, 1, 0, 0, 0, 445, 448, 1, 0, 0, 0, 446, 444, 1, 0, - 0, 0, 446, 447, 1, 0, 0, 0, 447, 450, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, - 449, 442, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 57, 1, 0, 0, 0, 451, 452, - 7, 6, 0, 0, 452, 59, 1, 0, 0, 0, 453, 455, 3, 24, 12, 0, 454, 453, 1, 0, - 0, 0, 455, 458, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, - 457, 459, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 459, 460, 5, 36, 0, 0, 460, - 461, 5, 139, 0, 0, 461, 463, 5, 7, 0, 0, 462, 464, 3, 20, 10, 0, 463, 462, - 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 467, 5, 8, - 0, 0, 466, 468, 3, 58, 29, 0, 467, 466, 1, 0, 0, 0, 468, 469, 1, 0, 0, - 0, 469, 467, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, - 472, 5, 1, 0, 0, 472, 473, 3, 120, 60, 0, 473, 474, 5, 2, 0, 0, 474, 61, - 1, 0, 0, 0, 475, 477, 3, 24, 12, 0, 476, 475, 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, 37, 0, 0, 482, 483, 5, 139, 0, 0, - 483, 485, 5, 7, 0, 0, 484, 486, 3, 48, 24, 0, 485, 484, 1, 0, 0, 0, 485, - 486, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 489, 5, 8, 0, 0, 488, 490, - 3, 58, 29, 0, 489, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 489, 1, - 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 494, 1, 0, 0, 0, 493, 495, 3, 64, 32, - 0, 494, 493, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, - 497, 5, 1, 0, 0, 497, 498, 3, 124, 62, 0, 498, 499, 5, 2, 0, 0, 499, 63, - 1, 0, 0, 0, 500, 512, 5, 91, 0, 0, 501, 503, 5, 35, 0, 0, 502, 501, 1, - 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 5, 7, 0, - 0, 505, 506, 3, 46, 23, 0, 506, 507, 5, 8, 0, 0, 507, 513, 1, 0, 0, 0, - 508, 509, 5, 7, 0, 0, 509, 510, 3, 44, 22, 0, 510, 511, 5, 8, 0, 0, 511, - 513, 1, 0, 0, 0, 512, 502, 1, 0, 0, 0, 512, 508, 1, 0, 0, 0, 513, 65, 1, - 0, 0, 0, 514, 515, 3, 68, 34, 0, 515, 516, 5, 6, 0, 0, 516, 67, 1, 0, 0, - 0, 517, 519, 5, 93, 0, 0, 518, 520, 5, 127, 0, 0, 519, 518, 1, 0, 0, 0, - 519, 520, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 526, 3, 70, 35, 0, 522, - 523, 5, 9, 0, 0, 523, 525, 3, 70, 35, 0, 524, 522, 1, 0, 0, 0, 525, 528, - 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 530, 1, 0, - 0, 0, 528, 526, 1, 0, 0, 0, 529, 517, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, - 530, 539, 1, 0, 0, 0, 531, 540, 3, 72, 36, 0, 532, 540, 3, 78, 39, 0, 533, - 540, 3, 82, 41, 0, 534, 540, 3, 84, 42, 0, 535, 540, 3, 86, 43, 0, 536, - 540, 3, 100, 50, 0, 537, 540, 3, 104, 52, 0, 538, 540, 3, 108, 54, 0, 539, - 531, 1, 0, 0, 0, 539, 532, 1, 0, 0, 0, 539, 533, 1, 0, 0, 0, 539, 534, - 1, 0, 0, 0, 539, 535, 1, 0, 0, 0, 539, 536, 1, 0, 0, 0, 539, 537, 1, 0, - 0, 0, 539, 538, 1, 0, 0, 0, 540, 69, 1, 0, 0, 0, 541, 554, 3, 10, 5, 0, - 542, 551, 5, 7, 0, 0, 543, 548, 3, 10, 5, 0, 544, 545, 5, 9, 0, 0, 545, - 547, 3, 10, 5, 0, 546, 544, 1, 0, 0, 0, 547, 550, 1, 0, 0, 0, 548, 546, - 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 552, 1, 0, 0, 0, 550, 548, 1, 0, - 0, 0, 551, 543, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, - 553, 555, 5, 8, 0, 0, 554, 542, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, - 556, 1, 0, 0, 0, 556, 557, 5, 82, 0, 0, 557, 558, 5, 7, 0, 0, 558, 559, - 3, 86, 43, 0, 559, 560, 5, 8, 0, 0, 560, 71, 1, 0, 0, 0, 561, 562, 5, 42, - 0, 0, 562, 563, 5, 35, 0, 0, 563, 564, 3, 10, 5, 0, 564, 568, 5, 7, 0, - 0, 565, 569, 3, 34, 17, 0, 566, 569, 3, 74, 37, 0, 567, 569, 3, 38, 19, - 0, 568, 565, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 568, 567, 1, 0, 0, 0, 569, - 578, 1, 0, 0, 0, 570, 574, 5, 9, 0, 0, 571, 575, 3, 34, 17, 0, 572, 575, - 3, 74, 37, 0, 573, 575, 3, 38, 19, 0, 574, 571, 1, 0, 0, 0, 574, 572, 1, - 0, 0, 0, 574, 573, 1, 0, 0, 0, 575, 577, 1, 0, 0, 0, 576, 570, 1, 0, 0, - 0, 577, 580, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, - 581, 1, 0, 0, 0, 580, 578, 1, 0, 0, 0, 581, 582, 5, 8, 0, 0, 582, 73, 1, - 0, 0, 0, 583, 584, 5, 49, 0, 0, 584, 586, 3, 10, 5, 0, 585, 583, 1, 0, - 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 588, 3, 76, 38, - 0, 588, 75, 1, 0, 0, 0, 589, 590, 5, 52, 0, 0, 590, 591, 5, 53, 0, 0, 591, - 592, 5, 7, 0, 0, 592, 593, 3, 12, 6, 0, 593, 594, 5, 8, 0, 0, 594, 613, - 1, 0, 0, 0, 595, 596, 5, 56, 0, 0, 596, 597, 5, 7, 0, 0, 597, 598, 3, 12, - 6, 0, 598, 599, 5, 8, 0, 0, 599, 613, 1, 0, 0, 0, 600, 601, 5, 50, 0, 0, - 601, 602, 5, 7, 0, 0, 602, 603, 3, 110, 55, 0, 603, 604, 5, 8, 0, 0, 604, - 613, 1, 0, 0, 0, 605, 606, 5, 51, 0, 0, 606, 607, 5, 53, 0, 0, 607, 608, - 5, 7, 0, 0, 608, 609, 3, 10, 5, 0, 609, 610, 5, 8, 0, 0, 610, 611, 3, 56, - 28, 0, 611, 613, 1, 0, 0, 0, 612, 589, 1, 0, 0, 0, 612, 595, 1, 0, 0, 0, - 612, 600, 1, 0, 0, 0, 612, 605, 1, 0, 0, 0, 613, 77, 1, 0, 0, 0, 614, 615, - 5, 43, 0, 0, 615, 616, 5, 35, 0, 0, 616, 617, 3, 10, 5, 0, 617, 618, 3, - 80, 40, 0, 618, 79, 1, 0, 0, 0, 619, 620, 5, 43, 0, 0, 620, 621, 5, 44, - 0, 0, 621, 622, 3, 10, 5, 0, 622, 627, 5, 59, 0, 0, 623, 624, 5, 66, 0, - 0, 624, 628, 5, 61, 0, 0, 625, 626, 5, 60, 0, 0, 626, 628, 3, 8, 4, 0, - 627, 623, 1, 0, 0, 0, 627, 625, 1, 0, 0, 0, 628, 663, 1, 0, 0, 0, 629, - 630, 5, 43, 0, 0, 630, 631, 5, 44, 0, 0, 631, 632, 3, 10, 5, 0, 632, 638, - 5, 46, 0, 0, 633, 634, 5, 66, 0, 0, 634, 639, 5, 61, 0, 0, 635, 639, 5, - 60, 0, 0, 636, 637, 5, 49, 0, 0, 637, 639, 3, 10, 5, 0, 638, 633, 1, 0, - 0, 0, 638, 635, 1, 0, 0, 0, 638, 636, 1, 0, 0, 0, 639, 663, 1, 0, 0, 0, - 640, 641, 5, 45, 0, 0, 641, 642, 5, 44, 0, 0, 642, 643, 3, 10, 5, 0, 643, - 644, 3, 14, 7, 0, 644, 663, 1, 0, 0, 0, 645, 646, 5, 46, 0, 0, 646, 647, - 5, 44, 0, 0, 647, 663, 3, 10, 5, 0, 648, 649, 5, 47, 0, 0, 649, 650, 5, - 44, 0, 0, 650, 651, 3, 10, 5, 0, 651, 652, 5, 48, 0, 0, 652, 653, 3, 10, - 5, 0, 653, 663, 1, 0, 0, 0, 654, 655, 5, 47, 0, 0, 655, 656, 5, 48, 0, - 0, 656, 663, 3, 10, 5, 0, 657, 658, 5, 45, 0, 0, 658, 663, 3, 74, 37, 0, - 659, 660, 5, 46, 0, 0, 660, 661, 5, 49, 0, 0, 661, 663, 3, 10, 5, 0, 662, - 619, 1, 0, 0, 0, 662, 629, 1, 0, 0, 0, 662, 640, 1, 0, 0, 0, 662, 645, - 1, 0, 0, 0, 662, 648, 1, 0, 0, 0, 662, 654, 1, 0, 0, 0, 662, 657, 1, 0, - 0, 0, 662, 659, 1, 0, 0, 0, 663, 81, 1, 0, 0, 0, 664, 666, 5, 42, 0, 0, - 665, 667, 5, 56, 0, 0, 666, 665, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, - 668, 1, 0, 0, 0, 668, 670, 5, 67, 0, 0, 669, 671, 3, 10, 5, 0, 670, 669, - 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 673, 5, 54, - 0, 0, 673, 674, 3, 10, 5, 0, 674, 675, 5, 7, 0, 0, 675, 676, 3, 12, 6, - 0, 676, 677, 5, 8, 0, 0, 677, 83, 1, 0, 0, 0, 678, 679, 5, 46, 0, 0, 679, - 682, 5, 67, 0, 0, 680, 681, 5, 117, 0, 0, 681, 683, 5, 75, 0, 0, 682, 680, - 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 685, 3, 10, - 5, 0, 685, 85, 1, 0, 0, 0, 686, 692, 3, 92, 46, 0, 687, 688, 3, 88, 44, - 0, 688, 689, 3, 92, 46, 0, 689, 691, 1, 0, 0, 0, 690, 687, 1, 0, 0, 0, - 691, 694, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, - 705, 1, 0, 0, 0, 694, 692, 1, 0, 0, 0, 695, 696, 5, 87, 0, 0, 696, 697, - 5, 88, 0, 0, 697, 702, 3, 90, 45, 0, 698, 699, 5, 9, 0, 0, 699, 701, 3, - 90, 45, 0, 700, 698, 1, 0, 0, 0, 701, 704, 1, 0, 0, 0, 702, 700, 1, 0, - 0, 0, 702, 703, 1, 0, 0, 0, 703, 706, 1, 0, 0, 0, 704, 702, 1, 0, 0, 0, - 705, 695, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 709, 1, 0, 0, 0, 707, - 708, 5, 85, 0, 0, 708, 710, 3, 110, 55, 0, 709, 707, 1, 0, 0, 0, 709, 710, - 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, 711, 712, 5, 86, 0, 0, 712, 714, 3, 110, - 55, 0, 713, 711, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 87, 1, 0, 0, 0, - 715, 717, 5, 106, 0, 0, 716, 718, 5, 76, 0, 0, 717, 716, 1, 0, 0, 0, 717, - 718, 1, 0, 0, 0, 718, 722, 1, 0, 0, 0, 719, 722, 5, 107, 0, 0, 720, 722, - 5, 108, 0, 0, 721, 715, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 721, 720, 1, - 0, 0, 0, 722, 89, 1, 0, 0, 0, 723, 725, 3, 110, 55, 0, 724, 726, 7, 7, - 0, 0, 725, 724, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 729, 1, 0, 0, 0, - 727, 728, 5, 109, 0, 0, 728, 730, 7, 8, 0, 0, 729, 727, 1, 0, 0, 0, 729, - 730, 1, 0, 0, 0, 730, 91, 1, 0, 0, 0, 731, 733, 5, 102, 0, 0, 732, 734, - 5, 98, 0, 0, 733, 732, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 735, 1, 0, - 0, 0, 735, 740, 3, 98, 49, 0, 736, 737, 5, 9, 0, 0, 737, 739, 3, 98, 49, - 0, 738, 736, 1, 0, 0, 0, 739, 742, 1, 0, 0, 0, 740, 738, 1, 0, 0, 0, 740, - 741, 1, 0, 0, 0, 741, 751, 1, 0, 0, 0, 742, 740, 1, 0, 0, 0, 743, 744, - 5, 99, 0, 0, 744, 748, 3, 94, 47, 0, 745, 747, 3, 96, 48, 0, 746, 745, - 1, 0, 0, 0, 747, 750, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 748, 749, 1, 0, - 0, 0, 749, 752, 1, 0, 0, 0, 750, 748, 1, 0, 0, 0, 751, 743, 1, 0, 0, 0, - 751, 752, 1, 0, 0, 0, 752, 755, 1, 0, 0, 0, 753, 754, 5, 100, 0, 0, 754, - 756, 3, 110, 55, 0, 755, 753, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 764, - 1, 0, 0, 0, 757, 758, 5, 89, 0, 0, 758, 759, 5, 88, 0, 0, 759, 762, 3, - 116, 58, 0, 760, 761, 5, 90, 0, 0, 761, 763, 3, 110, 55, 0, 762, 760, 1, - 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 765, 1, 0, 0, 0, 764, 757, 1, 0, 0, - 0, 764, 765, 1, 0, 0, 0, 765, 780, 1, 0, 0, 0, 766, 767, 5, 125, 0, 0, - 767, 768, 3, 10, 5, 0, 768, 769, 5, 82, 0, 0, 769, 777, 3, 112, 56, 0, - 770, 771, 5, 9, 0, 0, 771, 772, 3, 10, 5, 0, 772, 773, 5, 82, 0, 0, 773, - 774, 3, 112, 56, 0, 774, 776, 1, 0, 0, 0, 775, 770, 1, 0, 0, 0, 776, 779, - 1, 0, 0, 0, 777, 775, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 781, 1, 0, - 0, 0, 779, 777, 1, 0, 0, 0, 780, 766, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, - 781, 93, 1, 0, 0, 0, 782, 787, 3, 10, 5, 0, 783, 785, 5, 82, 0, 0, 784, - 783, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 788, - 3, 10, 5, 0, 787, 784, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 799, 1, 0, - 0, 0, 789, 790, 5, 7, 0, 0, 790, 791, 3, 86, 43, 0, 791, 796, 5, 8, 0, - 0, 792, 794, 5, 82, 0, 0, 793, 792, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, - 795, 1, 0, 0, 0, 795, 797, 3, 10, 5, 0, 796, 793, 1, 0, 0, 0, 796, 797, - 1, 0, 0, 0, 797, 799, 1, 0, 0, 0, 798, 782, 1, 0, 0, 0, 798, 789, 1, 0, - 0, 0, 799, 95, 1, 0, 0, 0, 800, 802, 7, 9, 0, 0, 801, 800, 1, 0, 0, 0, - 801, 802, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 804, 5, 78, 0, 0, 804, - 805, 3, 94, 47, 0, 805, 806, 5, 54, 0, 0, 806, 807, 3, 110, 55, 0, 807, - 97, 1, 0, 0, 0, 808, 813, 3, 110, 55, 0, 809, 811, 5, 82, 0, 0, 810, 809, - 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 814, 3, 10, - 5, 0, 813, 810, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 822, 1, 0, 0, 0, - 815, 816, 3, 10, 5, 0, 816, 817, 5, 12, 0, 0, 817, 819, 1, 0, 0, 0, 818, - 815, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, 820, 822, - 5, 14, 0, 0, 821, 808, 1, 0, 0, 0, 821, 818, 1, 0, 0, 0, 822, 99, 1, 0, - 0, 0, 823, 824, 5, 63, 0, 0, 824, 829, 3, 10, 5, 0, 825, 827, 5, 82, 0, - 0, 826, 825, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, - 830, 3, 10, 5, 0, 829, 826, 1, 0, 0, 0, 829, 830, 1, 0, 0, 0, 830, 831, - 1, 0, 0, 0, 831, 832, 5, 59, 0, 0, 832, 837, 3, 102, 51, 0, 833, 834, 5, - 9, 0, 0, 834, 836, 3, 102, 51, 0, 835, 833, 1, 0, 0, 0, 836, 839, 1, 0, - 0, 0, 837, 835, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 848, 1, 0, 0, 0, - 839, 837, 1, 0, 0, 0, 840, 841, 5, 99, 0, 0, 841, 845, 3, 94, 47, 0, 842, - 844, 3, 96, 48, 0, 843, 842, 1, 0, 0, 0, 844, 847, 1, 0, 0, 0, 845, 843, - 1, 0, 0, 0, 845, 846, 1, 0, 0, 0, 846, 849, 1, 0, 0, 0, 847, 845, 1, 0, - 0, 0, 848, 840, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 852, 1, 0, 0, 0, - 850, 851, 5, 100, 0, 0, 851, 853, 3, 110, 55, 0, 852, 850, 1, 0, 0, 0, - 852, 853, 1, 0, 0, 0, 853, 101, 1, 0, 0, 0, 854, 855, 3, 10, 5, 0, 855, - 856, 5, 15, 0, 0, 856, 857, 3, 110, 55, 0, 857, 103, 1, 0, 0, 0, 858, 859, - 5, 103, 0, 0, 859, 860, 5, 113, 0, 0, 860, 865, 3, 10, 5, 0, 861, 863, - 5, 82, 0, 0, 862, 861, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 864, 1, 0, - 0, 0, 864, 866, 3, 10, 5, 0, 865, 862, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, - 866, 871, 1, 0, 0, 0, 867, 868, 5, 7, 0, 0, 868, 869, 3, 12, 6, 0, 869, - 870, 5, 8, 0, 0, 870, 872, 1, 0, 0, 0, 871, 867, 1, 0, 0, 0, 871, 872, - 1, 0, 0, 0, 872, 888, 1, 0, 0, 0, 873, 874, 5, 104, 0, 0, 874, 875, 5, - 7, 0, 0, 875, 876, 3, 116, 58, 0, 876, 884, 5, 8, 0, 0, 877, 878, 5, 9, - 0, 0, 878, 879, 5, 7, 0, 0, 879, 880, 3, 116, 58, 0, 880, 881, 5, 8, 0, - 0, 881, 883, 1, 0, 0, 0, 882, 877, 1, 0, 0, 0, 883, 886, 1, 0, 0, 0, 884, - 882, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 889, 1, 0, 0, 0, 886, 884, - 1, 0, 0, 0, 887, 889, 3, 86, 43, 0, 888, 873, 1, 0, 0, 0, 888, 887, 1, - 0, 0, 0, 889, 891, 1, 0, 0, 0, 890, 892, 3, 106, 53, 0, 891, 890, 1, 0, - 0, 0, 891, 892, 1, 0, 0, 0, 892, 105, 1, 0, 0, 0, 893, 894, 5, 54, 0, 0, - 894, 902, 5, 114, 0, 0, 895, 896, 5, 7, 0, 0, 896, 897, 3, 12, 6, 0, 897, - 900, 5, 8, 0, 0, 898, 899, 5, 100, 0, 0, 899, 901, 3, 110, 55, 0, 900, - 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 903, 1, 0, 0, 0, 902, 895, - 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 920, 5, 55, - 0, 0, 905, 921, 5, 115, 0, 0, 906, 907, 5, 63, 0, 0, 907, 908, 5, 59, 0, - 0, 908, 913, 3, 102, 51, 0, 909, 910, 5, 9, 0, 0, 910, 912, 3, 102, 51, - 0, 911, 909, 1, 0, 0, 0, 912, 915, 1, 0, 0, 0, 913, 911, 1, 0, 0, 0, 913, - 914, 1, 0, 0, 0, 914, 918, 1, 0, 0, 0, 915, 913, 1, 0, 0, 0, 916, 917, - 5, 100, 0, 0, 917, 919, 3, 110, 55, 0, 918, 916, 1, 0, 0, 0, 918, 919, - 1, 0, 0, 0, 919, 921, 1, 0, 0, 0, 920, 905, 1, 0, 0, 0, 920, 906, 1, 0, - 0, 0, 921, 107, 1, 0, 0, 0, 922, 923, 5, 62, 0, 0, 923, 924, 5, 99, 0, - 0, 924, 929, 3, 10, 5, 0, 925, 927, 5, 82, 0, 0, 926, 925, 1, 0, 0, 0, - 926, 927, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 930, 3, 10, 5, 0, 929, - 926, 1, 0, 0, 0, 929, 930, 1, 0, 0, 0, 930, 933, 1, 0, 0, 0, 931, 932, - 5, 100, 0, 0, 932, 934, 3, 110, 55, 0, 933, 931, 1, 0, 0, 0, 933, 934, - 1, 0, 0, 0, 934, 109, 1, 0, 0, 0, 935, 936, 6, 55, -1, 0, 936, 937, 5, - 7, 0, 0, 937, 938, 3, 110, 55, 0, 938, 940, 5, 8, 0, 0, 939, 941, 3, 16, - 8, 0, 940, 939, 1, 0, 0, 0, 940, 941, 1, 0, 0, 0, 941, 1009, 1, 0, 0, 0, - 942, 943, 7, 0, 0, 0, 943, 1009, 3, 110, 55, 20, 944, 946, 3, 8, 4, 0, - 945, 947, 3, 16, 8, 0, 946, 945, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, - 1009, 1, 0, 0, 0, 948, 955, 3, 118, 59, 0, 949, 950, 5, 126, 0, 0, 950, - 951, 5, 7, 0, 0, 951, 952, 5, 100, 0, 0, 952, 953, 3, 110, 55, 0, 953, - 954, 5, 8, 0, 0, 954, 956, 1, 0, 0, 0, 955, 949, 1, 0, 0, 0, 955, 956, - 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 960, 5, 123, 0, 0, 958, 961, 3, - 112, 56, 0, 959, 961, 5, 139, 0, 0, 960, 958, 1, 0, 0, 0, 960, 959, 1, - 0, 0, 0, 961, 1009, 1, 0, 0, 0, 962, 964, 3, 118, 59, 0, 963, 965, 3, 16, - 8, 0, 964, 963, 1, 0, 0, 0, 964, 965, 1, 0, 0, 0, 965, 1009, 1, 0, 0, 0, - 966, 968, 3, 18, 9, 0, 967, 969, 3, 16, 8, 0, 968, 967, 1, 0, 0, 0, 968, - 969, 1, 0, 0, 0, 969, 1009, 1, 0, 0, 0, 970, 971, 3, 10, 5, 0, 971, 972, - 5, 12, 0, 0, 972, 974, 1, 0, 0, 0, 973, 970, 1, 0, 0, 0, 973, 974, 1, 0, - 0, 0, 974, 975, 1, 0, 0, 0, 975, 977, 3, 10, 5, 0, 976, 978, 3, 16, 8, - 0, 977, 976, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 1009, 1, 0, 0, 0, 979, - 981, 5, 94, 0, 0, 980, 982, 3, 110, 55, 0, 981, 980, 1, 0, 0, 0, 981, 982, - 1, 0, 0, 0, 982, 984, 1, 0, 0, 0, 983, 985, 3, 114, 57, 0, 984, 983, 1, - 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 984, 1, 0, 0, 0, 986, 987, 1, 0, 0, - 0, 987, 990, 1, 0, 0, 0, 988, 989, 5, 119, 0, 0, 989, 991, 3, 110, 55, - 0, 990, 988, 1, 0, 0, 0, 990, 991, 1, 0, 0, 0, 991, 992, 1, 0, 0, 0, 992, - 993, 5, 97, 0, 0, 993, 1009, 1, 0, 0, 0, 994, 996, 5, 66, 0, 0, 995, 994, - 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 997, 1, 0, 0, 0, 997, 999, 5, 75, - 0, 0, 998, 995, 1, 0, 0, 0, 998, 999, 1, 0, 0, 0, 999, 1000, 1, 0, 0, 0, - 1000, 1001, 5, 7, 0, 0, 1001, 1002, 3, 86, 43, 0, 1002, 1004, 5, 8, 0, - 0, 1003, 1005, 3, 16, 8, 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, - 0, 1005, 1009, 1, 0, 0, 0, 1006, 1007, 5, 66, 0, 0, 1007, 1009, 3, 110, - 55, 3, 1008, 935, 1, 0, 0, 0, 1008, 942, 1, 0, 0, 0, 1008, 944, 1, 0, 0, - 0, 1008, 948, 1, 0, 0, 0, 1008, 962, 1, 0, 0, 0, 1008, 966, 1, 0, 0, 0, - 1008, 973, 1, 0, 0, 0, 1008, 979, 1, 0, 0, 0, 1008, 998, 1, 0, 0, 0, 1008, - 1006, 1, 0, 0, 0, 1009, 1095, 1, 0, 0, 0, 1010, 1011, 10, 18, 0, 0, 1011, - 1012, 7, 10, 0, 0, 1012, 1094, 3, 110, 55, 19, 1013, 1014, 10, 17, 0, 0, - 1014, 1015, 7, 0, 0, 0, 1015, 1094, 3, 110, 55, 18, 1016, 1017, 10, 9, - 0, 0, 1017, 1018, 5, 13, 0, 0, 1018, 1094, 3, 110, 55, 10, 1019, 1021, - 10, 7, 0, 0, 1020, 1022, 5, 66, 0, 0, 1021, 1020, 1, 0, 0, 0, 1021, 1022, - 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1024, 7, 11, 0, 0, 1024, 1094, - 3, 110, 55, 8, 1025, 1027, 10, 6, 0, 0, 1026, 1028, 5, 66, 0, 0, 1027, - 1026, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, - 1030, 5, 73, 0, 0, 1030, 1031, 3, 110, 55, 0, 1031, 1032, 5, 68, 0, 0, - 1032, 1033, 3, 110, 55, 7, 1033, 1094, 1, 0, 0, 0, 1034, 1035, 10, 5, 0, - 0, 1035, 1036, 7, 12, 0, 0, 1036, 1094, 3, 110, 55, 6, 1037, 1038, 10, - 2, 0, 0, 1038, 1039, 5, 68, 0, 0, 1039, 1094, 3, 110, 55, 3, 1040, 1041, - 10, 1, 0, 0, 1041, 1042, 5, 69, 0, 0, 1042, 1094, 3, 110, 55, 2, 1043, - 1044, 10, 22, 0, 0, 1044, 1045, 5, 12, 0, 0, 1045, 1047, 3, 10, 5, 0, 1046, - 1048, 3, 16, 8, 0, 1047, 1046, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, - 1094, 1, 0, 0, 0, 1049, 1050, 10, 21, 0, 0, 1050, 1059, 5, 3, 0, 0, 1051, - 1060, 3, 110, 55, 0, 1052, 1054, 3, 110, 55, 0, 1053, 1052, 1, 0, 0, 0, - 1053, 1054, 1, 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 1057, 5, 5, 0, 0, - 1056, 1058, 3, 110, 55, 0, 1057, 1056, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, - 0, 1058, 1060, 1, 0, 0, 0, 1059, 1051, 1, 0, 0, 0, 1059, 1053, 1, 0, 0, - 0, 1060, 1061, 1, 0, 0, 0, 1061, 1063, 5, 4, 0, 0, 1062, 1064, 3, 16, 8, - 0, 1063, 1062, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1094, 1, 0, 0, - 0, 1065, 1066, 10, 19, 0, 0, 1066, 1067, 5, 101, 0, 0, 1067, 1094, 3, 10, - 5, 0, 1068, 1070, 10, 8, 0, 0, 1069, 1071, 5, 66, 0, 0, 1070, 1069, 1, - 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1073, 5, - 72, 0, 0, 1073, 1076, 5, 7, 0, 0, 1074, 1077, 3, 116, 58, 0, 1075, 1077, - 3, 86, 43, 0, 1076, 1074, 1, 0, 0, 0, 1076, 1075, 1, 0, 0, 0, 1077, 1078, - 1, 0, 0, 0, 1078, 1079, 5, 8, 0, 0, 1079, 1094, 1, 0, 0, 0, 1080, 1081, - 10, 4, 0, 0, 1081, 1083, 5, 74, 0, 0, 1082, 1084, 5, 66, 0, 0, 1083, 1082, - 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1091, 1, 0, 0, 0, 1085, 1086, - 5, 98, 0, 0, 1086, 1087, 5, 99, 0, 0, 1087, 1092, 3, 110, 55, 0, 1088, - 1092, 5, 61, 0, 0, 1089, 1092, 5, 129, 0, 0, 1090, 1092, 5, 130, 0, 0, - 1091, 1085, 1, 0, 0, 0, 1091, 1088, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, - 1091, 1090, 1, 0, 0, 0, 1092, 1094, 1, 0, 0, 0, 1093, 1010, 1, 0, 0, 0, - 1093, 1013, 1, 0, 0, 0, 1093, 1016, 1, 0, 0, 0, 1093, 1019, 1, 0, 0, 0, - 1093, 1025, 1, 0, 0, 0, 1093, 1034, 1, 0, 0, 0, 1093, 1037, 1, 0, 0, 0, - 1093, 1040, 1, 0, 0, 0, 1093, 1043, 1, 0, 0, 0, 1093, 1049, 1, 0, 0, 0, - 1093, 1065, 1, 0, 0, 0, 1093, 1068, 1, 0, 0, 0, 1093, 1080, 1, 0, 0, 0, - 1094, 1097, 1, 0, 0, 0, 1095, 1093, 1, 0, 0, 0, 1095, 1096, 1, 0, 0, 0, - 1096, 111, 1, 0, 0, 0, 1097, 1095, 1, 0, 0, 0, 1098, 1102, 5, 7, 0, 0, - 1099, 1100, 5, 124, 0, 0, 1100, 1101, 5, 88, 0, 0, 1101, 1103, 3, 116, - 58, 0, 1102, 1099, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1114, 1, 0, - 0, 0, 1104, 1105, 5, 87, 0, 0, 1105, 1106, 5, 88, 0, 0, 1106, 1111, 3, - 90, 45, 0, 1107, 1108, 5, 9, 0, 0, 1108, 1110, 3, 90, 45, 0, 1109, 1107, - 1, 0, 0, 0, 1110, 1113, 1, 0, 0, 0, 1111, 1109, 1, 0, 0, 0, 1111, 1112, - 1, 0, 0, 0, 1112, 1115, 1, 0, 0, 0, 1113, 1111, 1, 0, 0, 0, 1114, 1104, - 1, 0, 0, 0, 1114, 1115, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, - 5, 8, 0, 0, 1117, 113, 1, 0, 0, 0, 1118, 1119, 5, 95, 0, 0, 1119, 1120, - 3, 110, 55, 0, 1120, 1121, 5, 96, 0, 0, 1121, 1122, 3, 110, 55, 0, 1122, - 115, 1, 0, 0, 0, 1123, 1128, 3, 110, 55, 0, 1124, 1125, 5, 9, 0, 0, 1125, - 1127, 3, 110, 55, 0, 1126, 1124, 1, 0, 0, 0, 1127, 1130, 1, 0, 0, 0, 1128, - 1126, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 117, 1, 0, 0, 0, 1130, - 1128, 1, 0, 0, 0, 1131, 1132, 3, 10, 5, 0, 1132, 1138, 5, 7, 0, 0, 1133, - 1135, 5, 98, 0, 0, 1134, 1133, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, - 1136, 1, 0, 0, 0, 1136, 1139, 3, 116, 58, 0, 1137, 1139, 5, 14, 0, 0, 1138, - 1134, 1, 0, 0, 0, 1138, 1137, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, - 1140, 1, 0, 0, 0, 1140, 1141, 5, 8, 0, 0, 1141, 119, 1, 0, 0, 0, 1142, - 1143, 3, 122, 61, 0, 1143, 1144, 5, 6, 0, 0, 1144, 1146, 1, 0, 0, 0, 1145, - 1142, 1, 0, 0, 0, 1146, 1149, 1, 0, 0, 0, 1147, 1145, 1, 0, 0, 0, 1147, - 1148, 1, 0, 0, 0, 1148, 121, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1150, - 1171, 3, 68, 34, 0, 1151, 1152, 5, 139, 0, 0, 1152, 1154, 5, 7, 0, 0, 1153, - 1155, 3, 128, 64, 0, 1154, 1153, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, - 1156, 1, 0, 0, 0, 1156, 1171, 5, 8, 0, 0, 1157, 1158, 3, 20, 10, 0, 1158, - 1159, 5, 15, 0, 0, 1159, 1161, 1, 0, 0, 0, 1160, 1157, 1, 0, 0, 0, 1160, - 1161, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1163, 5, 139, 0, 0, 1163, - 1164, 5, 12, 0, 0, 1164, 1165, 5, 139, 0, 0, 1165, 1167, 5, 7, 0, 0, 1166, - 1168, 3, 128, 64, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, - 1169, 1, 0, 0, 0, 1169, 1171, 5, 8, 0, 0, 1170, 1150, 1, 0, 0, 0, 1170, - 1151, 1, 0, 0, 0, 1170, 1160, 1, 0, 0, 0, 1171, 123, 1, 0, 0, 0, 1172, - 1174, 3, 130, 65, 0, 1173, 1172, 1, 0, 0, 0, 1174, 1177, 1, 0, 0, 0, 1175, - 1173, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 125, 1, 0, 0, 0, 1177, - 1175, 1, 0, 0, 0, 1178, 1179, 6, 63, -1, 0, 1179, 1180, 5, 7, 0, 0, 1180, - 1181, 3, 126, 63, 0, 1181, 1183, 5, 8, 0, 0, 1182, 1184, 3, 16, 8, 0, 1183, - 1182, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1210, 1, 0, 0, 0, 1185, - 1186, 7, 13, 0, 0, 1186, 1210, 3, 126, 63, 13, 1187, 1189, 3, 8, 4, 0, - 1188, 1190, 3, 16, 8, 0, 1189, 1188, 1, 0, 0, 0, 1189, 1190, 1, 0, 0, 0, - 1190, 1210, 1, 0, 0, 0, 1191, 1193, 3, 134, 67, 0, 1192, 1194, 3, 16, 8, - 0, 1193, 1192, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1210, 1, 0, 0, - 0, 1195, 1197, 3, 18, 9, 0, 1196, 1198, 3, 16, 8, 0, 1197, 1196, 1, 0, - 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1210, 1, 0, 0, 0, 1199, 1201, 5, 3, - 0, 0, 1200, 1202, 3, 128, 64, 0, 1201, 1200, 1, 0, 0, 0, 1201, 1202, 1, - 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1205, 5, 4, 0, 0, 1204, 1206, 3, - 16, 8, 0, 1205, 1204, 1, 0, 0, 0, 1205, 1206, 1, 0, 0, 0, 1206, 1210, 1, - 0, 0, 0, 1207, 1208, 5, 66, 0, 0, 1208, 1210, 3, 126, 63, 3, 1209, 1178, - 1, 0, 0, 0, 1209, 1185, 1, 0, 0, 0, 1209, 1187, 1, 0, 0, 0, 1209, 1191, - 1, 0, 0, 0, 1209, 1195, 1, 0, 0, 0, 1209, 1199, 1, 0, 0, 0, 1209, 1207, - 1, 0, 0, 0, 1210, 1266, 1, 0, 0, 0, 1211, 1212, 10, 12, 0, 0, 1212, 1213, - 7, 10, 0, 0, 1213, 1265, 3, 126, 63, 13, 1214, 1215, 10, 11, 0, 0, 1215, - 1216, 7, 0, 0, 0, 1216, 1265, 3, 126, 63, 12, 1217, 1218, 10, 6, 0, 0, - 1218, 1219, 5, 13, 0, 0, 1219, 1265, 3, 126, 63, 7, 1220, 1221, 10, 5, - 0, 0, 1221, 1222, 7, 12, 0, 0, 1222, 1265, 3, 126, 63, 6, 1223, 1224, 10, - 2, 0, 0, 1224, 1225, 5, 68, 0, 0, 1225, 1265, 3, 126, 63, 3, 1226, 1227, - 10, 1, 0, 0, 1227, 1228, 5, 69, 0, 0, 1228, 1265, 3, 126, 63, 2, 1229, - 1230, 10, 15, 0, 0, 1230, 1231, 5, 12, 0, 0, 1231, 1233, 5, 139, 0, 0, - 1232, 1234, 3, 16, 8, 0, 1233, 1232, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, - 1234, 1265, 1, 0, 0, 0, 1235, 1236, 10, 14, 0, 0, 1236, 1245, 5, 3, 0, - 0, 1237, 1246, 3, 126, 63, 0, 1238, 1240, 3, 126, 63, 0, 1239, 1238, 1, - 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1243, 5, - 5, 0, 0, 1242, 1244, 3, 126, 63, 0, 1243, 1242, 1, 0, 0, 0, 1243, 1244, - 1, 0, 0, 0, 1244, 1246, 1, 0, 0, 0, 1245, 1237, 1, 0, 0, 0, 1245, 1239, - 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1249, 5, 4, 0, 0, 1248, 1250, - 3, 16, 8, 0, 1249, 1248, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1265, - 1, 0, 0, 0, 1251, 1252, 10, 4, 0, 0, 1252, 1254, 5, 74, 0, 0, 1253, 1255, - 5, 66, 0, 0, 1254, 1253, 1, 0, 0, 0, 1254, 1255, 1, 0, 0, 0, 1255, 1262, - 1, 0, 0, 0, 1256, 1257, 5, 98, 0, 0, 1257, 1258, 5, 99, 0, 0, 1258, 1263, - 3, 126, 63, 0, 1259, 1263, 5, 61, 0, 0, 1260, 1263, 5, 129, 0, 0, 1261, - 1263, 5, 130, 0, 0, 1262, 1256, 1, 0, 0, 0, 1262, 1259, 1, 0, 0, 0, 1262, - 1260, 1, 0, 0, 0, 1262, 1261, 1, 0, 0, 0, 1263, 1265, 1, 0, 0, 0, 1264, - 1211, 1, 0, 0, 0, 1264, 1214, 1, 0, 0, 0, 1264, 1217, 1, 0, 0, 0, 1264, - 1220, 1, 0, 0, 0, 1264, 1223, 1, 0, 0, 0, 1264, 1226, 1, 0, 0, 0, 1264, - 1229, 1, 0, 0, 0, 1264, 1235, 1, 0, 0, 0, 1264, 1251, 1, 0, 0, 0, 1265, - 1268, 1, 0, 0, 0, 1266, 1264, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, - 127, 1, 0, 0, 0, 1268, 1266, 1, 0, 0, 0, 1269, 1274, 3, 126, 63, 0, 1270, - 1271, 5, 9, 0, 0, 1271, 1273, 3, 126, 63, 0, 1272, 1270, 1, 0, 0, 0, 1273, - 1276, 1, 0, 0, 0, 1274, 1272, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, - 129, 1, 0, 0, 0, 1276, 1274, 1, 0, 0, 0, 1277, 1278, 5, 140, 0, 0, 1278, - 1279, 3, 14, 7, 0, 1279, 1280, 5, 6, 0, 0, 1280, 1358, 1, 0, 0, 0, 1281, - 1286, 3, 132, 66, 0, 1282, 1283, 5, 9, 0, 0, 1283, 1285, 3, 132, 66, 0, - 1284, 1282, 1, 0, 0, 0, 1285, 1288, 1, 0, 0, 0, 1286, 1284, 1, 0, 0, 0, - 1286, 1287, 1, 0, 0, 0, 1287, 1289, 1, 0, 0, 0, 1288, 1286, 1, 0, 0, 0, - 1289, 1290, 5, 30, 0, 0, 1290, 1292, 1, 0, 0, 0, 1291, 1281, 1, 0, 0, 0, - 1291, 1292, 1, 0, 0, 0, 1292, 1293, 1, 0, 0, 0, 1293, 1294, 3, 134, 67, - 0, 1294, 1295, 5, 6, 0, 0, 1295, 1358, 1, 0, 0, 0, 1296, 1298, 3, 126, - 63, 0, 1297, 1299, 3, 14, 7, 0, 1298, 1297, 1, 0, 0, 0, 1298, 1299, 1, - 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1301, 5, 30, 0, 0, 1301, 1302, 3, - 126, 63, 0, 1302, 1303, 5, 6, 0, 0, 1303, 1358, 1, 0, 0, 0, 1304, 1305, - 5, 116, 0, 0, 1305, 1306, 5, 140, 0, 0, 1306, 1310, 5, 72, 0, 0, 1307, - 1311, 3, 138, 69, 0, 1308, 1311, 3, 18, 9, 0, 1309, 1311, 3, 68, 34, 0, - 1310, 1307, 1, 0, 0, 0, 1310, 1308, 1, 0, 0, 0, 1310, 1309, 1, 0, 0, 0, - 1311, 1312, 1, 0, 0, 0, 1312, 1316, 5, 1, 0, 0, 1313, 1315, 3, 130, 65, - 0, 1314, 1313, 1, 0, 0, 0, 1315, 1318, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, - 0, 1316, 1317, 1, 0, 0, 0, 1317, 1319, 1, 0, 0, 0, 1318, 1316, 1, 0, 0, - 0, 1319, 1320, 5, 2, 0, 0, 1320, 1358, 1, 0, 0, 0, 1321, 1322, 5, 117, - 0, 0, 1322, 1327, 3, 136, 68, 0, 1323, 1324, 5, 118, 0, 0, 1324, 1326, - 3, 136, 68, 0, 1325, 1323, 1, 0, 0, 0, 1326, 1329, 1, 0, 0, 0, 1327, 1325, - 1, 0, 0, 0, 1327, 1328, 1, 0, 0, 0, 1328, 1339, 1, 0, 0, 0, 1329, 1327, - 1, 0, 0, 0, 1330, 1331, 5, 119, 0, 0, 1331, 1335, 5, 1, 0, 0, 1332, 1334, - 3, 130, 65, 0, 1333, 1332, 1, 0, 0, 0, 1334, 1337, 1, 0, 0, 0, 1335, 1333, - 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1338, 1, 0, 0, 0, 1337, 1335, - 1, 0, 0, 0, 1338, 1340, 5, 2, 0, 0, 1339, 1330, 1, 0, 0, 0, 1339, 1340, - 1, 0, 0, 0, 1340, 1358, 1, 0, 0, 0, 1341, 1342, 3, 68, 34, 0, 1342, 1343, - 5, 6, 0, 0, 1343, 1358, 1, 0, 0, 0, 1344, 1345, 5, 120, 0, 0, 1345, 1358, - 5, 6, 0, 0, 1346, 1349, 5, 121, 0, 0, 1347, 1350, 3, 128, 64, 0, 1348, - 1350, 3, 68, 34, 0, 1349, 1347, 1, 0, 0, 0, 1349, 1348, 1, 0, 0, 0, 1349, - 1350, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1358, 5, 6, 0, 0, 1352, - 1353, 5, 121, 0, 0, 1353, 1354, 5, 122, 0, 0, 1354, 1355, 3, 128, 64, 0, - 1355, 1356, 5, 6, 0, 0, 1356, 1358, 1, 0, 0, 0, 1357, 1277, 1, 0, 0, 0, - 1357, 1291, 1, 0, 0, 0, 1357, 1296, 1, 0, 0, 0, 1357, 1304, 1, 0, 0, 0, - 1357, 1321, 1, 0, 0, 0, 1357, 1341, 1, 0, 0, 0, 1357, 1344, 1, 0, 0, 0, - 1357, 1346, 1, 0, 0, 0, 1357, 1352, 1, 0, 0, 0, 1358, 131, 1, 0, 0, 0, - 1359, 1360, 7, 14, 0, 0, 1360, 133, 1, 0, 0, 0, 1361, 1362, 5, 139, 0, - 0, 1362, 1364, 5, 7, 0, 0, 1363, 1365, 3, 128, 64, 0, 1364, 1363, 1, 0, - 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1367, 5, 8, - 0, 0, 1367, 135, 1, 0, 0, 0, 1368, 1369, 3, 126, 63, 0, 1369, 1373, 5, - 1, 0, 0, 1370, 1372, 3, 130, 65, 0, 1371, 1370, 1, 0, 0, 0, 1372, 1375, - 1, 0, 0, 0, 1373, 1371, 1, 0, 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 1376, - 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1376, 1377, 5, 2, 0, 0, 1377, 137, - 1, 0, 0, 0, 1378, 1379, 3, 126, 63, 0, 1379, 1380, 5, 31, 0, 0, 1380, 1381, - 3, 126, 63, 0, 1381, 139, 1, 0, 0, 0, 183, 154, 158, 166, 172, 179, 188, - 192, 204, 212, 214, 228, 231, 251, 256, 270, 274, 284, 292, 302, 313, 326, - 332, 337, 339, 342, 347, 353, 358, 361, 368, 378, 389, 395, 401, 407, 422, - 434, 446, 449, 456, 463, 469, 478, 485, 491, 494, 502, 512, 519, 526, 529, - 539, 548, 551, 554, 568, 574, 578, 585, 612, 627, 638, 662, 666, 670, 682, - 692, 702, 705, 709, 713, 717, 721, 725, 729, 733, 740, 748, 751, 755, 762, - 764, 777, 780, 784, 787, 793, 796, 798, 801, 810, 813, 818, 821, 826, 829, - 837, 845, 848, 852, 862, 865, 871, 884, 888, 891, 900, 902, 913, 918, 920, - 926, 929, 933, 940, 946, 955, 960, 964, 968, 973, 977, 981, 986, 990, 995, - 998, 1004, 1008, 1021, 1027, 1047, 1053, 1057, 1059, 1063, 1070, 1076, - 1083, 1091, 1093, 1095, 1102, 1111, 1114, 1128, 1134, 1138, 1147, 1154, - 1160, 1167, 1170, 1175, 1183, 1189, 1193, 1197, 1201, 1205, 1209, 1233, - 1239, 1243, 1245, 1249, 1254, 1262, 1264, 1266, 1274, 1286, 1291, 1298, - 1310, 1316, 1327, 1335, 1339, 1349, 1357, 1364, 1373, + 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1244, 8, 63, 1, 63, 1, 63, + 1, 63, 1, 63, 3, 63, 1250, 8, 63, 1, 63, 1, 63, 3, 63, 1254, 8, 63, 3, + 63, 1256, 8, 63, 1, 63, 1, 63, 3, 63, 1260, 8, 63, 1, 63, 1, 63, 1, 63, + 3, 63, 1265, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1273, + 8, 63, 5, 63, 1275, 8, 63, 10, 63, 12, 63, 1278, 9, 63, 1, 64, 1, 64, 1, + 64, 5, 64, 1283, 8, 64, 10, 64, 12, 64, 1286, 9, 64, 1, 65, 1, 65, 1, 65, + 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1295, 8, 65, 10, 65, 12, 65, 1298, 9, + 65, 1, 65, 1, 65, 3, 65, 1302, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, + 3, 65, 1309, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, + 65, 1, 65, 1, 65, 3, 65, 1321, 8, 65, 1, 65, 1, 65, 5, 65, 1325, 8, 65, + 10, 65, 12, 65, 1328, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, + 5, 65, 1336, 8, 65, 10, 65, 12, 65, 1339, 9, 65, 1, 65, 1, 65, 1, 65, 5, + 65, 1344, 8, 65, 10, 65, 12, 65, 1347, 9, 65, 1, 65, 3, 65, 1350, 8, 65, + 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1360, 8, + 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1368, 8, 65, 1, 66, + 1, 66, 1, 67, 1, 67, 1, 67, 3, 67, 1375, 8, 67, 1, 67, 1, 67, 1, 68, 1, + 68, 1, 68, 5, 68, 1382, 8, 68, 10, 68, 12, 68, 1385, 9, 68, 1, 68, 1, 68, + 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 0, 2, 110, 126, 70, 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, 0, 15, 1, 0, + 20, 21, 1, 0, 129, 130, 1, 0, 140, 141, 3, 0, 52, 52, 56, 56, 67, 67, 1, + 0, 64, 65, 1, 0, 62, 63, 1, 0, 38, 41, 1, 0, 83, 84, 1, 0, 110, 111, 2, + 0, 79, 81, 105, 105, 3, 0, 14, 14, 19, 19, 22, 22, 1, 0, 70, 71, 2, 0, + 15, 16, 23, 27, 2, 0, 11, 11, 20, 21, 2, 0, 29, 29, 140, 140, 1591, 0, + 140, 1, 0, 0, 0, 2, 143, 1, 0, 0, 0, 4, 146, 1, 0, 0, 0, 6, 149, 1, 0, + 0, 0, 8, 166, 1, 0, 0, 0, 10, 172, 1, 0, 0, 0, 12, 174, 1, 0, 0, 0, 14, + 182, 1, 0, 0, 0, 16, 194, 1, 0, 0, 0, 18, 197, 1, 0, 0, 0, 20, 199, 1, + 0, 0, 0, 22, 207, 1, 0, 0, 0, 24, 217, 1, 0, 0, 0, 26, 235, 1, 0, 0, 0, + 28, 239, 1, 0, 0, 0, 30, 262, 1, 0, 0, 0, 32, 279, 1, 0, 0, 0, 34, 287, + 1, 0, 0, 0, 36, 295, 1, 0, 0, 0, 38, 302, 1, 0, 0, 0, 40, 313, 1, 0, 0, + 0, 42, 339, 1, 0, 0, 0, 44, 363, 1, 0, 0, 0, 46, 371, 1, 0, 0, 0, 48, 381, + 1, 0, 0, 0, 50, 401, 1, 0, 0, 0, 52, 422, 1, 0, 0, 0, 54, 424, 1, 0, 0, + 0, 56, 436, 1, 0, 0, 0, 58, 448, 1, 0, 0, 0, 60, 453, 1, 0, 0, 0, 62, 475, + 1, 0, 0, 0, 64, 497, 1, 0, 0, 0, 66, 513, 1, 0, 0, 0, 68, 521, 1, 0, 0, + 0, 70, 535, 1, 0, 0, 0, 72, 543, 1, 0, 0, 0, 74, 563, 1, 0, 0, 0, 76, 592, + 1, 0, 0, 0, 78, 619, 1, 0, 0, 0, 80, 667, 1, 0, 0, 0, 82, 669, 1, 0, 0, + 0, 84, 688, 1, 0, 0, 0, 86, 696, 1, 0, 0, 0, 88, 731, 1, 0, 0, 0, 90, 733, + 1, 0, 0, 0, 92, 741, 1, 0, 0, 0, 94, 808, 1, 0, 0, 0, 96, 811, 1, 0, 0, + 0, 98, 831, 1, 0, 0, 0, 100, 833, 1, 0, 0, 0, 102, 864, 1, 0, 0, 0, 104, + 868, 1, 0, 0, 0, 106, 903, 1, 0, 0, 0, 108, 932, 1, 0, 0, 0, 110, 1018, + 1, 0, 0, 0, 112, 1108, 1, 0, 0, 0, 114, 1128, 1, 0, 0, 0, 116, 1133, 1, + 0, 0, 0, 118, 1141, 1, 0, 0, 0, 120, 1157, 1, 0, 0, 0, 122, 1180, 1, 0, + 0, 0, 124, 1185, 1, 0, 0, 0, 126, 1219, 1, 0, 0, 0, 128, 1279, 1, 0, 0, + 0, 130, 1367, 1, 0, 0, 0, 132, 1369, 1, 0, 0, 0, 134, 1371, 1, 0, 0, 0, + 136, 1378, 1, 0, 0, 0, 138, 1388, 1, 0, 0, 0, 140, 141, 3, 22, 11, 0, 141, + 142, 5, 0, 0, 1, 142, 1, 1, 0, 0, 0, 143, 144, 3, 66, 33, 0, 144, 145, + 5, 0, 0, 1, 145, 3, 1, 0, 0, 0, 146, 147, 3, 120, 60, 0, 147, 148, 5, 0, + 0, 1, 148, 5, 1, 0, 0, 0, 149, 150, 3, 124, 62, 0, 150, 151, 5, 0, 0, 1, + 151, 7, 1, 0, 0, 0, 152, 167, 5, 128, 0, 0, 153, 155, 7, 0, 0, 0, 154, + 153, 1, 0, 0, 0, 154, 155, 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 167, + 5, 131, 0, 0, 157, 159, 7, 0, 0, 0, 158, 157, 1, 0, 0, 0, 158, 159, 1, + 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 161, 5, 131, 0, 0, 161, 162, 5, 12, + 0, 0, 162, 167, 5, 131, 0, 0, 163, 167, 7, 1, 0, 0, 164, 167, 5, 61, 0, + 0, 165, 167, 5, 132, 0, 0, 166, 152, 1, 0, 0, 0, 166, 154, 1, 0, 0, 0, + 166, 158, 1, 0, 0, 0, 166, 163, 1, 0, 0, 0, 166, 164, 1, 0, 0, 0, 166, + 165, 1, 0, 0, 0, 167, 9, 1, 0, 0, 0, 168, 169, 5, 32, 0, 0, 169, 170, 5, + 139, 0, 0, 170, 173, 5, 32, 0, 0, 171, 173, 5, 139, 0, 0, 172, 168, 1, + 0, 0, 0, 172, 171, 1, 0, 0, 0, 173, 11, 1, 0, 0, 0, 174, 179, 3, 10, 5, + 0, 175, 176, 5, 9, 0, 0, 176, 178, 3, 10, 5, 0, 177, 175, 1, 0, 0, 0, 178, + 181, 1, 0, 0, 0, 179, 177, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 13, 1, + 0, 0, 0, 181, 179, 1, 0, 0, 0, 182, 188, 5, 139, 0, 0, 183, 184, 5, 7, + 0, 0, 184, 185, 5, 131, 0, 0, 185, 186, 5, 9, 0, 0, 186, 187, 5, 131, 0, + 0, 187, 189, 5, 8, 0, 0, 188, 183, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, + 192, 1, 0, 0, 0, 190, 191, 5, 3, 0, 0, 191, 193, 5, 4, 0, 0, 192, 190, + 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 15, 1, 0, 0, 0, 194, 195, 5, 28, + 0, 0, 195, 196, 3, 14, 7, 0, 196, 17, 1, 0, 0, 0, 197, 198, 7, 2, 0, 0, + 198, 19, 1, 0, 0, 0, 199, 204, 3, 18, 9, 0, 200, 201, 5, 9, 0, 0, 201, + 203, 3, 18, 9, 0, 202, 200, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, + 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 21, 1, 0, 0, 0, 206, 204, 1, 0, + 0, 0, 207, 214, 3, 26, 13, 0, 208, 213, 3, 28, 14, 0, 209, 213, 3, 30, + 15, 0, 210, 213, 3, 60, 30, 0, 211, 213, 3, 62, 31, 0, 212, 208, 1, 0, + 0, 0, 212, 209, 1, 0, 0, 0, 212, 210, 1, 0, 0, 0, 212, 211, 1, 0, 0, 0, + 213, 216, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, + 23, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 217, 218, 5, 141, 0, 0, 218, 231, + 5, 7, 0, 0, 219, 220, 5, 139, 0, 0, 220, 221, 5, 15, 0, 0, 221, 228, 3, + 8, 4, 0, 222, 223, 5, 9, 0, 0, 223, 224, 5, 139, 0, 0, 224, 225, 5, 15, + 0, 0, 225, 227, 3, 8, 4, 0, 226, 222, 1, 0, 0, 0, 227, 230, 1, 0, 0, 0, + 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 232, 1, 0, 0, 0, 230, + 228, 1, 0, 0, 0, 231, 219, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 233, + 1, 0, 0, 0, 233, 234, 5, 8, 0, 0, 234, 25, 1, 0, 0, 0, 235, 236, 5, 33, + 0, 0, 236, 237, 5, 139, 0, 0, 237, 238, 5, 6, 0, 0, 238, 27, 1, 0, 0, 0, + 239, 240, 5, 34, 0, 0, 240, 256, 5, 139, 0, 0, 241, 242, 5, 1, 0, 0, 242, + 243, 5, 139, 0, 0, 243, 244, 5, 5, 0, 0, 244, 251, 3, 8, 4, 0, 245, 246, + 5, 9, 0, 0, 246, 247, 5, 139, 0, 0, 247, 248, 5, 5, 0, 0, 248, 250, 3, + 8, 4, 0, 249, 245, 1, 0, 0, 0, 250, 253, 1, 0, 0, 0, 251, 249, 1, 0, 0, + 0, 251, 252, 1, 0, 0, 0, 252, 254, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 254, + 255, 5, 2, 0, 0, 255, 257, 1, 0, 0, 0, 256, 241, 1, 0, 0, 0, 256, 257, + 1, 0, 0, 0, 257, 258, 1, 0, 0, 0, 258, 259, 5, 82, 0, 0, 259, 260, 5, 139, + 0, 0, 260, 261, 5, 6, 0, 0, 261, 29, 1, 0, 0, 0, 262, 263, 5, 35, 0, 0, + 263, 264, 5, 139, 0, 0, 264, 265, 5, 1, 0, 0, 265, 274, 3, 32, 16, 0, 266, + 270, 5, 9, 0, 0, 267, 271, 3, 32, 16, 0, 268, 271, 3, 36, 18, 0, 269, 271, + 3, 40, 20, 0, 270, 267, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, + 0, 0, 0, 271, 273, 1, 0, 0, 0, 272, 266, 1, 0, 0, 0, 273, 276, 1, 0, 0, + 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 277, 1, 0, 0, 0, 276, + 274, 1, 0, 0, 0, 277, 278, 5, 2, 0, 0, 278, 31, 1, 0, 0, 0, 279, 280, 5, + 139, 0, 0, 280, 284, 3, 14, 7, 0, 281, 283, 3, 50, 25, 0, 282, 281, 1, + 0, 0, 0, 283, 286, 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 284, 285, 1, 0, 0, + 0, 285, 33, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 287, 288, 5, 139, 0, 0, 288, + 292, 3, 14, 7, 0, 289, 291, 3, 52, 26, 0, 290, 289, 1, 0, 0, 0, 291, 294, + 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 35, 1, 0, + 0, 0, 294, 292, 1, 0, 0, 0, 295, 296, 5, 142, 0, 0, 296, 297, 7, 3, 0, + 0, 297, 298, 5, 7, 0, 0, 298, 299, 3, 12, 6, 0, 299, 300, 5, 8, 0, 0, 300, + 37, 1, 0, 0, 0, 301, 303, 5, 56, 0, 0, 302, 301, 1, 0, 0, 0, 302, 303, + 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 305, 5, 67, 0, 0, 305, 306, 3, 10, + 5, 0, 306, 307, 5, 7, 0, 0, 307, 308, 3, 12, 6, 0, 308, 309, 5, 8, 0, 0, + 309, 39, 1, 0, 0, 0, 310, 311, 5, 51, 0, 0, 311, 314, 5, 53, 0, 0, 312, + 314, 5, 133, 0, 0, 313, 310, 1, 0, 0, 0, 313, 312, 1, 0, 0, 0, 314, 315, + 1, 0, 0, 0, 315, 316, 5, 7, 0, 0, 316, 317, 3, 12, 6, 0, 317, 318, 5, 8, + 0, 0, 318, 319, 7, 4, 0, 0, 319, 320, 5, 139, 0, 0, 320, 321, 5, 7, 0, + 0, 321, 322, 3, 12, 6, 0, 322, 326, 5, 8, 0, 0, 323, 325, 3, 42, 21, 0, + 324, 323, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 326, + 327, 1, 0, 0, 0, 327, 41, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 329, 330, 5, + 54, 0, 0, 330, 333, 5, 63, 0, 0, 331, 333, 5, 134, 0, 0, 332, 329, 1, 0, + 0, 0, 332, 331, 1, 0, 0, 0, 333, 340, 1, 0, 0, 0, 334, 335, 5, 54, 0, 0, + 335, 338, 5, 62, 0, 0, 336, 338, 5, 135, 0, 0, 337, 334, 1, 0, 0, 0, 337, + 336, 1, 0, 0, 0, 338, 340, 1, 0, 0, 0, 339, 332, 1, 0, 0, 0, 339, 337, + 1, 0, 0, 0, 340, 342, 1, 0, 0, 0, 341, 343, 5, 55, 0, 0, 342, 341, 1, 0, + 0, 0, 342, 343, 1, 0, 0, 0, 343, 361, 1, 0, 0, 0, 344, 345, 5, 92, 0, 0, + 345, 348, 5, 36, 0, 0, 346, 348, 5, 138, 0, 0, 347, 344, 1, 0, 0, 0, 347, + 346, 1, 0, 0, 0, 348, 362, 1, 0, 0, 0, 349, 362, 5, 57, 0, 0, 350, 351, + 5, 59, 0, 0, 351, 354, 5, 61, 0, 0, 352, 354, 5, 137, 0, 0, 353, 350, 1, + 0, 0, 0, 353, 352, 1, 0, 0, 0, 354, 362, 1, 0, 0, 0, 355, 356, 5, 59, 0, + 0, 356, 359, 5, 60, 0, 0, 357, 359, 5, 136, 0, 0, 358, 355, 1, 0, 0, 0, + 358, 357, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 362, 5, 58, 0, 0, 361, + 347, 1, 0, 0, 0, 361, 349, 1, 0, 0, 0, 361, 353, 1, 0, 0, 0, 361, 358, + 1, 0, 0, 0, 361, 360, 1, 0, 0, 0, 362, 43, 1, 0, 0, 0, 363, 368, 3, 14, + 7, 0, 364, 365, 5, 9, 0, 0, 365, 367, 3, 14, 7, 0, 366, 364, 1, 0, 0, 0, + 367, 370, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, + 45, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 371, 372, 5, 139, 0, 0, 372, 378, + 3, 14, 7, 0, 373, 374, 5, 9, 0, 0, 374, 375, 5, 139, 0, 0, 375, 377, 3, + 14, 7, 0, 376, 373, 1, 0, 0, 0, 377, 380, 1, 0, 0, 0, 378, 376, 1, 0, 0, + 0, 378, 379, 1, 0, 0, 0, 379, 47, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 381, + 382, 3, 18, 9, 0, 382, 389, 3, 14, 7, 0, 383, 384, 5, 9, 0, 0, 384, 385, + 3, 18, 9, 0, 385, 386, 3, 14, 7, 0, 386, 388, 1, 0, 0, 0, 387, 383, 1, + 0, 0, 0, 388, 391, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 389, 390, 1, 0, 0, + 0, 390, 49, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 392, 402, 5, 139, 0, 0, 393, + 395, 5, 52, 0, 0, 394, 396, 5, 53, 0, 0, 395, 394, 1, 0, 0, 0, 395, 396, + 1, 0, 0, 0, 396, 402, 1, 0, 0, 0, 397, 398, 5, 66, 0, 0, 398, 402, 5, 61, + 0, 0, 399, 402, 5, 60, 0, 0, 400, 402, 5, 56, 0, 0, 401, 392, 1, 0, 0, + 0, 401, 393, 1, 0, 0, 0, 401, 397, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, + 400, 1, 0, 0, 0, 402, 407, 1, 0, 0, 0, 403, 404, 5, 7, 0, 0, 404, 405, + 3, 8, 4, 0, 405, 406, 5, 8, 0, 0, 406, 408, 1, 0, 0, 0, 407, 403, 1, 0, + 0, 0, 407, 408, 1, 0, 0, 0, 408, 51, 1, 0, 0, 0, 409, 410, 5, 52, 0, 0, + 410, 423, 5, 53, 0, 0, 411, 423, 5, 56, 0, 0, 412, 413, 5, 66, 0, 0, 413, + 423, 5, 61, 0, 0, 414, 415, 5, 60, 0, 0, 415, 423, 3, 8, 4, 0, 416, 423, + 3, 56, 28, 0, 417, 418, 5, 50, 0, 0, 418, 419, 5, 7, 0, 0, 419, 420, 3, + 110, 55, 0, 420, 421, 5, 8, 0, 0, 421, 423, 1, 0, 0, 0, 422, 409, 1, 0, + 0, 0, 422, 411, 1, 0, 0, 0, 422, 412, 1, 0, 0, 0, 422, 414, 1, 0, 0, 0, + 422, 416, 1, 0, 0, 0, 422, 417, 1, 0, 0, 0, 423, 53, 1, 0, 0, 0, 424, 425, + 5, 54, 0, 0, 425, 434, 7, 5, 0, 0, 426, 427, 5, 59, 0, 0, 427, 435, 5, + 61, 0, 0, 428, 429, 5, 59, 0, 0, 429, 435, 5, 60, 0, 0, 430, 435, 5, 58, + 0, 0, 431, 432, 5, 92, 0, 0, 432, 435, 5, 36, 0, 0, 433, 435, 5, 57, 0, + 0, 434, 426, 1, 0, 0, 0, 434, 428, 1, 0, 0, 0, 434, 430, 1, 0, 0, 0, 434, + 431, 1, 0, 0, 0, 434, 433, 1, 0, 0, 0, 435, 55, 1, 0, 0, 0, 436, 437, 5, + 64, 0, 0, 437, 438, 3, 10, 5, 0, 438, 439, 5, 7, 0, 0, 439, 440, 3, 10, + 5, 0, 440, 441, 5, 8, 0, 0, 441, 446, 1, 0, 0, 0, 442, 444, 3, 54, 27, + 0, 443, 445, 3, 54, 27, 0, 444, 443, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, + 445, 447, 1, 0, 0, 0, 446, 442, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, + 57, 1, 0, 0, 0, 448, 449, 7, 6, 0, 0, 449, 59, 1, 0, 0, 0, 450, 452, 3, + 24, 12, 0, 451, 450, 1, 0, 0, 0, 452, 455, 1, 0, 0, 0, 453, 451, 1, 0, + 0, 0, 453, 454, 1, 0, 0, 0, 454, 456, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, + 456, 457, 5, 36, 0, 0, 457, 458, 5, 139, 0, 0, 458, 460, 5, 7, 0, 0, 459, + 461, 3, 20, 10, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 462, + 1, 0, 0, 0, 462, 464, 5, 8, 0, 0, 463, 465, 3, 58, 29, 0, 464, 463, 1, + 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, + 0, 467, 468, 1, 0, 0, 0, 468, 469, 5, 1, 0, 0, 469, 470, 3, 120, 60, 0, + 470, 471, 5, 2, 0, 0, 471, 61, 1, 0, 0, 0, 472, 474, 3, 24, 12, 0, 473, + 472, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0, 475, 473, 1, 0, 0, 0, 475, 476, + 1, 0, 0, 0, 476, 478, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 478, 479, 5, 37, + 0, 0, 479, 480, 5, 139, 0, 0, 480, 482, 5, 7, 0, 0, 481, 483, 3, 48, 24, + 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, + 486, 5, 8, 0, 0, 485, 487, 3, 58, 29, 0, 486, 485, 1, 0, 0, 0, 487, 488, + 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 491, 1, 0, + 0, 0, 490, 492, 3, 64, 32, 0, 491, 490, 1, 0, 0, 0, 491, 492, 1, 0, 0, + 0, 492, 493, 1, 0, 0, 0, 493, 494, 5, 1, 0, 0, 494, 495, 3, 124, 62, 0, + 495, 496, 5, 2, 0, 0, 496, 63, 1, 0, 0, 0, 497, 509, 5, 91, 0, 0, 498, + 500, 5, 35, 0, 0, 499, 498, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, + 1, 0, 0, 0, 501, 502, 5, 7, 0, 0, 502, 503, 3, 46, 23, 0, 503, 504, 5, + 8, 0, 0, 504, 510, 1, 0, 0, 0, 505, 506, 5, 7, 0, 0, 506, 507, 3, 44, 22, + 0, 507, 508, 5, 8, 0, 0, 508, 510, 1, 0, 0, 0, 509, 499, 1, 0, 0, 0, 509, + 505, 1, 0, 0, 0, 510, 65, 1, 0, 0, 0, 511, 514, 3, 70, 35, 0, 512, 514, + 3, 68, 34, 0, 513, 511, 1, 0, 0, 0, 513, 512, 1, 0, 0, 0, 514, 515, 1, + 0, 0, 0, 515, 516, 5, 6, 0, 0, 516, 67, 1, 0, 0, 0, 517, 522, 3, 74, 37, + 0, 518, 522, 3, 78, 39, 0, 519, 522, 3, 82, 41, 0, 520, 522, 3, 84, 42, + 0, 521, 517, 1, 0, 0, 0, 521, 518, 1, 0, 0, 0, 521, 519, 1, 0, 0, 0, 521, + 520, 1, 0, 0, 0, 522, 69, 1, 0, 0, 0, 523, 525, 5, 93, 0, 0, 524, 526, + 5, 127, 0, 0, 525, 524, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 527, 1, + 0, 0, 0, 527, 532, 3, 72, 36, 0, 528, 529, 5, 9, 0, 0, 529, 531, 3, 72, + 36, 0, 530, 528, 1, 0, 0, 0, 531, 534, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, + 532, 533, 1, 0, 0, 0, 533, 536, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 535, + 523, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 541, 1, 0, 0, 0, 537, 542, + 3, 86, 43, 0, 538, 542, 3, 100, 50, 0, 539, 542, 3, 104, 52, 0, 540, 542, + 3, 108, 54, 0, 541, 537, 1, 0, 0, 0, 541, 538, 1, 0, 0, 0, 541, 539, 1, + 0, 0, 0, 541, 540, 1, 0, 0, 0, 542, 71, 1, 0, 0, 0, 543, 556, 3, 10, 5, + 0, 544, 553, 5, 7, 0, 0, 545, 550, 3, 10, 5, 0, 546, 547, 5, 9, 0, 0, 547, + 549, 3, 10, 5, 0, 548, 546, 1, 0, 0, 0, 549, 552, 1, 0, 0, 0, 550, 548, + 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 554, 1, 0, 0, 0, 552, 550, 1, 0, + 0, 0, 553, 545, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, + 555, 557, 5, 8, 0, 0, 556, 544, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, + 558, 1, 0, 0, 0, 558, 559, 5, 82, 0, 0, 559, 560, 5, 7, 0, 0, 560, 561, + 3, 86, 43, 0, 561, 562, 5, 8, 0, 0, 562, 73, 1, 0, 0, 0, 563, 564, 5, 42, + 0, 0, 564, 568, 5, 35, 0, 0, 565, 566, 5, 117, 0, 0, 566, 567, 5, 66, 0, + 0, 567, 569, 5, 75, 0, 0, 568, 565, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, + 570, 1, 0, 0, 0, 570, 571, 3, 10, 5, 0, 571, 575, 5, 7, 0, 0, 572, 576, + 3, 34, 17, 0, 573, 576, 3, 76, 38, 0, 574, 576, 3, 38, 19, 0, 575, 572, + 1, 0, 0, 0, 575, 573, 1, 0, 0, 0, 575, 574, 1, 0, 0, 0, 576, 585, 1, 0, + 0, 0, 577, 581, 5, 9, 0, 0, 578, 582, 3, 34, 17, 0, 579, 582, 3, 76, 38, + 0, 580, 582, 3, 38, 19, 0, 581, 578, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, + 581, 580, 1, 0, 0, 0, 582, 584, 1, 0, 0, 0, 583, 577, 1, 0, 0, 0, 584, + 587, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 588, + 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 588, 589, 5, 8, 0, 0, 589, 75, 1, 0, + 0, 0, 590, 591, 5, 49, 0, 0, 591, 593, 3, 10, 5, 0, 592, 590, 1, 0, 0, + 0, 592, 593, 1, 0, 0, 0, 593, 617, 1, 0, 0, 0, 594, 595, 5, 52, 0, 0, 595, + 596, 5, 53, 0, 0, 596, 597, 5, 7, 0, 0, 597, 598, 3, 12, 6, 0, 598, 599, + 5, 8, 0, 0, 599, 618, 1, 0, 0, 0, 600, 601, 5, 56, 0, 0, 601, 602, 5, 7, + 0, 0, 602, 603, 3, 12, 6, 0, 603, 604, 5, 8, 0, 0, 604, 618, 1, 0, 0, 0, + 605, 606, 5, 50, 0, 0, 606, 607, 5, 7, 0, 0, 607, 608, 3, 110, 55, 0, 608, + 609, 5, 8, 0, 0, 609, 618, 1, 0, 0, 0, 610, 611, 5, 51, 0, 0, 611, 612, + 5, 53, 0, 0, 612, 613, 5, 7, 0, 0, 613, 614, 3, 10, 5, 0, 614, 615, 5, + 8, 0, 0, 615, 616, 3, 56, 28, 0, 616, 618, 1, 0, 0, 0, 617, 594, 1, 0, + 0, 0, 617, 600, 1, 0, 0, 0, 617, 605, 1, 0, 0, 0, 617, 610, 1, 0, 0, 0, + 618, 77, 1, 0, 0, 0, 619, 620, 5, 43, 0, 0, 620, 621, 5, 35, 0, 0, 621, + 622, 3, 10, 5, 0, 622, 623, 3, 80, 40, 0, 623, 79, 1, 0, 0, 0, 624, 625, + 5, 43, 0, 0, 625, 626, 5, 44, 0, 0, 626, 627, 3, 10, 5, 0, 627, 632, 5, + 59, 0, 0, 628, 629, 5, 66, 0, 0, 629, 633, 5, 61, 0, 0, 630, 631, 5, 60, + 0, 0, 631, 633, 3, 8, 4, 0, 632, 628, 1, 0, 0, 0, 632, 630, 1, 0, 0, 0, + 633, 668, 1, 0, 0, 0, 634, 635, 5, 43, 0, 0, 635, 636, 5, 44, 0, 0, 636, + 637, 3, 10, 5, 0, 637, 643, 5, 46, 0, 0, 638, 639, 5, 66, 0, 0, 639, 644, + 5, 61, 0, 0, 640, 644, 5, 60, 0, 0, 641, 642, 5, 49, 0, 0, 642, 644, 3, + 10, 5, 0, 643, 638, 1, 0, 0, 0, 643, 640, 1, 0, 0, 0, 643, 641, 1, 0, 0, + 0, 644, 668, 1, 0, 0, 0, 645, 646, 5, 45, 0, 0, 646, 647, 5, 44, 0, 0, + 647, 648, 3, 10, 5, 0, 648, 649, 3, 14, 7, 0, 649, 668, 1, 0, 0, 0, 650, + 651, 5, 46, 0, 0, 651, 652, 5, 44, 0, 0, 652, 668, 3, 10, 5, 0, 653, 654, + 5, 47, 0, 0, 654, 655, 5, 44, 0, 0, 655, 656, 3, 10, 5, 0, 656, 657, 5, + 48, 0, 0, 657, 658, 3, 10, 5, 0, 658, 668, 1, 0, 0, 0, 659, 660, 5, 47, + 0, 0, 660, 661, 5, 48, 0, 0, 661, 668, 3, 10, 5, 0, 662, 663, 5, 45, 0, + 0, 663, 668, 3, 76, 38, 0, 664, 665, 5, 46, 0, 0, 665, 666, 5, 49, 0, 0, + 666, 668, 3, 10, 5, 0, 667, 624, 1, 0, 0, 0, 667, 634, 1, 0, 0, 0, 667, + 645, 1, 0, 0, 0, 667, 650, 1, 0, 0, 0, 667, 653, 1, 0, 0, 0, 667, 659, + 1, 0, 0, 0, 667, 662, 1, 0, 0, 0, 667, 664, 1, 0, 0, 0, 668, 81, 1, 0, + 0, 0, 669, 671, 5, 42, 0, 0, 670, 672, 5, 56, 0, 0, 671, 670, 1, 0, 0, + 0, 671, 672, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 677, 5, 67, 0, 0, 674, + 675, 5, 117, 0, 0, 675, 676, 5, 66, 0, 0, 676, 678, 5, 75, 0, 0, 677, 674, + 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 680, 1, 0, 0, 0, 679, 681, 3, 10, + 5, 0, 680, 679, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, + 682, 683, 5, 54, 0, 0, 683, 684, 3, 10, 5, 0, 684, 685, 5, 7, 0, 0, 685, + 686, 3, 12, 6, 0, 686, 687, 5, 8, 0, 0, 687, 83, 1, 0, 0, 0, 688, 689, + 5, 46, 0, 0, 689, 692, 5, 67, 0, 0, 690, 691, 5, 117, 0, 0, 691, 693, 5, + 75, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 1, 0, 0, + 0, 694, 695, 3, 10, 5, 0, 695, 85, 1, 0, 0, 0, 696, 702, 3, 92, 46, 0, + 697, 698, 3, 88, 44, 0, 698, 699, 3, 92, 46, 0, 699, 701, 1, 0, 0, 0, 700, + 697, 1, 0, 0, 0, 701, 704, 1, 0, 0, 0, 702, 700, 1, 0, 0, 0, 702, 703, + 1, 0, 0, 0, 703, 715, 1, 0, 0, 0, 704, 702, 1, 0, 0, 0, 705, 706, 5, 87, + 0, 0, 706, 707, 5, 88, 0, 0, 707, 712, 3, 90, 45, 0, 708, 709, 5, 9, 0, + 0, 709, 711, 3, 90, 45, 0, 710, 708, 1, 0, 0, 0, 711, 714, 1, 0, 0, 0, + 712, 710, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 713, 716, 1, 0, 0, 0, 714, + 712, 1, 0, 0, 0, 715, 705, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 719, + 1, 0, 0, 0, 717, 718, 5, 85, 0, 0, 718, 720, 3, 110, 55, 0, 719, 717, 1, + 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 723, 1, 0, 0, 0, 721, 722, 5, 86, 0, + 0, 722, 724, 3, 110, 55, 0, 723, 721, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, + 724, 87, 1, 0, 0, 0, 725, 727, 5, 106, 0, 0, 726, 728, 5, 76, 0, 0, 727, + 726, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 732, 1, 0, 0, 0, 729, 732, + 5, 107, 0, 0, 730, 732, 5, 108, 0, 0, 731, 725, 1, 0, 0, 0, 731, 729, 1, + 0, 0, 0, 731, 730, 1, 0, 0, 0, 732, 89, 1, 0, 0, 0, 733, 735, 3, 110, 55, + 0, 734, 736, 7, 7, 0, 0, 735, 734, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, + 739, 1, 0, 0, 0, 737, 738, 5, 109, 0, 0, 738, 740, 7, 8, 0, 0, 739, 737, + 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 91, 1, 0, 0, 0, 741, 743, 5, 102, + 0, 0, 742, 744, 5, 98, 0, 0, 743, 742, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, + 744, 745, 1, 0, 0, 0, 745, 750, 3, 98, 49, 0, 746, 747, 5, 9, 0, 0, 747, + 749, 3, 98, 49, 0, 748, 746, 1, 0, 0, 0, 749, 752, 1, 0, 0, 0, 750, 748, + 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 761, 1, 0, 0, 0, 752, 750, 1, 0, + 0, 0, 753, 754, 5, 99, 0, 0, 754, 758, 3, 94, 47, 0, 755, 757, 3, 96, 48, + 0, 756, 755, 1, 0, 0, 0, 757, 760, 1, 0, 0, 0, 758, 756, 1, 0, 0, 0, 758, + 759, 1, 0, 0, 0, 759, 762, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 761, 753, + 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 765, 1, 0, 0, 0, 763, 764, 5, 100, + 0, 0, 764, 766, 3, 110, 55, 0, 765, 763, 1, 0, 0, 0, 765, 766, 1, 0, 0, + 0, 766, 774, 1, 0, 0, 0, 767, 768, 5, 89, 0, 0, 768, 769, 5, 88, 0, 0, + 769, 772, 3, 116, 58, 0, 770, 771, 5, 90, 0, 0, 771, 773, 3, 110, 55, 0, + 772, 770, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 775, 1, 0, 0, 0, 774, + 767, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 790, 1, 0, 0, 0, 776, 777, + 5, 125, 0, 0, 777, 778, 3, 10, 5, 0, 778, 779, 5, 82, 0, 0, 779, 787, 3, + 112, 56, 0, 780, 781, 5, 9, 0, 0, 781, 782, 3, 10, 5, 0, 782, 783, 5, 82, + 0, 0, 783, 784, 3, 112, 56, 0, 784, 786, 1, 0, 0, 0, 785, 780, 1, 0, 0, + 0, 786, 789, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, + 791, 1, 0, 0, 0, 789, 787, 1, 0, 0, 0, 790, 776, 1, 0, 0, 0, 790, 791, + 1, 0, 0, 0, 791, 93, 1, 0, 0, 0, 792, 797, 3, 10, 5, 0, 793, 795, 5, 82, + 0, 0, 794, 793, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, + 796, 798, 3, 10, 5, 0, 797, 794, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, + 809, 1, 0, 0, 0, 799, 800, 5, 7, 0, 0, 800, 801, 3, 86, 43, 0, 801, 806, + 5, 8, 0, 0, 802, 804, 5, 82, 0, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, + 0, 0, 804, 805, 1, 0, 0, 0, 805, 807, 3, 10, 5, 0, 806, 803, 1, 0, 0, 0, + 806, 807, 1, 0, 0, 0, 807, 809, 1, 0, 0, 0, 808, 792, 1, 0, 0, 0, 808, + 799, 1, 0, 0, 0, 809, 95, 1, 0, 0, 0, 810, 812, 7, 9, 0, 0, 811, 810, 1, + 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 814, 5, 78, 0, + 0, 814, 815, 3, 94, 47, 0, 815, 816, 5, 54, 0, 0, 816, 817, 3, 110, 55, + 0, 817, 97, 1, 0, 0, 0, 818, 823, 3, 110, 55, 0, 819, 821, 5, 82, 0, 0, + 820, 819, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 822, 1, 0, 0, 0, 822, + 824, 3, 10, 5, 0, 823, 820, 1, 0, 0, 0, 823, 824, 1, 0, 0, 0, 824, 832, + 1, 0, 0, 0, 825, 826, 3, 10, 5, 0, 826, 827, 5, 12, 0, 0, 827, 829, 1, + 0, 0, 0, 828, 825, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 830, 1, 0, 0, + 0, 830, 832, 5, 14, 0, 0, 831, 818, 1, 0, 0, 0, 831, 828, 1, 0, 0, 0, 832, + 99, 1, 0, 0, 0, 833, 834, 5, 63, 0, 0, 834, 839, 3, 10, 5, 0, 835, 837, + 5, 82, 0, 0, 836, 835, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 838, 1, 0, + 0, 0, 838, 840, 3, 10, 5, 0, 839, 836, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, + 840, 841, 1, 0, 0, 0, 841, 842, 5, 59, 0, 0, 842, 847, 3, 102, 51, 0, 843, + 844, 5, 9, 0, 0, 844, 846, 3, 102, 51, 0, 845, 843, 1, 0, 0, 0, 846, 849, + 1, 0, 0, 0, 847, 845, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 858, 1, 0, + 0, 0, 849, 847, 1, 0, 0, 0, 850, 851, 5, 99, 0, 0, 851, 855, 3, 94, 47, + 0, 852, 854, 3, 96, 48, 0, 853, 852, 1, 0, 0, 0, 854, 857, 1, 0, 0, 0, + 855, 853, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, 859, 1, 0, 0, 0, 857, + 855, 1, 0, 0, 0, 858, 850, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 862, + 1, 0, 0, 0, 860, 861, 5, 100, 0, 0, 861, 863, 3, 110, 55, 0, 862, 860, + 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 101, 1, 0, 0, 0, 864, 865, 3, 10, + 5, 0, 865, 866, 5, 15, 0, 0, 866, 867, 3, 110, 55, 0, 867, 103, 1, 0, 0, + 0, 868, 869, 5, 103, 0, 0, 869, 870, 5, 113, 0, 0, 870, 875, 3, 10, 5, + 0, 871, 873, 5, 82, 0, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, + 874, 1, 0, 0, 0, 874, 876, 3, 10, 5, 0, 875, 872, 1, 0, 0, 0, 875, 876, + 1, 0, 0, 0, 876, 881, 1, 0, 0, 0, 877, 878, 5, 7, 0, 0, 878, 879, 3, 12, + 6, 0, 879, 880, 5, 8, 0, 0, 880, 882, 1, 0, 0, 0, 881, 877, 1, 0, 0, 0, + 881, 882, 1, 0, 0, 0, 882, 898, 1, 0, 0, 0, 883, 884, 5, 104, 0, 0, 884, + 885, 5, 7, 0, 0, 885, 886, 3, 116, 58, 0, 886, 894, 5, 8, 0, 0, 887, 888, + 5, 9, 0, 0, 888, 889, 5, 7, 0, 0, 889, 890, 3, 116, 58, 0, 890, 891, 5, + 8, 0, 0, 891, 893, 1, 0, 0, 0, 892, 887, 1, 0, 0, 0, 893, 896, 1, 0, 0, + 0, 894, 892, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 899, 1, 0, 0, 0, 896, + 894, 1, 0, 0, 0, 897, 899, 3, 86, 43, 0, 898, 883, 1, 0, 0, 0, 898, 897, + 1, 0, 0, 0, 899, 901, 1, 0, 0, 0, 900, 902, 3, 106, 53, 0, 901, 900, 1, + 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 105, 1, 0, 0, 0, 903, 904, 5, 54, 0, + 0, 904, 912, 5, 114, 0, 0, 905, 906, 5, 7, 0, 0, 906, 907, 3, 12, 6, 0, + 907, 910, 5, 8, 0, 0, 908, 909, 5, 100, 0, 0, 909, 911, 3, 110, 55, 0, + 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 913, 1, 0, 0, 0, 912, + 905, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 930, + 5, 55, 0, 0, 915, 931, 5, 115, 0, 0, 916, 917, 5, 63, 0, 0, 917, 918, 5, + 59, 0, 0, 918, 923, 3, 102, 51, 0, 919, 920, 5, 9, 0, 0, 920, 922, 3, 102, + 51, 0, 921, 919, 1, 0, 0, 0, 922, 925, 1, 0, 0, 0, 923, 921, 1, 0, 0, 0, + 923, 924, 1, 0, 0, 0, 924, 928, 1, 0, 0, 0, 925, 923, 1, 0, 0, 0, 926, + 927, 5, 100, 0, 0, 927, 929, 3, 110, 55, 0, 928, 926, 1, 0, 0, 0, 928, + 929, 1, 0, 0, 0, 929, 931, 1, 0, 0, 0, 930, 915, 1, 0, 0, 0, 930, 916, + 1, 0, 0, 0, 931, 107, 1, 0, 0, 0, 932, 933, 5, 62, 0, 0, 933, 934, 5, 99, + 0, 0, 934, 939, 3, 10, 5, 0, 935, 937, 5, 82, 0, 0, 936, 935, 1, 0, 0, + 0, 936, 937, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 940, 3, 10, 5, 0, 939, + 936, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 942, + 5, 100, 0, 0, 942, 944, 3, 110, 55, 0, 943, 941, 1, 0, 0, 0, 943, 944, + 1, 0, 0, 0, 944, 109, 1, 0, 0, 0, 945, 946, 6, 55, -1, 0, 946, 947, 5, + 7, 0, 0, 947, 948, 3, 110, 55, 0, 948, 950, 5, 8, 0, 0, 949, 951, 3, 16, + 8, 0, 950, 949, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 1019, 1, 0, 0, 0, + 952, 953, 7, 0, 0, 0, 953, 1019, 3, 110, 55, 20, 954, 956, 3, 8, 4, 0, + 955, 957, 3, 16, 8, 0, 956, 955, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, + 1019, 1, 0, 0, 0, 958, 965, 3, 118, 59, 0, 959, 960, 5, 126, 0, 0, 960, + 961, 5, 7, 0, 0, 961, 962, 5, 100, 0, 0, 962, 963, 3, 110, 55, 0, 963, + 964, 5, 8, 0, 0, 964, 966, 1, 0, 0, 0, 965, 959, 1, 0, 0, 0, 965, 966, + 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 970, 5, 123, 0, 0, 968, 971, 3, + 112, 56, 0, 969, 971, 5, 139, 0, 0, 970, 968, 1, 0, 0, 0, 970, 969, 1, + 0, 0, 0, 971, 1019, 1, 0, 0, 0, 972, 974, 3, 118, 59, 0, 973, 975, 3, 16, + 8, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 1019, 1, 0, 0, 0, + 976, 978, 3, 18, 9, 0, 977, 979, 3, 16, 8, 0, 978, 977, 1, 0, 0, 0, 978, + 979, 1, 0, 0, 0, 979, 1019, 1, 0, 0, 0, 980, 981, 3, 10, 5, 0, 981, 982, + 5, 12, 0, 0, 982, 984, 1, 0, 0, 0, 983, 980, 1, 0, 0, 0, 983, 984, 1, 0, + 0, 0, 984, 985, 1, 0, 0, 0, 985, 987, 3, 10, 5, 0, 986, 988, 3, 16, 8, + 0, 987, 986, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 1019, 1, 0, 0, 0, 989, + 991, 5, 94, 0, 0, 990, 992, 3, 110, 55, 0, 991, 990, 1, 0, 0, 0, 991, 992, + 1, 0, 0, 0, 992, 994, 1, 0, 0, 0, 993, 995, 3, 114, 57, 0, 994, 993, 1, + 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 996, 997, 1, 0, 0, + 0, 997, 1000, 1, 0, 0, 0, 998, 999, 5, 119, 0, 0, 999, 1001, 3, 110, 55, + 0, 1000, 998, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, + 0, 1002, 1003, 5, 97, 0, 0, 1003, 1019, 1, 0, 0, 0, 1004, 1006, 5, 66, + 0, 0, 1005, 1004, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, 0, 1006, 1007, 1, 0, + 0, 0, 1007, 1009, 5, 75, 0, 0, 1008, 1005, 1, 0, 0, 0, 1008, 1009, 1, 0, + 0, 0, 1009, 1010, 1, 0, 0, 0, 1010, 1011, 5, 7, 0, 0, 1011, 1012, 3, 86, + 43, 0, 1012, 1014, 5, 8, 0, 0, 1013, 1015, 3, 16, 8, 0, 1014, 1013, 1, + 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1019, 1, 0, 0, 0, 1016, 1017, 5, + 66, 0, 0, 1017, 1019, 3, 110, 55, 3, 1018, 945, 1, 0, 0, 0, 1018, 952, + 1, 0, 0, 0, 1018, 954, 1, 0, 0, 0, 1018, 958, 1, 0, 0, 0, 1018, 972, 1, + 0, 0, 0, 1018, 976, 1, 0, 0, 0, 1018, 983, 1, 0, 0, 0, 1018, 989, 1, 0, + 0, 0, 1018, 1008, 1, 0, 0, 0, 1018, 1016, 1, 0, 0, 0, 1019, 1105, 1, 0, + 0, 0, 1020, 1021, 10, 18, 0, 0, 1021, 1022, 7, 10, 0, 0, 1022, 1104, 3, + 110, 55, 19, 1023, 1024, 10, 17, 0, 0, 1024, 1025, 7, 0, 0, 0, 1025, 1104, + 3, 110, 55, 18, 1026, 1027, 10, 9, 0, 0, 1027, 1028, 5, 13, 0, 0, 1028, + 1104, 3, 110, 55, 10, 1029, 1031, 10, 7, 0, 0, 1030, 1032, 5, 66, 0, 0, + 1031, 1030, 1, 0, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, + 1033, 1034, 7, 11, 0, 0, 1034, 1104, 3, 110, 55, 8, 1035, 1037, 10, 6, + 0, 0, 1036, 1038, 5, 66, 0, 0, 1037, 1036, 1, 0, 0, 0, 1037, 1038, 1, 0, + 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1040, 5, 73, 0, 0, 1040, 1041, 3, 110, + 55, 0, 1041, 1042, 5, 68, 0, 0, 1042, 1043, 3, 110, 55, 7, 1043, 1104, + 1, 0, 0, 0, 1044, 1045, 10, 5, 0, 0, 1045, 1046, 7, 12, 0, 0, 1046, 1104, + 3, 110, 55, 6, 1047, 1048, 10, 2, 0, 0, 1048, 1049, 5, 68, 0, 0, 1049, + 1104, 3, 110, 55, 3, 1050, 1051, 10, 1, 0, 0, 1051, 1052, 5, 69, 0, 0, + 1052, 1104, 3, 110, 55, 2, 1053, 1054, 10, 22, 0, 0, 1054, 1055, 5, 12, + 0, 0, 1055, 1057, 3, 10, 5, 0, 1056, 1058, 3, 16, 8, 0, 1057, 1056, 1, + 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1104, 1, 0, 0, 0, 1059, 1060, 10, + 21, 0, 0, 1060, 1069, 5, 3, 0, 0, 1061, 1070, 3, 110, 55, 0, 1062, 1064, + 3, 110, 55, 0, 1063, 1062, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1065, + 1, 0, 0, 0, 1065, 1067, 5, 5, 0, 0, 1066, 1068, 3, 110, 55, 0, 1067, 1066, + 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1070, 1, 0, 0, 0, 1069, 1061, + 1, 0, 0, 0, 1069, 1063, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 1073, + 5, 4, 0, 0, 1072, 1074, 3, 16, 8, 0, 1073, 1072, 1, 0, 0, 0, 1073, 1074, + 1, 0, 0, 0, 1074, 1104, 1, 0, 0, 0, 1075, 1076, 10, 19, 0, 0, 1076, 1077, + 5, 101, 0, 0, 1077, 1104, 3, 10, 5, 0, 1078, 1080, 10, 8, 0, 0, 1079, 1081, + 5, 66, 0, 0, 1080, 1079, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, + 1, 0, 0, 0, 1082, 1083, 5, 72, 0, 0, 1083, 1086, 5, 7, 0, 0, 1084, 1087, + 3, 116, 58, 0, 1085, 1087, 3, 86, 43, 0, 1086, 1084, 1, 0, 0, 0, 1086, + 1085, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 5, 8, 0, 0, 1089, + 1104, 1, 0, 0, 0, 1090, 1091, 10, 4, 0, 0, 1091, 1093, 5, 74, 0, 0, 1092, + 1094, 5, 66, 0, 0, 1093, 1092, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, + 1101, 1, 0, 0, 0, 1095, 1096, 5, 98, 0, 0, 1096, 1097, 5, 99, 0, 0, 1097, + 1102, 3, 110, 55, 0, 1098, 1102, 5, 61, 0, 0, 1099, 1102, 5, 129, 0, 0, + 1100, 1102, 5, 130, 0, 0, 1101, 1095, 1, 0, 0, 0, 1101, 1098, 1, 0, 0, + 0, 1101, 1099, 1, 0, 0, 0, 1101, 1100, 1, 0, 0, 0, 1102, 1104, 1, 0, 0, + 0, 1103, 1020, 1, 0, 0, 0, 1103, 1023, 1, 0, 0, 0, 1103, 1026, 1, 0, 0, + 0, 1103, 1029, 1, 0, 0, 0, 1103, 1035, 1, 0, 0, 0, 1103, 1044, 1, 0, 0, + 0, 1103, 1047, 1, 0, 0, 0, 1103, 1050, 1, 0, 0, 0, 1103, 1053, 1, 0, 0, + 0, 1103, 1059, 1, 0, 0, 0, 1103, 1075, 1, 0, 0, 0, 1103, 1078, 1, 0, 0, + 0, 1103, 1090, 1, 0, 0, 0, 1104, 1107, 1, 0, 0, 0, 1105, 1103, 1, 0, 0, + 0, 1105, 1106, 1, 0, 0, 0, 1106, 111, 1, 0, 0, 0, 1107, 1105, 1, 0, 0, + 0, 1108, 1112, 5, 7, 0, 0, 1109, 1110, 5, 124, 0, 0, 1110, 1111, 5, 88, + 0, 0, 1111, 1113, 3, 116, 58, 0, 1112, 1109, 1, 0, 0, 0, 1112, 1113, 1, + 0, 0, 0, 1113, 1124, 1, 0, 0, 0, 1114, 1115, 5, 87, 0, 0, 1115, 1116, 5, + 88, 0, 0, 1116, 1121, 3, 90, 45, 0, 1117, 1118, 5, 9, 0, 0, 1118, 1120, + 3, 90, 45, 0, 1119, 1117, 1, 0, 0, 0, 1120, 1123, 1, 0, 0, 0, 1121, 1119, + 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1125, 1, 0, 0, 0, 1123, 1121, + 1, 0, 0, 0, 1124, 1114, 1, 0, 0, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, + 1, 0, 0, 0, 1126, 1127, 5, 8, 0, 0, 1127, 113, 1, 0, 0, 0, 1128, 1129, + 5, 95, 0, 0, 1129, 1130, 3, 110, 55, 0, 1130, 1131, 5, 96, 0, 0, 1131, + 1132, 3, 110, 55, 0, 1132, 115, 1, 0, 0, 0, 1133, 1138, 3, 110, 55, 0, + 1134, 1135, 5, 9, 0, 0, 1135, 1137, 3, 110, 55, 0, 1136, 1134, 1, 0, 0, + 0, 1137, 1140, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, + 0, 1139, 117, 1, 0, 0, 0, 1140, 1138, 1, 0, 0, 0, 1141, 1142, 3, 10, 5, + 0, 1142, 1148, 5, 7, 0, 0, 1143, 1145, 5, 98, 0, 0, 1144, 1143, 1, 0, 0, + 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1149, 3, 116, + 58, 0, 1147, 1149, 5, 14, 0, 0, 1148, 1144, 1, 0, 0, 0, 1148, 1147, 1, + 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1151, 5, + 8, 0, 0, 1151, 119, 1, 0, 0, 0, 1152, 1153, 3, 122, 61, 0, 1153, 1154, + 5, 6, 0, 0, 1154, 1156, 1, 0, 0, 0, 1155, 1152, 1, 0, 0, 0, 1156, 1159, + 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1158, 1, 0, 0, 0, 1158, 121, + 1, 0, 0, 0, 1159, 1157, 1, 0, 0, 0, 1160, 1181, 3, 70, 35, 0, 1161, 1162, + 5, 139, 0, 0, 1162, 1164, 5, 7, 0, 0, 1163, 1165, 3, 128, 64, 0, 1164, + 1163, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1166, 1, 0, 0, 0, 1166, + 1181, 5, 8, 0, 0, 1167, 1168, 3, 20, 10, 0, 1168, 1169, 5, 15, 0, 0, 1169, + 1171, 1, 0, 0, 0, 1170, 1167, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, + 1172, 1, 0, 0, 0, 1172, 1173, 5, 139, 0, 0, 1173, 1174, 5, 12, 0, 0, 1174, + 1175, 5, 139, 0, 0, 1175, 1177, 5, 7, 0, 0, 1176, 1178, 3, 128, 64, 0, + 1177, 1176, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, + 1179, 1181, 5, 8, 0, 0, 1180, 1160, 1, 0, 0, 0, 1180, 1161, 1, 0, 0, 0, + 1180, 1170, 1, 0, 0, 0, 1181, 123, 1, 0, 0, 0, 1182, 1184, 3, 130, 65, + 0, 1183, 1182, 1, 0, 0, 0, 1184, 1187, 1, 0, 0, 0, 1185, 1183, 1, 0, 0, + 0, 1185, 1186, 1, 0, 0, 0, 1186, 125, 1, 0, 0, 0, 1187, 1185, 1, 0, 0, + 0, 1188, 1189, 6, 63, -1, 0, 1189, 1190, 5, 7, 0, 0, 1190, 1191, 3, 126, + 63, 0, 1191, 1193, 5, 8, 0, 0, 1192, 1194, 3, 16, 8, 0, 1193, 1192, 1, + 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1220, 1, 0, 0, 0, 1195, 1196, 7, + 13, 0, 0, 1196, 1220, 3, 126, 63, 13, 1197, 1199, 3, 8, 4, 0, 1198, 1200, + 3, 16, 8, 0, 1199, 1198, 1, 0, 0, 0, 1199, 1200, 1, 0, 0, 0, 1200, 1220, + 1, 0, 0, 0, 1201, 1203, 3, 134, 67, 0, 1202, 1204, 3, 16, 8, 0, 1203, 1202, + 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1220, 1, 0, 0, 0, 1205, 1207, + 3, 18, 9, 0, 1206, 1208, 3, 16, 8, 0, 1207, 1206, 1, 0, 0, 0, 1207, 1208, + 1, 0, 0, 0, 1208, 1220, 1, 0, 0, 0, 1209, 1211, 5, 3, 0, 0, 1210, 1212, + 3, 128, 64, 0, 1211, 1210, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, + 1, 0, 0, 0, 1213, 1215, 5, 4, 0, 0, 1214, 1216, 3, 16, 8, 0, 1215, 1214, + 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1220, 1, 0, 0, 0, 1217, 1218, + 5, 66, 0, 0, 1218, 1220, 3, 126, 63, 3, 1219, 1188, 1, 0, 0, 0, 1219, 1195, + 1, 0, 0, 0, 1219, 1197, 1, 0, 0, 0, 1219, 1201, 1, 0, 0, 0, 1219, 1205, + 1, 0, 0, 0, 1219, 1209, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1276, + 1, 0, 0, 0, 1221, 1222, 10, 12, 0, 0, 1222, 1223, 7, 10, 0, 0, 1223, 1275, + 3, 126, 63, 13, 1224, 1225, 10, 11, 0, 0, 1225, 1226, 7, 0, 0, 0, 1226, + 1275, 3, 126, 63, 12, 1227, 1228, 10, 6, 0, 0, 1228, 1229, 5, 13, 0, 0, + 1229, 1275, 3, 126, 63, 7, 1230, 1231, 10, 5, 0, 0, 1231, 1232, 7, 12, + 0, 0, 1232, 1275, 3, 126, 63, 6, 1233, 1234, 10, 2, 0, 0, 1234, 1235, 5, + 68, 0, 0, 1235, 1275, 3, 126, 63, 3, 1236, 1237, 10, 1, 0, 0, 1237, 1238, + 5, 69, 0, 0, 1238, 1275, 3, 126, 63, 2, 1239, 1240, 10, 15, 0, 0, 1240, + 1241, 5, 12, 0, 0, 1241, 1243, 5, 139, 0, 0, 1242, 1244, 3, 16, 8, 0, 1243, + 1242, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1275, 1, 0, 0, 0, 1245, + 1246, 10, 14, 0, 0, 1246, 1255, 5, 3, 0, 0, 1247, 1256, 3, 126, 63, 0, + 1248, 1250, 3, 126, 63, 0, 1249, 1248, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, + 0, 1250, 1251, 1, 0, 0, 0, 1251, 1253, 5, 5, 0, 0, 1252, 1254, 3, 126, + 63, 0, 1253, 1252, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 1256, 1, 0, + 0, 0, 1255, 1247, 1, 0, 0, 0, 1255, 1249, 1, 0, 0, 0, 1256, 1257, 1, 0, + 0, 0, 1257, 1259, 5, 4, 0, 0, 1258, 1260, 3, 16, 8, 0, 1259, 1258, 1, 0, + 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1275, 1, 0, 0, 0, 1261, 1262, 10, 4, + 0, 0, 1262, 1264, 5, 74, 0, 0, 1263, 1265, 5, 66, 0, 0, 1264, 1263, 1, + 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1272, 1, 0, 0, 0, 1266, 1267, 5, + 98, 0, 0, 1267, 1268, 5, 99, 0, 0, 1268, 1273, 3, 126, 63, 0, 1269, 1273, + 5, 61, 0, 0, 1270, 1273, 5, 129, 0, 0, 1271, 1273, 5, 130, 0, 0, 1272, + 1266, 1, 0, 0, 0, 1272, 1269, 1, 0, 0, 0, 1272, 1270, 1, 0, 0, 0, 1272, + 1271, 1, 0, 0, 0, 1273, 1275, 1, 0, 0, 0, 1274, 1221, 1, 0, 0, 0, 1274, + 1224, 1, 0, 0, 0, 1274, 1227, 1, 0, 0, 0, 1274, 1230, 1, 0, 0, 0, 1274, + 1233, 1, 0, 0, 0, 1274, 1236, 1, 0, 0, 0, 1274, 1239, 1, 0, 0, 0, 1274, + 1245, 1, 0, 0, 0, 1274, 1261, 1, 0, 0, 0, 1275, 1278, 1, 0, 0, 0, 1276, + 1274, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 127, 1, 0, 0, 0, 1278, + 1276, 1, 0, 0, 0, 1279, 1284, 3, 126, 63, 0, 1280, 1281, 5, 9, 0, 0, 1281, + 1283, 3, 126, 63, 0, 1282, 1280, 1, 0, 0, 0, 1283, 1286, 1, 0, 0, 0, 1284, + 1282, 1, 0, 0, 0, 1284, 1285, 1, 0, 0, 0, 1285, 129, 1, 0, 0, 0, 1286, + 1284, 1, 0, 0, 0, 1287, 1288, 5, 140, 0, 0, 1288, 1289, 3, 14, 7, 0, 1289, + 1290, 5, 6, 0, 0, 1290, 1368, 1, 0, 0, 0, 1291, 1296, 3, 132, 66, 0, 1292, + 1293, 5, 9, 0, 0, 1293, 1295, 3, 132, 66, 0, 1294, 1292, 1, 0, 0, 0, 1295, + 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, + 1299, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1300, 5, 30, 0, 0, 1300, + 1302, 1, 0, 0, 0, 1301, 1291, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, + 1303, 1, 0, 0, 0, 1303, 1304, 3, 134, 67, 0, 1304, 1305, 5, 6, 0, 0, 1305, + 1368, 1, 0, 0, 0, 1306, 1308, 3, 126, 63, 0, 1307, 1309, 3, 14, 7, 0, 1308, + 1307, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, + 1311, 5, 30, 0, 0, 1311, 1312, 3, 126, 63, 0, 1312, 1313, 5, 6, 0, 0, 1313, + 1368, 1, 0, 0, 0, 1314, 1315, 5, 116, 0, 0, 1315, 1316, 5, 140, 0, 0, 1316, + 1320, 5, 72, 0, 0, 1317, 1321, 3, 138, 69, 0, 1318, 1321, 3, 18, 9, 0, + 1319, 1321, 3, 70, 35, 0, 1320, 1317, 1, 0, 0, 0, 1320, 1318, 1, 0, 0, + 0, 1320, 1319, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1326, 5, 1, 0, + 0, 1323, 1325, 3, 130, 65, 0, 1324, 1323, 1, 0, 0, 0, 1325, 1328, 1, 0, + 0, 0, 1326, 1324, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1329, 1, 0, + 0, 0, 1328, 1326, 1, 0, 0, 0, 1329, 1330, 5, 2, 0, 0, 1330, 1368, 1, 0, + 0, 0, 1331, 1332, 5, 117, 0, 0, 1332, 1337, 3, 136, 68, 0, 1333, 1334, + 5, 118, 0, 0, 1334, 1336, 3, 136, 68, 0, 1335, 1333, 1, 0, 0, 0, 1336, + 1339, 1, 0, 0, 0, 1337, 1335, 1, 0, 0, 0, 1337, 1338, 1, 0, 0, 0, 1338, + 1349, 1, 0, 0, 0, 1339, 1337, 1, 0, 0, 0, 1340, 1341, 5, 119, 0, 0, 1341, + 1345, 5, 1, 0, 0, 1342, 1344, 3, 130, 65, 0, 1343, 1342, 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, 1350, 5, 2, 0, 0, 1349, + 1340, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1368, 1, 0, 0, 0, 1351, + 1352, 3, 70, 35, 0, 1352, 1353, 5, 6, 0, 0, 1353, 1368, 1, 0, 0, 0, 1354, + 1355, 5, 120, 0, 0, 1355, 1368, 5, 6, 0, 0, 1356, 1359, 5, 121, 0, 0, 1357, + 1360, 3, 128, 64, 0, 1358, 1360, 3, 70, 35, 0, 1359, 1357, 1, 0, 0, 0, + 1359, 1358, 1, 0, 0, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, + 1361, 1368, 5, 6, 0, 0, 1362, 1363, 5, 121, 0, 0, 1363, 1364, 5, 122, 0, + 0, 1364, 1365, 3, 128, 64, 0, 1365, 1366, 5, 6, 0, 0, 1366, 1368, 1, 0, + 0, 0, 1367, 1287, 1, 0, 0, 0, 1367, 1301, 1, 0, 0, 0, 1367, 1306, 1, 0, + 0, 0, 1367, 1314, 1, 0, 0, 0, 1367, 1331, 1, 0, 0, 0, 1367, 1351, 1, 0, + 0, 0, 1367, 1354, 1, 0, 0, 0, 1367, 1356, 1, 0, 0, 0, 1367, 1362, 1, 0, + 0, 0, 1368, 131, 1, 0, 0, 0, 1369, 1370, 7, 14, 0, 0, 1370, 133, 1, 0, + 0, 0, 1371, 1372, 5, 139, 0, 0, 1372, 1374, 5, 7, 0, 0, 1373, 1375, 3, + 128, 64, 0, 1374, 1373, 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1376, + 1, 0, 0, 0, 1376, 1377, 5, 8, 0, 0, 1377, 135, 1, 0, 0, 0, 1378, 1379, + 3, 126, 63, 0, 1379, 1383, 5, 1, 0, 0, 1380, 1382, 3, 130, 65, 0, 1381, + 1380, 1, 0, 0, 0, 1382, 1385, 1, 0, 0, 0, 1383, 1381, 1, 0, 0, 0, 1383, + 1384, 1, 0, 0, 0, 1384, 1386, 1, 0, 0, 0, 1385, 1383, 1, 0, 0, 0, 1386, + 1387, 5, 2, 0, 0, 1387, 137, 1, 0, 0, 0, 1388, 1389, 3, 126, 63, 0, 1389, + 1390, 5, 31, 0, 0, 1390, 1391, 3, 126, 63, 0, 1391, 139, 1, 0, 0, 0, 187, + 154, 158, 166, 172, 179, 188, 192, 204, 212, 214, 228, 231, 251, 256, 270, + 274, 284, 292, 302, 313, 326, 332, 337, 339, 342, 347, 353, 358, 361, 368, + 378, 389, 395, 401, 407, 422, 434, 444, 446, 453, 460, 466, 475, 482, 488, + 491, 499, 509, 513, 521, 525, 532, 535, 541, 550, 553, 556, 568, 575, 581, + 585, 592, 617, 632, 643, 667, 671, 677, 680, 692, 702, 712, 715, 719, 723, + 727, 731, 735, 739, 743, 750, 758, 761, 765, 772, 774, 787, 790, 794, 797, + 803, 806, 808, 811, 820, 823, 828, 831, 836, 839, 847, 855, 858, 862, 872, + 875, 881, 894, 898, 901, 910, 912, 923, 928, 930, 936, 939, 943, 950, 956, + 965, 970, 974, 978, 983, 987, 991, 996, 1000, 1005, 1008, 1014, 1018, 1031, + 1037, 1057, 1063, 1067, 1069, 1073, 1080, 1086, 1093, 1101, 1103, 1105, + 1112, 1121, 1124, 1138, 1144, 1148, 1157, 1164, 1170, 1177, 1180, 1185, + 1193, 1199, 1203, 1207, 1211, 1215, 1219, 1243, 1249, 1253, 1255, 1259, + 1264, 1272, 1274, 1276, 1284, 1296, 1301, 1308, 1320, 1326, 1337, 1345, + 1349, 1359, 1367, 1374, 1383, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -976,9 +982,9 @@ const ( KuneiformParserRULE_use_declaration = 14 KuneiformParserRULE_table_declaration = 15 KuneiformParserRULE_column_def = 16 - KuneiformParserRULE_c_column_def = 17 + KuneiformParserRULE_table_column_def = 17 KuneiformParserRULE_index_def = 18 - KuneiformParserRULE_c_index_def = 19 + KuneiformParserRULE_table_index_def = 19 KuneiformParserRULE_foreign_key_def = 20 KuneiformParserRULE_foreign_key_action = 21 KuneiformParserRULE_type_list = 22 @@ -992,12 +998,12 @@ const ( KuneiformParserRULE_action_declaration = 30 KuneiformParserRULE_procedure_declaration = 31 KuneiformParserRULE_procedure_return = 32 - KuneiformParserRULE_sql = 33 - KuneiformParserRULE_sql_statement = 34 - KuneiformParserRULE_common_table_expression = 35 - KuneiformParserRULE_create_table_statement = 36 - KuneiformParserRULE_constraint_def = 37 - KuneiformParserRULE_unnamed_constraint = 38 + KuneiformParserRULE_sql_stmt = 33 + KuneiformParserRULE_ddl_stmt = 34 + KuneiformParserRULE_sql_statement = 35 + KuneiformParserRULE_common_table_expression = 36 + KuneiformParserRULE_create_table_statement = 37 + KuneiformParserRULE_table_constraint_def = 38 KuneiformParserRULE_alter_table_statement = 39 KuneiformParserRULE_alter_table_action = 40 KuneiformParserRULE_create_index_statement = 41 @@ -1154,7 +1160,7 @@ type ISql_entryContext interface { GetParser() antlr.Parser // Getter signatures - Sql() ISqlContext + Sql_stmt() ISql_stmtContext EOF() antlr.TerminalNode // IsSql_entryContext differentiates from other interfaces. @@ -1193,10 +1199,10 @@ func NewSql_entryContext(parser antlr.Parser, parent antlr.ParserRuleContext, in func (s *Sql_entryContext) GetParser() antlr.Parser { return s.parser } -func (s *Sql_entryContext) Sql() ISqlContext { +func (s *Sql_entryContext) Sql_stmt() ISql_stmtContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISqlContext); ok { + if _, ok := ctx.(ISql_stmtContext); ok { t = ctx.(antlr.RuleContext) break } @@ -1206,7 +1212,7 @@ func (s *Sql_entryContext) Sql() ISqlContext { return nil } - return t.(ISqlContext) + return t.(ISql_stmtContext) } func (s *Sql_entryContext) EOF() antlr.TerminalNode { @@ -1237,7 +1243,7 @@ func (p *KuneiformParser) Sql_entry() (localctx ISql_entryContext) { p.EnterOuterAlt(localctx, 1) { p.SetState(143) - p.Sql() + p.Sql_stmt() } { p.SetState(144) @@ -4378,8 +4384,8 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IC_column_defContext is an interface to support dynamic dispatch. -type IC_column_defContext interface { +// ITable_column_defContext is an interface to support dynamic dispatch. +type ITable_column_defContext interface { antlr.ParserRuleContext // GetParser returns the parser. @@ -4397,48 +4403,48 @@ type IC_column_defContext interface { AllInline_constraint() []IInline_constraintContext Inline_constraint(i int) IInline_constraintContext - // IsC_column_defContext differentiates from other interfaces. - IsC_column_defContext() + // IsTable_column_defContext differentiates from other interfaces. + IsTable_column_defContext() } -type C_column_defContext struct { +type Table_column_defContext struct { antlr.BaseParserRuleContext parser antlr.Parser name antlr.Token } -func NewEmptyC_column_defContext() *C_column_defContext { - var p = new(C_column_defContext) +func NewEmptyTable_column_defContext() *Table_column_defContext { + var p = new(Table_column_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_c_column_def + p.RuleIndex = KuneiformParserRULE_table_column_def return p } -func InitEmptyC_column_defContext(p *C_column_defContext) { +func InitEmptyTable_column_defContext(p *Table_column_defContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_c_column_def + p.RuleIndex = KuneiformParserRULE_table_column_def } -func (*C_column_defContext) IsC_column_defContext() {} +func (*Table_column_defContext) IsTable_column_defContext() {} -func NewC_column_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *C_column_defContext { - var p = new(C_column_defContext) +func NewTable_column_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_column_defContext { + var p = new(Table_column_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_c_column_def + p.RuleIndex = KuneiformParserRULE_table_column_def return p } -func (s *C_column_defContext) GetParser() antlr.Parser { return s.parser } +func (s *Table_column_defContext) GetParser() antlr.Parser { return s.parser } -func (s *C_column_defContext) GetName() antlr.Token { return s.name } +func (s *Table_column_defContext) GetName() antlr.Token { return s.name } -func (s *C_column_defContext) SetName(v antlr.Token) { s.name = v } +func (s *Table_column_defContext) SetName(v antlr.Token) { s.name = v } -func (s *C_column_defContext) Type_() ITypeContext { +func (s *Table_column_defContext) Type_() ITypeContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(ITypeContext); ok { @@ -4454,11 +4460,11 @@ func (s *C_column_defContext) Type_() ITypeContext { return t.(ITypeContext) } -func (s *C_column_defContext) IDENTIFIER() antlr.TerminalNode { +func (s *Table_column_defContext) IDENTIFIER() antlr.TerminalNode { return s.GetToken(KuneiformParserIDENTIFIER, 0) } -func (s *C_column_defContext) AllInline_constraint() []IInline_constraintContext { +func (s *Table_column_defContext) AllInline_constraint() []IInline_constraintContext { children := s.GetChildren() len := 0 for _, ctx := range children { @@ -4479,7 +4485,7 @@ func (s *C_column_defContext) AllInline_constraint() []IInline_constraintContext return tst } -func (s *C_column_defContext) Inline_constraint(i int) IInline_constraintContext { +func (s *Table_column_defContext) Inline_constraint(i int) IInline_constraintContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { @@ -4499,27 +4505,27 @@ func (s *C_column_defContext) Inline_constraint(i int) IInline_constraintContext return t.(IInline_constraintContext) } -func (s *C_column_defContext) GetRuleContext() antlr.RuleContext { +func (s *Table_column_defContext) GetRuleContext() antlr.RuleContext { return s } -func (s *C_column_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Table_column_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *C_column_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Table_column_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitC_column_def(s) + return t.VisitTable_column_def(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) C_column_def() (localctx IC_column_defContext) { - localctx = NewC_column_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 34, KuneiformParserRULE_c_column_def) +func (p *KuneiformParser) Table_column_def() (localctx ITable_column_defContext) { + localctx = NewTable_column_defContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 34, KuneiformParserRULE_table_column_def) var _la int p.EnterOuterAlt(localctx, 1) @@ -4528,7 +4534,7 @@ func (p *KuneiformParser) C_column_def() (localctx IC_column_defContext) { var _m = p.Match(KuneiformParserIDENTIFIER) - localctx.(*C_column_defContext).name = _m + localctx.(*Table_column_defContext).name = _m if p.HasError() { // Recognition error - abort rule goto errorExit @@ -4755,8 +4761,8 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IC_index_defContext is an interface to support dynamic dispatch. -type IC_index_defContext interface { +// ITable_index_defContext is an interface to support dynamic dispatch. +type ITable_index_defContext interface { antlr.ParserRuleContext // GetParser returns the parser. @@ -4776,52 +4782,52 @@ type IC_index_defContext interface { Identifier_list() IIdentifier_listContext UNIQUE() antlr.TerminalNode - // IsC_index_defContext differentiates from other interfaces. - IsC_index_defContext() + // IsTable_index_defContext differentiates from other interfaces. + IsTable_index_defContext() } -type C_index_defContext struct { +type Table_index_defContext struct { antlr.BaseParserRuleContext parser antlr.Parser columns IIdentifier_listContext } -func NewEmptyC_index_defContext() *C_index_defContext { - var p = new(C_index_defContext) +func NewEmptyTable_index_defContext() *Table_index_defContext { + var p = new(Table_index_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_c_index_def + p.RuleIndex = KuneiformParserRULE_table_index_def return p } -func InitEmptyC_index_defContext(p *C_index_defContext) { +func InitEmptyTable_index_defContext(p *Table_index_defContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_c_index_def + p.RuleIndex = KuneiformParserRULE_table_index_def } -func (*C_index_defContext) IsC_index_defContext() {} +func (*Table_index_defContext) IsTable_index_defContext() {} -func NewC_index_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *C_index_defContext { - var p = new(C_index_defContext) +func NewTable_index_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_index_defContext { + var p = new(Table_index_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_c_index_def + p.RuleIndex = KuneiformParserRULE_table_index_def return p } -func (s *C_index_defContext) GetParser() antlr.Parser { return s.parser } +func (s *Table_index_defContext) GetParser() antlr.Parser { return s.parser } -func (s *C_index_defContext) GetColumns() IIdentifier_listContext { return s.columns } +func (s *Table_index_defContext) GetColumns() IIdentifier_listContext { return s.columns } -func (s *C_index_defContext) SetColumns(v IIdentifier_listContext) { s.columns = v } +func (s *Table_index_defContext) SetColumns(v IIdentifier_listContext) { s.columns = v } -func (s *C_index_defContext) INDEX() antlr.TerminalNode { +func (s *Table_index_defContext) INDEX() antlr.TerminalNode { return s.GetToken(KuneiformParserINDEX, 0) } -func (s *C_index_defContext) Identifier() IIdentifierContext { +func (s *Table_index_defContext) Identifier() IIdentifierContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(IIdentifierContext); ok { @@ -4837,15 +4843,15 @@ func (s *C_index_defContext) Identifier() IIdentifierContext { return t.(IIdentifierContext) } -func (s *C_index_defContext) LPAREN() antlr.TerminalNode { +func (s *Table_index_defContext) LPAREN() antlr.TerminalNode { return s.GetToken(KuneiformParserLPAREN, 0) } -func (s *C_index_defContext) RPAREN() antlr.TerminalNode { +func (s *Table_index_defContext) RPAREN() antlr.TerminalNode { return s.GetToken(KuneiformParserRPAREN, 0) } -func (s *C_index_defContext) Identifier_list() IIdentifier_listContext { +func (s *Table_index_defContext) Identifier_list() IIdentifier_listContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(IIdentifier_listContext); ok { @@ -4861,31 +4867,31 @@ func (s *C_index_defContext) Identifier_list() IIdentifier_listContext { return t.(IIdentifier_listContext) } -func (s *C_index_defContext) UNIQUE() antlr.TerminalNode { +func (s *Table_index_defContext) UNIQUE() antlr.TerminalNode { return s.GetToken(KuneiformParserUNIQUE, 0) } -func (s *C_index_defContext) GetRuleContext() antlr.RuleContext { +func (s *Table_index_defContext) GetRuleContext() antlr.RuleContext { return s } -func (s *C_index_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Table_index_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *C_index_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Table_index_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitC_index_def(s) + return t.VisitTable_index_def(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { - localctx = NewC_index_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 38, KuneiformParserRULE_c_index_def) +func (p *KuneiformParser) Table_index_def() (localctx ITable_index_defContext) { + localctx = NewTable_index_defContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 38, KuneiformParserRULE_table_index_def) var _la int p.EnterOuterAlt(localctx, 1) @@ -4932,7 +4938,7 @@ func (p *KuneiformParser) C_index_def() (localctx IC_index_defContext) { var _x = p.Identifier_list() - localctx.(*C_index_defContext).columns = _x + localctx.(*Table_index_defContext).columns = _x } { p.SetState(308) @@ -7362,7 +7368,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } } - p.SetState(449) + p.SetState(446) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7374,25 +7380,19 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { p.SetState(442) p.Fk_action() } - p.SetState(446) + p.SetState(444) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for _la == KuneiformParserON { + if _la == KuneiformParserON { { p.SetState(443) p.Fk_action() } - p.SetState(448) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) } } @@ -7500,7 +7500,7 @@ func (p *KuneiformParser) Access_modifier() (localctx IAccess_modifierContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(451) + p.SetState(448) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { @@ -7743,7 +7743,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(456) + p.SetState(453) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7752,11 +7752,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont for _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(453) + p.SetState(450) p.Annotation() } - p.SetState(458) + p.SetState(455) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7764,7 +7764,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont _la = p.GetTokenStream().LA(1) } { - p.SetState(459) + p.SetState(456) p.Match(KuneiformParserACTION) if p.HasError() { // Recognition error - abort rule @@ -7772,7 +7772,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(460) + p.SetState(457) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -7780,14 +7780,14 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(461) + p.SetState(458) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(463) + p.SetState(460) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7796,20 +7796,20 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(462) + p.SetState(459) p.Variable_list() } } { - p.SetState(465) + p.SetState(462) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(467) + p.SetState(464) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7818,11 +7818,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { { - p.SetState(466) + p.SetState(463) p.Access_modifier() } - p.SetState(469) + p.SetState(466) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7830,7 +7830,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont _la = p.GetTokenStream().LA(1) } { - p.SetState(471) + p.SetState(468) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -7838,11 +7838,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(472) + p.SetState(469) p.Action_block() } { - p.SetState(473) + p.SetState(470) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -8099,7 +8099,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(478) + p.SetState(475) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8108,11 +8108,11 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati for _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(475) + p.SetState(472) p.Annotation() } - p.SetState(480) + p.SetState(477) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8120,7 +8120,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati _la = p.GetTokenStream().LA(1) } { - p.SetState(481) + p.SetState(478) p.Match(KuneiformParserPROCEDURE) if p.HasError() { // Recognition error - abort rule @@ -8128,7 +8128,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(482) + p.SetState(479) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -8136,14 +8136,14 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(483) + p.SetState(480) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(485) + p.SetState(482) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8152,20 +8152,20 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(484) + p.SetState(481) p.Typed_variable_list() } } { - p.SetState(487) + p.SetState(484) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(489) + p.SetState(486) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8174,18 +8174,18 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { { - p.SetState(488) + p.SetState(485) p.Access_modifier() } - p.SetState(491) + p.SetState(488) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(494) + p.SetState(491) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8194,13 +8194,13 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati if _la == KuneiformParserRETURNS { { - p.SetState(493) + p.SetState(490) p.Procedure_return() } } { - p.SetState(496) + p.SetState(493) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -8208,11 +8208,11 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(497) + p.SetState(494) p.Procedure_block() } { - p.SetState(498) + p.SetState(495) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -8385,14 +8385,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(500) + p.SetState(497) p.Match(KuneiformParserRETURNS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(512) + p.SetState(509) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8400,7 +8400,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 47, p.GetParserRuleContext()) { case 1: - p.SetState(502) + p.SetState(499) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8409,7 +8409,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) if _la == KuneiformParserTABLE { { - p.SetState(501) + p.SetState(498) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -8419,7 +8419,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } { - p.SetState(504) + p.SetState(501) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -8427,14 +8427,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } } { - p.SetState(505) + p.SetState(502) var _x = p.Named_type_list() localctx.(*Procedure_returnContext).return_columns = _x } { - p.SetState(506) + p.SetState(503) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -8444,7 +8444,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) case 2: { - p.SetState(508) + p.SetState(505) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -8452,14 +8452,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } } { - p.SetState(509) + p.SetState(506) var _x = p.Type_list() localctx.(*Procedure_returnContext).unnamed_return_types = _x } { - p.SetState(510) + p.SetState(507) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -8484,54 +8484,59 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// ISqlContext is an interface to support dynamic dispatch. -type ISqlContext interface { +// ISql_stmtContext is an interface to support dynamic dispatch. +type ISql_stmtContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser // Getter signatures - Sql_statement() ISql_statementContext SCOL() antlr.TerminalNode + Sql_statement() ISql_statementContext + Ddl_stmt() IDdl_stmtContext - // IsSqlContext differentiates from other interfaces. - IsSqlContext() + // IsSql_stmtContext differentiates from other interfaces. + IsSql_stmtContext() } -type SqlContext struct { +type Sql_stmtContext struct { antlr.BaseParserRuleContext parser antlr.Parser } -func NewEmptySqlContext() *SqlContext { - var p = new(SqlContext) +func NewEmptySql_stmtContext() *Sql_stmtContext { + var p = new(Sql_stmtContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_sql + p.RuleIndex = KuneiformParserRULE_sql_stmt return p } -func InitEmptySqlContext(p *SqlContext) { +func InitEmptySql_stmtContext(p *Sql_stmtContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_sql + p.RuleIndex = KuneiformParserRULE_sql_stmt } -func (*SqlContext) IsSqlContext() {} +func (*Sql_stmtContext) IsSql_stmtContext() {} -func NewSqlContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SqlContext { - var p = new(SqlContext) +func NewSql_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_stmtContext { + var p = new(Sql_stmtContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_sql + p.RuleIndex = KuneiformParserRULE_sql_stmt return p } -func (s *SqlContext) GetParser() antlr.Parser { return s.parser } +func (s *Sql_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Sql_stmtContext) SCOL() antlr.TerminalNode { + return s.GetToken(KuneiformParserSCOL, 0) +} -func (s *SqlContext) Sql_statement() ISql_statementContext { +func (s *Sql_stmtContext) Sql_statement() ISql_statementContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(ISql_statementContext); ok { @@ -8547,35 +8552,66 @@ func (s *SqlContext) Sql_statement() ISql_statementContext { return t.(ISql_statementContext) } -func (s *SqlContext) SCOL() antlr.TerminalNode { - return s.GetToken(KuneiformParserSCOL, 0) +func (s *Sql_stmtContext) Ddl_stmt() IDdl_stmtContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDdl_stmtContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDdl_stmtContext) } -func (s *SqlContext) GetRuleContext() antlr.RuleContext { +func (s *Sql_stmtContext) GetRuleContext() antlr.RuleContext { return s } -func (s *SqlContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Sql_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *SqlContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Sql_stmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitSql(s) + return t.VisitSql_stmt(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Sql() (localctx ISqlContext) { - localctx = NewSqlContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 66, KuneiformParserRULE_sql) +func (p *KuneiformParser) Sql_stmt() (localctx ISql_stmtContext) { + localctx = NewSql_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 66, KuneiformParserRULE_sql_stmt) p.EnterOuterAlt(localctx, 1) - { - p.SetState(514) - p.Sql_statement() + p.SetState(513) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserDELETE, KuneiformParserUPDATE, KuneiformParserWITH, KuneiformParserSELECT, KuneiformParserINSERT: + { + p.SetState(511) + p.Sql_statement() + } + + case KuneiformParserCREATE, KuneiformParserALTER, KuneiformParserDROP: + { + p.SetState(512) + p.Ddl_stmt() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit } { p.SetState(515) @@ -8599,8 +8635,8 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// ISql_statementContext is an interface to support dynamic dispatch. -type ISql_statementContext interface { +// IDdl_stmtContext is an interface to support dynamic dispatch. +type IDdl_stmtContext interface { antlr.ParserRuleContext // GetParser returns the parser. @@ -8611,54 +8647,44 @@ type ISql_statementContext interface { Alter_table_statement() IAlter_table_statementContext Create_index_statement() ICreate_index_statementContext Drop_index_statement() IDrop_index_statementContext - Select_statement() ISelect_statementContext - Update_statement() IUpdate_statementContext - Insert_statement() IInsert_statementContext - Delete_statement() IDelete_statementContext - WITH() antlr.TerminalNode - AllCommon_table_expression() []ICommon_table_expressionContext - Common_table_expression(i int) ICommon_table_expressionContext - RECURSIVE() antlr.TerminalNode - AllCOMMA() []antlr.TerminalNode - COMMA(i int) antlr.TerminalNode - // IsSql_statementContext differentiates from other interfaces. - IsSql_statementContext() + // IsDdl_stmtContext differentiates from other interfaces. + IsDdl_stmtContext() } -type Sql_statementContext struct { +type Ddl_stmtContext struct { antlr.BaseParserRuleContext parser antlr.Parser } -func NewEmptySql_statementContext() *Sql_statementContext { - var p = new(Sql_statementContext) +func NewEmptyDdl_stmtContext() *Ddl_stmtContext { + var p = new(Ddl_stmtContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_sql_statement + p.RuleIndex = KuneiformParserRULE_ddl_stmt return p } -func InitEmptySql_statementContext(p *Sql_statementContext) { +func InitEmptyDdl_stmtContext(p *Ddl_stmtContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_sql_statement + p.RuleIndex = KuneiformParserRULE_ddl_stmt } -func (*Sql_statementContext) IsSql_statementContext() {} +func (*Ddl_stmtContext) IsDdl_stmtContext() {} -func NewSql_statementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_statementContext { - var p = new(Sql_statementContext) +func NewDdl_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Ddl_stmtContext { + var p = new(Ddl_stmtContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_sql_statement + p.RuleIndex = KuneiformParserRULE_ddl_stmt return p } -func (s *Sql_statementContext) GetParser() antlr.Parser { return s.parser } +func (s *Ddl_stmtContext) GetParser() antlr.Parser { return s.parser } -func (s *Sql_statementContext) Create_table_statement() ICreate_table_statementContext { +func (s *Ddl_stmtContext) Create_table_statement() ICreate_table_statementContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(ICreate_table_statementContext); ok { @@ -8674,7 +8700,7 @@ func (s *Sql_statementContext) Create_table_statement() ICreate_table_statementC return t.(ICreate_table_statementContext) } -func (s *Sql_statementContext) Alter_table_statement() IAlter_table_statementContext { +func (s *Ddl_stmtContext) Alter_table_statement() IAlter_table_statementContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(IAlter_table_statementContext); ok { @@ -8690,7 +8716,7 @@ func (s *Sql_statementContext) Alter_table_statement() IAlter_table_statementCon return t.(IAlter_table_statementContext) } -func (s *Sql_statementContext) Create_index_statement() ICreate_index_statementContext { +func (s *Ddl_stmtContext) Create_index_statement() ICreate_index_statementContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(ICreate_index_statementContext); ok { @@ -8706,7 +8732,7 @@ func (s *Sql_statementContext) Create_index_statement() ICreate_index_statementC return t.(ICreate_index_statementContext) } -func (s *Sql_statementContext) Drop_index_statement() IDrop_index_statementContext { +func (s *Ddl_stmtContext) Drop_index_statement() IDrop_index_statementContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(IDrop_index_statementContext); ok { @@ -8722,6 +8748,134 @@ func (s *Sql_statementContext) Drop_index_statement() IDrop_index_statementConte return t.(IDrop_index_statementContext) } +func (s *Ddl_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Ddl_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Ddl_stmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitDdl_stmt(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Ddl_stmt() (localctx IDdl_stmtContext) { + localctx = NewDdl_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 68, KuneiformParserRULE_ddl_stmt) + p.SetState(521) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 49, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(517) + p.Create_table_statement() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(518) + p.Alter_table_statement() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(519) + p.Create_index_statement() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(520) + p.Drop_index_statement() + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// ISql_statementContext is an interface to support dynamic dispatch. +type ISql_statementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Select_statement() ISelect_statementContext + Update_statement() IUpdate_statementContext + Insert_statement() IInsert_statementContext + Delete_statement() IDelete_statementContext + WITH() antlr.TerminalNode + AllCommon_table_expression() []ICommon_table_expressionContext + Common_table_expression(i int) ICommon_table_expressionContext + RECURSIVE() antlr.TerminalNode + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsSql_statementContext differentiates from other interfaces. + IsSql_statementContext() +} + +type Sql_statementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySql_statementContext() *Sql_statementContext { + var p = new(Sql_statementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_sql_statement + return p +} + +func InitEmptySql_statementContext(p *Sql_statementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_sql_statement +} + +func (*Sql_statementContext) IsSql_statementContext() {} + +func NewSql_statementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_statementContext { + var p = new(Sql_statementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_sql_statement + + return p +} + +func (s *Sql_statementContext) GetParser() antlr.Parser { return s.parser } + func (s *Sql_statementContext) Select_statement() ISelect_statementContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { @@ -8863,11 +9017,11 @@ func (s *Sql_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { localctx = NewSql_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 68, KuneiformParserRULE_sql_statement) + p.EnterRule(localctx, 70, KuneiformParserRULE_sql_statement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(529) + p.SetState(535) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8876,14 +9030,14 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { if _la == KuneiformParserWITH { { - p.SetState(517) + p.SetState(523) p.Match(KuneiformParserWITH) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(519) + p.SetState(525) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8892,7 +9046,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { if _la == KuneiformParserRECURSIVE { { - p.SetState(518) + p.SetState(524) p.Match(KuneiformParserRECURSIVE) if p.HasError() { // Recognition error - abort rule @@ -8902,10 +9056,10 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } { - p.SetState(521) + p.SetState(527) p.Common_table_expression() } - p.SetState(526) + p.SetState(532) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8914,7 +9068,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { for _la == KuneiformParserCOMMA { { - p.SetState(522) + p.SetState(528) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -8922,11 +9076,11 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } } { - p.SetState(523) + p.SetState(529) p.Common_table_expression() } - p.SetState(528) + p.SetState(534) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8935,62 +9089,39 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } } - p.SetState(539) + p.SetState(541) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 51, p.GetParserRuleContext()) { - case 1: - { - p.SetState(531) - p.Create_table_statement() - } - - case 2: - { - p.SetState(532) - p.Alter_table_statement() - } - - case 3: - { - p.SetState(533) - p.Create_index_statement() - } - - case 4: - { - p.SetState(534) - p.Drop_index_statement() - } - - case 5: + switch p.GetTokenStream().LA(1) { + case KuneiformParserSELECT: { - p.SetState(535) + p.SetState(537) p.Select_statement() } - case 6: + case KuneiformParserUPDATE: { - p.SetState(536) + p.SetState(538) p.Update_statement() } - case 7: + case KuneiformParserINSERT: { - p.SetState(537) + p.SetState(539) p.Insert_statement() } - case 8: + case KuneiformParserDELETE: { - p.SetState(538) + p.SetState(540) p.Delete_statement() } - case antlr.ATNInvalidAltNumber: + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } @@ -9167,15 +9298,15 @@ func (s *Common_table_expressionContext) Accept(visitor antlr.ParseTreeVisitor) func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expressionContext) { localctx = NewCommon_table_expressionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 70, KuneiformParserRULE_common_table_expression) + p.EnterRule(localctx, 72, KuneiformParserRULE_common_table_expression) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(541) + p.SetState(543) p.Identifier() } - p.SetState(554) + p.SetState(556) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9184,14 +9315,14 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr if _la == KuneiformParserLPAREN { { - p.SetState(542) + p.SetState(544) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(551) + p.SetState(553) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9200,10 +9331,10 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(543) + p.SetState(545) p.Identifier() } - p.SetState(548) + p.SetState(550) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9212,7 +9343,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr for _la == KuneiformParserCOMMA { { - p.SetState(544) + p.SetState(546) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -9220,11 +9351,11 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(545) + p.SetState(547) p.Identifier() } - p.SetState(550) + p.SetState(552) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9234,7 +9365,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } { - p.SetState(553) + p.SetState(555) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9244,7 +9375,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } { - p.SetState(556) + p.SetState(558) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -9252,7 +9383,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(557) + p.SetState(559) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -9260,11 +9391,11 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(558) + p.SetState(560) p.Select_statement() } { - p.SetState(559) + p.SetState(561) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9304,12 +9435,15 @@ type ICreate_table_statementContext interface { LPAREN() antlr.TerminalNode RPAREN() antlr.TerminalNode Identifier() IIdentifierContext - AllC_column_def() []IC_column_defContext - C_column_def(i int) IC_column_defContext - AllConstraint_def() []IConstraint_defContext - Constraint_def(i int) IConstraint_defContext - AllC_index_def() []IC_index_defContext - C_index_def(i int) IC_index_defContext + AllTable_column_def() []ITable_column_defContext + Table_column_def(i int) ITable_column_defContext + AllTable_constraint_def() []ITable_constraint_defContext + Table_constraint_def(i int) ITable_constraint_defContext + AllTable_index_def() []ITable_index_defContext + Table_index_def(i int) ITable_index_defContext + IF() antlr.TerminalNode + NOT() antlr.TerminalNode + EXISTS() antlr.TerminalNode AllCOMMA() []antlr.TerminalNode COMMA(i int) antlr.TerminalNode @@ -9386,20 +9520,20 @@ func (s *Create_table_statementContext) Identifier() IIdentifierContext { return t.(IIdentifierContext) } -func (s *Create_table_statementContext) AllC_column_def() []IC_column_defContext { +func (s *Create_table_statementContext) AllTable_column_def() []ITable_column_defContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(IC_column_defContext); ok { + if _, ok := ctx.(ITable_column_defContext); ok { len++ } } - tst := make([]IC_column_defContext, len) + tst := make([]ITable_column_defContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(IC_column_defContext); ok { - tst[i] = t.(IC_column_defContext) + if t, ok := ctx.(ITable_column_defContext); ok { + tst[i] = t.(ITable_column_defContext) i++ } } @@ -9407,11 +9541,11 @@ func (s *Create_table_statementContext) AllC_column_def() []IC_column_defContext return tst } -func (s *Create_table_statementContext) C_column_def(i int) IC_column_defContext { +func (s *Create_table_statementContext) Table_column_def(i int) ITable_column_defContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IC_column_defContext); ok { + if _, ok := ctx.(ITable_column_defContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -9424,23 +9558,23 @@ func (s *Create_table_statementContext) C_column_def(i int) IC_column_defContext return nil } - return t.(IC_column_defContext) + return t.(ITable_column_defContext) } -func (s *Create_table_statementContext) AllConstraint_def() []IConstraint_defContext { +func (s *Create_table_statementContext) AllTable_constraint_def() []ITable_constraint_defContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(IConstraint_defContext); ok { + if _, ok := ctx.(ITable_constraint_defContext); ok { len++ } } - tst := make([]IConstraint_defContext, len) + tst := make([]ITable_constraint_defContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(IConstraint_defContext); ok { - tst[i] = t.(IConstraint_defContext) + if t, ok := ctx.(ITable_constraint_defContext); ok { + tst[i] = t.(ITable_constraint_defContext) i++ } } @@ -9448,11 +9582,11 @@ func (s *Create_table_statementContext) AllConstraint_def() []IConstraint_defCon return tst } -func (s *Create_table_statementContext) Constraint_def(i int) IConstraint_defContext { +func (s *Create_table_statementContext) Table_constraint_def(i int) ITable_constraint_defContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConstraint_defContext); ok { + if _, ok := ctx.(ITable_constraint_defContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -9465,23 +9599,23 @@ func (s *Create_table_statementContext) Constraint_def(i int) IConstraint_defCon return nil } - return t.(IConstraint_defContext) + return t.(ITable_constraint_defContext) } -func (s *Create_table_statementContext) AllC_index_def() []IC_index_defContext { +func (s *Create_table_statementContext) AllTable_index_def() []ITable_index_defContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(IC_index_defContext); ok { + if _, ok := ctx.(ITable_index_defContext); ok { len++ } } - tst := make([]IC_index_defContext, len) + tst := make([]ITable_index_defContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(IC_index_defContext); ok { - tst[i] = t.(IC_index_defContext) + if t, ok := ctx.(ITable_index_defContext); ok { + tst[i] = t.(ITable_index_defContext) i++ } } @@ -9489,11 +9623,11 @@ func (s *Create_table_statementContext) AllC_index_def() []IC_index_defContext { return tst } -func (s *Create_table_statementContext) C_index_def(i int) IC_index_defContext { +func (s *Create_table_statementContext) Table_index_def(i int) ITable_index_defContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IC_index_defContext); ok { + if _, ok := ctx.(ITable_index_defContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -9506,7 +9640,19 @@ func (s *Create_table_statementContext) C_index_def(i int) IC_index_defContext { return nil } - return t.(IC_index_defContext) + return t.(ITable_index_defContext) +} + +func (s *Create_table_statementContext) IF() antlr.TerminalNode { + return s.GetToken(KuneiformParserIF, 0) +} + +func (s *Create_table_statementContext) NOT() antlr.TerminalNode { + return s.GetToken(KuneiformParserNOT, 0) +} + +func (s *Create_table_statementContext) EXISTS() antlr.TerminalNode { + return s.GetToken(KuneiformParserEXISTS, 0) } func (s *Create_table_statementContext) AllCOMMA() []antlr.TerminalNode { @@ -9537,12 +9683,12 @@ func (s *Create_table_statementContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_statementContext) { localctx = NewCreate_table_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 72, KuneiformParserRULE_create_table_statement) + p.EnterRule(localctx, 74, KuneiformParserRULE_create_table_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(561) + p.SetState(563) p.Match(KuneiformParserCREATE) if p.HasError() { // Recognition error - abort rule @@ -9550,57 +9696,91 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state } } { - p.SetState(562) + p.SetState(564) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule goto errorExit } } + p.SetState(568) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserIF { + { + p.SetState(565) + p.Match(KuneiformParserIF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(566) + p.Match(KuneiformParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(567) + p.Match(KuneiformParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } { - p.SetState(563) - - var _x = p.Identifier() - - localctx.(*Create_table_statementContext).name = _x - } - { - p.SetState(564) + p.SetState(570) + + var _x = p.Identifier() + + localctx.(*Create_table_statementContext).name = _x + } + { + p.SetState(571) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(568) + p.SetState(575) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 55, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 58, p.GetParserRuleContext()) { case 1: { - p.SetState(565) - p.C_column_def() + p.SetState(572) + p.Table_column_def() } case 2: { - p.SetState(566) - p.Constraint_def() + p.SetState(573) + p.Table_constraint_def() } case 3: { - p.SetState(567) - p.C_index_def() + p.SetState(574) + p.Table_index_def() } case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(578) + p.SetState(585) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9609,43 +9789,43 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state for _la == KuneiformParserCOMMA { { - p.SetState(570) + p.SetState(577) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(574) + p.SetState(581) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 56, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 59, p.GetParserRuleContext()) { case 1: { - p.SetState(571) - p.C_column_def() + p.SetState(578) + p.Table_column_def() } case 2: { - p.SetState(572) - p.Constraint_def() + p.SetState(579) + p.Table_constraint_def() } case 3: { - p.SetState(573) - p.C_index_def() + p.SetState(580) + p.Table_index_def() } case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(580) + p.SetState(587) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9653,7 +9833,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state _la = p.GetTokenStream().LA(1) } { - p.SetState(581) + p.SetState(588) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9674,8 +9854,8 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IConstraint_defContext is an interface to support dynamic dispatch. -type IConstraint_defContext interface { +// ITable_constraint_defContext is an interface to support dynamic dispatch. +type ITable_constraint_defContext interface { antlr.ParserRuleContext // GetParser returns the parser. @@ -9684,164 +9864,14 @@ type IConstraint_defContext interface { // GetName returns the name rule contexts. GetName() IIdentifierContext + // GetColumn returns the column rule contexts. + GetColumn() IIdentifierContext + // SetName sets the name rule contexts. SetName(IIdentifierContext) - // Getter signatures - Unnamed_constraint() IUnnamed_constraintContext - CONSTRAINT() antlr.TerminalNode - Identifier() IIdentifierContext - - // IsConstraint_defContext differentiates from other interfaces. - IsConstraint_defContext() -} - -type Constraint_defContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser - name IIdentifierContext -} - -func NewEmptyConstraint_defContext() *Constraint_defContext { - var p = new(Constraint_defContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_constraint_def - return p -} - -func InitEmptyConstraint_defContext(p *Constraint_defContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_constraint_def -} - -func (*Constraint_defContext) IsConstraint_defContext() {} - -func NewConstraint_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Constraint_defContext { - var p = new(Constraint_defContext) - - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) - - p.parser = parser - p.RuleIndex = KuneiformParserRULE_constraint_def - - return p -} - -func (s *Constraint_defContext) GetParser() antlr.Parser { return s.parser } - -func (s *Constraint_defContext) GetName() IIdentifierContext { return s.name } - -func (s *Constraint_defContext) SetName(v IIdentifierContext) { s.name = v } - -func (s *Constraint_defContext) Unnamed_constraint() IUnnamed_constraintContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUnnamed_constraintContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IUnnamed_constraintContext) -} - -func (s *Constraint_defContext) CONSTRAINT() antlr.TerminalNode { - return s.GetToken(KuneiformParserCONSTRAINT, 0) -} - -func (s *Constraint_defContext) Identifier() IIdentifierContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIdentifierContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IIdentifierContext) -} - -func (s *Constraint_defContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Constraint_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *Constraint_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case KuneiformParserVisitor: - return t.VisitConstraint_def(s) - - default: - return t.VisitChildren(s) - } -} - -func (p *KuneiformParser) Constraint_def() (localctx IConstraint_defContext) { - localctx = NewConstraint_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 74, KuneiformParserRULE_constraint_def) - var _la int - - p.EnterOuterAlt(localctx, 1) - p.SetState(585) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) - - if _la == KuneiformParserCONSTRAINT { - { - p.SetState(583) - p.Match(KuneiformParserCONSTRAINT) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(584) - - var _x = p.Identifier() - - localctx.(*Constraint_defContext).name = _x - } - - } - { - p.SetState(587) - p.Unnamed_constraint() - } - -errorExit: - if p.HasError() { - v := p.GetError() - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - p.SetError(nil) - } - p.ExitRule() - return localctx - goto errorExit // Trick to prevent compiler error if the label is not used -} - -// IUnnamed_constraintContext is an interface to support dynamic dispatch. -type IUnnamed_constraintContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser + // SetColumn sets the column rule contexts. + SetColumn(IIdentifierContext) // Getter signatures PRIMARY() antlr.TerminalNode @@ -9853,58 +9883,70 @@ type IUnnamed_constraintContext interface { CHECK() antlr.TerminalNode Sql_expr() ISql_exprContext FOREIGN() antlr.TerminalNode - Identifier() IIdentifierContext Fk_constraint() IFk_constraintContext + CONSTRAINT() antlr.TerminalNode + AllIdentifier() []IIdentifierContext + Identifier(i int) IIdentifierContext - // IsUnnamed_constraintContext differentiates from other interfaces. - IsUnnamed_constraintContext() + // IsTable_constraint_defContext differentiates from other interfaces. + IsTable_constraint_defContext() } -type Unnamed_constraintContext struct { +type Table_constraint_defContext struct { antlr.BaseParserRuleContext parser antlr.Parser + name IIdentifierContext + column IIdentifierContext } -func NewEmptyUnnamed_constraintContext() *Unnamed_constraintContext { - var p = new(Unnamed_constraintContext) +func NewEmptyTable_constraint_defContext() *Table_constraint_defContext { + var p = new(Table_constraint_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_unnamed_constraint + p.RuleIndex = KuneiformParserRULE_table_constraint_def return p } -func InitEmptyUnnamed_constraintContext(p *Unnamed_constraintContext) { +func InitEmptyTable_constraint_defContext(p *Table_constraint_defContext) { antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = KuneiformParserRULE_unnamed_constraint + p.RuleIndex = KuneiformParserRULE_table_constraint_def } -func (*Unnamed_constraintContext) IsUnnamed_constraintContext() {} +func (*Table_constraint_defContext) IsTable_constraint_defContext() {} -func NewUnnamed_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Unnamed_constraintContext { - var p = new(Unnamed_constraintContext) +func NewTable_constraint_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_defContext { + var p = new(Table_constraint_defContext) antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser - p.RuleIndex = KuneiformParserRULE_unnamed_constraint + p.RuleIndex = KuneiformParserRULE_table_constraint_def return p } -func (s *Unnamed_constraintContext) GetParser() antlr.Parser { return s.parser } +func (s *Table_constraint_defContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraint_defContext) GetName() IIdentifierContext { return s.name } + +func (s *Table_constraint_defContext) GetColumn() IIdentifierContext { return s.column } + +func (s *Table_constraint_defContext) SetName(v IIdentifierContext) { s.name = v } -func (s *Unnamed_constraintContext) PRIMARY() antlr.TerminalNode { +func (s *Table_constraint_defContext) SetColumn(v IIdentifierContext) { s.column = v } + +func (s *Table_constraint_defContext) PRIMARY() antlr.TerminalNode { return s.GetToken(KuneiformParserPRIMARY, 0) } -func (s *Unnamed_constraintContext) KEY() antlr.TerminalNode { +func (s *Table_constraint_defContext) KEY() antlr.TerminalNode { return s.GetToken(KuneiformParserKEY, 0) } -func (s *Unnamed_constraintContext) LPAREN() antlr.TerminalNode { +func (s *Table_constraint_defContext) LPAREN() antlr.TerminalNode { return s.GetToken(KuneiformParserLPAREN, 0) } -func (s *Unnamed_constraintContext) Identifier_list() IIdentifier_listContext { +func (s *Table_constraint_defContext) Identifier_list() IIdentifier_listContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(IIdentifier_listContext); ok { @@ -9920,19 +9962,19 @@ func (s *Unnamed_constraintContext) Identifier_list() IIdentifier_listContext { return t.(IIdentifier_listContext) } -func (s *Unnamed_constraintContext) RPAREN() antlr.TerminalNode { +func (s *Table_constraint_defContext) RPAREN() antlr.TerminalNode { return s.GetToken(KuneiformParserRPAREN, 0) } -func (s *Unnamed_constraintContext) UNIQUE() antlr.TerminalNode { +func (s *Table_constraint_defContext) UNIQUE() antlr.TerminalNode { return s.GetToken(KuneiformParserUNIQUE, 0) } -func (s *Unnamed_constraintContext) CHECK() antlr.TerminalNode { +func (s *Table_constraint_defContext) CHECK() antlr.TerminalNode { return s.GetToken(KuneiformParserCHECK, 0) } -func (s *Unnamed_constraintContext) Sql_expr() ISql_exprContext { +func (s *Table_constraint_defContext) Sql_expr() ISql_exprContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(ISql_exprContext); ok { @@ -9948,14 +9990,14 @@ func (s *Unnamed_constraintContext) Sql_expr() ISql_exprContext { return t.(ISql_exprContext) } -func (s *Unnamed_constraintContext) FOREIGN() antlr.TerminalNode { +func (s *Table_constraint_defContext) FOREIGN() antlr.TerminalNode { return s.GetToken(KuneiformParserFOREIGN, 0) } -func (s *Unnamed_constraintContext) Identifier() IIdentifierContext { +func (s *Table_constraint_defContext) Fk_constraint() IFk_constraintContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIdentifierContext); ok { + if _, ok := ctx.(IFk_constraintContext); ok { t = ctx.(antlr.RuleContext) break } @@ -9965,15 +10007,44 @@ func (s *Unnamed_constraintContext) Identifier() IIdentifierContext { return nil } - return t.(IIdentifierContext) + return t.(IFk_constraintContext) +} + +func (s *Table_constraint_defContext) CONSTRAINT() antlr.TerminalNode { + return s.GetToken(KuneiformParserCONSTRAINT, 0) +} + +func (s *Table_constraint_defContext) AllIdentifier() []IIdentifierContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIdentifierContext); ok { + len++ + } + } + + tst := make([]IIdentifierContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIdentifierContext); ok { + tst[i] = t.(IIdentifierContext) + i++ + } + } + + return tst } -func (s *Unnamed_constraintContext) Fk_constraint() IFk_constraintContext { +func (s *Table_constraint_defContext) Identifier(i int) IIdentifierContext { var t antlr.RuleContext + j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFk_constraintContext); ok { - t = ctx.(antlr.RuleContext) - break + if _, ok := ctx.(IIdentifierContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ } } @@ -9981,31 +10052,59 @@ func (s *Unnamed_constraintContext) Fk_constraint() IFk_constraintContext { return nil } - return t.(IFk_constraintContext) + return t.(IIdentifierContext) } -func (s *Unnamed_constraintContext) GetRuleContext() antlr.RuleContext { +func (s *Table_constraint_defContext) GetRuleContext() antlr.RuleContext { return s } -func (s *Unnamed_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *Table_constraint_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *Unnamed_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *Table_constraint_defContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case KuneiformParserVisitor: - return t.VisitUnnamed_constraint(s) + return t.VisitTable_constraint_def(s) default: return t.VisitChildren(s) } } -func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintContext) { - localctx = NewUnnamed_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 76, KuneiformParserRULE_unnamed_constraint) - p.SetState(612) +func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_defContext) { + localctx = NewTable_constraint_defContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 76, KuneiformParserRULE_table_constraint_def) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(592) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserCONSTRAINT { + { + p.SetState(590) + p.Match(KuneiformParserCONSTRAINT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(591) + + var _x = p.Identifier() + + localctx.(*Table_constraint_defContext).name = _x + } + + } + p.SetState(617) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10013,9 +10112,8 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont switch p.GetTokenStream().LA(1) { case KuneiformParserPRIMARY: - p.EnterOuterAlt(localctx, 1) { - p.SetState(589) + p.SetState(594) p.Match(KuneiformParserPRIMARY) if p.HasError() { // Recognition error - abort rule @@ -10023,7 +10121,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(590) + p.SetState(595) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -10031,7 +10129,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(591) + p.SetState(596) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10039,11 +10137,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(592) + p.SetState(597) p.Identifier_list() } { - p.SetState(593) + p.SetState(598) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10052,9 +10150,8 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } case KuneiformParserUNIQUE: - p.EnterOuterAlt(localctx, 2) { - p.SetState(595) + p.SetState(600) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -10062,7 +10159,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(596) + p.SetState(601) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10070,11 +10167,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(597) + p.SetState(602) p.Identifier_list() } { - p.SetState(598) + p.SetState(603) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10083,9 +10180,8 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } case KuneiformParserCHECK: - p.EnterOuterAlt(localctx, 3) { - p.SetState(600) + p.SetState(605) p.Match(KuneiformParserCHECK) if p.HasError() { // Recognition error - abort rule @@ -10093,7 +10189,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(601) + p.SetState(606) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10101,11 +10197,11 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(602) + p.SetState(607) p.sql_expr(0) } { - p.SetState(603) + p.SetState(608) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10114,9 +10210,8 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } case KuneiformParserFOREIGN: - p.EnterOuterAlt(localctx, 4) { - p.SetState(605) + p.SetState(610) p.Match(KuneiformParserFOREIGN) if p.HasError() { // Recognition error - abort rule @@ -10124,7 +10219,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(606) + p.SetState(611) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -10132,7 +10227,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(607) + p.SetState(612) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10140,11 +10235,14 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(608) - p.Identifier() + p.SetState(613) + + var _x = p.Identifier() + + localctx.(*Table_constraint_defContext).column = _x } { - p.SetState(609) + p.SetState(614) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10152,7 +10250,7 @@ func (p *KuneiformParser) Unnamed_constraint() (localctx IUnnamed_constraintCont } } { - p.SetState(610) + p.SetState(615) p.Fk_constraint() } @@ -10297,7 +10395,7 @@ func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_stateme p.EnterRule(localctx, 78, KuneiformParserRULE_alter_table_statement) p.EnterOuterAlt(localctx, 1) { - p.SetState(614) + p.SetState(619) p.Match(KuneiformParserALTER) if p.HasError() { // Recognition error - abort rule @@ -10305,7 +10403,7 @@ func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_stateme } } { - p.SetState(615) + p.SetState(620) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -10313,14 +10411,14 @@ func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_stateme } } { - p.SetState(616) + p.SetState(621) var _x = p.Identifier() localctx.(*Alter_table_statementContext).table = _x } { - p.SetState(617) + p.SetState(622) p.Alter_table_action() } @@ -10679,10 +10777,10 @@ func (s *Add_table_constraintContext) ADD() antlr.TerminalNode { return s.GetToken(KuneiformParserADD, 0) } -func (s *Add_table_constraintContext) Constraint_def() IConstraint_defContext { +func (s *Add_table_constraintContext) Table_constraint_def() ITable_constraint_defContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConstraint_defContext); ok { + if _, ok := ctx.(ITable_constraint_defContext); ok { t = ctx.(antlr.RuleContext) break } @@ -10692,7 +10790,7 @@ func (s *Add_table_constraintContext) Constraint_def() IConstraint_defContext { return nil } - return t.(IConstraint_defContext) + return t.(ITable_constraint_defContext) } func (s *Add_table_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { @@ -10963,18 +11061,18 @@ func (s *Drop_columnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionContext) { localctx = NewAlter_table_actionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 80, KuneiformParserRULE_alter_table_action) - p.SetState(662) + p.SetState(667) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 62, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 65, p.GetParserRuleContext()) { case 1: localctx = NewAdd_column_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(619) + p.SetState(624) p.Match(KuneiformParserALTER) if p.HasError() { // Recognition error - abort rule @@ -10982,7 +11080,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(620) + p.SetState(625) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -10990,21 +11088,21 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(621) + p.SetState(626) var _x = p.Identifier() localctx.(*Add_column_constraintContext).column = _x } { - p.SetState(622) + p.SetState(627) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(627) + p.SetState(632) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11013,7 +11111,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserNOT: { - p.SetState(623) + p.SetState(628) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -11021,7 +11119,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(624) + p.SetState(629) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -11031,7 +11129,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont case KuneiformParserDEFAULT: { - p.SetState(625) + p.SetState(630) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -11039,7 +11137,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(626) + p.SetState(631) p.Literal() } @@ -11052,7 +11150,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewDrop_column_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(629) + p.SetState(634) p.Match(KuneiformParserALTER) if p.HasError() { // Recognition error - abort rule @@ -11060,7 +11158,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(630) + p.SetState(635) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11068,21 +11166,21 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(631) + p.SetState(636) var _x = p.Identifier() localctx.(*Drop_column_constraintContext).column = _x } { - p.SetState(632) + p.SetState(637) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(638) + p.SetState(643) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11091,7 +11189,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserNOT: { - p.SetState(633) + p.SetState(638) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -11099,7 +11197,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(634) + p.SetState(639) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -11109,7 +11207,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont case KuneiformParserDEFAULT: { - p.SetState(635) + p.SetState(640) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -11119,7 +11217,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont case KuneiformParserCONSTRAINT: { - p.SetState(636) + p.SetState(641) p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule @@ -11127,7 +11225,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(637) + p.SetState(642) p.Identifier() } @@ -11140,7 +11238,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewAdd_columnContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(640) + p.SetState(645) p.Match(KuneiformParserADD) if p.HasError() { // Recognition error - abort rule @@ -11148,7 +11246,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(641) + p.SetState(646) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11156,14 +11254,14 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(642) + p.SetState(647) var _x = p.Identifier() localctx.(*Add_columnContext).column = _x } { - p.SetState(643) + p.SetState(648) p.Type_() } @@ -11171,7 +11269,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewDrop_columnContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(645) + p.SetState(650) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11179,7 +11277,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(646) + p.SetState(651) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11187,7 +11285,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(647) + p.SetState(652) var _x = p.Identifier() @@ -11198,7 +11296,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewRename_columnContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(648) + p.SetState(653) p.Match(KuneiformParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -11206,7 +11304,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(649) + p.SetState(654) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11214,14 +11312,14 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(650) + p.SetState(655) var _x = p.Identifier() localctx.(*Rename_columnContext).old_column = _x } { - p.SetState(651) + p.SetState(656) p.Match(KuneiformParserTO) if p.HasError() { // Recognition error - abort rule @@ -11229,7 +11327,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(652) + p.SetState(657) var _x = p.Identifier() @@ -11240,7 +11338,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewRename_tableContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(654) + p.SetState(659) p.Match(KuneiformParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -11248,7 +11346,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(655) + p.SetState(660) p.Match(KuneiformParserTO) if p.HasError() { // Recognition error - abort rule @@ -11256,7 +11354,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(656) + p.SetState(661) var _x = p.Identifier() @@ -11267,7 +11365,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewAdd_table_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(657) + p.SetState(662) p.Match(KuneiformParserADD) if p.HasError() { // Recognition error - abort rule @@ -11275,15 +11373,15 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(658) - p.Constraint_def() + p.SetState(663) + p.Table_constraint_def() } case 8: localctx = NewDrop_table_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(659) + p.SetState(664) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11291,7 +11389,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(660) + p.SetState(665) p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule @@ -11299,7 +11397,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(661) + p.SetState(666) p.Identifier() } @@ -11355,6 +11453,9 @@ type ICreate_index_statementContext interface { Identifier(i int) IIdentifierContext Identifier_list() IIdentifier_listContext UNIQUE() antlr.TerminalNode + IF() antlr.TerminalNode + NOT() antlr.TerminalNode + EXISTS() antlr.TerminalNode // IsCreate_index_statementContext differentiates from other interfaces. IsCreate_index_statementContext() @@ -11481,11 +11582,23 @@ func (s *Create_index_statementContext) Identifier_list() IIdentifier_listContex return nil } - return t.(IIdentifier_listContext) + return t.(IIdentifier_listContext) +} + +func (s *Create_index_statementContext) UNIQUE() antlr.TerminalNode { + return s.GetToken(KuneiformParserUNIQUE, 0) +} + +func (s *Create_index_statementContext) IF() antlr.TerminalNode { + return s.GetToken(KuneiformParserIF, 0) +} + +func (s *Create_index_statementContext) NOT() antlr.TerminalNode { + return s.GetToken(KuneiformParserNOT, 0) } -func (s *Create_index_statementContext) UNIQUE() antlr.TerminalNode { - return s.GetToken(KuneiformParserUNIQUE, 0) +func (s *Create_index_statementContext) EXISTS() antlr.TerminalNode { + return s.GetToken(KuneiformParserEXISTS, 0) } func (s *Create_index_statementContext) GetRuleContext() antlr.RuleContext { @@ -11513,14 +11626,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state p.EnterOuterAlt(localctx, 1) { - p.SetState(664) + p.SetState(669) p.Match(KuneiformParserCREATE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(666) + p.SetState(671) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11529,7 +11642,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state if _la == KuneiformParserUNIQUE { { - p.SetState(665) + p.SetState(670) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -11539,14 +11652,48 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } { - p.SetState(668) + p.SetState(673) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(670) + p.SetState(677) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserIF { + { + p.SetState(674) + p.Match(KuneiformParserIF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(675) + p.Match(KuneiformParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(676) + p.Match(KuneiformParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + p.SetState(680) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11555,7 +11702,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(669) + p.SetState(679) var _x = p.Identifier() @@ -11564,7 +11711,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } { - p.SetState(672) + p.SetState(682) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -11572,14 +11719,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(673) + p.SetState(683) var _x = p.Identifier() localctx.(*Create_index_statementContext).table = _x } { - p.SetState(674) + p.SetState(684) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -11587,14 +11734,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(675) + p.SetState(685) var _x = p.Identifier_list() localctx.(*Create_index_statementContext).columns = _x } { - p.SetState(676) + p.SetState(686) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -11733,7 +11880,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement p.EnterOuterAlt(localctx, 1) { - p.SetState(678) + p.SetState(688) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11741,14 +11888,14 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } } { - p.SetState(679) + p.SetState(689) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(682) + p.SetState(692) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11757,7 +11904,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement if _la == KuneiformParserIF { { - p.SetState(680) + p.SetState(690) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -11765,7 +11912,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } } { - p.SetState(681) + p.SetState(691) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -11775,7 +11922,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } { - p.SetState(684) + p.SetState(694) var _x = p.Identifier() @@ -12089,10 +12236,10 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(686) + p.SetState(696) p.Select_core() } - p.SetState(692) + p.SetState(702) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12101,22 +12248,22 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for (int64((_la-106)) & ^0x3f) == 0 && ((int64(1)<<(_la-106))&7) != 0 { { - p.SetState(687) + p.SetState(697) p.Compound_operator() } { - p.SetState(688) + p.SetState(698) p.Select_core() } - p.SetState(694) + p.SetState(704) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(705) + p.SetState(715) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12125,7 +12272,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserORDER { { - p.SetState(695) + p.SetState(705) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -12133,7 +12280,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(696) + p.SetState(706) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -12141,10 +12288,10 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(697) + p.SetState(707) p.Ordering_term() } - p.SetState(702) + p.SetState(712) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12153,7 +12300,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(698) + p.SetState(708) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -12161,11 +12308,11 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(699) + p.SetState(709) p.Ordering_term() } - p.SetState(704) + p.SetState(714) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12174,7 +12321,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(709) + p.SetState(719) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12183,7 +12330,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserLIMIT { { - p.SetState(707) + p.SetState(717) p.Match(KuneiformParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -12191,7 +12338,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(708) + p.SetState(718) var _x = p.sql_expr(0) @@ -12199,7 +12346,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(713) + p.SetState(723) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12208,7 +12355,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserOFFSET { { - p.SetState(711) + p.SetState(721) p.Match(KuneiformParserOFFSET) if p.HasError() { // Recognition error - abort rule @@ -12216,7 +12363,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(712) + p.SetState(722) var _x = p.sql_expr(0) @@ -12326,7 +12473,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex p.EnterRule(localctx, 88, KuneiformParserRULE_compound_operator) var _la int - p.SetState(721) + p.SetState(731) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12336,14 +12483,14 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserUNION: p.EnterOuterAlt(localctx, 1) { - p.SetState(715) + p.SetState(725) p.Match(KuneiformParserUNION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(717) + p.SetState(727) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12352,7 +12499,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex if _la == KuneiformParserALL { { - p.SetState(716) + p.SetState(726) p.Match(KuneiformParserALL) if p.HasError() { // Recognition error - abort rule @@ -12365,7 +12512,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserINTERSECT: p.EnterOuterAlt(localctx, 2) { - p.SetState(719) + p.SetState(729) p.Match(KuneiformParserINTERSECT) if p.HasError() { // Recognition error - abort rule @@ -12376,7 +12523,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserEXCEPT: p.EnterOuterAlt(localctx, 3) { - p.SetState(720) + p.SetState(730) p.Match(KuneiformParserEXCEPT) if p.HasError() { // Recognition error - abort rule @@ -12514,10 +12661,10 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(723) + p.SetState(733) p.sql_expr(0) } - p.SetState(725) + p.SetState(735) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12526,7 +12673,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserASC || _la == KuneiformParserDESC { { - p.SetState(724) + p.SetState(734) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserASC || _la == KuneiformParserDESC) { @@ -12538,7 +12685,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } - p.SetState(729) + p.SetState(739) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12547,7 +12694,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserNULLS { { - p.SetState(727) + p.SetState(737) p.Match(KuneiformParserNULLS) if p.HasError() { // Recognition error - abort rule @@ -12555,7 +12702,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } { - p.SetState(728) + p.SetState(738) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserFIRST || _la == KuneiformParserLAST) { @@ -12993,14 +13140,14 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(731) + p.SetState(741) p.Match(KuneiformParserSELECT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(733) + p.SetState(743) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13009,7 +13156,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserDISTINCT { { - p.SetState(732) + p.SetState(742) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -13019,10 +13166,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } { - p.SetState(735) + p.SetState(745) p.Result_column() } - p.SetState(740) + p.SetState(750) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13031,7 +13178,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(736) + p.SetState(746) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -13039,18 +13186,18 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(737) + p.SetState(747) p.Result_column() } - p.SetState(742) + p.SetState(752) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(751) + p.SetState(761) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13059,7 +13206,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserFROM { { - p.SetState(743) + p.SetState(753) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -13067,10 +13214,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(744) + p.SetState(754) p.Relation() } - p.SetState(748) + p.SetState(758) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13079,11 +13226,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(745) + p.SetState(755) p.Join() } - p.SetState(750) + p.SetState(760) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13092,7 +13239,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(755) + p.SetState(765) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13101,7 +13248,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWHERE { { - p.SetState(753) + p.SetState(763) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -13109,7 +13256,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(754) + p.SetState(764) var _x = p.sql_expr(0) @@ -13117,7 +13264,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(764) + p.SetState(774) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13126,7 +13273,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserGROUP { { - p.SetState(757) + p.SetState(767) p.Match(KuneiformParserGROUP) if p.HasError() { // Recognition error - abort rule @@ -13134,7 +13281,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(758) + p.SetState(768) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -13142,13 +13289,13 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(759) + p.SetState(769) var _x = p.Sql_expr_list() localctx.(*Select_coreContext).group_by = _x } - p.SetState(762) + p.SetState(772) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13157,7 +13304,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserHAVING { { - p.SetState(760) + p.SetState(770) p.Match(KuneiformParserHAVING) if p.HasError() { // Recognition error - abort rule @@ -13165,7 +13312,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(761) + p.SetState(771) var _x = p.sql_expr(0) @@ -13175,7 +13322,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(780) + p.SetState(790) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13184,7 +13331,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWINDOW { { - p.SetState(766) + p.SetState(776) p.Match(KuneiformParserWINDOW) if p.HasError() { // Recognition error - abort rule @@ -13192,11 +13339,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(767) + p.SetState(777) p.Identifier() } { - p.SetState(768) + p.SetState(778) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13204,10 +13351,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(769) + p.SetState(779) p.Window() } - p.SetState(777) + p.SetState(787) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13216,7 +13363,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(770) + p.SetState(780) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -13224,11 +13371,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(771) + p.SetState(781) p.Identifier() } { - p.SetState(772) + p.SetState(782) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13236,11 +13383,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(773) + p.SetState(783) p.Window() } - p.SetState(779) + p.SetState(789) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13482,7 +13629,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { p.EnterRule(localctx, 94, KuneiformParserRULE_relation) var _la int - p.SetState(798) + p.SetState(808) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13493,13 +13640,13 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewTable_relationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(782) + p.SetState(792) var _x = p.Identifier() localctx.(*Table_relationContext).table_name = _x } - p.SetState(787) + p.SetState(797) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13507,7 +13654,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(784) + p.SetState(794) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13516,7 +13663,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(783) + p.SetState(793) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13526,7 +13673,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(786) + p.SetState(796) var _x = p.Identifier() @@ -13539,7 +13686,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewSubquery_relationContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(789) + p.SetState(799) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -13547,18 +13694,18 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } } { - p.SetState(790) + p.SetState(800) p.Select_statement() } { - p.SetState(791) + p.SetState(801) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(796) + p.SetState(806) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13566,7 +13713,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(793) + p.SetState(803) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13575,7 +13722,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(792) + p.SetState(802) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13585,7 +13732,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(795) + p.SetState(805) var _x = p.Identifier() @@ -13745,7 +13892,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(801) + p.SetState(811) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13754,7 +13901,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { if (int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0 { { - p.SetState(800) + p.SetState(810) _la = p.GetTokenStream().LA(1) if !((int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0) { @@ -13767,7 +13914,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } { - p.SetState(803) + p.SetState(813) p.Match(KuneiformParserJOIN) if p.HasError() { // Recognition error - abort rule @@ -13775,11 +13922,11 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(804) + p.SetState(814) p.Relation() } { - p.SetState(805) + p.SetState(815) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -13787,7 +13934,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(806) + p.SetState(816) p.sql_expr(0) } @@ -13984,21 +14131,21 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { p.EnterRule(localctx, 98, KuneiformParserRULE_result_column) var _la int - p.SetState(821) + p.SetState(831) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 93, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 97, p.GetParserRuleContext()) { case 1: localctx = NewExpression_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(808) + p.SetState(818) p.sql_expr(0) } - p.SetState(813) + p.SetState(823) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14006,7 +14153,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(810) + p.SetState(820) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14015,7 +14162,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserAS { { - p.SetState(809) + p.SetState(819) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14025,7 +14172,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(812) + p.SetState(822) p.Identifier() } @@ -14034,7 +14181,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { case 2: localctx = NewWildcard_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(818) + p.SetState(828) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14043,14 +14190,14 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(815) + p.SetState(825) var _x = p.Identifier() localctx.(*Wildcard_result_columnContext).table_name = _x } { - p.SetState(816) + p.SetState(826) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -14060,7 +14207,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(820) + p.SetState(830) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -14386,7 +14533,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(823) + p.SetState(833) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -14394,13 +14541,13 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(824) + p.SetState(834) var _x = p.Identifier() localctx.(*Update_statementContext).table_name = _x } - p.SetState(829) + p.SetState(839) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14408,7 +14555,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(826) + p.SetState(836) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14417,7 +14564,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserAS { { - p.SetState(825) + p.SetState(835) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14427,7 +14574,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(828) + p.SetState(838) var _x = p.Identifier() @@ -14436,7 +14583,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(831) + p.SetState(841) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -14444,10 +14591,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(832) + p.SetState(842) p.Update_set_clause() } - p.SetState(837) + p.SetState(847) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14456,7 +14603,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(833) + p.SetState(843) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -14464,18 +14611,18 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(834) + p.SetState(844) p.Update_set_clause() } - p.SetState(839) + p.SetState(849) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(848) + p.SetState(858) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14484,7 +14631,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserFROM { { - p.SetState(840) + p.SetState(850) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -14492,10 +14639,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(841) + p.SetState(851) p.Relation() } - p.SetState(845) + p.SetState(855) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14504,11 +14651,11 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(842) + p.SetState(852) p.Join() } - p.SetState(847) + p.SetState(857) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14517,7 +14664,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } - p.SetState(852) + p.SetState(862) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14526,7 +14673,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(850) + p.SetState(860) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -14534,7 +14681,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(851) + p.SetState(861) var _x = p.sql_expr(0) @@ -14674,14 +14821,14 @@ func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContex p.EnterRule(localctx, 102, KuneiformParserRULE_update_set_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(854) + p.SetState(864) var _x = p.Identifier() localctx.(*Update_set_clauseContext).column = _x } { - p.SetState(855) + p.SetState(865) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -14689,7 +14836,7 @@ func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContex } } { - p.SetState(856) + p.SetState(866) p.sql_expr(0) } @@ -14998,7 +15145,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(858) + p.SetState(868) p.Match(KuneiformParserINSERT) if p.HasError() { // Recognition error - abort rule @@ -15006,7 +15153,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(859) + p.SetState(869) p.Match(KuneiformParserINTO) if p.HasError() { // Recognition error - abort rule @@ -15014,13 +15161,13 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(860) + p.SetState(870) var _x = p.Identifier() localctx.(*Insert_statementContext).table_name = _x } - p.SetState(865) + p.SetState(875) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15028,7 +15175,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(862) + p.SetState(872) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15037,7 +15184,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserAS { { - p.SetState(861) + p.SetState(871) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -15047,7 +15194,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } { - p.SetState(864) + p.SetState(874) var _x = p.Identifier() @@ -15055,7 +15202,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(871) + p.SetState(881) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15064,7 +15211,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserLPAREN { { - p.SetState(867) + p.SetState(877) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15072,14 +15219,14 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(868) + p.SetState(878) var _x = p.Identifier_list() localctx.(*Insert_statementContext).target_columns = _x } { - p.SetState(869) + p.SetState(879) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15088,7 +15235,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(888) + p.SetState(898) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15097,7 +15244,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) switch p.GetTokenStream().LA(1) { case KuneiformParserVALUES: { - p.SetState(873) + p.SetState(883) p.Match(KuneiformParserVALUES) if p.HasError() { // Recognition error - abort rule @@ -15105,7 +15252,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(874) + p.SetState(884) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15113,18 +15260,18 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(875) + p.SetState(885) p.Sql_expr_list() } { - p.SetState(876) + p.SetState(886) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(884) + p.SetState(894) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15133,7 +15280,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(877) + p.SetState(887) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15141,7 +15288,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(878) + p.SetState(888) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15149,11 +15296,11 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(879) + p.SetState(889) p.Sql_expr_list() } { - p.SetState(880) + p.SetState(890) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15161,7 +15308,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(886) + p.SetState(896) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15171,7 +15318,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) case KuneiformParserSELECT: { - p.SetState(887) + p.SetState(897) p.Select_statement() } @@ -15179,7 +15326,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(891) + p.SetState(901) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15188,7 +15335,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserON { { - p.SetState(890) + p.SetState(900) p.Upsert_clause() } @@ -15475,7 +15622,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(893) + p.SetState(903) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -15483,14 +15630,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(894) + p.SetState(904) p.Match(KuneiformParserCONFLICT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(902) + p.SetState(912) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15499,7 +15646,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserLPAREN { { - p.SetState(895) + p.SetState(905) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15507,21 +15654,21 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(896) + p.SetState(906) var _x = p.Identifier_list() localctx.(*Upsert_clauseContext).conflict_columns = _x } { - p.SetState(897) + p.SetState(907) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(900) + p.SetState(910) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15530,7 +15677,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(898) + p.SetState(908) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -15538,7 +15685,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(899) + p.SetState(909) var _x = p.sql_expr(0) @@ -15549,14 +15696,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } { - p.SetState(904) + p.SetState(914) p.Match(KuneiformParserDO) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(920) + p.SetState(930) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15565,7 +15712,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserNOTHING: { - p.SetState(905) + p.SetState(915) p.Match(KuneiformParserNOTHING) if p.HasError() { // Recognition error - abort rule @@ -15575,7 +15722,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { case KuneiformParserUPDATE: { - p.SetState(906) + p.SetState(916) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -15583,7 +15730,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(907) + p.SetState(917) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -15591,10 +15738,10 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(908) + p.SetState(918) p.Update_set_clause() } - p.SetState(913) + p.SetState(923) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15603,7 +15750,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { for _la == KuneiformParserCOMMA { { - p.SetState(909) + p.SetState(919) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15611,18 +15758,18 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(910) + p.SetState(920) p.Update_set_clause() } - p.SetState(915) + p.SetState(925) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(918) + p.SetState(928) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15631,7 +15778,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(916) + p.SetState(926) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -15639,7 +15786,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(917) + p.SetState(927) var _x = p.sql_expr(0) @@ -15849,7 +15996,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(922) + p.SetState(932) p.Match(KuneiformParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -15857,7 +16004,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(923) + p.SetState(933) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -15865,13 +16012,13 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(924) + p.SetState(934) var _x = p.Identifier() localctx.(*Delete_statementContext).table_name = _x } - p.SetState(929) + p.SetState(939) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15879,7 +16026,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(926) + p.SetState(936) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15888,7 +16035,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserAS { { - p.SetState(925) + p.SetState(935) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -15898,7 +16045,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } { - p.SetState(928) + p.SetState(938) var _x = p.Identifier() @@ -15906,7 +16053,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } - p.SetState(933) + p.SetState(943) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15915,7 +16062,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(931) + p.SetState(941) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -15923,7 +16070,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(932) + p.SetState(942) var _x = p.sql_expr(0) @@ -17672,20 +17819,20 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(1008) + p.SetState(1018) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 128, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 132, p.GetParserRuleContext()) { case 1: localctx = NewParen_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(936) + p.SetState(946) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17693,23 +17840,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(937) + p.SetState(947) p.sql_expr(0) } { - p.SetState(938) + p.SetState(948) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(940) + p.SetState(950) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 114, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) == 1 { { - p.SetState(939) + p.SetState(949) p.Type_cast() } @@ -17722,7 +17869,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(942) + p.SetState(952) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -17733,7 +17880,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(943) + p.SetState(953) p.sql_expr(20) } @@ -17742,15 +17889,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(944) + p.SetState(954) p.Literal() } - p.SetState(946) + p.SetState(956) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 119, p.GetParserRuleContext()) == 1 { { - p.SetState(945) + p.SetState(955) p.Type_cast() } @@ -17763,10 +17910,10 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(948) + p.SetState(958) p.Sql_function_call() } - p.SetState(955) + p.SetState(965) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17775,7 +17922,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserFILTER { { - p.SetState(949) + p.SetState(959) p.Match(KuneiformParserFILTER) if p.HasError() { // Recognition error - abort rule @@ -17783,7 +17930,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(950) + p.SetState(960) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17791,7 +17938,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(951) + p.SetState(961) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -17799,11 +17946,11 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(952) + p.SetState(962) p.sql_expr(0) } { - p.SetState(953) + p.SetState(963) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -17813,14 +17960,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(957) + p.SetState(967) p.Match(KuneiformParserOVER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(960) + p.SetState(970) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17829,13 +17976,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN: { - p.SetState(958) + p.SetState(968) p.Window() } case KuneiformParserIDENTIFIER: { - p.SetState(959) + p.SetState(969) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -17853,15 +18000,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(962) + p.SetState(972) p.Sql_function_call() } - p.SetState(964) + p.SetState(974) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 122, p.GetParserRuleContext()) == 1 { { - p.SetState(963) + p.SetState(973) p.Type_cast() } @@ -17874,15 +18021,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(966) + p.SetState(976) p.Variable() } - p.SetState(968) + p.SetState(978) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 119, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 123, p.GetParserRuleContext()) == 1 { { - p.SetState(967) + p.SetState(977) p.Type_cast() } @@ -17894,19 +18041,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewColumn_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(973) + p.SetState(983) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 124, p.GetParserRuleContext()) == 1 { { - p.SetState(970) + p.SetState(980) var _x = p.Identifier() localctx.(*Column_sql_exprContext).table = _x } { - p.SetState(971) + p.SetState(981) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -17918,18 +18065,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(975) + p.SetState(985) var _x = p.Identifier() localctx.(*Column_sql_exprContext).column = _x } - p.SetState(977) + p.SetState(987) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 125, p.GetParserRuleContext()) == 1 { { - p.SetState(976) + p.SetState(986) p.Type_cast() } @@ -17942,14 +18089,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(979) + p.SetState(989) p.Match(KuneiformParserCASE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(981) + p.SetState(991) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17958,7 +18105,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(980) + p.SetState(990) var _x = p.sql_expr(0) @@ -17966,7 +18113,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(984) + p.SetState(994) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17975,18 +18122,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { for ok := true; ok; ok = _la == KuneiformParserWHEN { { - p.SetState(983) + p.SetState(993) p.When_then_clause() } - p.SetState(986) + p.SetState(996) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(990) + p.SetState(1000) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17995,7 +18142,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserELSE { { - p.SetState(988) + p.SetState(998) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -18003,7 +18150,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(989) + p.SetState(999) var _x = p.sql_expr(0) @@ -18012,7 +18159,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(992) + p.SetState(1002) p.Match(KuneiformParserEND) if p.HasError() { // Recognition error - abort rule @@ -18024,7 +18171,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewSubquery_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(998) + p.SetState(1008) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18032,7 +18179,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserNOT || _la == KuneiformParserEXISTS { - p.SetState(995) + p.SetState(1005) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18041,7 +18188,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(994) + p.SetState(1004) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18051,7 +18198,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(997) + p.SetState(1007) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -18061,7 +18208,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1000) + p.SetState(1010) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -18069,23 +18216,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1001) + p.SetState(1011) p.Select_statement() } { - p.SetState(1002) + p.SetState(1012) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1004) + p.SetState(1014) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 127, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 { { - p.SetState(1003) + p.SetState(1013) p.Type_cast() } @@ -18099,7 +18246,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _prevctx = localctx { - p.SetState(1006) + p.SetState(1016) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18108,7 +18255,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1007) + p.SetState(1017) p.sql_expr(3) } @@ -18116,12 +18263,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1095) + p.SetState(1105) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 145, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -18131,26 +18278,26 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1093) + p.SetState(1103) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 140, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 144, p.GetParserRuleContext()) { case 1: localctx = NewArithmetic_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1010) + p.SetState(1020) if !(p.Precpred(p.GetParserRuleContext(), 18)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", "")) goto errorExit } { - p.SetState(1011) + p.SetState(1021) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -18161,7 +18308,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1012) + p.SetState(1022) var _x = p.sql_expr(19) @@ -18173,14 +18320,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1013) + p.SetState(1023) if !(p.Precpred(p.GetParserRuleContext(), 17)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", "")) goto errorExit } { - p.SetState(1014) + p.SetState(1024) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -18191,7 +18338,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1015) + p.SetState(1025) var _x = p.sql_expr(18) @@ -18203,14 +18350,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1016) + p.SetState(1026) if !(p.Precpred(p.GetParserRuleContext(), 9)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) goto errorExit } { - p.SetState(1017) + p.SetState(1027) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -18218,7 +18365,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1018) + p.SetState(1028) var _x = p.sql_expr(10) @@ -18230,13 +18377,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Like_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1019) + p.SetState(1029) if !(p.Precpred(p.GetParserRuleContext(), 7)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) goto errorExit } - p.SetState(1021) + p.SetState(1031) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18245,7 +18392,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1020) + p.SetState(1030) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18255,7 +18402,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1023) + p.SetState(1033) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserLIKE || _la == KuneiformParserILIKE) { @@ -18266,7 +18413,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1024) + p.SetState(1034) var _x = p.sql_expr(8) @@ -18278,13 +18425,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Between_sql_exprContext).element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1025) + p.SetState(1035) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } - p.SetState(1027) + p.SetState(1037) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18293,7 +18440,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1026) + p.SetState(1036) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18303,7 +18450,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1029) + p.SetState(1039) p.Match(KuneiformParserBETWEEN) if p.HasError() { // Recognition error - abort rule @@ -18311,14 +18458,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1030) + p.SetState(1040) var _x = p.sql_expr(0) localctx.(*Between_sql_exprContext).lower = _x } { - p.SetState(1031) + p.SetState(1041) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -18326,7 +18473,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1032) + p.SetState(1042) var _x = p.sql_expr(7) @@ -18338,14 +18485,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Comparison_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1034) + p.SetState(1044) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1035) + p.SetState(1045) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -18356,7 +18503,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1036) + p.SetState(1046) var _x = p.sql_expr(6) @@ -18368,14 +18515,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1037) + p.SetState(1047) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1038) + p.SetState(1048) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -18383,7 +18530,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1039) + p.SetState(1049) var _x = p.sql_expr(3) @@ -18395,14 +18542,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1040) + p.SetState(1050) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1041) + p.SetState(1051) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -18410,7 +18557,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1042) + p.SetState(1052) var _x = p.sql_expr(2) @@ -18420,14 +18567,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 9: localctx = NewField_access_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1043) + p.SetState(1053) if !(p.Precpred(p.GetParserRuleContext(), 22)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 22)", "")) goto errorExit } { - p.SetState(1044) + p.SetState(1054) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -18435,15 +18582,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1045) + p.SetState(1055) p.Identifier() } - p.SetState(1047) + p.SetState(1057) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) == 1 { { - p.SetState(1046) + p.SetState(1056) p.Type_cast() } @@ -18456,30 +18603,30 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Array_access_sql_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1049) + p.SetState(1059) if !(p.Precpred(p.GetParserRuleContext(), 21)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 21)", "")) goto errorExit } { - p.SetState(1050) + p.SetState(1060) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1059) + p.SetState(1069) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 134, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 138, p.GetParserRuleContext()) { case 1: { - p.SetState(1051) + p.SetState(1061) var _x = p.sql_expr(0) @@ -18487,7 +18634,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } case 2: - p.SetState(1053) + p.SetState(1063) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18496,7 +18643,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1052) + p.SetState(1062) var _x = p.sql_expr(0) @@ -18505,14 +18652,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1055) + p.SetState(1065) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1057) + p.SetState(1067) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18521,7 +18668,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1056) + p.SetState(1066) var _x = p.sql_expr(0) @@ -18534,19 +18681,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1061) + p.SetState(1071) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1063) + p.SetState(1073) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 139, p.GetParserRuleContext()) == 1 { { - p.SetState(1062) + p.SetState(1072) p.Type_cast() } @@ -18557,14 +18704,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 11: localctx = NewCollate_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1065) + p.SetState(1075) if !(p.Precpred(p.GetParserRuleContext(), 19)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", "")) goto errorExit } { - p.SetState(1066) + p.SetState(1076) p.Match(KuneiformParserCOLLATE) if p.HasError() { // Recognition error - abort rule @@ -18572,20 +18719,20 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1067) + p.SetState(1077) p.Identifier() } case 12: localctx = NewIn_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1068) + p.SetState(1078) if !(p.Precpred(p.GetParserRuleContext(), 8)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) goto errorExit } - p.SetState(1070) + p.SetState(1080) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18594,7 +18741,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1069) + p.SetState(1079) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18604,7 +18751,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1072) + p.SetState(1082) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule @@ -18612,14 +18759,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1073) + p.SetState(1083) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1076) + p.SetState(1086) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18628,13 +18775,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1074) + p.SetState(1084) p.Sql_expr_list() } case KuneiformParserSELECT: { - p.SetState(1075) + p.SetState(1085) p.Select_statement() } @@ -18643,7 +18790,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1078) + p.SetState(1088) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -18656,21 +18803,21 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Is_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1080) + p.SetState(1090) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1081) + p.SetState(1091) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1083) + p.SetState(1093) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18679,7 +18826,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1082) + p.SetState(1092) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18688,7 +18835,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1091) + p.SetState(1101) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18697,7 +18844,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1085) + p.SetState(1095) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -18705,7 +18852,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1086) + p.SetState(1096) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -18713,7 +18860,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1087) + p.SetState(1097) var _x = p.sql_expr(0) @@ -18722,7 +18869,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserNULL: { - p.SetState(1088) + p.SetState(1098) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -18732,7 +18879,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserTRUE: { - p.SetState(1089) + p.SetState(1099) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -18742,7 +18889,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserFALSE: { - p.SetState(1090) + p.SetState(1100) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -18760,12 +18907,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1097) + p.SetState(1107) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 145, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -18965,14 +19112,14 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1098) + p.SetState(1108) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1102) + p.SetState(1112) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18981,7 +19128,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserPARTITION { { - p.SetState(1099) + p.SetState(1109) p.Match(KuneiformParserPARTITION) if p.HasError() { // Recognition error - abort rule @@ -18989,7 +19136,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1100) + p.SetState(1110) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -18997,7 +19144,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1101) + p.SetState(1111) var _x = p.Sql_expr_list() @@ -19005,7 +19152,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } - p.SetState(1114) + p.SetState(1124) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19014,7 +19161,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserORDER { { - p.SetState(1104) + p.SetState(1114) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -19022,7 +19169,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1105) + p.SetState(1115) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -19030,10 +19177,10 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1106) + p.SetState(1116) p.Ordering_term() } - p.SetState(1111) + p.SetState(1121) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19042,7 +19189,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1107) + p.SetState(1117) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -19050,11 +19197,11 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1108) + p.SetState(1118) p.Ordering_term() } - p.SetState(1113) + p.SetState(1123) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19064,7 +19211,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } { - p.SetState(1116) + p.SetState(1126) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19228,7 +19375,7 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) p.EnterRule(localctx, 114, KuneiformParserRULE_when_then_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(1118) + p.SetState(1128) p.Match(KuneiformParserWHEN) if p.HasError() { // Recognition error - abort rule @@ -19236,14 +19383,14 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(1119) + p.SetState(1129) var _x = p.sql_expr(0) localctx.(*When_then_clauseContext).when_condition = _x } { - p.SetState(1120) + p.SetState(1130) p.Match(KuneiformParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -19251,7 +19398,7 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(1121) + p.SetState(1131) var _x = p.sql_expr(0) @@ -19394,10 +19541,10 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1123) + p.SetState(1133) p.sql_expr(0) } - p.SetState(1128) + p.SetState(1138) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19406,7 +19553,7 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1124) + p.SetState(1134) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -19414,11 +19561,11 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { } } { - p.SetState(1125) + p.SetState(1135) p.sql_expr(0) } - p.SetState(1130) + p.SetState(1140) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19577,25 +19724,25 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex localctx = NewNormal_call_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1131) + p.SetState(1141) p.Identifier() } { - p.SetState(1132) + p.SetState(1142) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1138) + p.SetState(1148) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserDISTINCT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: - p.SetState(1134) + p.SetState(1144) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19604,7 +19751,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex if _la == KuneiformParserDISTINCT { { - p.SetState(1133) + p.SetState(1143) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -19614,13 +19761,13 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex } { - p.SetState(1136) + p.SetState(1146) p.Sql_expr_list() } case KuneiformParserSTAR: { - p.SetState(1137) + p.SetState(1147) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -19633,7 +19780,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex default: } { - p.SetState(1140) + p.SetState(1150) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19776,20 +19923,20 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1147) + p.SetState(1157) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-4611602455543676928) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&492581209245185) != 0) { + for _la == KuneiformParserDELETE || _la == KuneiformParserUPDATE || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&492581209245185) != 0) { { - p.SetState(1142) + p.SetState(1152) p.Action_statement() } { - p.SetState(1143) + p.SetState(1153) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19797,7 +19944,7 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { } } - p.SetState(1149) + p.SetState(1159) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20061,18 +20208,18 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) p.EnterRule(localctx, 122, KuneiformParserRULE_action_statement) var _la int - p.SetState(1170) + p.SetState(1180) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 152, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 156, p.GetParserRuleContext()) { case 1: localctx = NewSql_actionContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1150) + p.SetState(1160) p.Sql_statement() } @@ -20080,7 +20227,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) localctx = NewLocal_actionContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(1151) + p.SetState(1161) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20088,14 +20235,14 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1152) + p.SetState(1162) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1154) + p.SetState(1164) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20104,13 +20251,13 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1153) + p.SetState(1163) p.Procedure_expr_list() } } { - p.SetState(1156) + p.SetState(1166) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20121,7 +20268,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) case 3: localctx = NewExtension_actionContext(p, localctx) p.EnterOuterAlt(localctx, 3) - p.SetState(1160) + p.SetState(1170) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20130,11 +20277,11 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(1157) + p.SetState(1167) p.Variable_list() } { - p.SetState(1158) + p.SetState(1168) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -20144,7 +20291,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } { - p.SetState(1162) + p.SetState(1172) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20152,7 +20299,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1163) + p.SetState(1173) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -20160,7 +20307,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1164) + p.SetState(1174) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20168,14 +20315,14 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1165) + p.SetState(1175) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1167) + p.SetState(1177) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20184,13 +20331,13 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1166) + p.SetState(1176) p.Procedure_expr_list() } } { - p.SetState(1169) + p.SetState(1179) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20327,20 +20474,20 @@ func (p *KuneiformParser) Procedure_block() (localctx IProcedure_blockContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1175) + p.SetState(1185) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { + for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205759403725291247) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1172) + p.SetState(1182) p.Proc_statement() } - p.SetState(1177) + p.SetState(1187) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21372,20 +21519,20 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(1209) + p.SetState(1219) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 164, p.GetParserRuleContext()) { case 1: localctx = NewParen_procedure_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1179) + p.SetState(1189) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -21393,23 +21540,23 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1180) + p.SetState(1190) p.procedure_expr(0) } { - p.SetState(1181) + p.SetState(1191) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1183) + p.SetState(1193) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 154, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 158, p.GetParserRuleContext()) == 1 { { - p.SetState(1182) + p.SetState(1192) p.Type_cast() } @@ -21422,7 +21569,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1185) + p.SetState(1195) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&3147776) != 0) { @@ -21433,7 +21580,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1186) + p.SetState(1196) p.procedure_expr(13) } @@ -21442,15 +21589,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1187) + p.SetState(1197) p.Literal() } - p.SetState(1189) + p.SetState(1199) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 159, p.GetParserRuleContext()) == 1 { { - p.SetState(1188) + p.SetState(1198) p.Type_cast() } @@ -21463,15 +21610,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1191) + p.SetState(1201) p.Procedure_function_call() } - p.SetState(1193) + p.SetState(1203) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { { - p.SetState(1192) + p.SetState(1202) p.Type_cast() } @@ -21484,15 +21631,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1195) + p.SetState(1205) p.Variable() } - p.SetState(1197) + p.SetState(1207) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 161, p.GetParserRuleContext()) == 1 { { - p.SetState(1196) + p.SetState(1206) p.Type_cast() } @@ -21505,14 +21652,14 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1199) + p.SetState(1209) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1201) + p.SetState(1211) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21521,25 +21668,25 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1200) + p.SetState(1210) p.Procedure_expr_list() } } { - p.SetState(1203) + p.SetState(1213) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1205) + p.SetState(1215) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 159, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 163, p.GetParserRuleContext()) == 1 { { - p.SetState(1204) + p.SetState(1214) p.Type_cast() } @@ -21553,7 +21700,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex _prevctx = localctx { - p.SetState(1207) + p.SetState(1217) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -21562,7 +21709,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1208) + p.SetState(1218) p.procedure_expr(3) } @@ -21570,12 +21717,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1266) + p.SetState(1276) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 173, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -21585,24 +21732,24 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1264) + p.SetState(1274) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 168, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 172, p.GetParserRuleContext()) { case 1: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1211) + p.SetState(1221) if !(p.Precpred(p.GetParserRuleContext(), 12)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 12)", "")) goto errorExit } { - p.SetState(1212) + p.SetState(1222) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -21613,21 +21760,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1213) + p.SetState(1223) p.procedure_expr(13) } case 2: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1214) + p.SetState(1224) if !(p.Precpred(p.GetParserRuleContext(), 11)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 11)", "")) goto errorExit } { - p.SetState(1215) + p.SetState(1225) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -21638,21 +21785,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1216) + p.SetState(1226) p.procedure_expr(12) } case 3: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1217) + p.SetState(1227) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } { - p.SetState(1218) + p.SetState(1228) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -21660,21 +21807,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1219) + p.SetState(1229) p.procedure_expr(7) } case 4: localctx = NewComparison_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1220) + p.SetState(1230) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1221) + p.SetState(1231) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -21685,21 +21832,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1222) + p.SetState(1232) p.procedure_expr(6) } case 5: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1223) + p.SetState(1233) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1224) + p.SetState(1234) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -21707,21 +21854,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1225) + p.SetState(1235) p.procedure_expr(3) } case 6: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1226) + p.SetState(1236) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1227) + p.SetState(1237) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -21729,21 +21876,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1228) + p.SetState(1238) p.procedure_expr(2) } case 7: localctx = NewField_access_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1229) + p.SetState(1239) if !(p.Precpred(p.GetParserRuleContext(), 15)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", "")) goto errorExit } { - p.SetState(1230) + p.SetState(1240) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -21751,19 +21898,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1231) + p.SetState(1241) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1233) + p.SetState(1243) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 161, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { { - p.SetState(1232) + p.SetState(1242) p.Type_cast() } @@ -21776,30 +21923,30 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Array_access_procedure_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1235) + p.SetState(1245) if !(p.Precpred(p.GetParserRuleContext(), 14)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) goto errorExit } { - p.SetState(1236) + p.SetState(1246) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1245) + p.SetState(1255) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 164, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 168, p.GetParserRuleContext()) { case 1: { - p.SetState(1237) + p.SetState(1247) var _x = p.procedure_expr(0) @@ -21807,7 +21954,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } case 2: - p.SetState(1239) + p.SetState(1249) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21816,7 +21963,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1238) + p.SetState(1248) var _x = p.procedure_expr(0) @@ -21825,14 +21972,14 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1241) + p.SetState(1251) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1243) + p.SetState(1253) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21841,7 +21988,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1242) + p.SetState(1252) var _x = p.procedure_expr(0) @@ -21854,19 +22001,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } { - p.SetState(1247) + p.SetState(1257) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1249) + p.SetState(1259) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) == 1 { { - p.SetState(1248) + p.SetState(1258) p.Type_cast() } @@ -21879,21 +22026,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Is_procedure_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1251) + p.SetState(1261) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1252) + p.SetState(1262) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1254) + p.SetState(1264) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21902,7 +22049,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if _la == KuneiformParserNOT { { - p.SetState(1253) + p.SetState(1263) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -21911,7 +22058,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1262) + p.SetState(1272) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21920,7 +22067,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1256) + p.SetState(1266) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -21928,7 +22075,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1257) + p.SetState(1267) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -21936,7 +22083,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1258) + p.SetState(1268) var _x = p.procedure_expr(0) @@ -21945,7 +22092,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserNULL: { - p.SetState(1259) + p.SetState(1269) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -21955,7 +22102,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserTRUE: { - p.SetState(1260) + p.SetState(1270) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -21965,7 +22112,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserFALSE: { - p.SetState(1261) + p.SetState(1271) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -21983,12 +22130,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1268) + p.SetState(1278) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 173, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -22130,10 +22277,10 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo p.EnterOuterAlt(localctx, 1) { - p.SetState(1269) + p.SetState(1279) p.procedure_expr(0) } - p.SetState(1274) + p.SetState(1284) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22142,7 +22289,7 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo for _la == KuneiformParserCOMMA { { - p.SetState(1270) + p.SetState(1280) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -22150,11 +22297,11 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo } } { - p.SetState(1271) + p.SetState(1281) p.procedure_expr(0) } - p.SetState(1276) + p.SetState(1286) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22969,18 +23116,18 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { p.EnterRule(localctx, 130, KuneiformParserRULE_proc_statement) var _la int - p.SetState(1357) + p.SetState(1367) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 180, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 184, p.GetParserRuleContext()) { case 1: localctx = NewStmt_variable_declarationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1277) + p.SetState(1287) p.Match(KuneiformParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -22988,11 +23135,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1278) + p.SetState(1288) p.Type_() } { - p.SetState(1279) + p.SetState(1289) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23003,7 +23150,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 2: localctx = NewStmt_procedure_callContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(1291) + p.SetState(1301) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23012,11 +23159,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE { { - p.SetState(1281) + p.SetState(1291) p.Variable_or_underscore() } - p.SetState(1286) + p.SetState(1296) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23025,7 +23172,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1282) + p.SetState(1292) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -23034,11 +23181,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1283) + p.SetState(1293) p.Variable_or_underscore() } - p.SetState(1288) + p.SetState(1298) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23046,7 +23193,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1289) + p.SetState(1299) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -23056,11 +23203,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1293) + p.SetState(1303) p.Procedure_function_call() } { - p.SetState(1294) + p.SetState(1304) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23072,10 +23219,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_variable_assignmentContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(1296) + p.SetState(1306) p.procedure_expr(0) } - p.SetState(1298) + p.SetState(1308) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23084,13 +23231,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserIDENTIFIER { { - p.SetState(1297) + p.SetState(1307) p.Type_() } } { - p.SetState(1300) + p.SetState(1310) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -23098,11 +23245,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1301) + p.SetState(1311) p.procedure_expr(0) } { - p.SetState(1302) + p.SetState(1312) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23114,7 +23261,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_for_loopContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(1304) + p.SetState(1314) p.Match(KuneiformParserFOR) if p.HasError() { // Recognition error - abort rule @@ -23122,7 +23269,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1305) + p.SetState(1315) var _m = p.Match(KuneiformParserVARIABLE) @@ -23133,29 +23280,29 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1306) + p.SetState(1316) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1310) + p.SetState(1320) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 174, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 178, p.GetParserRuleContext()) { case 1: { - p.SetState(1307) + p.SetState(1317) p.Range_() } case 2: { - p.SetState(1308) + p.SetState(1318) var _x = p.Variable() @@ -23164,7 +23311,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 3: { - p.SetState(1309) + p.SetState(1319) p.Sql_statement() } @@ -23172,27 +23319,27 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { goto errorExit } { - p.SetState(1312) + p.SetState(1322) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1316) + p.SetState(1326) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { + for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205759403725291247) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1313) + p.SetState(1323) p.Proc_statement() } - p.SetState(1318) + p.SetState(1328) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23200,7 +23347,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1319) + p.SetState(1329) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -23212,7 +23359,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_ifContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(1321) + p.SetState(1331) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -23220,10 +23367,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1322) + p.SetState(1332) p.If_then_block() } - p.SetState(1327) + p.SetState(1337) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23232,7 +23379,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserELSEIF { { - p.SetState(1323) + p.SetState(1333) p.Match(KuneiformParserELSEIF) if p.HasError() { // Recognition error - abort rule @@ -23240,18 +23387,18 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1324) + p.SetState(1334) p.If_then_block() } - p.SetState(1329) + p.SetState(1339) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(1339) + p.SetState(1349) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23260,7 +23407,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserELSE { { - p.SetState(1330) + p.SetState(1340) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -23268,27 +23415,27 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1331) + p.SetState(1341) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1335) + p.SetState(1345) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { + for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205759403725291247) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1332) + p.SetState(1342) p.Proc_statement() } - p.SetState(1337) + p.SetState(1347) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23296,7 +23443,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1338) + p.SetState(1348) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -23310,11 +23457,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(1341) + p.SetState(1351) p.Sql_statement() } { - p.SetState(1342) + p.SetState(1352) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23326,7 +23473,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_breakContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(1344) + p.SetState(1354) p.Match(KuneiformParserBREAK) if p.HasError() { // Recognition error - abort rule @@ -23334,7 +23481,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1345) + p.SetState(1355) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23346,14 +23493,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_returnContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(1346) + p.SetState(1356) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1349) + p.SetState(1359) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23361,13 +23508,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLBRACKET, KuneiformParserLPAREN, KuneiformParserEXCL, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1347) + p.SetState(1357) p.Procedure_expr_list() } - case KuneiformParserCREATE, KuneiformParserALTER, KuneiformParserDROP, KuneiformParserDELETE, KuneiformParserUPDATE, KuneiformParserWITH, KuneiformParserSELECT, KuneiformParserINSERT: + case KuneiformParserDELETE, KuneiformParserUPDATE, KuneiformParserWITH, KuneiformParserSELECT, KuneiformParserINSERT: { - p.SetState(1348) + p.SetState(1358) p.Sql_statement() } @@ -23376,7 +23523,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { default: } { - p.SetState(1351) + p.SetState(1361) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23388,7 +23535,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_return_nextContext(p, localctx) p.EnterOuterAlt(localctx, 9) { - p.SetState(1352) + p.SetState(1362) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule @@ -23396,7 +23543,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1353) + p.SetState(1363) p.Match(KuneiformParserNEXT) if p.HasError() { // Recognition error - abort rule @@ -23404,11 +23551,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1354) + p.SetState(1364) p.Procedure_expr_list() } { - p.SetState(1355) + p.SetState(1365) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23513,7 +23660,7 @@ func (p *KuneiformParser) Variable_or_underscore() (localctx IVariable_or_unders p.EnterOuterAlt(localctx, 1) { - p.SetState(1359) + p.SetState(1369) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE) { @@ -23655,7 +23802,7 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio localctx = NewNormal_call_procedureContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1361) + p.SetState(1371) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -23663,14 +23810,14 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio } } { - p.SetState(1362) + p.SetState(1372) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1364) + p.SetState(1374) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23679,13 +23826,13 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1363) + p.SetState(1373) p.Procedure_expr_list() } } { - p.SetState(1366) + p.SetState(1376) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -23846,31 +23993,31 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1368) + p.SetState(1378) p.procedure_expr(0) } { - p.SetState(1369) + p.SetState(1379) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1373) + p.SetState(1383) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205748958364827375) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { + for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205759403725291247) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1370) + p.SetState(1380) p.Proc_statement() } - p.SetState(1375) + p.SetState(1385) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23878,7 +24025,7 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1376) + p.SetState(1386) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -24015,11 +24162,11 @@ func (p *KuneiformParser) Range_() (localctx IRangeContext) { p.EnterRule(localctx, 138, KuneiformParserRULE_range) p.EnterOuterAlt(localctx, 1) { - p.SetState(1378) + p.SetState(1388) p.procedure_expr(0) } { - p.SetState(1379) + p.SetState(1389) p.Match(KuneiformParserRANGE) if p.HasError() { // Recognition error - abort rule @@ -24027,7 +24174,7 @@ func (p *KuneiformParser) Range_() (localctx IRangeContext) { } } { - p.SetState(1380) + p.SetState(1390) p.procedure_expr(0) } diff --git a/parse/gen/kuneiformparser_base_visitor.go b/parse/gen/kuneiformparser_base_visitor.go index a8ae637ae..94b27bec7 100644 --- a/parse/gen/kuneiformparser_base_visitor.go +++ b/parse/gen/kuneiformparser_base_visitor.go @@ -95,7 +95,7 @@ func (v *BaseKuneiformParserVisitor) VisitColumn_def(ctx *Column_defContext) int return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitC_column_def(ctx *C_column_defContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitTable_column_def(ctx *Table_column_defContext) interface{} { return v.VisitChildren(ctx) } @@ -103,7 +103,7 @@ func (v *BaseKuneiformParserVisitor) VisitIndex_def(ctx *Index_defContext) inter return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitC_index_def(ctx *C_index_defContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitTable_index_def(ctx *Table_index_defContext) interface{} { return v.VisitChildren(ctx) } @@ -159,27 +159,27 @@ func (v *BaseKuneiformParserVisitor) VisitProcedure_return(ctx *Procedure_return return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitSql(ctx *SqlContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitSql_stmt(ctx *Sql_stmtContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitSql_statement(ctx *Sql_statementContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitDdl_stmt(ctx *Ddl_stmtContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitCommon_table_expression(ctx *Common_table_expressionContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitSql_statement(ctx *Sql_statementContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitCreate_table_statement(ctx *Create_table_statementContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitCommon_table_expression(ctx *Common_table_expressionContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitConstraint_def(ctx *Constraint_defContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitCreate_table_statement(ctx *Create_table_statementContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseKuneiformParserVisitor) VisitUnnamed_constraint(ctx *Unnamed_constraintContext) interface{} { +func (v *BaseKuneiformParserVisitor) VisitTable_constraint_def(ctx *Table_constraint_defContext) interface{} { return v.VisitChildren(ctx) } diff --git a/parse/gen/kuneiformparser_visitor.go b/parse/gen/kuneiformparser_visitor.go index 223866748..9262f36be 100644 --- a/parse/gen/kuneiformparser_visitor.go +++ b/parse/gen/kuneiformparser_visitor.go @@ -73,14 +73,14 @@ type KuneiformParserVisitor interface { // Visit a parse tree produced by KuneiformParser#column_def. VisitColumn_def(ctx *Column_defContext) interface{} - // Visit a parse tree produced by KuneiformParser#c_column_def. - VisitC_column_def(ctx *C_column_defContext) interface{} + // Visit a parse tree produced by KuneiformParser#table_column_def. + VisitTable_column_def(ctx *Table_column_defContext) interface{} // Visit a parse tree produced by KuneiformParser#index_def. VisitIndex_def(ctx *Index_defContext) interface{} - // Visit a parse tree produced by KuneiformParser#c_index_def. - VisitC_index_def(ctx *C_index_defContext) interface{} + // Visit a parse tree produced by KuneiformParser#table_index_def. + VisitTable_index_def(ctx *Table_index_defContext) interface{} // Visit a parse tree produced by KuneiformParser#foreign_key_def. VisitForeign_key_def(ctx *Foreign_key_defContext) interface{} @@ -121,8 +121,11 @@ type KuneiformParserVisitor interface { // Visit a parse tree produced by KuneiformParser#procedure_return. VisitProcedure_return(ctx *Procedure_returnContext) interface{} - // Visit a parse tree produced by KuneiformParser#sql. - VisitSql(ctx *SqlContext) interface{} + // Visit a parse tree produced by KuneiformParser#sql_stmt. + VisitSql_stmt(ctx *Sql_stmtContext) interface{} + + // Visit a parse tree produced by KuneiformParser#ddl_stmt. + VisitDdl_stmt(ctx *Ddl_stmtContext) interface{} // Visit a parse tree produced by KuneiformParser#sql_statement. VisitSql_statement(ctx *Sql_statementContext) interface{} @@ -133,11 +136,8 @@ type KuneiformParserVisitor interface { // Visit a parse tree produced by KuneiformParser#create_table_statement. VisitCreate_table_statement(ctx *Create_table_statementContext) interface{} - // Visit a parse tree produced by KuneiformParser#constraint_def. - VisitConstraint_def(ctx *Constraint_defContext) interface{} - - // Visit a parse tree produced by KuneiformParser#unnamed_constraint. - VisitUnnamed_constraint(ctx *Unnamed_constraintContext) interface{} + // Visit a parse tree produced by KuneiformParser#table_constraint_def. + VisitTable_constraint_def(ctx *Table_constraint_defContext) interface{} // Visit a parse tree produced by KuneiformParser#alter_table_statement. VisitAlter_table_statement(ctx *Alter_table_statementContext) interface{} diff --git a/parse/grammar/KuneiformParser.g4 b/parse/grammar/KuneiformParser.g4 index 89a13a2e3..25e0f54c9 100644 --- a/parse/grammar/KuneiformParser.g4 +++ b/parse/grammar/KuneiformParser.g4 @@ -22,7 +22,7 @@ schema_entry: ; sql_entry: - sql EOF + sql_stmt EOF ; action_entry: @@ -112,8 +112,7 @@ column_def: name=IDENTIFIER type constraint* ; -// TODO: rename to column_def once table_declaration is removed -c_column_def: +table_column_def: name=IDENTIFIER type inline_constraint* ; @@ -123,7 +122,7 @@ index_def: LPAREN columns=identifier_list RPAREN ; -c_index_def: +table_index_def: UNIQUE? INDEX identifier LPAREN columns=identifier_list RPAREN ; @@ -156,7 +155,6 @@ constraint: (IDENTIFIER| PRIMARY KEY? | NOT NULL | DEFAULT | UNIQUE) (LPAREN literal RPAREN)? ; -//// TODO: rename to constraint once table_delcaration is removed inline_constraint: PRIMARY KEY | UNIQUE @@ -168,15 +166,11 @@ inline_constraint: fk_action: ON (UPDATE|DELETE) - (SET NULL - | SET DEFAULT - | RESTRICT - | NO ACTION - | CASCADE) + (SET NULL | SET DEFAULT | RESTRICT | NO ACTION | CASCADE) ; fk_constraint: - REFERENCES table=identifier (LPAREN column=identifier RPAREN) (fk_action (fk_action)*)? + REFERENCES table=identifier (LPAREN column=identifier RPAREN) (fk_action (fk_action)?)? ; access_modifier: @@ -209,15 +203,21 @@ procedure_return: The following section includes parser rules for SQL. */ -// sql is a top-level SQL statement. -sql: - sql_statement SCOL +// sql is a top-level SQL statement, it maps to SQLStmt interface in AST. +sql_stmt: + (sql_statement | ddl_stmt) SCOL ; -sql_statement: +ddl_stmt: + create_table_statement + | alter_table_statement + | create_index_statement + | drop_index_statement +; + +sql_statement: // NOTE: This is only DDL. We should combine ddl and dml into sql_stmt in the future. (WITH RECURSIVE? common_table_expression (COMMA common_table_expression)*)? - (create_table_statement | alter_table_statement| create_index_statement | drop_index_statement // ddl - | select_statement | update_statement | insert_statement | delete_statement) // dml + (select_statement | update_statement | insert_statement | delete_statement) ; common_table_expression: @@ -225,23 +225,19 @@ common_table_expression: ; create_table_statement: - CREATE TABLE name=identifier + CREATE TABLE (IF NOT EXISTS)? name=identifier LPAREN - (c_column_def | constraint_def | c_index_def) - (COMMA (c_column_def | constraint_def | c_index_def))* + (table_column_def | table_constraint_def | table_index_def) + (COMMA (table_column_def | table_constraint_def | table_index_def))* RPAREN ; -constraint_def: // TODO: rename to table_constraint +table_constraint_def: (CONSTRAINT name=identifier)? - unnamed_constraint -; - -unnamed_constraint: - PRIMARY KEY LPAREN identifier_list RPAREN - | UNIQUE LPAREN identifier_list RPAREN - | CHECK LPAREN sql_expr RPAREN - | FOREIGN KEY LPAREN identifier RPAREN fk_constraint + (PRIMARY KEY LPAREN identifier_list RPAREN + | UNIQUE LPAREN identifier_list RPAREN + | CHECK LPAREN sql_expr RPAREN + | FOREIGN KEY LPAREN column=identifier RPAREN fk_constraint) ; alter_table_statement: @@ -256,12 +252,13 @@ alter_table_action: | DROP COLUMN column=identifier # drop_column | RENAME COLUMN old_column=identifier TO new_column=identifier # rename_column | RENAME TO new_table=identifier # rename_table - | ADD constraint_def # add_table_constraint + | ADD table_constraint_def # add_table_constraint | DROP CONSTRAINT identifier # drop_table_constraint ; create_index_statement: - CREATE UNIQUE? INDEX name=identifier? ON table=identifier LPAREN columns=identifier_list RPAREN + CREATE UNIQUE? INDEX (IF NOT EXISTS)? name=identifier? + ON table=identifier LPAREN columns=identifier_list RPAREN ; drop_index_statement: diff --git a/parse/parse.go b/parse/parse.go index 6e0c0904e..2ac00138a 100644 --- a/parse/parse.go +++ b/parse/parse.go @@ -275,6 +275,41 @@ type SQLParseResult struct { Mutative bool } +// DDLParseResult is the result of parsing an DDL statement. +// NOTE: THIS is only temporary. +type DDLParseResult struct { + // AST is the abstract syntax tree of the SQL statement. + AST SQLStmt + // Errs are the errors that occurred during parsing and analysis. + // These include syntax errors, type errors, etc. + ParseErrs ParseErrs + + // Mutative is true if the statement mutates state. + Mutative bool +} + +// ParseDDL parses an SQL DDL statement. +// NOTE: THIS is only temporary so that I can write tests. After we shift from +// *SQLStatement to SQLStmt we can delete this. +func ParseDDL(sql string, schema *types.Schema, skipValidation bool) (res *DDLParseResult, err error) { + parser, errLis, visitor, deferFn, err := setupParser2(sql) + if err != nil { + return nil, err + } + + defer func() { + err2 := deferFn(recover()) + if err2 != nil { + err = err2 + } + }() + + return &DDLParseResult{ + AST: parser.Sql_entry().Accept(visitor).(SQLStmt), + ParseErrs: errLis, + }, nil +} + // ParseSQL parses an SQL statement. // It requires a schema to be passed in, since SQL statements may reference // schema objects. diff --git a/parse/parse_test.go b/parse/parse_test.go index 2a21d6e5a..98612afc8 100644 --- a/parse/parse_test.go +++ b/parse/parse_test.go @@ -2015,11 +2015,11 @@ func exprFunctionCall(name string, args ...parse.Expression) *parse.ExpressionFu } } -func Test_SQL(t *testing.T) { +func Test_DDL(t *testing.T) { type testCase struct { name string sql string - want *parse.SQLStatement + want parse.SQLStmt err error } @@ -2039,114 +2039,129 @@ UNIQUE (city_id, address), UNIQUE INDEX group_name_unique (group_id, name), INDEX ithome (name, address) );`, - want: &parse.SQLStatement{ - SQL: &parse.CreateTableStatement{ - Name: "users", - Columns: []*parse.Column{ - { - Name: "id", - Type: types.IntType, - Constraints: []parse.Constraint{ - &parse.ConstraintPrimaryKey{}, - }, + want: &parse.CreateTableStatement{ + Name: "users", + Columns: []*parse.Column{ + { + Name: "id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintPrimaryKey{}, }, - { - Name: "name", - Type: types.TextType, - Constraints: []parse.Constraint{ - &parse.ConstraintCheck{ - Param: &parse.ExpressionComparison{ - Left: exprFunctionCall("length", exprColumn("", "name")), - Right: exprLit(10), - Operator: parse.ComparisonOperatorGreaterThan, - }, + }, + { + Name: "name", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintCheck{ + Param: &parse.ExpressionComparison{ + Left: exprFunctionCall("length", exprColumn("", "name")), + Right: exprLit(10), + Operator: parse.ComparisonOperatorGreaterThan, }, }, }, - { - Name: "address", - Type: types.TextType, - Constraints: []parse.Constraint{ - &parse.ConstraintNotNull{}, - &parse.ConstraintDefault{ - Value: &parse.ExpressionLiteral{ - Type: types.TextType, - Value: "usa", - Typecastable: parse.Typecastable{ - TypeCast: types.TextType, - }, + }, + { + Name: "address", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintNotNull{}, + &parse.ConstraintDefault{ + Value: &parse.ExpressionLiteral{ + Type: types.TextType, + Value: "usa", + Typecastable: parse.Typecastable{ + TypeCast: types.TextType, }, }, }, }, - { - Name: "email", - Type: types.TextType, - Constraints: []parse.Constraint{ - &parse.ConstraintNotNull{}, - &parse.ConstraintUnique{}, - }, - }, - { - Name: "city_id", - Type: types.IntType, + }, + { + Name: "email", + Type: types.TextType, + Constraints: []parse.Constraint{ + &parse.ConstraintNotNull{}, + &parse.ConstraintUnique{}, }, - { - Name: "group_id", - Type: types.IntType, - Constraints: []parse.Constraint{ - &parse.ConstraintForeignKey{ - RefTable: "groups", - RefColumn: "id", - Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, - Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, - }, + }, + { + Name: "city_id", + Type: types.IntType, + }, + { + Name: "group_id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintForeignKey{ + RefTable: "groups", + RefColumn: "id", + Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, }, }, }, - Indexes: []*parse.Index{ - { - Name: "group_name_unique", - Columns: []string{"group_id", "name"}, - Type: parse.IndexTypeUnique, + }, + Indexes: []*parse.TableIndex{ + { + Name: "group_name_unique", + Columns: []string{"group_id", "name"}, + Type: parse.IndexTypeUnique, + }, + { + Name: "ithome", + Columns: []string{"name", "address"}, + Type: parse.IndexTypeBTree, + }, + }, + Constraints: []parse.Constraint{ + &parse.ConstraintForeignKey{ + Name: "city_fk", + RefTable: "cities", + RefColumn: "id", + Column: "city_id", + Ons: []parse.ForeignKeyActionOn{parse.ON_UPDATE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_NO_ACTION}, + }, + &parse.ConstraintCheck{ + Param: &parse.ExpressionComparison{ + Left: exprFunctionCall("length", exprColumn("", "email")), + Right: exprLit(1), + Operator: parse.ComparisonOperatorGreaterThan, }, - { - Name: "ithome", - Columns: []string{"name", "address"}, - Type: parse.IndexTypeBTree, - }, - }, - Constraints: []parse.Constraint{ - &parse.ConstraintForeignKey{ - Name: "city_fk", - RefTable: "cities", - RefColumn: "id", - Column: "city_id", - Ons: []parse.ForeignKeyActionOn{parse.ON_UPDATE}, - Dos: []parse.ForeignKeyActionDo{parse.DO_NO_ACTION}, - }, - &parse.ConstraintCheck{ - Param: &parse.ExpressionComparison{ - Left: exprFunctionCall("length", exprColumn("", "email")), - Right: exprLit(1), - Operator: parse.ComparisonOperatorGreaterThan, - }, + }, + &parse.ConstraintUnique{ + Columns: []string{ + "city_id", + "address", }, - &parse.ConstraintUnique{ - Columns: []string{ - "city_id", - "address", - }, + }, + }, + }, + }, + { + name: "create table if not exists", + sql: `CREATE TABLE IF NOT EXISTS users (id int primary key)`, + want: &parse.CreateTableStatement{ + Name: "users", + IfNotExists: true, + Columns: []*parse.Column{ + { + Name: "id", + Type: types.IntType, + Constraints: []parse.Constraint{ + &parse.ConstraintPrimaryKey{}, }, }, }, }, }, - //{ // TODO: - // name: "create table with extra comma", - // sql: `CREATE TABLE users (id int primary key,);`, - // err: parse.ErrSyntax, - //}, + { + name: "create table with no column", + sql: `CREATE TABLE users ();`, + err: parse.ErrSyntax, + }, { name: "create table with redeclare primary", sql: `CREATE TABLE users (id int primary key, @@ -2155,32 +2170,38 @@ primary key (name) );`, err: parse.ErrRedeclarePrimaryKey, }, + { + name: "create table with redeclare constraint", + sql: `CREATE TABLE users (id int primary key, name text, address text, constraint aa unique(name), constraint aa unique(address))`, + err: parse.ErrCollation, + }, + { + name: "create table with constraint on unknown column", + sql: `CREATE TABLE users (id int primary key, name text, address text, constraint aa unique(not_exist))`, + err: parse.ErrUnknownColumn, + }, { name: "alter table add column constraint NOT NULL", sql: `ALTER TABLE user ALTER COLUMN name SET NOT NULL;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.AddColumnConstraint{ - Column: "name", - Type: parse.NOT_NULL, - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumnConstraint{ + Column: "name", + Type: parse.NOT_NULL, }, }, }, { name: "alter table add column constraint DEFAULT", sql: `ALTER TABLE user ALTER COLUMN name SET DEFAULT 10;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.AddColumnConstraint{ - Column: "name", - Type: parse.DEFAULT, - Value: &parse.ExpressionLiteral{ - Type: types.IntType, - Value: int64(10), - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumnConstraint{ + Column: "name", + Type: parse.DEFAULT, + Value: &parse.ExpressionLiteral{ + Type: types.IntType, + Value: int64(10), }, }, }, @@ -2188,107 +2209,91 @@ primary key (name) { name: "alter table drop column constraint NOT NULL", sql: `ALTER TABLE user ALTER COLUMN name DROP NOT NULL;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.DropColumnConstraint{ - Column: "name", - Type: parse.NOT_NULL, - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Type: parse.NOT_NULL, }, }, }, { name: "alter table drop column constraint DEFAULT", sql: `ALTER TABLE user ALTER COLUMN name DROP DEFAULT;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.DropColumnConstraint{ - Column: "name", - Type: parse.DEFAULT, - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Type: parse.DEFAULT, }, }, }, { name: "alter table drop column constraint named", sql: `ALTER TABLE user ALTER COLUMN name DROP CONSTRAINT abc;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.DropColumnConstraint{ - Column: "name", - Name: "abc", - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumnConstraint{ + Column: "name", + Name: "abc", }, }, }, { name: "alter table add column", sql: `ALTER TABLE user ADD COLUMN abc int;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.AddColumn{ - Name: "abc", - Type: types.IntType, - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddColumn{ + Name: "abc", + Type: types.IntType, }, }, }, { name: "alter table drop column", sql: `ALTER TABLE user DROP COLUMN abc;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.DropColumn{ - Name: "abc", - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropColumn{ + Name: "abc", }, }, }, { name: "alter table rename column", sql: `ALTER TABLE user RENAME COLUMN abc TO def;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.RenameColumn{ - OldName: "abc", - NewName: "def", - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.RenameColumn{ + OldName: "abc", + NewName: "def", }, }, }, { name: "alter table rename table", sql: `ALTER TABLE user RENAME TO account;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.RenameTable{ - Name: "account", - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.RenameTable{ + Name: "account", }, }, }, { name: "alter table add constraint fk", sql: `ALTER TABLE user ADD constraint new_fk FOREIGN KEY (city_id) REFERENCES cities(id) ON DELETE CASCADE;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.AddTableConstraint{ - Cons: &parse.ConstraintForeignKey{ - Name: "new_fk", - RefTable: "cities", - RefColumn: "id", - Column: "city_id", - Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, - Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.AddTableConstraint{ + Cons: &parse.ConstraintForeignKey{ + Name: "new_fk", + RefTable: "cities", + RefColumn: "id", + Column: "city_id", + Ons: []parse.ForeignKeyActionOn{parse.ON_DELETE}, + Dos: []parse.ForeignKeyActionDo{parse.DO_CASCADE}, }, }, }, @@ -2296,76 +2301,104 @@ primary key (name) { name: "alter table drop constraint", sql: `ALTER TABLE user DROP CONSTRAINT abc;`, - want: &parse.SQLStatement{ - SQL: &parse.AlterTableStatement{ - Table: "user", - Action: &parse.DropTableConstraint{ - Name: "abc", - }, + want: &parse.AlterTableStatement{ + Table: "user", + Action: &parse.DropTableConstraint{ + Name: "abc", }, }, }, { name: "create index", sql: `CREATE INDEX abc ON user(name);`, - want: &parse.SQLStatement{ - SQL: &parse.CreateIndexStatement{ - Index: parse.Index{ - Name: "abc", - On: "user", - Columns: []string{"name"}, - Type: parse.IndexTypeBTree, - }, - }, + want: &parse.CreateIndexStatement{ + Name: "abc", + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeBTree, }, }, { name: "create unique index", sql: `CREATE UNIQUE INDEX abc ON user(name);`, - want: &parse.SQLStatement{ - SQL: &parse.CreateIndexStatement{ - Index: parse.Index{ - Name: "abc", - On: "user", - Columns: []string{"name"}, - Type: parse.IndexTypeUnique, - }, - }, + want: &parse.CreateIndexStatement{ + Name: "abc", + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeUnique, }, }, { name: "create index with no name", sql: `CREATE INDEX ON user(name);`, - want: &parse.SQLStatement{ - SQL: &parse.CreateIndexStatement{ - Index: parse.Index{ - On: "user", - Columns: []string{"name"}, - Type: parse.IndexTypeBTree, - }, - }, + want: &parse.CreateIndexStatement{ + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeBTree, + }, + }, + { + name: "create index if not exist", + sql: `CREATE INDEX IF NOT EXISTS abc ON user(name);`, + want: &parse.CreateIndexStatement{ + IfNotExists: true, + Name: "abc", + On: "user", + Columns: []string{"name"}, + Type: parse.IndexTypeBTree, }, }, { name: "drop index", sql: `DROP INDEX abc;`, - want: &parse.SQLStatement{ - SQL: &parse.DropIndexStatement{ - Name: "abc", - }, + want: &parse.DropIndexStatement{ + Name: "abc", }, }, { name: "drop index check exist", sql: `DROP INDEX IF EXISTS abc;`, - want: &parse.SQLStatement{ - SQL: &parse.DropIndexStatement{ - Name: "abc", - CheckExist: true, - }, + want: &parse.DropIndexStatement{ + Name: "abc", + CheckExist: true, }, }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + res, err := parse.ParseDDL(tt.sql, nil, false) + require.NoError(t, err) + + if res.ParseErrs.Err() != nil { + if tt.err == nil { + t.Errorf("unexpected error: %v", res.ParseErrs.Err()) + } else { + require.ErrorIs(t, res.ParseErrs.Err(), tt.err) + } + + return + } + + assertPositionsAreSet(t, res.AST) + + if !deepCompare(tt.want, res.AST) { + t.Errorf("unexpected AST:%s", diff(tt.want, res.AST)) + } + }) + } +} + +func Test_SQL(t *testing.T) { + type testCase struct { + name string + sql string + want *parse.SQLStatement + err error + } + + tests := []testCase{ { name: "simple select", sql: "select *, id i, length(username) as name_len from users u where u.id = 1;", From 7d1569a578c05ed3e45f0b327a7a1339c7fd8bf6 Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Wed, 30 Oct 2024 15:07:32 -0500 Subject: [PATCH 10/11] update ParseDDL signature --- parse/grammar/KuneiformParser.g4 | 2 +- parse/parse.go | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/parse/grammar/KuneiformParser.g4 b/parse/grammar/KuneiformParser.g4 index 25e0f54c9..6f1ccfe2e 100644 --- a/parse/grammar/KuneiformParser.g4 +++ b/parse/grammar/KuneiformParser.g4 @@ -203,7 +203,7 @@ procedure_return: The following section includes parser rules for SQL. */ -// sql is a top-level SQL statement, it maps to SQLStmt interface in AST. +// sql_stmt is a top-level SQL statement, it maps to SQLStmt interface in AST. sql_stmt: (sql_statement | ddl_stmt) SCOL ; diff --git a/parse/parse.go b/parse/parse.go index 2ac00138a..9a3a74636 100644 --- a/parse/parse.go +++ b/parse/parse.go @@ -283,15 +283,12 @@ type DDLParseResult struct { // Errs are the errors that occurred during parsing and analysis. // These include syntax errors, type errors, etc. ParseErrs ParseErrs - - // Mutative is true if the statement mutates state. - Mutative bool } // ParseDDL parses an SQL DDL statement. // NOTE: THIS is only temporary so that I can write tests. After we shift from // *SQLStatement to SQLStmt we can delete this. -func ParseDDL(sql string, schema *types.Schema, skipValidation bool) (res *DDLParseResult, err error) { +func ParseDDL(sql string) (res *DDLParseResult, err error) { parser, errLis, visitor, deferFn, err := setupParser2(sql) if err != nil { return nil, err From 600e9e528e57d580b64648ec4497901a036eea02 Mon Sep 17 00:00:00 2001 From: Yaiba <4yaiba@gmail.com> Date: Wed, 30 Oct 2024 15:37:29 -0500 Subject: [PATCH 11/11] add DROP TABLE --- internal/engine/generate/generate_test.go | 42 + internal/engine/generate/plpgsql.go | 20 + parse/analyze.go | 4 + parse/antlr.go | 27 + parse/ast.go | 27 +- parse/gen/kuneiform_parser.go | 3778 +++++++++++---------- parse/gen/kuneiformparser_base_visitor.go | 8 + parse/gen/kuneiformparser_visitor.go | 6 + parse/grammar/KuneiformParser.g4 | 11 + parse/parse_test.go | 44 +- 10 files changed, 2257 insertions(+), 1710 deletions(-) diff --git a/internal/engine/generate/generate_test.go b/internal/engine/generate/generate_test.go index b8caa2b76..f132791b9 100644 --- a/internal/engine/generate/generate_test.go +++ b/internal/engine/generate/generate_test.go @@ -304,6 +304,48 @@ func TestGenerateDDLStatement(t *testing.T) { }, }, }, + { + name: "drop table", + want: `DROP TABLE users, posts;`, + sql: &parse.DropTableStatement{ + Tables: []string{"users", "posts"}, + Behavior: parse.DropBehaviorNon, + }, + }, + { + name: "drop table single table", + want: `DROP TABLE users;`, + sql: &parse.DropTableStatement{ + Tables: []string{"users"}, + Behavior: parse.DropBehaviorNon, + }, + }, + { + name: "drop table if exists", + want: `DROP TABLE IF EXISTS users, posts;`, + sql: &parse.DropTableStatement{ + Tables: []string{"users", "posts"}, + IfExists: true, + Behavior: parse.DropBehaviorNon, + }, + }, + { + name: "drop table CASCADE", + want: `DROP TABLE IF EXISTS users, posts CASCADE;`, + sql: &parse.DropTableStatement{ + Tables: []string{"users", "posts"}, + Behavior: parse.DropBehaviorCascade, + IfExists: true, + }, + }, + { + name: "drop table RESTRICT ", + want: `DROP TABLE users, posts RESTRICT;`, + sql: &parse.DropTableStatement{ + Tables: []string{"users", "posts"}, + Behavior: parse.DropBehaviorRestrict, + }, + }, { name: "create index", want: `CREATE INDEX abc ON user(name);`, diff --git a/internal/engine/generate/plpgsql.go b/internal/engine/generate/plpgsql.go index 87821e6bb..beae4b626 100644 --- a/internal/engine/generate/plpgsql.go +++ b/internal/engine/generate/plpgsql.go @@ -879,6 +879,26 @@ func (s *sqlGenerator) VisitAlterTableStatement(p0 *parse.AlterTableStatement) a return str.String() } +func (s *sqlGenerator) VisitDropTableStatement(p0 *parse.DropTableStatement) any { + str := strings.Builder{} + str.WriteString("DROP TABLE ") + if p0.IfExists { + str.WriteString("IF EXISTS ") + } + + str.WriteString(strings.Join(p0.Tables, ", ")) + switch p0.Behavior { + case parse.DropBehaviorCascade: + str.WriteString(" CASCADE") + case parse.DropBehaviorRestrict: + str.WriteString(" RESTRICT") + case parse.DropBehaviorNon: + default: + panic("unknown drop behavior") + } + return str.String() +} + func (s *sqlGenerator) VisitCreateIndexStatement(p0 *parse.CreateIndexStatement) any { str := strings.Builder{} str.WriteString("CREATE ") diff --git a/parse/analyze.go b/parse/analyze.go index 8afd25e65..768707e8a 100644 --- a/parse/analyze.go +++ b/parse/analyze.go @@ -2059,6 +2059,10 @@ func (s *sqlAnalyzer) VisitAlterTableStatement(p0 *AlterTableStatement) any { panic("sqlAnalyzer: not implemented") } +func (s *sqlAnalyzer) VisitDropTableStatement(p0 *DropTableStatement) any { + panic("sqlAnalyzer: not implemented") +} + func (s *sqlAnalyzer) VisitCreateIndexStatement(p0 *CreateIndexStatement) any { panic("sqlAnalyzer: not implemented") } diff --git a/parse/antlr.go b/parse/antlr.go index 11bff9af4..5b9f4ff76 100644 --- a/parse/antlr.go +++ b/parse/antlr.go @@ -902,6 +902,8 @@ func (s *schemaVisitor) VisitDdl_stmt(ctx *gen.Ddl_stmtContext) any { return ctx.Create_table_statement().Accept(s).(*CreateTableStatement) case ctx.Alter_table_statement() != nil: return ctx.Alter_table_statement().Accept(s).(*AlterTableStatement) + case ctx.Drop_table_statement() != nil: + return ctx.Drop_table_statement().Accept(s).(*DropTableStatement) case ctx.Create_index_statement() != nil: return ctx.Create_index_statement().Accept(s).(*CreateIndexStatement) case ctx.Drop_index_statement() != nil: @@ -1232,6 +1234,31 @@ func (s *schemaVisitor) VisitTable_index_def(ctx *gen.Table_index_defContext) an return index } +func (s *schemaVisitor) VisitDrop_table_statement(ctx *gen.Drop_table_statementContext) any { + stmt := &DropTableStatement{ + Tables: ctx.GetTables().Accept(s).([]string), + Behavior: ctx.Opt_drop_behavior().Accept(s).(DropBehavior), + } + + if ctx.EXISTS() != nil { + stmt.IfExists = true + } + + stmt.Set(ctx) + return stmt +} + +func (s *schemaVisitor) VisitOpt_drop_behavior(ctx *gen.Opt_drop_behaviorContext) any { + switch { + case ctx.CASCADE() != nil: + return DropBehaviorCascade + case ctx.RESTRICT() != nil: + return DropBehaviorRestrict + default: + return DropBehaviorNon + } +} + func (s *schemaVisitor) VisitAlter_table_statement(ctx *gen.Alter_table_statementContext) any { stmt := &AlterTableStatement{ Table: ctx.Identifier().Accept(s).(string), diff --git a/parse/ast.go b/parse/ast.go index 70cc37f83..15fee1d0c 100644 --- a/parse/ast.go +++ b/parse/ast.go @@ -547,9 +547,9 @@ const ( SQLStatementTypeSelect SQLStatementType = "select" SQLStatementTypeCreateTable SQLStatementType = "create_table" SQLStatementTypeAlterTable SQLStatementType = "alter_table" + SQLStatementTypeDropTable SQLStatementType = "drop_table" SQLStatementTypeCreateIndex SQLStatementType = "create_index" SQLStatementTypeDropIndex SQLStatementType = "drop_index" - //SQLStatementTypeDropTable SQLStatementType = "drop_table" ) // CreateTableStatement is a CREATE TABLE statement. @@ -865,6 +865,30 @@ type ForeignKeyAction struct { Do ForeignKeyActionDo `json:"do"` } +type DropBehavior string + +const ( + DropBehaviorCascade DropBehavior = "CASCADE" + DropBehaviorRestrict DropBehavior = "RESTRICT" + DropBehaviorNon DropBehavior = "" +) + +type DropTableStatement struct { + Position + + Tables []string + IfExists bool + Behavior DropBehavior +} + +func (s *DropTableStatement) Accept(v Visitor) any { + return v.VisitDropTableStatement(s) +} + +func (s *DropTableStatement) StmtType() SQLStatementType { + return SQLStatementTypeDropTable +} + type AlterTableAction interface { Node @@ -1651,6 +1675,7 @@ type SQLVisitor interface { // DDL VisitCreateTableStatement(*CreateTableStatement) any VisitAlterTableStatement(*AlterTableStatement) any + VisitDropTableStatement(*DropTableStatement) any VisitCreateIndexStatement(*CreateIndexStatement) any VisitDropIndexStatement(*DropIndexStatement) any } diff --git a/parse/gen/kuneiform_parser.go b/parse/gen/kuneiform_parser.go index 88be888e8..e2f9e72ca 100644 --- a/parse/gen/kuneiform_parser.go +++ b/parse/gen/kuneiform_parser.go @@ -84,19 +84,19 @@ func kuneiformparserParserInit() { "constraint", "inline_constraint", "fk_action", "fk_constraint", "access_modifier", "action_declaration", "procedure_declaration", "procedure_return", "sql_stmt", "ddl_stmt", "sql_statement", "common_table_expression", "create_table_statement", - "table_constraint_def", "alter_table_statement", "alter_table_action", - "create_index_statement", "drop_index_statement", "select_statement", - "compound_operator", "ordering_term", "select_core", "relation", "join", - "result_column", "update_statement", "update_set_clause", "insert_statement", - "upsert_clause", "delete_statement", "sql_expr", "window", "when_then_clause", - "sql_expr_list", "sql_function_call", "action_block", "action_statement", - "procedure_block", "procedure_expr", "procedure_expr_list", "proc_statement", - "variable_or_underscore", "procedure_function_call", "if_then_block", - "range", + "table_constraint_def", "opt_drop_behavior", "drop_table_statement", + "alter_table_statement", "alter_table_action", "create_index_statement", + "drop_index_statement", "select_statement", "compound_operator", "ordering_term", + "select_core", "relation", "join", "result_column", "update_statement", + "update_set_clause", "insert_statement", "upsert_clause", "delete_statement", + "sql_expr", "window", "when_then_clause", "sql_expr_list", "sql_function_call", + "action_block", "action_statement", "procedure_block", "procedure_expr", + "procedure_expr_list", "proc_statement", "variable_or_underscore", "procedure_function_call", + "if_then_block", "range", } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 145, 1393, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, + 4, 1, 145, 1412, 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, @@ -109,675 +109,684 @@ func kuneiformparserParserInit() { 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, - 68, 7, 68, 2, 69, 7, 69, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, - 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 155, 8, 4, 1, 4, 1, 4, 3, 4, - 159, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 167, 8, 4, 1, 5, 1, - 5, 1, 5, 1, 5, 3, 5, 173, 8, 5, 1, 6, 1, 6, 1, 6, 5, 6, 178, 8, 6, 10, - 6, 12, 6, 181, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 189, 8, - 7, 1, 7, 1, 7, 3, 7, 193, 8, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, - 10, 1, 10, 5, 10, 203, 8, 10, 10, 10, 12, 10, 206, 9, 10, 1, 11, 1, 11, - 1, 11, 1, 11, 1, 11, 5, 11, 213, 8, 11, 10, 11, 12, 11, 216, 9, 11, 1, - 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 227, - 8, 12, 10, 12, 12, 12, 230, 9, 12, 3, 12, 232, 8, 12, 1, 12, 1, 12, 1, - 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, - 1, 14, 1, 14, 1, 14, 5, 14, 250, 8, 14, 10, 14, 12, 14, 253, 9, 14, 1, - 14, 1, 14, 3, 14, 257, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, - 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 271, 8, 15, 5, 15, 273, - 8, 15, 10, 15, 12, 15, 276, 9, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 5, - 16, 283, 8, 16, 10, 16, 12, 16, 286, 9, 16, 1, 17, 1, 17, 1, 17, 5, 17, - 291, 8, 17, 10, 17, 12, 17, 294, 9, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, - 18, 1, 18, 1, 19, 3, 19, 303, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, - 1, 19, 1, 20, 1, 20, 1, 20, 3, 20, 314, 8, 20, 1, 20, 1, 20, 1, 20, 1, - 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 325, 8, 20, 10, 20, 12, 20, - 328, 9, 20, 1, 21, 1, 21, 1, 21, 3, 21, 333, 8, 21, 1, 21, 1, 21, 1, 21, - 3, 21, 338, 8, 21, 3, 21, 340, 8, 21, 1, 21, 3, 21, 343, 8, 21, 1, 21, - 1, 21, 1, 21, 3, 21, 348, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 354, - 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 359, 8, 21, 1, 21, 3, 21, 362, 8, 21, - 1, 22, 1, 22, 1, 22, 5, 22, 367, 8, 22, 10, 22, 12, 22, 370, 9, 22, 1, - 23, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 377, 8, 23, 10, 23, 12, 23, 380, - 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 388, 8, 24, 10, - 24, 12, 24, 391, 9, 24, 1, 25, 1, 25, 1, 25, 3, 25, 396, 8, 25, 1, 25, - 1, 25, 1, 25, 1, 25, 3, 25, 402, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, - 25, 408, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, - 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 423, 8, 26, 1, 27, 1, 27, 1, - 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 435, 8, 27, - 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 445, 8, - 28, 3, 28, 447, 8, 28, 1, 29, 1, 29, 1, 30, 5, 30, 452, 8, 30, 10, 30, - 12, 30, 455, 9, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 461, 8, 30, 1, 30, - 1, 30, 4, 30, 465, 8, 30, 11, 30, 12, 30, 466, 1, 30, 1, 30, 1, 30, 1, - 30, 1, 31, 5, 31, 474, 8, 31, 10, 31, 12, 31, 477, 9, 31, 1, 31, 1, 31, - 1, 31, 1, 31, 3, 31, 483, 8, 31, 1, 31, 1, 31, 4, 31, 487, 8, 31, 11, 31, - 12, 31, 488, 1, 31, 3, 31, 492, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, - 1, 32, 3, 32, 500, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, - 32, 1, 32, 3, 32, 510, 8, 32, 1, 33, 1, 33, 3, 33, 514, 8, 33, 1, 33, 1, - 33, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 522, 8, 34, 1, 35, 1, 35, 3, 35, - 526, 8, 35, 1, 35, 1, 35, 1, 35, 5, 35, 531, 8, 35, 10, 35, 12, 35, 534, - 9, 35, 3, 35, 536, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 542, 8, 35, - 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 549, 8, 36, 10, 36, 12, 36, 552, - 9, 36, 3, 36, 554, 8, 36, 1, 36, 3, 36, 557, 8, 36, 1, 36, 1, 36, 1, 36, - 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 569, 8, 37, 1, - 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 576, 8, 37, 1, 37, 1, 37, 1, 37, - 1, 37, 3, 37, 582, 8, 37, 5, 37, 584, 8, 37, 10, 37, 12, 37, 587, 9, 37, - 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 593, 8, 38, 1, 38, 1, 38, 1, 38, 1, + 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 1, 0, 1, 0, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, + 159, 8, 4, 1, 4, 1, 4, 3, 4, 163, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, + 4, 3, 4, 171, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 177, 8, 5, 1, 6, 1, 6, + 1, 6, 5, 6, 182, 8, 6, 10, 6, 12, 6, 185, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, + 1, 7, 1, 7, 3, 7, 193, 8, 7, 1, 7, 1, 7, 3, 7, 197, 8, 7, 1, 8, 1, 8, 1, + 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 5, 10, 207, 8, 10, 10, 10, 12, 10, + 210, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 217, 8, 11, 10, 11, + 12, 11, 220, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, + 12, 1, 12, 5, 12, 231, 8, 12, 10, 12, 12, 12, 234, 9, 12, 3, 12, 236, 8, + 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, + 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 254, 8, 14, 10, 14, 12, + 14, 257, 9, 14, 1, 14, 1, 14, 3, 14, 261, 8, 14, 1, 14, 1, 14, 1, 14, 1, + 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 275, + 8, 15, 5, 15, 277, 8, 15, 10, 15, 12, 15, 280, 9, 15, 1, 15, 1, 15, 1, + 16, 1, 16, 1, 16, 5, 16, 287, 8, 16, 10, 16, 12, 16, 290, 9, 16, 1, 17, + 1, 17, 1, 17, 5, 17, 295, 8, 17, 10, 17, 12, 17, 298, 9, 17, 1, 18, 1, + 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 3, 19, 307, 8, 19, 1, 19, 1, 19, + 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 3, 20, 318, 8, 20, 1, + 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 329, + 8, 20, 10, 20, 12, 20, 332, 9, 20, 1, 21, 1, 21, 1, 21, 3, 21, 337, 8, + 21, 1, 21, 1, 21, 1, 21, 3, 21, 342, 8, 21, 3, 21, 344, 8, 21, 1, 21, 3, + 21, 347, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 352, 8, 21, 1, 21, 1, 21, 1, + 21, 1, 21, 3, 21, 358, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 363, 8, 21, 1, + 21, 3, 21, 366, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 371, 8, 22, 10, 22, + 12, 22, 374, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 381, 8, 23, + 10, 23, 12, 23, 384, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, + 24, 392, 8, 24, 10, 24, 12, 24, 395, 9, 24, 1, 25, 1, 25, 1, 25, 3, 25, + 400, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 406, 8, 25, 1, 25, 1, 25, + 1, 25, 1, 25, 3, 25, 412, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, + 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 427, 8, 26, + 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, + 27, 439, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, + 3, 28, 449, 8, 28, 3, 28, 451, 8, 28, 1, 29, 1, 29, 1, 30, 5, 30, 456, + 8, 30, 10, 30, 12, 30, 459, 9, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 465, + 8, 30, 1, 30, 1, 30, 4, 30, 469, 8, 30, 11, 30, 12, 30, 470, 1, 30, 1, + 30, 1, 30, 1, 30, 1, 31, 5, 31, 478, 8, 31, 10, 31, 12, 31, 481, 9, 31, + 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 487, 8, 31, 1, 31, 1, 31, 4, 31, 491, + 8, 31, 11, 31, 12, 31, 492, 1, 31, 3, 31, 496, 8, 31, 1, 31, 1, 31, 1, + 31, 1, 31, 1, 32, 1, 32, 3, 32, 504, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, + 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 514, 8, 32, 1, 33, 1, 33, 3, 33, 518, + 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 527, 8, + 34, 1, 35, 1, 35, 3, 35, 531, 8, 35, 1, 35, 1, 35, 1, 35, 5, 35, 536, 8, + 35, 10, 35, 12, 35, 539, 9, 35, 3, 35, 541, 8, 35, 1, 35, 1, 35, 1, 35, + 1, 35, 3, 35, 547, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 554, + 8, 36, 10, 36, 12, 36, 557, 9, 36, 3, 36, 559, 8, 36, 1, 36, 3, 36, 562, + 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, + 37, 3, 37, 574, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 581, 8, + 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 587, 8, 37, 5, 37, 589, 8, 37, 10, + 37, 12, 37, 592, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 598, 8, 38, + 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, - 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 618, - 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, - 40, 1, 40, 1, 40, 1, 40, 3, 40, 633, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, - 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 644, 8, 40, 1, 40, 1, 40, 1, - 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, - 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 668, - 8, 40, 1, 41, 1, 41, 3, 41, 672, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, - 41, 678, 8, 41, 1, 41, 3, 41, 681, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, - 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 693, 8, 42, 1, 42, 1, 42, - 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 701, 8, 43, 10, 43, 12, 43, 704, 9, - 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 711, 8, 43, 10, 43, 12, 43, - 714, 9, 43, 3, 43, 716, 8, 43, 1, 43, 1, 43, 3, 43, 720, 8, 43, 1, 43, - 1, 43, 3, 43, 724, 8, 43, 1, 44, 1, 44, 3, 44, 728, 8, 44, 1, 44, 1, 44, - 3, 44, 732, 8, 44, 1, 45, 1, 45, 3, 45, 736, 8, 45, 1, 45, 1, 45, 3, 45, - 740, 8, 45, 1, 46, 1, 46, 3, 46, 744, 8, 46, 1, 46, 1, 46, 1, 46, 5, 46, - 749, 8, 46, 10, 46, 12, 46, 752, 9, 46, 1, 46, 1, 46, 1, 46, 5, 46, 757, - 8, 46, 10, 46, 12, 46, 760, 9, 46, 3, 46, 762, 8, 46, 1, 46, 1, 46, 3, - 46, 766, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 773, 8, 46, 3, - 46, 775, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, - 1, 46, 5, 46, 786, 8, 46, 10, 46, 12, 46, 789, 9, 46, 3, 46, 791, 8, 46, - 1, 47, 1, 47, 3, 47, 795, 8, 47, 1, 47, 3, 47, 798, 8, 47, 1, 47, 1, 47, - 1, 47, 1, 47, 3, 47, 804, 8, 47, 1, 47, 3, 47, 807, 8, 47, 3, 47, 809, - 8, 47, 1, 48, 3, 48, 812, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, - 49, 1, 49, 3, 49, 821, 8, 49, 1, 49, 3, 49, 824, 8, 49, 1, 49, 1, 49, 1, - 49, 3, 49, 829, 8, 49, 1, 49, 3, 49, 832, 8, 49, 1, 50, 1, 50, 1, 50, 3, - 50, 837, 8, 50, 1, 50, 3, 50, 840, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, - 50, 846, 8, 50, 10, 50, 12, 50, 849, 9, 50, 1, 50, 1, 50, 1, 50, 5, 50, - 854, 8, 50, 10, 50, 12, 50, 857, 9, 50, 3, 50, 859, 8, 50, 1, 50, 1, 50, - 3, 50, 863, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, - 52, 3, 52, 873, 8, 52, 1, 52, 3, 52, 876, 8, 52, 1, 52, 1, 52, 1, 52, 1, - 52, 3, 52, 882, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, - 1, 52, 1, 52, 5, 52, 893, 8, 52, 10, 52, 12, 52, 896, 9, 52, 1, 52, 3, - 52, 899, 8, 52, 1, 52, 3, 52, 902, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, - 53, 1, 53, 1, 53, 3, 53, 911, 8, 53, 3, 53, 913, 8, 53, 1, 53, 1, 53, 1, - 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 922, 8, 53, 10, 53, 12, 53, 925, - 9, 53, 1, 53, 1, 53, 3, 53, 929, 8, 53, 3, 53, 931, 8, 53, 1, 54, 1, 54, - 1, 54, 1, 54, 3, 54, 937, 8, 54, 1, 54, 3, 54, 940, 8, 54, 1, 54, 1, 54, - 3, 54, 944, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 951, 8, 55, - 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 957, 8, 55, 1, 55, 1, 55, 1, 55, 1, - 55, 1, 55, 1, 55, 1, 55, 3, 55, 966, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, - 971, 8, 55, 1, 55, 1, 55, 3, 55, 975, 8, 55, 1, 55, 1, 55, 3, 55, 979, - 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 984, 8, 55, 1, 55, 1, 55, 3, 55, 988, - 8, 55, 1, 55, 1, 55, 3, 55, 992, 8, 55, 1, 55, 4, 55, 995, 8, 55, 11, 55, - 12, 55, 996, 1, 55, 1, 55, 3, 55, 1001, 8, 55, 1, 55, 1, 55, 1, 55, 3, - 55, 1006, 8, 55, 1, 55, 3, 55, 1009, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, - 3, 55, 1015, 8, 55, 1, 55, 1, 55, 3, 55, 1019, 8, 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, 1032, - 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1038, 8, 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, 1, 55, - 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1058, 8, 55, 1, 55, 1, 55, 1, - 55, 1, 55, 3, 55, 1064, 8, 55, 1, 55, 1, 55, 3, 55, 1068, 8, 55, 3, 55, - 1070, 8, 55, 1, 55, 1, 55, 3, 55, 1074, 8, 55, 1, 55, 1, 55, 1, 55, 1, - 55, 1, 55, 3, 55, 1081, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1087, - 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1094, 8, 55, 1, 55, 1, - 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1102, 8, 55, 5, 55, 1104, 8, 55, - 10, 55, 12, 55, 1107, 9, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1113, 8, - 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1120, 8, 56, 10, 56, 12, - 56, 1123, 9, 56, 3, 56, 1125, 8, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, - 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 1137, 8, 58, 10, 58, 12, 58, - 1140, 9, 58, 1, 59, 1, 59, 1, 59, 3, 59, 1145, 8, 59, 1, 59, 1, 59, 3, - 59, 1149, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 5, 60, 1156, 8, 60, - 10, 60, 12, 60, 1159, 9, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1165, 8, - 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1171, 8, 61, 1, 61, 1, 61, 1, 61, - 1, 61, 1, 61, 3, 61, 1178, 8, 61, 1, 61, 3, 61, 1181, 8, 61, 1, 62, 5, - 62, 1184, 8, 62, 10, 62, 12, 62, 1187, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, - 1, 63, 3, 63, 1194, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1200, 8, - 63, 1, 63, 1, 63, 3, 63, 1204, 8, 63, 1, 63, 1, 63, 3, 63, 1208, 8, 63, - 1, 63, 1, 63, 3, 63, 1212, 8, 63, 1, 63, 1, 63, 3, 63, 1216, 8, 63, 1, - 63, 1, 63, 3, 63, 1220, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, - 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, - 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1244, 8, 63, 1, 63, 1, 63, - 1, 63, 1, 63, 3, 63, 1250, 8, 63, 1, 63, 1, 63, 3, 63, 1254, 8, 63, 3, - 63, 1256, 8, 63, 1, 63, 1, 63, 3, 63, 1260, 8, 63, 1, 63, 1, 63, 1, 63, - 3, 63, 1265, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1273, - 8, 63, 5, 63, 1275, 8, 63, 10, 63, 12, 63, 1278, 9, 63, 1, 64, 1, 64, 1, - 64, 5, 64, 1283, 8, 64, 10, 64, 12, 64, 1286, 9, 64, 1, 65, 1, 65, 1, 65, - 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1295, 8, 65, 10, 65, 12, 65, 1298, 9, - 65, 1, 65, 1, 65, 3, 65, 1302, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, - 3, 65, 1309, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, - 65, 1, 65, 1, 65, 3, 65, 1321, 8, 65, 1, 65, 1, 65, 5, 65, 1325, 8, 65, - 10, 65, 12, 65, 1328, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, - 5, 65, 1336, 8, 65, 10, 65, 12, 65, 1339, 9, 65, 1, 65, 1, 65, 1, 65, 5, - 65, 1344, 8, 65, 10, 65, 12, 65, 1347, 9, 65, 1, 65, 3, 65, 1350, 8, 65, - 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1360, 8, - 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1368, 8, 65, 1, 66, - 1, 66, 1, 67, 1, 67, 1, 67, 3, 67, 1375, 8, 67, 1, 67, 1, 67, 1, 68, 1, - 68, 1, 68, 5, 68, 1382, 8, 68, 10, 68, 12, 68, 1385, 9, 68, 1, 68, 1, 68, - 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 0, 2, 110, 126, 70, 0, 2, 4, 6, 8, 10, + 1, 38, 1, 38, 3, 38, 623, 8, 38, 1, 39, 1, 39, 1, 39, 3, 39, 628, 8, 39, + 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 634, 8, 40, 1, 40, 1, 40, 1, 40, 1, + 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, + 1, 42, 1, 42, 3, 42, 652, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, + 42, 1, 42, 1, 42, 1, 42, 3, 42, 663, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, + 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, + 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 687, 8, 42, + 1, 43, 1, 43, 3, 43, 691, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 697, + 8, 43, 1, 43, 3, 43, 700, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, + 43, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 712, 8, 44, 1, 44, 1, 44, 1, 45, + 1, 45, 1, 45, 1, 45, 5, 45, 720, 8, 45, 10, 45, 12, 45, 723, 9, 45, 1, + 45, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 730, 8, 45, 10, 45, 12, 45, 733, + 9, 45, 3, 45, 735, 8, 45, 1, 45, 1, 45, 3, 45, 739, 8, 45, 1, 45, 1, 45, + 3, 45, 743, 8, 45, 1, 46, 1, 46, 3, 46, 747, 8, 46, 1, 46, 1, 46, 3, 46, + 751, 8, 46, 1, 47, 1, 47, 3, 47, 755, 8, 47, 1, 47, 1, 47, 3, 47, 759, + 8, 47, 1, 48, 1, 48, 3, 48, 763, 8, 48, 1, 48, 1, 48, 1, 48, 5, 48, 768, + 8, 48, 10, 48, 12, 48, 771, 9, 48, 1, 48, 1, 48, 1, 48, 5, 48, 776, 8, + 48, 10, 48, 12, 48, 779, 9, 48, 3, 48, 781, 8, 48, 1, 48, 1, 48, 3, 48, + 785, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 792, 8, 48, 3, 48, + 794, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, + 48, 5, 48, 805, 8, 48, 10, 48, 12, 48, 808, 9, 48, 3, 48, 810, 8, 48, 1, + 49, 1, 49, 3, 49, 814, 8, 49, 1, 49, 3, 49, 817, 8, 49, 1, 49, 1, 49, 1, + 49, 1, 49, 3, 49, 823, 8, 49, 1, 49, 3, 49, 826, 8, 49, 3, 49, 828, 8, + 49, 1, 50, 3, 50, 831, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, + 1, 51, 3, 51, 840, 8, 51, 1, 51, 3, 51, 843, 8, 51, 1, 51, 1, 51, 1, 51, + 3, 51, 848, 8, 51, 1, 51, 3, 51, 851, 8, 51, 1, 52, 1, 52, 1, 52, 3, 52, + 856, 8, 52, 1, 52, 3, 52, 859, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, + 865, 8, 52, 10, 52, 12, 52, 868, 9, 52, 1, 52, 1, 52, 1, 52, 5, 52, 873, + 8, 52, 10, 52, 12, 52, 876, 9, 52, 3, 52, 878, 8, 52, 1, 52, 1, 52, 3, + 52, 882, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, + 3, 54, 892, 8, 54, 1, 54, 3, 54, 895, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, + 3, 54, 901, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, + 54, 1, 54, 5, 54, 912, 8, 54, 10, 54, 12, 54, 915, 9, 54, 1, 54, 3, 54, + 918, 8, 54, 1, 54, 3, 54, 921, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, + 1, 55, 1, 55, 3, 55, 930, 8, 55, 3, 55, 932, 8, 55, 1, 55, 1, 55, 1, 55, + 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 941, 8, 55, 10, 55, 12, 55, 944, 9, + 55, 1, 55, 1, 55, 3, 55, 948, 8, 55, 3, 55, 950, 8, 55, 1, 56, 1, 56, 1, + 56, 1, 56, 3, 56, 956, 8, 56, 1, 56, 3, 56, 959, 8, 56, 1, 56, 1, 56, 3, + 56, 963, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 970, 8, 57, 1, + 57, 1, 57, 1, 57, 1, 57, 3, 57, 976, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, + 1, 57, 1, 57, 1, 57, 3, 57, 985, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 990, + 8, 57, 1, 57, 1, 57, 3, 57, 994, 8, 57, 1, 57, 1, 57, 3, 57, 998, 8, 57, + 1, 57, 1, 57, 1, 57, 3, 57, 1003, 8, 57, 1, 57, 1, 57, 3, 57, 1007, 8, + 57, 1, 57, 1, 57, 3, 57, 1011, 8, 57, 1, 57, 4, 57, 1014, 8, 57, 11, 57, + 12, 57, 1015, 1, 57, 1, 57, 3, 57, 1020, 8, 57, 1, 57, 1, 57, 1, 57, 3, + 57, 1025, 8, 57, 1, 57, 3, 57, 1028, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, + 3, 57, 1034, 8, 57, 1, 57, 1, 57, 3, 57, 1038, 8, 57, 1, 57, 1, 57, 1, + 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1051, + 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1057, 8, 57, 1, 57, 1, 57, 1, + 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, + 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1077, 8, 57, 1, 57, 1, 57, 1, + 57, 1, 57, 3, 57, 1083, 8, 57, 1, 57, 1, 57, 3, 57, 1087, 8, 57, 3, 57, + 1089, 8, 57, 1, 57, 1, 57, 3, 57, 1093, 8, 57, 1, 57, 1, 57, 1, 57, 1, + 57, 1, 57, 3, 57, 1100, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1106, + 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1113, 8, 57, 1, 57, 1, + 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1121, 8, 57, 5, 57, 1123, 8, 57, + 10, 57, 12, 57, 1126, 9, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1132, 8, + 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1139, 8, 58, 10, 58, 12, + 58, 1142, 9, 58, 3, 58, 1144, 8, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, + 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 5, 60, 1156, 8, 60, 10, 60, 12, 60, + 1159, 9, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1164, 8, 61, 1, 61, 1, 61, 3, + 61, 1168, 8, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 5, 62, 1175, 8, 62, + 10, 62, 12, 62, 1178, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1184, 8, + 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1190, 8, 63, 1, 63, 1, 63, 1, 63, + 1, 63, 1, 63, 3, 63, 1197, 8, 63, 1, 63, 3, 63, 1200, 8, 63, 1, 64, 5, + 64, 1203, 8, 64, 10, 64, 12, 64, 1206, 9, 64, 1, 65, 1, 65, 1, 65, 1, 65, + 1, 65, 3, 65, 1213, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1219, 8, + 65, 1, 65, 1, 65, 3, 65, 1223, 8, 65, 1, 65, 1, 65, 3, 65, 1227, 8, 65, + 1, 65, 1, 65, 3, 65, 1231, 8, 65, 1, 65, 1, 65, 3, 65, 1235, 8, 65, 1, + 65, 1, 65, 3, 65, 1239, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, + 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, + 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1263, 8, 65, 1, 65, 1, 65, + 1, 65, 1, 65, 3, 65, 1269, 8, 65, 1, 65, 1, 65, 3, 65, 1273, 8, 65, 3, + 65, 1275, 8, 65, 1, 65, 1, 65, 3, 65, 1279, 8, 65, 1, 65, 1, 65, 1, 65, + 3, 65, 1284, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1292, + 8, 65, 5, 65, 1294, 8, 65, 10, 65, 12, 65, 1297, 9, 65, 1, 66, 1, 66, 1, + 66, 5, 66, 1302, 8, 66, 10, 66, 12, 66, 1305, 9, 66, 1, 67, 1, 67, 1, 67, + 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 1314, 8, 67, 10, 67, 12, 67, 1317, 9, + 67, 1, 67, 1, 67, 3, 67, 1321, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, + 3, 67, 1328, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, + 67, 1, 67, 1, 67, 3, 67, 1340, 8, 67, 1, 67, 1, 67, 5, 67, 1344, 8, 67, + 10, 67, 12, 67, 1347, 9, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, + 5, 67, 1355, 8, 67, 10, 67, 12, 67, 1358, 9, 67, 1, 67, 1, 67, 1, 67, 5, + 67, 1363, 8, 67, 10, 67, 12, 67, 1366, 9, 67, 1, 67, 3, 67, 1369, 8, 67, + 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1379, 8, + 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1387, 8, 67, 1, 68, + 1, 68, 1, 69, 1, 69, 1, 69, 3, 69, 1394, 8, 69, 1, 69, 1, 69, 1, 70, 1, + 70, 1, 70, 5, 70, 1401, 8, 70, 10, 70, 12, 70, 1404, 9, 70, 1, 70, 1, 70, + 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 0, 2, 114, 130, 72, 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, 0, 15, 1, 0, - 20, 21, 1, 0, 129, 130, 1, 0, 140, 141, 3, 0, 52, 52, 56, 56, 67, 67, 1, - 0, 64, 65, 1, 0, 62, 63, 1, 0, 38, 41, 1, 0, 83, 84, 1, 0, 110, 111, 2, - 0, 79, 81, 105, 105, 3, 0, 14, 14, 19, 19, 22, 22, 1, 0, 70, 71, 2, 0, - 15, 16, 23, 27, 2, 0, 11, 11, 20, 21, 2, 0, 29, 29, 140, 140, 1591, 0, - 140, 1, 0, 0, 0, 2, 143, 1, 0, 0, 0, 4, 146, 1, 0, 0, 0, 6, 149, 1, 0, - 0, 0, 8, 166, 1, 0, 0, 0, 10, 172, 1, 0, 0, 0, 12, 174, 1, 0, 0, 0, 14, - 182, 1, 0, 0, 0, 16, 194, 1, 0, 0, 0, 18, 197, 1, 0, 0, 0, 20, 199, 1, - 0, 0, 0, 22, 207, 1, 0, 0, 0, 24, 217, 1, 0, 0, 0, 26, 235, 1, 0, 0, 0, - 28, 239, 1, 0, 0, 0, 30, 262, 1, 0, 0, 0, 32, 279, 1, 0, 0, 0, 34, 287, - 1, 0, 0, 0, 36, 295, 1, 0, 0, 0, 38, 302, 1, 0, 0, 0, 40, 313, 1, 0, 0, - 0, 42, 339, 1, 0, 0, 0, 44, 363, 1, 0, 0, 0, 46, 371, 1, 0, 0, 0, 48, 381, - 1, 0, 0, 0, 50, 401, 1, 0, 0, 0, 52, 422, 1, 0, 0, 0, 54, 424, 1, 0, 0, - 0, 56, 436, 1, 0, 0, 0, 58, 448, 1, 0, 0, 0, 60, 453, 1, 0, 0, 0, 62, 475, - 1, 0, 0, 0, 64, 497, 1, 0, 0, 0, 66, 513, 1, 0, 0, 0, 68, 521, 1, 0, 0, - 0, 70, 535, 1, 0, 0, 0, 72, 543, 1, 0, 0, 0, 74, 563, 1, 0, 0, 0, 76, 592, - 1, 0, 0, 0, 78, 619, 1, 0, 0, 0, 80, 667, 1, 0, 0, 0, 82, 669, 1, 0, 0, - 0, 84, 688, 1, 0, 0, 0, 86, 696, 1, 0, 0, 0, 88, 731, 1, 0, 0, 0, 90, 733, - 1, 0, 0, 0, 92, 741, 1, 0, 0, 0, 94, 808, 1, 0, 0, 0, 96, 811, 1, 0, 0, - 0, 98, 831, 1, 0, 0, 0, 100, 833, 1, 0, 0, 0, 102, 864, 1, 0, 0, 0, 104, - 868, 1, 0, 0, 0, 106, 903, 1, 0, 0, 0, 108, 932, 1, 0, 0, 0, 110, 1018, - 1, 0, 0, 0, 112, 1108, 1, 0, 0, 0, 114, 1128, 1, 0, 0, 0, 116, 1133, 1, - 0, 0, 0, 118, 1141, 1, 0, 0, 0, 120, 1157, 1, 0, 0, 0, 122, 1180, 1, 0, - 0, 0, 124, 1185, 1, 0, 0, 0, 126, 1219, 1, 0, 0, 0, 128, 1279, 1, 0, 0, - 0, 130, 1367, 1, 0, 0, 0, 132, 1369, 1, 0, 0, 0, 134, 1371, 1, 0, 0, 0, - 136, 1378, 1, 0, 0, 0, 138, 1388, 1, 0, 0, 0, 140, 141, 3, 22, 11, 0, 141, - 142, 5, 0, 0, 1, 142, 1, 1, 0, 0, 0, 143, 144, 3, 66, 33, 0, 144, 145, - 5, 0, 0, 1, 145, 3, 1, 0, 0, 0, 146, 147, 3, 120, 60, 0, 147, 148, 5, 0, - 0, 1, 148, 5, 1, 0, 0, 0, 149, 150, 3, 124, 62, 0, 150, 151, 5, 0, 0, 1, - 151, 7, 1, 0, 0, 0, 152, 167, 5, 128, 0, 0, 153, 155, 7, 0, 0, 0, 154, - 153, 1, 0, 0, 0, 154, 155, 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 167, - 5, 131, 0, 0, 157, 159, 7, 0, 0, 0, 158, 157, 1, 0, 0, 0, 158, 159, 1, - 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 161, 5, 131, 0, 0, 161, 162, 5, 12, - 0, 0, 162, 167, 5, 131, 0, 0, 163, 167, 7, 1, 0, 0, 164, 167, 5, 61, 0, - 0, 165, 167, 5, 132, 0, 0, 166, 152, 1, 0, 0, 0, 166, 154, 1, 0, 0, 0, - 166, 158, 1, 0, 0, 0, 166, 163, 1, 0, 0, 0, 166, 164, 1, 0, 0, 0, 166, - 165, 1, 0, 0, 0, 167, 9, 1, 0, 0, 0, 168, 169, 5, 32, 0, 0, 169, 170, 5, - 139, 0, 0, 170, 173, 5, 32, 0, 0, 171, 173, 5, 139, 0, 0, 172, 168, 1, - 0, 0, 0, 172, 171, 1, 0, 0, 0, 173, 11, 1, 0, 0, 0, 174, 179, 3, 10, 5, - 0, 175, 176, 5, 9, 0, 0, 176, 178, 3, 10, 5, 0, 177, 175, 1, 0, 0, 0, 178, - 181, 1, 0, 0, 0, 179, 177, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 13, 1, - 0, 0, 0, 181, 179, 1, 0, 0, 0, 182, 188, 5, 139, 0, 0, 183, 184, 5, 7, - 0, 0, 184, 185, 5, 131, 0, 0, 185, 186, 5, 9, 0, 0, 186, 187, 5, 131, 0, - 0, 187, 189, 5, 8, 0, 0, 188, 183, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, - 192, 1, 0, 0, 0, 190, 191, 5, 3, 0, 0, 191, 193, 5, 4, 0, 0, 192, 190, - 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 15, 1, 0, 0, 0, 194, 195, 5, 28, - 0, 0, 195, 196, 3, 14, 7, 0, 196, 17, 1, 0, 0, 0, 197, 198, 7, 2, 0, 0, - 198, 19, 1, 0, 0, 0, 199, 204, 3, 18, 9, 0, 200, 201, 5, 9, 0, 0, 201, - 203, 3, 18, 9, 0, 202, 200, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, - 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 21, 1, 0, 0, 0, 206, 204, 1, 0, - 0, 0, 207, 214, 3, 26, 13, 0, 208, 213, 3, 28, 14, 0, 209, 213, 3, 30, - 15, 0, 210, 213, 3, 60, 30, 0, 211, 213, 3, 62, 31, 0, 212, 208, 1, 0, - 0, 0, 212, 209, 1, 0, 0, 0, 212, 210, 1, 0, 0, 0, 212, 211, 1, 0, 0, 0, - 213, 216, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, - 23, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 217, 218, 5, 141, 0, 0, 218, 231, - 5, 7, 0, 0, 219, 220, 5, 139, 0, 0, 220, 221, 5, 15, 0, 0, 221, 228, 3, - 8, 4, 0, 222, 223, 5, 9, 0, 0, 223, 224, 5, 139, 0, 0, 224, 225, 5, 15, - 0, 0, 225, 227, 3, 8, 4, 0, 226, 222, 1, 0, 0, 0, 227, 230, 1, 0, 0, 0, - 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 232, 1, 0, 0, 0, 230, - 228, 1, 0, 0, 0, 231, 219, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 233, - 1, 0, 0, 0, 233, 234, 5, 8, 0, 0, 234, 25, 1, 0, 0, 0, 235, 236, 5, 33, - 0, 0, 236, 237, 5, 139, 0, 0, 237, 238, 5, 6, 0, 0, 238, 27, 1, 0, 0, 0, - 239, 240, 5, 34, 0, 0, 240, 256, 5, 139, 0, 0, 241, 242, 5, 1, 0, 0, 242, - 243, 5, 139, 0, 0, 243, 244, 5, 5, 0, 0, 244, 251, 3, 8, 4, 0, 245, 246, - 5, 9, 0, 0, 246, 247, 5, 139, 0, 0, 247, 248, 5, 5, 0, 0, 248, 250, 3, - 8, 4, 0, 249, 245, 1, 0, 0, 0, 250, 253, 1, 0, 0, 0, 251, 249, 1, 0, 0, - 0, 251, 252, 1, 0, 0, 0, 252, 254, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 254, - 255, 5, 2, 0, 0, 255, 257, 1, 0, 0, 0, 256, 241, 1, 0, 0, 0, 256, 257, - 1, 0, 0, 0, 257, 258, 1, 0, 0, 0, 258, 259, 5, 82, 0, 0, 259, 260, 5, 139, - 0, 0, 260, 261, 5, 6, 0, 0, 261, 29, 1, 0, 0, 0, 262, 263, 5, 35, 0, 0, - 263, 264, 5, 139, 0, 0, 264, 265, 5, 1, 0, 0, 265, 274, 3, 32, 16, 0, 266, - 270, 5, 9, 0, 0, 267, 271, 3, 32, 16, 0, 268, 271, 3, 36, 18, 0, 269, 271, - 3, 40, 20, 0, 270, 267, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, - 0, 0, 0, 271, 273, 1, 0, 0, 0, 272, 266, 1, 0, 0, 0, 273, 276, 1, 0, 0, - 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 277, 1, 0, 0, 0, 276, - 274, 1, 0, 0, 0, 277, 278, 5, 2, 0, 0, 278, 31, 1, 0, 0, 0, 279, 280, 5, - 139, 0, 0, 280, 284, 3, 14, 7, 0, 281, 283, 3, 50, 25, 0, 282, 281, 1, - 0, 0, 0, 283, 286, 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 284, 285, 1, 0, 0, - 0, 285, 33, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 287, 288, 5, 139, 0, 0, 288, - 292, 3, 14, 7, 0, 289, 291, 3, 52, 26, 0, 290, 289, 1, 0, 0, 0, 291, 294, - 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 35, 1, 0, - 0, 0, 294, 292, 1, 0, 0, 0, 295, 296, 5, 142, 0, 0, 296, 297, 7, 3, 0, - 0, 297, 298, 5, 7, 0, 0, 298, 299, 3, 12, 6, 0, 299, 300, 5, 8, 0, 0, 300, - 37, 1, 0, 0, 0, 301, 303, 5, 56, 0, 0, 302, 301, 1, 0, 0, 0, 302, 303, - 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 305, 5, 67, 0, 0, 305, 306, 3, 10, - 5, 0, 306, 307, 5, 7, 0, 0, 307, 308, 3, 12, 6, 0, 308, 309, 5, 8, 0, 0, - 309, 39, 1, 0, 0, 0, 310, 311, 5, 51, 0, 0, 311, 314, 5, 53, 0, 0, 312, - 314, 5, 133, 0, 0, 313, 310, 1, 0, 0, 0, 313, 312, 1, 0, 0, 0, 314, 315, - 1, 0, 0, 0, 315, 316, 5, 7, 0, 0, 316, 317, 3, 12, 6, 0, 317, 318, 5, 8, - 0, 0, 318, 319, 7, 4, 0, 0, 319, 320, 5, 139, 0, 0, 320, 321, 5, 7, 0, - 0, 321, 322, 3, 12, 6, 0, 322, 326, 5, 8, 0, 0, 323, 325, 3, 42, 21, 0, - 324, 323, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 326, - 327, 1, 0, 0, 0, 327, 41, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 329, 330, 5, - 54, 0, 0, 330, 333, 5, 63, 0, 0, 331, 333, 5, 134, 0, 0, 332, 329, 1, 0, - 0, 0, 332, 331, 1, 0, 0, 0, 333, 340, 1, 0, 0, 0, 334, 335, 5, 54, 0, 0, - 335, 338, 5, 62, 0, 0, 336, 338, 5, 135, 0, 0, 337, 334, 1, 0, 0, 0, 337, - 336, 1, 0, 0, 0, 338, 340, 1, 0, 0, 0, 339, 332, 1, 0, 0, 0, 339, 337, - 1, 0, 0, 0, 340, 342, 1, 0, 0, 0, 341, 343, 5, 55, 0, 0, 342, 341, 1, 0, - 0, 0, 342, 343, 1, 0, 0, 0, 343, 361, 1, 0, 0, 0, 344, 345, 5, 92, 0, 0, - 345, 348, 5, 36, 0, 0, 346, 348, 5, 138, 0, 0, 347, 344, 1, 0, 0, 0, 347, - 346, 1, 0, 0, 0, 348, 362, 1, 0, 0, 0, 349, 362, 5, 57, 0, 0, 350, 351, - 5, 59, 0, 0, 351, 354, 5, 61, 0, 0, 352, 354, 5, 137, 0, 0, 353, 350, 1, - 0, 0, 0, 353, 352, 1, 0, 0, 0, 354, 362, 1, 0, 0, 0, 355, 356, 5, 59, 0, - 0, 356, 359, 5, 60, 0, 0, 357, 359, 5, 136, 0, 0, 358, 355, 1, 0, 0, 0, - 358, 357, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 362, 5, 58, 0, 0, 361, - 347, 1, 0, 0, 0, 361, 349, 1, 0, 0, 0, 361, 353, 1, 0, 0, 0, 361, 358, - 1, 0, 0, 0, 361, 360, 1, 0, 0, 0, 362, 43, 1, 0, 0, 0, 363, 368, 3, 14, - 7, 0, 364, 365, 5, 9, 0, 0, 365, 367, 3, 14, 7, 0, 366, 364, 1, 0, 0, 0, - 367, 370, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, - 45, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 371, 372, 5, 139, 0, 0, 372, 378, - 3, 14, 7, 0, 373, 374, 5, 9, 0, 0, 374, 375, 5, 139, 0, 0, 375, 377, 3, - 14, 7, 0, 376, 373, 1, 0, 0, 0, 377, 380, 1, 0, 0, 0, 378, 376, 1, 0, 0, - 0, 378, 379, 1, 0, 0, 0, 379, 47, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 381, - 382, 3, 18, 9, 0, 382, 389, 3, 14, 7, 0, 383, 384, 5, 9, 0, 0, 384, 385, - 3, 18, 9, 0, 385, 386, 3, 14, 7, 0, 386, 388, 1, 0, 0, 0, 387, 383, 1, - 0, 0, 0, 388, 391, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 389, 390, 1, 0, 0, - 0, 390, 49, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 392, 402, 5, 139, 0, 0, 393, - 395, 5, 52, 0, 0, 394, 396, 5, 53, 0, 0, 395, 394, 1, 0, 0, 0, 395, 396, - 1, 0, 0, 0, 396, 402, 1, 0, 0, 0, 397, 398, 5, 66, 0, 0, 398, 402, 5, 61, - 0, 0, 399, 402, 5, 60, 0, 0, 400, 402, 5, 56, 0, 0, 401, 392, 1, 0, 0, - 0, 401, 393, 1, 0, 0, 0, 401, 397, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, - 400, 1, 0, 0, 0, 402, 407, 1, 0, 0, 0, 403, 404, 5, 7, 0, 0, 404, 405, - 3, 8, 4, 0, 405, 406, 5, 8, 0, 0, 406, 408, 1, 0, 0, 0, 407, 403, 1, 0, - 0, 0, 407, 408, 1, 0, 0, 0, 408, 51, 1, 0, 0, 0, 409, 410, 5, 52, 0, 0, - 410, 423, 5, 53, 0, 0, 411, 423, 5, 56, 0, 0, 412, 413, 5, 66, 0, 0, 413, - 423, 5, 61, 0, 0, 414, 415, 5, 60, 0, 0, 415, 423, 3, 8, 4, 0, 416, 423, - 3, 56, 28, 0, 417, 418, 5, 50, 0, 0, 418, 419, 5, 7, 0, 0, 419, 420, 3, - 110, 55, 0, 420, 421, 5, 8, 0, 0, 421, 423, 1, 0, 0, 0, 422, 409, 1, 0, - 0, 0, 422, 411, 1, 0, 0, 0, 422, 412, 1, 0, 0, 0, 422, 414, 1, 0, 0, 0, - 422, 416, 1, 0, 0, 0, 422, 417, 1, 0, 0, 0, 423, 53, 1, 0, 0, 0, 424, 425, - 5, 54, 0, 0, 425, 434, 7, 5, 0, 0, 426, 427, 5, 59, 0, 0, 427, 435, 5, - 61, 0, 0, 428, 429, 5, 59, 0, 0, 429, 435, 5, 60, 0, 0, 430, 435, 5, 58, - 0, 0, 431, 432, 5, 92, 0, 0, 432, 435, 5, 36, 0, 0, 433, 435, 5, 57, 0, - 0, 434, 426, 1, 0, 0, 0, 434, 428, 1, 0, 0, 0, 434, 430, 1, 0, 0, 0, 434, - 431, 1, 0, 0, 0, 434, 433, 1, 0, 0, 0, 435, 55, 1, 0, 0, 0, 436, 437, 5, - 64, 0, 0, 437, 438, 3, 10, 5, 0, 438, 439, 5, 7, 0, 0, 439, 440, 3, 10, - 5, 0, 440, 441, 5, 8, 0, 0, 441, 446, 1, 0, 0, 0, 442, 444, 3, 54, 27, - 0, 443, 445, 3, 54, 27, 0, 444, 443, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, - 445, 447, 1, 0, 0, 0, 446, 442, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, - 57, 1, 0, 0, 0, 448, 449, 7, 6, 0, 0, 449, 59, 1, 0, 0, 0, 450, 452, 3, - 24, 12, 0, 451, 450, 1, 0, 0, 0, 452, 455, 1, 0, 0, 0, 453, 451, 1, 0, - 0, 0, 453, 454, 1, 0, 0, 0, 454, 456, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, - 456, 457, 5, 36, 0, 0, 457, 458, 5, 139, 0, 0, 458, 460, 5, 7, 0, 0, 459, - 461, 3, 20, 10, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 462, - 1, 0, 0, 0, 462, 464, 5, 8, 0, 0, 463, 465, 3, 58, 29, 0, 464, 463, 1, - 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, - 0, 467, 468, 1, 0, 0, 0, 468, 469, 5, 1, 0, 0, 469, 470, 3, 120, 60, 0, - 470, 471, 5, 2, 0, 0, 471, 61, 1, 0, 0, 0, 472, 474, 3, 24, 12, 0, 473, - 472, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0, 475, 473, 1, 0, 0, 0, 475, 476, - 1, 0, 0, 0, 476, 478, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 478, 479, 5, 37, - 0, 0, 479, 480, 5, 139, 0, 0, 480, 482, 5, 7, 0, 0, 481, 483, 3, 48, 24, - 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, - 486, 5, 8, 0, 0, 485, 487, 3, 58, 29, 0, 486, 485, 1, 0, 0, 0, 487, 488, - 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 491, 1, 0, - 0, 0, 490, 492, 3, 64, 32, 0, 491, 490, 1, 0, 0, 0, 491, 492, 1, 0, 0, - 0, 492, 493, 1, 0, 0, 0, 493, 494, 5, 1, 0, 0, 494, 495, 3, 124, 62, 0, - 495, 496, 5, 2, 0, 0, 496, 63, 1, 0, 0, 0, 497, 509, 5, 91, 0, 0, 498, - 500, 5, 35, 0, 0, 499, 498, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, - 1, 0, 0, 0, 501, 502, 5, 7, 0, 0, 502, 503, 3, 46, 23, 0, 503, 504, 5, - 8, 0, 0, 504, 510, 1, 0, 0, 0, 505, 506, 5, 7, 0, 0, 506, 507, 3, 44, 22, - 0, 507, 508, 5, 8, 0, 0, 508, 510, 1, 0, 0, 0, 509, 499, 1, 0, 0, 0, 509, - 505, 1, 0, 0, 0, 510, 65, 1, 0, 0, 0, 511, 514, 3, 70, 35, 0, 512, 514, - 3, 68, 34, 0, 513, 511, 1, 0, 0, 0, 513, 512, 1, 0, 0, 0, 514, 515, 1, - 0, 0, 0, 515, 516, 5, 6, 0, 0, 516, 67, 1, 0, 0, 0, 517, 522, 3, 74, 37, - 0, 518, 522, 3, 78, 39, 0, 519, 522, 3, 82, 41, 0, 520, 522, 3, 84, 42, - 0, 521, 517, 1, 0, 0, 0, 521, 518, 1, 0, 0, 0, 521, 519, 1, 0, 0, 0, 521, - 520, 1, 0, 0, 0, 522, 69, 1, 0, 0, 0, 523, 525, 5, 93, 0, 0, 524, 526, - 5, 127, 0, 0, 525, 524, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 527, 1, - 0, 0, 0, 527, 532, 3, 72, 36, 0, 528, 529, 5, 9, 0, 0, 529, 531, 3, 72, - 36, 0, 530, 528, 1, 0, 0, 0, 531, 534, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, - 532, 533, 1, 0, 0, 0, 533, 536, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 535, - 523, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 541, 1, 0, 0, 0, 537, 542, - 3, 86, 43, 0, 538, 542, 3, 100, 50, 0, 539, 542, 3, 104, 52, 0, 540, 542, - 3, 108, 54, 0, 541, 537, 1, 0, 0, 0, 541, 538, 1, 0, 0, 0, 541, 539, 1, - 0, 0, 0, 541, 540, 1, 0, 0, 0, 542, 71, 1, 0, 0, 0, 543, 556, 3, 10, 5, - 0, 544, 553, 5, 7, 0, 0, 545, 550, 3, 10, 5, 0, 546, 547, 5, 9, 0, 0, 547, - 549, 3, 10, 5, 0, 548, 546, 1, 0, 0, 0, 549, 552, 1, 0, 0, 0, 550, 548, - 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 554, 1, 0, 0, 0, 552, 550, 1, 0, - 0, 0, 553, 545, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, - 555, 557, 5, 8, 0, 0, 556, 544, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, - 558, 1, 0, 0, 0, 558, 559, 5, 82, 0, 0, 559, 560, 5, 7, 0, 0, 560, 561, - 3, 86, 43, 0, 561, 562, 5, 8, 0, 0, 562, 73, 1, 0, 0, 0, 563, 564, 5, 42, - 0, 0, 564, 568, 5, 35, 0, 0, 565, 566, 5, 117, 0, 0, 566, 567, 5, 66, 0, - 0, 567, 569, 5, 75, 0, 0, 568, 565, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, - 570, 1, 0, 0, 0, 570, 571, 3, 10, 5, 0, 571, 575, 5, 7, 0, 0, 572, 576, - 3, 34, 17, 0, 573, 576, 3, 76, 38, 0, 574, 576, 3, 38, 19, 0, 575, 572, - 1, 0, 0, 0, 575, 573, 1, 0, 0, 0, 575, 574, 1, 0, 0, 0, 576, 585, 1, 0, - 0, 0, 577, 581, 5, 9, 0, 0, 578, 582, 3, 34, 17, 0, 579, 582, 3, 76, 38, - 0, 580, 582, 3, 38, 19, 0, 581, 578, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, - 581, 580, 1, 0, 0, 0, 582, 584, 1, 0, 0, 0, 583, 577, 1, 0, 0, 0, 584, - 587, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 588, - 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 588, 589, 5, 8, 0, 0, 589, 75, 1, 0, - 0, 0, 590, 591, 5, 49, 0, 0, 591, 593, 3, 10, 5, 0, 592, 590, 1, 0, 0, - 0, 592, 593, 1, 0, 0, 0, 593, 617, 1, 0, 0, 0, 594, 595, 5, 52, 0, 0, 595, - 596, 5, 53, 0, 0, 596, 597, 5, 7, 0, 0, 597, 598, 3, 12, 6, 0, 598, 599, - 5, 8, 0, 0, 599, 618, 1, 0, 0, 0, 600, 601, 5, 56, 0, 0, 601, 602, 5, 7, - 0, 0, 602, 603, 3, 12, 6, 0, 603, 604, 5, 8, 0, 0, 604, 618, 1, 0, 0, 0, - 605, 606, 5, 50, 0, 0, 606, 607, 5, 7, 0, 0, 607, 608, 3, 110, 55, 0, 608, - 609, 5, 8, 0, 0, 609, 618, 1, 0, 0, 0, 610, 611, 5, 51, 0, 0, 611, 612, - 5, 53, 0, 0, 612, 613, 5, 7, 0, 0, 613, 614, 3, 10, 5, 0, 614, 615, 5, - 8, 0, 0, 615, 616, 3, 56, 28, 0, 616, 618, 1, 0, 0, 0, 617, 594, 1, 0, - 0, 0, 617, 600, 1, 0, 0, 0, 617, 605, 1, 0, 0, 0, 617, 610, 1, 0, 0, 0, - 618, 77, 1, 0, 0, 0, 619, 620, 5, 43, 0, 0, 620, 621, 5, 35, 0, 0, 621, - 622, 3, 10, 5, 0, 622, 623, 3, 80, 40, 0, 623, 79, 1, 0, 0, 0, 624, 625, - 5, 43, 0, 0, 625, 626, 5, 44, 0, 0, 626, 627, 3, 10, 5, 0, 627, 632, 5, - 59, 0, 0, 628, 629, 5, 66, 0, 0, 629, 633, 5, 61, 0, 0, 630, 631, 5, 60, - 0, 0, 631, 633, 3, 8, 4, 0, 632, 628, 1, 0, 0, 0, 632, 630, 1, 0, 0, 0, - 633, 668, 1, 0, 0, 0, 634, 635, 5, 43, 0, 0, 635, 636, 5, 44, 0, 0, 636, - 637, 3, 10, 5, 0, 637, 643, 5, 46, 0, 0, 638, 639, 5, 66, 0, 0, 639, 644, - 5, 61, 0, 0, 640, 644, 5, 60, 0, 0, 641, 642, 5, 49, 0, 0, 642, 644, 3, - 10, 5, 0, 643, 638, 1, 0, 0, 0, 643, 640, 1, 0, 0, 0, 643, 641, 1, 0, 0, - 0, 644, 668, 1, 0, 0, 0, 645, 646, 5, 45, 0, 0, 646, 647, 5, 44, 0, 0, - 647, 648, 3, 10, 5, 0, 648, 649, 3, 14, 7, 0, 649, 668, 1, 0, 0, 0, 650, - 651, 5, 46, 0, 0, 651, 652, 5, 44, 0, 0, 652, 668, 3, 10, 5, 0, 653, 654, - 5, 47, 0, 0, 654, 655, 5, 44, 0, 0, 655, 656, 3, 10, 5, 0, 656, 657, 5, - 48, 0, 0, 657, 658, 3, 10, 5, 0, 658, 668, 1, 0, 0, 0, 659, 660, 5, 47, - 0, 0, 660, 661, 5, 48, 0, 0, 661, 668, 3, 10, 5, 0, 662, 663, 5, 45, 0, - 0, 663, 668, 3, 76, 38, 0, 664, 665, 5, 46, 0, 0, 665, 666, 5, 49, 0, 0, - 666, 668, 3, 10, 5, 0, 667, 624, 1, 0, 0, 0, 667, 634, 1, 0, 0, 0, 667, - 645, 1, 0, 0, 0, 667, 650, 1, 0, 0, 0, 667, 653, 1, 0, 0, 0, 667, 659, - 1, 0, 0, 0, 667, 662, 1, 0, 0, 0, 667, 664, 1, 0, 0, 0, 668, 81, 1, 0, - 0, 0, 669, 671, 5, 42, 0, 0, 670, 672, 5, 56, 0, 0, 671, 670, 1, 0, 0, - 0, 671, 672, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 677, 5, 67, 0, 0, 674, - 675, 5, 117, 0, 0, 675, 676, 5, 66, 0, 0, 676, 678, 5, 75, 0, 0, 677, 674, - 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 680, 1, 0, 0, 0, 679, 681, 3, 10, - 5, 0, 680, 679, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, - 682, 683, 5, 54, 0, 0, 683, 684, 3, 10, 5, 0, 684, 685, 5, 7, 0, 0, 685, - 686, 3, 12, 6, 0, 686, 687, 5, 8, 0, 0, 687, 83, 1, 0, 0, 0, 688, 689, - 5, 46, 0, 0, 689, 692, 5, 67, 0, 0, 690, 691, 5, 117, 0, 0, 691, 693, 5, - 75, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 1, 0, 0, - 0, 694, 695, 3, 10, 5, 0, 695, 85, 1, 0, 0, 0, 696, 702, 3, 92, 46, 0, - 697, 698, 3, 88, 44, 0, 698, 699, 3, 92, 46, 0, 699, 701, 1, 0, 0, 0, 700, - 697, 1, 0, 0, 0, 701, 704, 1, 0, 0, 0, 702, 700, 1, 0, 0, 0, 702, 703, - 1, 0, 0, 0, 703, 715, 1, 0, 0, 0, 704, 702, 1, 0, 0, 0, 705, 706, 5, 87, - 0, 0, 706, 707, 5, 88, 0, 0, 707, 712, 3, 90, 45, 0, 708, 709, 5, 9, 0, - 0, 709, 711, 3, 90, 45, 0, 710, 708, 1, 0, 0, 0, 711, 714, 1, 0, 0, 0, - 712, 710, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 713, 716, 1, 0, 0, 0, 714, - 712, 1, 0, 0, 0, 715, 705, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 719, - 1, 0, 0, 0, 717, 718, 5, 85, 0, 0, 718, 720, 3, 110, 55, 0, 719, 717, 1, - 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 723, 1, 0, 0, 0, 721, 722, 5, 86, 0, - 0, 722, 724, 3, 110, 55, 0, 723, 721, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, - 724, 87, 1, 0, 0, 0, 725, 727, 5, 106, 0, 0, 726, 728, 5, 76, 0, 0, 727, - 726, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 732, 1, 0, 0, 0, 729, 732, - 5, 107, 0, 0, 730, 732, 5, 108, 0, 0, 731, 725, 1, 0, 0, 0, 731, 729, 1, - 0, 0, 0, 731, 730, 1, 0, 0, 0, 732, 89, 1, 0, 0, 0, 733, 735, 3, 110, 55, - 0, 734, 736, 7, 7, 0, 0, 735, 734, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, - 739, 1, 0, 0, 0, 737, 738, 5, 109, 0, 0, 738, 740, 7, 8, 0, 0, 739, 737, - 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 91, 1, 0, 0, 0, 741, 743, 5, 102, - 0, 0, 742, 744, 5, 98, 0, 0, 743, 742, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, - 744, 745, 1, 0, 0, 0, 745, 750, 3, 98, 49, 0, 746, 747, 5, 9, 0, 0, 747, - 749, 3, 98, 49, 0, 748, 746, 1, 0, 0, 0, 749, 752, 1, 0, 0, 0, 750, 748, - 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 761, 1, 0, 0, 0, 752, 750, 1, 0, - 0, 0, 753, 754, 5, 99, 0, 0, 754, 758, 3, 94, 47, 0, 755, 757, 3, 96, 48, - 0, 756, 755, 1, 0, 0, 0, 757, 760, 1, 0, 0, 0, 758, 756, 1, 0, 0, 0, 758, - 759, 1, 0, 0, 0, 759, 762, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 761, 753, - 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 765, 1, 0, 0, 0, 763, 764, 5, 100, - 0, 0, 764, 766, 3, 110, 55, 0, 765, 763, 1, 0, 0, 0, 765, 766, 1, 0, 0, - 0, 766, 774, 1, 0, 0, 0, 767, 768, 5, 89, 0, 0, 768, 769, 5, 88, 0, 0, - 769, 772, 3, 116, 58, 0, 770, 771, 5, 90, 0, 0, 771, 773, 3, 110, 55, 0, - 772, 770, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 775, 1, 0, 0, 0, 774, - 767, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 790, 1, 0, 0, 0, 776, 777, - 5, 125, 0, 0, 777, 778, 3, 10, 5, 0, 778, 779, 5, 82, 0, 0, 779, 787, 3, - 112, 56, 0, 780, 781, 5, 9, 0, 0, 781, 782, 3, 10, 5, 0, 782, 783, 5, 82, - 0, 0, 783, 784, 3, 112, 56, 0, 784, 786, 1, 0, 0, 0, 785, 780, 1, 0, 0, - 0, 786, 789, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, - 791, 1, 0, 0, 0, 789, 787, 1, 0, 0, 0, 790, 776, 1, 0, 0, 0, 790, 791, - 1, 0, 0, 0, 791, 93, 1, 0, 0, 0, 792, 797, 3, 10, 5, 0, 793, 795, 5, 82, - 0, 0, 794, 793, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, - 796, 798, 3, 10, 5, 0, 797, 794, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, - 809, 1, 0, 0, 0, 799, 800, 5, 7, 0, 0, 800, 801, 3, 86, 43, 0, 801, 806, - 5, 8, 0, 0, 802, 804, 5, 82, 0, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, - 0, 0, 804, 805, 1, 0, 0, 0, 805, 807, 3, 10, 5, 0, 806, 803, 1, 0, 0, 0, - 806, 807, 1, 0, 0, 0, 807, 809, 1, 0, 0, 0, 808, 792, 1, 0, 0, 0, 808, - 799, 1, 0, 0, 0, 809, 95, 1, 0, 0, 0, 810, 812, 7, 9, 0, 0, 811, 810, 1, - 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 814, 5, 78, 0, - 0, 814, 815, 3, 94, 47, 0, 815, 816, 5, 54, 0, 0, 816, 817, 3, 110, 55, - 0, 817, 97, 1, 0, 0, 0, 818, 823, 3, 110, 55, 0, 819, 821, 5, 82, 0, 0, - 820, 819, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 822, 1, 0, 0, 0, 822, - 824, 3, 10, 5, 0, 823, 820, 1, 0, 0, 0, 823, 824, 1, 0, 0, 0, 824, 832, - 1, 0, 0, 0, 825, 826, 3, 10, 5, 0, 826, 827, 5, 12, 0, 0, 827, 829, 1, - 0, 0, 0, 828, 825, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 830, 1, 0, 0, - 0, 830, 832, 5, 14, 0, 0, 831, 818, 1, 0, 0, 0, 831, 828, 1, 0, 0, 0, 832, - 99, 1, 0, 0, 0, 833, 834, 5, 63, 0, 0, 834, 839, 3, 10, 5, 0, 835, 837, - 5, 82, 0, 0, 836, 835, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 838, 1, 0, - 0, 0, 838, 840, 3, 10, 5, 0, 839, 836, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, - 840, 841, 1, 0, 0, 0, 841, 842, 5, 59, 0, 0, 842, 847, 3, 102, 51, 0, 843, - 844, 5, 9, 0, 0, 844, 846, 3, 102, 51, 0, 845, 843, 1, 0, 0, 0, 846, 849, - 1, 0, 0, 0, 847, 845, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 858, 1, 0, - 0, 0, 849, 847, 1, 0, 0, 0, 850, 851, 5, 99, 0, 0, 851, 855, 3, 94, 47, - 0, 852, 854, 3, 96, 48, 0, 853, 852, 1, 0, 0, 0, 854, 857, 1, 0, 0, 0, - 855, 853, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, 859, 1, 0, 0, 0, 857, - 855, 1, 0, 0, 0, 858, 850, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 862, - 1, 0, 0, 0, 860, 861, 5, 100, 0, 0, 861, 863, 3, 110, 55, 0, 862, 860, - 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 101, 1, 0, 0, 0, 864, 865, 3, 10, - 5, 0, 865, 866, 5, 15, 0, 0, 866, 867, 3, 110, 55, 0, 867, 103, 1, 0, 0, - 0, 868, 869, 5, 103, 0, 0, 869, 870, 5, 113, 0, 0, 870, 875, 3, 10, 5, - 0, 871, 873, 5, 82, 0, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, - 874, 1, 0, 0, 0, 874, 876, 3, 10, 5, 0, 875, 872, 1, 0, 0, 0, 875, 876, - 1, 0, 0, 0, 876, 881, 1, 0, 0, 0, 877, 878, 5, 7, 0, 0, 878, 879, 3, 12, - 6, 0, 879, 880, 5, 8, 0, 0, 880, 882, 1, 0, 0, 0, 881, 877, 1, 0, 0, 0, - 881, 882, 1, 0, 0, 0, 882, 898, 1, 0, 0, 0, 883, 884, 5, 104, 0, 0, 884, - 885, 5, 7, 0, 0, 885, 886, 3, 116, 58, 0, 886, 894, 5, 8, 0, 0, 887, 888, - 5, 9, 0, 0, 888, 889, 5, 7, 0, 0, 889, 890, 3, 116, 58, 0, 890, 891, 5, - 8, 0, 0, 891, 893, 1, 0, 0, 0, 892, 887, 1, 0, 0, 0, 893, 896, 1, 0, 0, - 0, 894, 892, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 899, 1, 0, 0, 0, 896, - 894, 1, 0, 0, 0, 897, 899, 3, 86, 43, 0, 898, 883, 1, 0, 0, 0, 898, 897, - 1, 0, 0, 0, 899, 901, 1, 0, 0, 0, 900, 902, 3, 106, 53, 0, 901, 900, 1, - 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 105, 1, 0, 0, 0, 903, 904, 5, 54, 0, - 0, 904, 912, 5, 114, 0, 0, 905, 906, 5, 7, 0, 0, 906, 907, 3, 12, 6, 0, - 907, 910, 5, 8, 0, 0, 908, 909, 5, 100, 0, 0, 909, 911, 3, 110, 55, 0, - 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 913, 1, 0, 0, 0, 912, - 905, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 930, - 5, 55, 0, 0, 915, 931, 5, 115, 0, 0, 916, 917, 5, 63, 0, 0, 917, 918, 5, - 59, 0, 0, 918, 923, 3, 102, 51, 0, 919, 920, 5, 9, 0, 0, 920, 922, 3, 102, - 51, 0, 921, 919, 1, 0, 0, 0, 922, 925, 1, 0, 0, 0, 923, 921, 1, 0, 0, 0, - 923, 924, 1, 0, 0, 0, 924, 928, 1, 0, 0, 0, 925, 923, 1, 0, 0, 0, 926, - 927, 5, 100, 0, 0, 927, 929, 3, 110, 55, 0, 928, 926, 1, 0, 0, 0, 928, - 929, 1, 0, 0, 0, 929, 931, 1, 0, 0, 0, 930, 915, 1, 0, 0, 0, 930, 916, - 1, 0, 0, 0, 931, 107, 1, 0, 0, 0, 932, 933, 5, 62, 0, 0, 933, 934, 5, 99, - 0, 0, 934, 939, 3, 10, 5, 0, 935, 937, 5, 82, 0, 0, 936, 935, 1, 0, 0, - 0, 936, 937, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 940, 3, 10, 5, 0, 939, - 936, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 942, - 5, 100, 0, 0, 942, 944, 3, 110, 55, 0, 943, 941, 1, 0, 0, 0, 943, 944, - 1, 0, 0, 0, 944, 109, 1, 0, 0, 0, 945, 946, 6, 55, -1, 0, 946, 947, 5, - 7, 0, 0, 947, 948, 3, 110, 55, 0, 948, 950, 5, 8, 0, 0, 949, 951, 3, 16, - 8, 0, 950, 949, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 1019, 1, 0, 0, 0, - 952, 953, 7, 0, 0, 0, 953, 1019, 3, 110, 55, 20, 954, 956, 3, 8, 4, 0, - 955, 957, 3, 16, 8, 0, 956, 955, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, - 1019, 1, 0, 0, 0, 958, 965, 3, 118, 59, 0, 959, 960, 5, 126, 0, 0, 960, - 961, 5, 7, 0, 0, 961, 962, 5, 100, 0, 0, 962, 963, 3, 110, 55, 0, 963, - 964, 5, 8, 0, 0, 964, 966, 1, 0, 0, 0, 965, 959, 1, 0, 0, 0, 965, 966, - 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 970, 5, 123, 0, 0, 968, 971, 3, - 112, 56, 0, 969, 971, 5, 139, 0, 0, 970, 968, 1, 0, 0, 0, 970, 969, 1, - 0, 0, 0, 971, 1019, 1, 0, 0, 0, 972, 974, 3, 118, 59, 0, 973, 975, 3, 16, - 8, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 1019, 1, 0, 0, 0, - 976, 978, 3, 18, 9, 0, 977, 979, 3, 16, 8, 0, 978, 977, 1, 0, 0, 0, 978, - 979, 1, 0, 0, 0, 979, 1019, 1, 0, 0, 0, 980, 981, 3, 10, 5, 0, 981, 982, - 5, 12, 0, 0, 982, 984, 1, 0, 0, 0, 983, 980, 1, 0, 0, 0, 983, 984, 1, 0, - 0, 0, 984, 985, 1, 0, 0, 0, 985, 987, 3, 10, 5, 0, 986, 988, 3, 16, 8, - 0, 987, 986, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 1019, 1, 0, 0, 0, 989, - 991, 5, 94, 0, 0, 990, 992, 3, 110, 55, 0, 991, 990, 1, 0, 0, 0, 991, 992, - 1, 0, 0, 0, 992, 994, 1, 0, 0, 0, 993, 995, 3, 114, 57, 0, 994, 993, 1, - 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 996, 997, 1, 0, 0, - 0, 997, 1000, 1, 0, 0, 0, 998, 999, 5, 119, 0, 0, 999, 1001, 3, 110, 55, - 0, 1000, 998, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, - 0, 1002, 1003, 5, 97, 0, 0, 1003, 1019, 1, 0, 0, 0, 1004, 1006, 5, 66, - 0, 0, 1005, 1004, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, 0, 1006, 1007, 1, 0, - 0, 0, 1007, 1009, 5, 75, 0, 0, 1008, 1005, 1, 0, 0, 0, 1008, 1009, 1, 0, - 0, 0, 1009, 1010, 1, 0, 0, 0, 1010, 1011, 5, 7, 0, 0, 1011, 1012, 3, 86, - 43, 0, 1012, 1014, 5, 8, 0, 0, 1013, 1015, 3, 16, 8, 0, 1014, 1013, 1, - 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1019, 1, 0, 0, 0, 1016, 1017, 5, - 66, 0, 0, 1017, 1019, 3, 110, 55, 3, 1018, 945, 1, 0, 0, 0, 1018, 952, - 1, 0, 0, 0, 1018, 954, 1, 0, 0, 0, 1018, 958, 1, 0, 0, 0, 1018, 972, 1, - 0, 0, 0, 1018, 976, 1, 0, 0, 0, 1018, 983, 1, 0, 0, 0, 1018, 989, 1, 0, - 0, 0, 1018, 1008, 1, 0, 0, 0, 1018, 1016, 1, 0, 0, 0, 1019, 1105, 1, 0, - 0, 0, 1020, 1021, 10, 18, 0, 0, 1021, 1022, 7, 10, 0, 0, 1022, 1104, 3, - 110, 55, 19, 1023, 1024, 10, 17, 0, 0, 1024, 1025, 7, 0, 0, 0, 1025, 1104, - 3, 110, 55, 18, 1026, 1027, 10, 9, 0, 0, 1027, 1028, 5, 13, 0, 0, 1028, - 1104, 3, 110, 55, 10, 1029, 1031, 10, 7, 0, 0, 1030, 1032, 5, 66, 0, 0, - 1031, 1030, 1, 0, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, - 1033, 1034, 7, 11, 0, 0, 1034, 1104, 3, 110, 55, 8, 1035, 1037, 10, 6, - 0, 0, 1036, 1038, 5, 66, 0, 0, 1037, 1036, 1, 0, 0, 0, 1037, 1038, 1, 0, - 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1040, 5, 73, 0, 0, 1040, 1041, 3, 110, - 55, 0, 1041, 1042, 5, 68, 0, 0, 1042, 1043, 3, 110, 55, 7, 1043, 1104, - 1, 0, 0, 0, 1044, 1045, 10, 5, 0, 0, 1045, 1046, 7, 12, 0, 0, 1046, 1104, - 3, 110, 55, 6, 1047, 1048, 10, 2, 0, 0, 1048, 1049, 5, 68, 0, 0, 1049, - 1104, 3, 110, 55, 3, 1050, 1051, 10, 1, 0, 0, 1051, 1052, 5, 69, 0, 0, - 1052, 1104, 3, 110, 55, 2, 1053, 1054, 10, 22, 0, 0, 1054, 1055, 5, 12, - 0, 0, 1055, 1057, 3, 10, 5, 0, 1056, 1058, 3, 16, 8, 0, 1057, 1056, 1, - 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1104, 1, 0, 0, 0, 1059, 1060, 10, - 21, 0, 0, 1060, 1069, 5, 3, 0, 0, 1061, 1070, 3, 110, 55, 0, 1062, 1064, - 3, 110, 55, 0, 1063, 1062, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1065, - 1, 0, 0, 0, 1065, 1067, 5, 5, 0, 0, 1066, 1068, 3, 110, 55, 0, 1067, 1066, - 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1070, 1, 0, 0, 0, 1069, 1061, - 1, 0, 0, 0, 1069, 1063, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 1073, - 5, 4, 0, 0, 1072, 1074, 3, 16, 8, 0, 1073, 1072, 1, 0, 0, 0, 1073, 1074, - 1, 0, 0, 0, 1074, 1104, 1, 0, 0, 0, 1075, 1076, 10, 19, 0, 0, 1076, 1077, - 5, 101, 0, 0, 1077, 1104, 3, 10, 5, 0, 1078, 1080, 10, 8, 0, 0, 1079, 1081, - 5, 66, 0, 0, 1080, 1079, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, - 1, 0, 0, 0, 1082, 1083, 5, 72, 0, 0, 1083, 1086, 5, 7, 0, 0, 1084, 1087, - 3, 116, 58, 0, 1085, 1087, 3, 86, 43, 0, 1086, 1084, 1, 0, 0, 0, 1086, - 1085, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 5, 8, 0, 0, 1089, - 1104, 1, 0, 0, 0, 1090, 1091, 10, 4, 0, 0, 1091, 1093, 5, 74, 0, 0, 1092, - 1094, 5, 66, 0, 0, 1093, 1092, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, - 1101, 1, 0, 0, 0, 1095, 1096, 5, 98, 0, 0, 1096, 1097, 5, 99, 0, 0, 1097, - 1102, 3, 110, 55, 0, 1098, 1102, 5, 61, 0, 0, 1099, 1102, 5, 129, 0, 0, - 1100, 1102, 5, 130, 0, 0, 1101, 1095, 1, 0, 0, 0, 1101, 1098, 1, 0, 0, - 0, 1101, 1099, 1, 0, 0, 0, 1101, 1100, 1, 0, 0, 0, 1102, 1104, 1, 0, 0, - 0, 1103, 1020, 1, 0, 0, 0, 1103, 1023, 1, 0, 0, 0, 1103, 1026, 1, 0, 0, - 0, 1103, 1029, 1, 0, 0, 0, 1103, 1035, 1, 0, 0, 0, 1103, 1044, 1, 0, 0, - 0, 1103, 1047, 1, 0, 0, 0, 1103, 1050, 1, 0, 0, 0, 1103, 1053, 1, 0, 0, - 0, 1103, 1059, 1, 0, 0, 0, 1103, 1075, 1, 0, 0, 0, 1103, 1078, 1, 0, 0, - 0, 1103, 1090, 1, 0, 0, 0, 1104, 1107, 1, 0, 0, 0, 1105, 1103, 1, 0, 0, - 0, 1105, 1106, 1, 0, 0, 0, 1106, 111, 1, 0, 0, 0, 1107, 1105, 1, 0, 0, - 0, 1108, 1112, 5, 7, 0, 0, 1109, 1110, 5, 124, 0, 0, 1110, 1111, 5, 88, - 0, 0, 1111, 1113, 3, 116, 58, 0, 1112, 1109, 1, 0, 0, 0, 1112, 1113, 1, - 0, 0, 0, 1113, 1124, 1, 0, 0, 0, 1114, 1115, 5, 87, 0, 0, 1115, 1116, 5, - 88, 0, 0, 1116, 1121, 3, 90, 45, 0, 1117, 1118, 5, 9, 0, 0, 1118, 1120, - 3, 90, 45, 0, 1119, 1117, 1, 0, 0, 0, 1120, 1123, 1, 0, 0, 0, 1121, 1119, - 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1125, 1, 0, 0, 0, 1123, 1121, - 1, 0, 0, 0, 1124, 1114, 1, 0, 0, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, - 1, 0, 0, 0, 1126, 1127, 5, 8, 0, 0, 1127, 113, 1, 0, 0, 0, 1128, 1129, - 5, 95, 0, 0, 1129, 1130, 3, 110, 55, 0, 1130, 1131, 5, 96, 0, 0, 1131, - 1132, 3, 110, 55, 0, 1132, 115, 1, 0, 0, 0, 1133, 1138, 3, 110, 55, 0, - 1134, 1135, 5, 9, 0, 0, 1135, 1137, 3, 110, 55, 0, 1136, 1134, 1, 0, 0, - 0, 1137, 1140, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, - 0, 1139, 117, 1, 0, 0, 0, 1140, 1138, 1, 0, 0, 0, 1141, 1142, 3, 10, 5, - 0, 1142, 1148, 5, 7, 0, 0, 1143, 1145, 5, 98, 0, 0, 1144, 1143, 1, 0, 0, - 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1149, 3, 116, - 58, 0, 1147, 1149, 5, 14, 0, 0, 1148, 1144, 1, 0, 0, 0, 1148, 1147, 1, - 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1151, 5, - 8, 0, 0, 1151, 119, 1, 0, 0, 0, 1152, 1153, 3, 122, 61, 0, 1153, 1154, - 5, 6, 0, 0, 1154, 1156, 1, 0, 0, 0, 1155, 1152, 1, 0, 0, 0, 1156, 1159, - 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1158, 1, 0, 0, 0, 1158, 121, - 1, 0, 0, 0, 1159, 1157, 1, 0, 0, 0, 1160, 1181, 3, 70, 35, 0, 1161, 1162, - 5, 139, 0, 0, 1162, 1164, 5, 7, 0, 0, 1163, 1165, 3, 128, 64, 0, 1164, - 1163, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1166, 1, 0, 0, 0, 1166, - 1181, 5, 8, 0, 0, 1167, 1168, 3, 20, 10, 0, 1168, 1169, 5, 15, 0, 0, 1169, - 1171, 1, 0, 0, 0, 1170, 1167, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, - 1172, 1, 0, 0, 0, 1172, 1173, 5, 139, 0, 0, 1173, 1174, 5, 12, 0, 0, 1174, - 1175, 5, 139, 0, 0, 1175, 1177, 5, 7, 0, 0, 1176, 1178, 3, 128, 64, 0, - 1177, 1176, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, - 1179, 1181, 5, 8, 0, 0, 1180, 1160, 1, 0, 0, 0, 1180, 1161, 1, 0, 0, 0, - 1180, 1170, 1, 0, 0, 0, 1181, 123, 1, 0, 0, 0, 1182, 1184, 3, 130, 65, - 0, 1183, 1182, 1, 0, 0, 0, 1184, 1187, 1, 0, 0, 0, 1185, 1183, 1, 0, 0, - 0, 1185, 1186, 1, 0, 0, 0, 1186, 125, 1, 0, 0, 0, 1187, 1185, 1, 0, 0, - 0, 1188, 1189, 6, 63, -1, 0, 1189, 1190, 5, 7, 0, 0, 1190, 1191, 3, 126, - 63, 0, 1191, 1193, 5, 8, 0, 0, 1192, 1194, 3, 16, 8, 0, 1193, 1192, 1, - 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1220, 1, 0, 0, 0, 1195, 1196, 7, - 13, 0, 0, 1196, 1220, 3, 126, 63, 13, 1197, 1199, 3, 8, 4, 0, 1198, 1200, - 3, 16, 8, 0, 1199, 1198, 1, 0, 0, 0, 1199, 1200, 1, 0, 0, 0, 1200, 1220, - 1, 0, 0, 0, 1201, 1203, 3, 134, 67, 0, 1202, 1204, 3, 16, 8, 0, 1203, 1202, - 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1220, 1, 0, 0, 0, 1205, 1207, - 3, 18, 9, 0, 1206, 1208, 3, 16, 8, 0, 1207, 1206, 1, 0, 0, 0, 1207, 1208, - 1, 0, 0, 0, 1208, 1220, 1, 0, 0, 0, 1209, 1211, 5, 3, 0, 0, 1210, 1212, - 3, 128, 64, 0, 1211, 1210, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, - 1, 0, 0, 0, 1213, 1215, 5, 4, 0, 0, 1214, 1216, 3, 16, 8, 0, 1215, 1214, - 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1220, 1, 0, 0, 0, 1217, 1218, - 5, 66, 0, 0, 1218, 1220, 3, 126, 63, 3, 1219, 1188, 1, 0, 0, 0, 1219, 1195, - 1, 0, 0, 0, 1219, 1197, 1, 0, 0, 0, 1219, 1201, 1, 0, 0, 0, 1219, 1205, - 1, 0, 0, 0, 1219, 1209, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1276, - 1, 0, 0, 0, 1221, 1222, 10, 12, 0, 0, 1222, 1223, 7, 10, 0, 0, 1223, 1275, - 3, 126, 63, 13, 1224, 1225, 10, 11, 0, 0, 1225, 1226, 7, 0, 0, 0, 1226, - 1275, 3, 126, 63, 12, 1227, 1228, 10, 6, 0, 0, 1228, 1229, 5, 13, 0, 0, - 1229, 1275, 3, 126, 63, 7, 1230, 1231, 10, 5, 0, 0, 1231, 1232, 7, 12, - 0, 0, 1232, 1275, 3, 126, 63, 6, 1233, 1234, 10, 2, 0, 0, 1234, 1235, 5, - 68, 0, 0, 1235, 1275, 3, 126, 63, 3, 1236, 1237, 10, 1, 0, 0, 1237, 1238, - 5, 69, 0, 0, 1238, 1275, 3, 126, 63, 2, 1239, 1240, 10, 15, 0, 0, 1240, - 1241, 5, 12, 0, 0, 1241, 1243, 5, 139, 0, 0, 1242, 1244, 3, 16, 8, 0, 1243, - 1242, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1275, 1, 0, 0, 0, 1245, - 1246, 10, 14, 0, 0, 1246, 1255, 5, 3, 0, 0, 1247, 1256, 3, 126, 63, 0, - 1248, 1250, 3, 126, 63, 0, 1249, 1248, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, - 0, 1250, 1251, 1, 0, 0, 0, 1251, 1253, 5, 5, 0, 0, 1252, 1254, 3, 126, - 63, 0, 1253, 1252, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 1256, 1, 0, - 0, 0, 1255, 1247, 1, 0, 0, 0, 1255, 1249, 1, 0, 0, 0, 1256, 1257, 1, 0, - 0, 0, 1257, 1259, 5, 4, 0, 0, 1258, 1260, 3, 16, 8, 0, 1259, 1258, 1, 0, - 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1275, 1, 0, 0, 0, 1261, 1262, 10, 4, - 0, 0, 1262, 1264, 5, 74, 0, 0, 1263, 1265, 5, 66, 0, 0, 1264, 1263, 1, - 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1272, 1, 0, 0, 0, 1266, 1267, 5, - 98, 0, 0, 1267, 1268, 5, 99, 0, 0, 1268, 1273, 3, 126, 63, 0, 1269, 1273, - 5, 61, 0, 0, 1270, 1273, 5, 129, 0, 0, 1271, 1273, 5, 130, 0, 0, 1272, - 1266, 1, 0, 0, 0, 1272, 1269, 1, 0, 0, 0, 1272, 1270, 1, 0, 0, 0, 1272, - 1271, 1, 0, 0, 0, 1273, 1275, 1, 0, 0, 0, 1274, 1221, 1, 0, 0, 0, 1274, - 1224, 1, 0, 0, 0, 1274, 1227, 1, 0, 0, 0, 1274, 1230, 1, 0, 0, 0, 1274, - 1233, 1, 0, 0, 0, 1274, 1236, 1, 0, 0, 0, 1274, 1239, 1, 0, 0, 0, 1274, - 1245, 1, 0, 0, 0, 1274, 1261, 1, 0, 0, 0, 1275, 1278, 1, 0, 0, 0, 1276, - 1274, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 127, 1, 0, 0, 0, 1278, - 1276, 1, 0, 0, 0, 1279, 1284, 3, 126, 63, 0, 1280, 1281, 5, 9, 0, 0, 1281, - 1283, 3, 126, 63, 0, 1282, 1280, 1, 0, 0, 0, 1283, 1286, 1, 0, 0, 0, 1284, - 1282, 1, 0, 0, 0, 1284, 1285, 1, 0, 0, 0, 1285, 129, 1, 0, 0, 0, 1286, - 1284, 1, 0, 0, 0, 1287, 1288, 5, 140, 0, 0, 1288, 1289, 3, 14, 7, 0, 1289, - 1290, 5, 6, 0, 0, 1290, 1368, 1, 0, 0, 0, 1291, 1296, 3, 132, 66, 0, 1292, - 1293, 5, 9, 0, 0, 1293, 1295, 3, 132, 66, 0, 1294, 1292, 1, 0, 0, 0, 1295, - 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, - 1299, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1300, 5, 30, 0, 0, 1300, - 1302, 1, 0, 0, 0, 1301, 1291, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, - 1303, 1, 0, 0, 0, 1303, 1304, 3, 134, 67, 0, 1304, 1305, 5, 6, 0, 0, 1305, - 1368, 1, 0, 0, 0, 1306, 1308, 3, 126, 63, 0, 1307, 1309, 3, 14, 7, 0, 1308, - 1307, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, - 1311, 5, 30, 0, 0, 1311, 1312, 3, 126, 63, 0, 1312, 1313, 5, 6, 0, 0, 1313, - 1368, 1, 0, 0, 0, 1314, 1315, 5, 116, 0, 0, 1315, 1316, 5, 140, 0, 0, 1316, - 1320, 5, 72, 0, 0, 1317, 1321, 3, 138, 69, 0, 1318, 1321, 3, 18, 9, 0, - 1319, 1321, 3, 70, 35, 0, 1320, 1317, 1, 0, 0, 0, 1320, 1318, 1, 0, 0, - 0, 1320, 1319, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1326, 5, 1, 0, - 0, 1323, 1325, 3, 130, 65, 0, 1324, 1323, 1, 0, 0, 0, 1325, 1328, 1, 0, - 0, 0, 1326, 1324, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1329, 1, 0, - 0, 0, 1328, 1326, 1, 0, 0, 0, 1329, 1330, 5, 2, 0, 0, 1330, 1368, 1, 0, - 0, 0, 1331, 1332, 5, 117, 0, 0, 1332, 1337, 3, 136, 68, 0, 1333, 1334, - 5, 118, 0, 0, 1334, 1336, 3, 136, 68, 0, 1335, 1333, 1, 0, 0, 0, 1336, - 1339, 1, 0, 0, 0, 1337, 1335, 1, 0, 0, 0, 1337, 1338, 1, 0, 0, 0, 1338, - 1349, 1, 0, 0, 0, 1339, 1337, 1, 0, 0, 0, 1340, 1341, 5, 119, 0, 0, 1341, - 1345, 5, 1, 0, 0, 1342, 1344, 3, 130, 65, 0, 1343, 1342, 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, 1350, 5, 2, 0, 0, 1349, - 1340, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1368, 1, 0, 0, 0, 1351, - 1352, 3, 70, 35, 0, 1352, 1353, 5, 6, 0, 0, 1353, 1368, 1, 0, 0, 0, 1354, - 1355, 5, 120, 0, 0, 1355, 1368, 5, 6, 0, 0, 1356, 1359, 5, 121, 0, 0, 1357, - 1360, 3, 128, 64, 0, 1358, 1360, 3, 70, 35, 0, 1359, 1357, 1, 0, 0, 0, - 1359, 1358, 1, 0, 0, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, - 1361, 1368, 5, 6, 0, 0, 1362, 1363, 5, 121, 0, 0, 1363, 1364, 5, 122, 0, - 0, 1364, 1365, 3, 128, 64, 0, 1365, 1366, 5, 6, 0, 0, 1366, 1368, 1, 0, - 0, 0, 1367, 1287, 1, 0, 0, 0, 1367, 1301, 1, 0, 0, 0, 1367, 1306, 1, 0, - 0, 0, 1367, 1314, 1, 0, 0, 0, 1367, 1331, 1, 0, 0, 0, 1367, 1351, 1, 0, - 0, 0, 1367, 1354, 1, 0, 0, 0, 1367, 1356, 1, 0, 0, 0, 1367, 1362, 1, 0, - 0, 0, 1368, 131, 1, 0, 0, 0, 1369, 1370, 7, 14, 0, 0, 1370, 133, 1, 0, - 0, 0, 1371, 1372, 5, 139, 0, 0, 1372, 1374, 5, 7, 0, 0, 1373, 1375, 3, - 128, 64, 0, 1374, 1373, 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1376, - 1, 0, 0, 0, 1376, 1377, 5, 8, 0, 0, 1377, 135, 1, 0, 0, 0, 1378, 1379, - 3, 126, 63, 0, 1379, 1383, 5, 1, 0, 0, 1380, 1382, 3, 130, 65, 0, 1381, - 1380, 1, 0, 0, 0, 1382, 1385, 1, 0, 0, 0, 1383, 1381, 1, 0, 0, 0, 1383, - 1384, 1, 0, 0, 0, 1384, 1386, 1, 0, 0, 0, 1385, 1383, 1, 0, 0, 0, 1386, - 1387, 5, 2, 0, 0, 1387, 137, 1, 0, 0, 0, 1388, 1389, 3, 126, 63, 0, 1389, - 1390, 5, 31, 0, 0, 1390, 1391, 3, 126, 63, 0, 1391, 139, 1, 0, 0, 0, 187, - 154, 158, 166, 172, 179, 188, 192, 204, 212, 214, 228, 231, 251, 256, 270, - 274, 284, 292, 302, 313, 326, 332, 337, 339, 342, 347, 353, 358, 361, 368, - 378, 389, 395, 401, 407, 422, 434, 444, 446, 453, 460, 466, 475, 482, 488, - 491, 499, 509, 513, 521, 525, 532, 535, 541, 550, 553, 556, 568, 575, 581, - 585, 592, 617, 632, 643, 667, 671, 677, 680, 692, 702, 712, 715, 719, 723, - 727, 731, 735, 739, 743, 750, 758, 761, 765, 772, 774, 787, 790, 794, 797, - 803, 806, 808, 811, 820, 823, 828, 831, 836, 839, 847, 855, 858, 862, 872, - 875, 881, 894, 898, 901, 910, 912, 923, 928, 930, 936, 939, 943, 950, 956, - 965, 970, 974, 978, 983, 987, 991, 996, 1000, 1005, 1008, 1014, 1018, 1031, - 1037, 1057, 1063, 1067, 1069, 1073, 1080, 1086, 1093, 1101, 1103, 1105, - 1112, 1121, 1124, 1138, 1144, 1148, 1157, 1164, 1170, 1177, 1180, 1185, - 1193, 1199, 1203, 1207, 1211, 1215, 1219, 1243, 1249, 1253, 1255, 1259, - 1264, 1272, 1274, 1276, 1284, 1296, 1301, 1308, 1320, 1326, 1337, 1345, - 1349, 1359, 1367, 1374, 1383, + 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 0, + 15, 1, 0, 20, 21, 1, 0, 129, 130, 1, 0, 140, 141, 3, 0, 52, 52, 56, 56, + 67, 67, 1, 0, 64, 65, 1, 0, 62, 63, 1, 0, 38, 41, 1, 0, 83, 84, 1, 0, 110, + 111, 2, 0, 79, 81, 105, 105, 3, 0, 14, 14, 19, 19, 22, 22, 1, 0, 70, 71, + 2, 0, 15, 16, 23, 27, 2, 0, 11, 11, 20, 21, 2, 0, 29, 29, 140, 140, 1612, + 0, 144, 1, 0, 0, 0, 2, 147, 1, 0, 0, 0, 4, 150, 1, 0, 0, 0, 6, 153, 1, + 0, 0, 0, 8, 170, 1, 0, 0, 0, 10, 176, 1, 0, 0, 0, 12, 178, 1, 0, 0, 0, + 14, 186, 1, 0, 0, 0, 16, 198, 1, 0, 0, 0, 18, 201, 1, 0, 0, 0, 20, 203, + 1, 0, 0, 0, 22, 211, 1, 0, 0, 0, 24, 221, 1, 0, 0, 0, 26, 239, 1, 0, 0, + 0, 28, 243, 1, 0, 0, 0, 30, 266, 1, 0, 0, 0, 32, 283, 1, 0, 0, 0, 34, 291, + 1, 0, 0, 0, 36, 299, 1, 0, 0, 0, 38, 306, 1, 0, 0, 0, 40, 317, 1, 0, 0, + 0, 42, 343, 1, 0, 0, 0, 44, 367, 1, 0, 0, 0, 46, 375, 1, 0, 0, 0, 48, 385, + 1, 0, 0, 0, 50, 405, 1, 0, 0, 0, 52, 426, 1, 0, 0, 0, 54, 428, 1, 0, 0, + 0, 56, 440, 1, 0, 0, 0, 58, 452, 1, 0, 0, 0, 60, 457, 1, 0, 0, 0, 62, 479, + 1, 0, 0, 0, 64, 501, 1, 0, 0, 0, 66, 517, 1, 0, 0, 0, 68, 526, 1, 0, 0, + 0, 70, 540, 1, 0, 0, 0, 72, 548, 1, 0, 0, 0, 74, 568, 1, 0, 0, 0, 76, 597, + 1, 0, 0, 0, 78, 627, 1, 0, 0, 0, 80, 629, 1, 0, 0, 0, 82, 638, 1, 0, 0, + 0, 84, 686, 1, 0, 0, 0, 86, 688, 1, 0, 0, 0, 88, 707, 1, 0, 0, 0, 90, 715, + 1, 0, 0, 0, 92, 750, 1, 0, 0, 0, 94, 752, 1, 0, 0, 0, 96, 760, 1, 0, 0, + 0, 98, 827, 1, 0, 0, 0, 100, 830, 1, 0, 0, 0, 102, 850, 1, 0, 0, 0, 104, + 852, 1, 0, 0, 0, 106, 883, 1, 0, 0, 0, 108, 887, 1, 0, 0, 0, 110, 922, + 1, 0, 0, 0, 112, 951, 1, 0, 0, 0, 114, 1037, 1, 0, 0, 0, 116, 1127, 1, + 0, 0, 0, 118, 1147, 1, 0, 0, 0, 120, 1152, 1, 0, 0, 0, 122, 1160, 1, 0, + 0, 0, 124, 1176, 1, 0, 0, 0, 126, 1199, 1, 0, 0, 0, 128, 1204, 1, 0, 0, + 0, 130, 1238, 1, 0, 0, 0, 132, 1298, 1, 0, 0, 0, 134, 1386, 1, 0, 0, 0, + 136, 1388, 1, 0, 0, 0, 138, 1390, 1, 0, 0, 0, 140, 1397, 1, 0, 0, 0, 142, + 1407, 1, 0, 0, 0, 144, 145, 3, 22, 11, 0, 145, 146, 5, 0, 0, 1, 146, 1, + 1, 0, 0, 0, 147, 148, 3, 66, 33, 0, 148, 149, 5, 0, 0, 1, 149, 3, 1, 0, + 0, 0, 150, 151, 3, 124, 62, 0, 151, 152, 5, 0, 0, 1, 152, 5, 1, 0, 0, 0, + 153, 154, 3, 128, 64, 0, 154, 155, 5, 0, 0, 1, 155, 7, 1, 0, 0, 0, 156, + 171, 5, 128, 0, 0, 157, 159, 7, 0, 0, 0, 158, 157, 1, 0, 0, 0, 158, 159, + 1, 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 171, 5, 131, 0, 0, 161, 163, 7, + 0, 0, 0, 162, 161, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 164, 1, 0, 0, + 0, 164, 165, 5, 131, 0, 0, 165, 166, 5, 12, 0, 0, 166, 171, 5, 131, 0, + 0, 167, 171, 7, 1, 0, 0, 168, 171, 5, 61, 0, 0, 169, 171, 5, 132, 0, 0, + 170, 156, 1, 0, 0, 0, 170, 158, 1, 0, 0, 0, 170, 162, 1, 0, 0, 0, 170, + 167, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 169, 1, 0, 0, 0, 171, 9, 1, + 0, 0, 0, 172, 173, 5, 32, 0, 0, 173, 174, 5, 139, 0, 0, 174, 177, 5, 32, + 0, 0, 175, 177, 5, 139, 0, 0, 176, 172, 1, 0, 0, 0, 176, 175, 1, 0, 0, + 0, 177, 11, 1, 0, 0, 0, 178, 183, 3, 10, 5, 0, 179, 180, 5, 9, 0, 0, 180, + 182, 3, 10, 5, 0, 181, 179, 1, 0, 0, 0, 182, 185, 1, 0, 0, 0, 183, 181, + 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 13, 1, 0, 0, 0, 185, 183, 1, 0, + 0, 0, 186, 192, 5, 139, 0, 0, 187, 188, 5, 7, 0, 0, 188, 189, 5, 131, 0, + 0, 189, 190, 5, 9, 0, 0, 190, 191, 5, 131, 0, 0, 191, 193, 5, 8, 0, 0, + 192, 187, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 196, 1, 0, 0, 0, 194, + 195, 5, 3, 0, 0, 195, 197, 5, 4, 0, 0, 196, 194, 1, 0, 0, 0, 196, 197, + 1, 0, 0, 0, 197, 15, 1, 0, 0, 0, 198, 199, 5, 28, 0, 0, 199, 200, 3, 14, + 7, 0, 200, 17, 1, 0, 0, 0, 201, 202, 7, 2, 0, 0, 202, 19, 1, 0, 0, 0, 203, + 208, 3, 18, 9, 0, 204, 205, 5, 9, 0, 0, 205, 207, 3, 18, 9, 0, 206, 204, + 1, 0, 0, 0, 207, 210, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 208, 209, 1, 0, + 0, 0, 209, 21, 1, 0, 0, 0, 210, 208, 1, 0, 0, 0, 211, 218, 3, 26, 13, 0, + 212, 217, 3, 28, 14, 0, 213, 217, 3, 30, 15, 0, 214, 217, 3, 60, 30, 0, + 215, 217, 3, 62, 31, 0, 216, 212, 1, 0, 0, 0, 216, 213, 1, 0, 0, 0, 216, + 214, 1, 0, 0, 0, 216, 215, 1, 0, 0, 0, 217, 220, 1, 0, 0, 0, 218, 216, + 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 23, 1, 0, 0, 0, 220, 218, 1, 0, + 0, 0, 221, 222, 5, 141, 0, 0, 222, 235, 5, 7, 0, 0, 223, 224, 5, 139, 0, + 0, 224, 225, 5, 15, 0, 0, 225, 232, 3, 8, 4, 0, 226, 227, 5, 9, 0, 0, 227, + 228, 5, 139, 0, 0, 228, 229, 5, 15, 0, 0, 229, 231, 3, 8, 4, 0, 230, 226, + 1, 0, 0, 0, 231, 234, 1, 0, 0, 0, 232, 230, 1, 0, 0, 0, 232, 233, 1, 0, + 0, 0, 233, 236, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 235, 223, 1, 0, 0, 0, + 235, 236, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 238, 5, 8, 0, 0, 238, + 25, 1, 0, 0, 0, 239, 240, 5, 33, 0, 0, 240, 241, 5, 139, 0, 0, 241, 242, + 5, 6, 0, 0, 242, 27, 1, 0, 0, 0, 243, 244, 5, 34, 0, 0, 244, 260, 5, 139, + 0, 0, 245, 246, 5, 1, 0, 0, 246, 247, 5, 139, 0, 0, 247, 248, 5, 5, 0, + 0, 248, 255, 3, 8, 4, 0, 249, 250, 5, 9, 0, 0, 250, 251, 5, 139, 0, 0, + 251, 252, 5, 5, 0, 0, 252, 254, 3, 8, 4, 0, 253, 249, 1, 0, 0, 0, 254, + 257, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 258, + 1, 0, 0, 0, 257, 255, 1, 0, 0, 0, 258, 259, 5, 2, 0, 0, 259, 261, 1, 0, + 0, 0, 260, 245, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, + 262, 263, 5, 82, 0, 0, 263, 264, 5, 139, 0, 0, 264, 265, 5, 6, 0, 0, 265, + 29, 1, 0, 0, 0, 266, 267, 5, 35, 0, 0, 267, 268, 5, 139, 0, 0, 268, 269, + 5, 1, 0, 0, 269, 278, 3, 32, 16, 0, 270, 274, 5, 9, 0, 0, 271, 275, 3, + 32, 16, 0, 272, 275, 3, 36, 18, 0, 273, 275, 3, 40, 20, 0, 274, 271, 1, + 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, 273, 1, 0, 0, 0, 275, 277, 1, 0, 0, + 0, 276, 270, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, + 279, 1, 0, 0, 0, 279, 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 282, + 5, 2, 0, 0, 282, 31, 1, 0, 0, 0, 283, 284, 5, 139, 0, 0, 284, 288, 3, 14, + 7, 0, 285, 287, 3, 50, 25, 0, 286, 285, 1, 0, 0, 0, 287, 290, 1, 0, 0, + 0, 288, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 33, 1, 0, 0, 0, 290, + 288, 1, 0, 0, 0, 291, 292, 5, 139, 0, 0, 292, 296, 3, 14, 7, 0, 293, 295, + 3, 52, 26, 0, 294, 293, 1, 0, 0, 0, 295, 298, 1, 0, 0, 0, 296, 294, 1, + 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 35, 1, 0, 0, 0, 298, 296, 1, 0, 0, + 0, 299, 300, 5, 142, 0, 0, 300, 301, 7, 3, 0, 0, 301, 302, 5, 7, 0, 0, + 302, 303, 3, 12, 6, 0, 303, 304, 5, 8, 0, 0, 304, 37, 1, 0, 0, 0, 305, + 307, 5, 56, 0, 0, 306, 305, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 308, + 1, 0, 0, 0, 308, 309, 5, 67, 0, 0, 309, 310, 3, 10, 5, 0, 310, 311, 5, + 7, 0, 0, 311, 312, 3, 12, 6, 0, 312, 313, 5, 8, 0, 0, 313, 39, 1, 0, 0, + 0, 314, 315, 5, 51, 0, 0, 315, 318, 5, 53, 0, 0, 316, 318, 5, 133, 0, 0, + 317, 314, 1, 0, 0, 0, 317, 316, 1, 0, 0, 0, 318, 319, 1, 0, 0, 0, 319, + 320, 5, 7, 0, 0, 320, 321, 3, 12, 6, 0, 321, 322, 5, 8, 0, 0, 322, 323, + 7, 4, 0, 0, 323, 324, 5, 139, 0, 0, 324, 325, 5, 7, 0, 0, 325, 326, 3, + 12, 6, 0, 326, 330, 5, 8, 0, 0, 327, 329, 3, 42, 21, 0, 328, 327, 1, 0, + 0, 0, 329, 332, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, + 331, 41, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 333, 334, 5, 54, 0, 0, 334, + 337, 5, 63, 0, 0, 335, 337, 5, 134, 0, 0, 336, 333, 1, 0, 0, 0, 336, 335, + 1, 0, 0, 0, 337, 344, 1, 0, 0, 0, 338, 339, 5, 54, 0, 0, 339, 342, 5, 62, + 0, 0, 340, 342, 5, 135, 0, 0, 341, 338, 1, 0, 0, 0, 341, 340, 1, 0, 0, + 0, 342, 344, 1, 0, 0, 0, 343, 336, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 344, + 346, 1, 0, 0, 0, 345, 347, 5, 55, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, + 1, 0, 0, 0, 347, 365, 1, 0, 0, 0, 348, 349, 5, 92, 0, 0, 349, 352, 5, 36, + 0, 0, 350, 352, 5, 138, 0, 0, 351, 348, 1, 0, 0, 0, 351, 350, 1, 0, 0, + 0, 352, 366, 1, 0, 0, 0, 353, 366, 5, 57, 0, 0, 354, 355, 5, 59, 0, 0, + 355, 358, 5, 61, 0, 0, 356, 358, 5, 137, 0, 0, 357, 354, 1, 0, 0, 0, 357, + 356, 1, 0, 0, 0, 358, 366, 1, 0, 0, 0, 359, 360, 5, 59, 0, 0, 360, 363, + 5, 60, 0, 0, 361, 363, 5, 136, 0, 0, 362, 359, 1, 0, 0, 0, 362, 361, 1, + 0, 0, 0, 363, 366, 1, 0, 0, 0, 364, 366, 5, 58, 0, 0, 365, 351, 1, 0, 0, + 0, 365, 353, 1, 0, 0, 0, 365, 357, 1, 0, 0, 0, 365, 362, 1, 0, 0, 0, 365, + 364, 1, 0, 0, 0, 366, 43, 1, 0, 0, 0, 367, 372, 3, 14, 7, 0, 368, 369, + 5, 9, 0, 0, 369, 371, 3, 14, 7, 0, 370, 368, 1, 0, 0, 0, 371, 374, 1, 0, + 0, 0, 372, 370, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 45, 1, 0, 0, 0, + 374, 372, 1, 0, 0, 0, 375, 376, 5, 139, 0, 0, 376, 382, 3, 14, 7, 0, 377, + 378, 5, 9, 0, 0, 378, 379, 5, 139, 0, 0, 379, 381, 3, 14, 7, 0, 380, 377, + 1, 0, 0, 0, 381, 384, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 382, 383, 1, 0, + 0, 0, 383, 47, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 385, 386, 3, 18, 9, 0, + 386, 393, 3, 14, 7, 0, 387, 388, 5, 9, 0, 0, 388, 389, 3, 18, 9, 0, 389, + 390, 3, 14, 7, 0, 390, 392, 1, 0, 0, 0, 391, 387, 1, 0, 0, 0, 392, 395, + 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 49, 1, 0, + 0, 0, 395, 393, 1, 0, 0, 0, 396, 406, 5, 139, 0, 0, 397, 399, 5, 52, 0, + 0, 398, 400, 5, 53, 0, 0, 399, 398, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, + 406, 1, 0, 0, 0, 401, 402, 5, 66, 0, 0, 402, 406, 5, 61, 0, 0, 403, 406, + 5, 60, 0, 0, 404, 406, 5, 56, 0, 0, 405, 396, 1, 0, 0, 0, 405, 397, 1, + 0, 0, 0, 405, 401, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 405, 404, 1, 0, 0, + 0, 406, 411, 1, 0, 0, 0, 407, 408, 5, 7, 0, 0, 408, 409, 3, 8, 4, 0, 409, + 410, 5, 8, 0, 0, 410, 412, 1, 0, 0, 0, 411, 407, 1, 0, 0, 0, 411, 412, + 1, 0, 0, 0, 412, 51, 1, 0, 0, 0, 413, 414, 5, 52, 0, 0, 414, 427, 5, 53, + 0, 0, 415, 427, 5, 56, 0, 0, 416, 417, 5, 66, 0, 0, 417, 427, 5, 61, 0, + 0, 418, 419, 5, 60, 0, 0, 419, 427, 3, 8, 4, 0, 420, 427, 3, 56, 28, 0, + 421, 422, 5, 50, 0, 0, 422, 423, 5, 7, 0, 0, 423, 424, 3, 114, 57, 0, 424, + 425, 5, 8, 0, 0, 425, 427, 1, 0, 0, 0, 426, 413, 1, 0, 0, 0, 426, 415, + 1, 0, 0, 0, 426, 416, 1, 0, 0, 0, 426, 418, 1, 0, 0, 0, 426, 420, 1, 0, + 0, 0, 426, 421, 1, 0, 0, 0, 427, 53, 1, 0, 0, 0, 428, 429, 5, 54, 0, 0, + 429, 438, 7, 5, 0, 0, 430, 431, 5, 59, 0, 0, 431, 439, 5, 61, 0, 0, 432, + 433, 5, 59, 0, 0, 433, 439, 5, 60, 0, 0, 434, 439, 5, 58, 0, 0, 435, 436, + 5, 92, 0, 0, 436, 439, 5, 36, 0, 0, 437, 439, 5, 57, 0, 0, 438, 430, 1, + 0, 0, 0, 438, 432, 1, 0, 0, 0, 438, 434, 1, 0, 0, 0, 438, 435, 1, 0, 0, + 0, 438, 437, 1, 0, 0, 0, 439, 55, 1, 0, 0, 0, 440, 441, 5, 64, 0, 0, 441, + 442, 3, 10, 5, 0, 442, 443, 5, 7, 0, 0, 443, 444, 3, 10, 5, 0, 444, 445, + 5, 8, 0, 0, 445, 450, 1, 0, 0, 0, 446, 448, 3, 54, 27, 0, 447, 449, 3, + 54, 27, 0, 448, 447, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 451, 1, 0, + 0, 0, 450, 446, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 57, 1, 0, 0, 0, + 452, 453, 7, 6, 0, 0, 453, 59, 1, 0, 0, 0, 454, 456, 3, 24, 12, 0, 455, + 454, 1, 0, 0, 0, 456, 459, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 457, 458, + 1, 0, 0, 0, 458, 460, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 460, 461, 5, 36, + 0, 0, 461, 462, 5, 139, 0, 0, 462, 464, 5, 7, 0, 0, 463, 465, 3, 20, 10, + 0, 464, 463, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, + 468, 5, 8, 0, 0, 467, 469, 3, 58, 29, 0, 468, 467, 1, 0, 0, 0, 469, 470, + 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 472, 1, 0, + 0, 0, 472, 473, 5, 1, 0, 0, 473, 474, 3, 124, 62, 0, 474, 475, 5, 2, 0, + 0, 475, 61, 1, 0, 0, 0, 476, 478, 3, 24, 12, 0, 477, 476, 1, 0, 0, 0, 478, + 481, 1, 0, 0, 0, 479, 477, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 482, + 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 482, 483, 5, 37, 0, 0, 483, 484, 5, 139, + 0, 0, 484, 486, 5, 7, 0, 0, 485, 487, 3, 48, 24, 0, 486, 485, 1, 0, 0, + 0, 486, 487, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 490, 5, 8, 0, 0, 489, + 491, 3, 58, 29, 0, 490, 489, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 490, + 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 495, 1, 0, 0, 0, 494, 496, 3, 64, + 32, 0, 495, 494, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, + 497, 498, 5, 1, 0, 0, 498, 499, 3, 128, 64, 0, 499, 500, 5, 2, 0, 0, 500, + 63, 1, 0, 0, 0, 501, 513, 5, 91, 0, 0, 502, 504, 5, 35, 0, 0, 503, 502, + 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 506, 5, 7, + 0, 0, 506, 507, 3, 46, 23, 0, 507, 508, 5, 8, 0, 0, 508, 514, 1, 0, 0, + 0, 509, 510, 5, 7, 0, 0, 510, 511, 3, 44, 22, 0, 511, 512, 5, 8, 0, 0, + 512, 514, 1, 0, 0, 0, 513, 503, 1, 0, 0, 0, 513, 509, 1, 0, 0, 0, 514, + 65, 1, 0, 0, 0, 515, 518, 3, 70, 35, 0, 516, 518, 3, 68, 34, 0, 517, 515, + 1, 0, 0, 0, 517, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 520, 5, 6, + 0, 0, 520, 67, 1, 0, 0, 0, 521, 527, 3, 74, 37, 0, 522, 527, 3, 82, 41, + 0, 523, 527, 3, 80, 40, 0, 524, 527, 3, 86, 43, 0, 525, 527, 3, 88, 44, + 0, 526, 521, 1, 0, 0, 0, 526, 522, 1, 0, 0, 0, 526, 523, 1, 0, 0, 0, 526, + 524, 1, 0, 0, 0, 526, 525, 1, 0, 0, 0, 527, 69, 1, 0, 0, 0, 528, 530, 5, + 93, 0, 0, 529, 531, 5, 127, 0, 0, 530, 529, 1, 0, 0, 0, 530, 531, 1, 0, + 0, 0, 531, 532, 1, 0, 0, 0, 532, 537, 3, 72, 36, 0, 533, 534, 5, 9, 0, + 0, 534, 536, 3, 72, 36, 0, 535, 533, 1, 0, 0, 0, 536, 539, 1, 0, 0, 0, + 537, 535, 1, 0, 0, 0, 537, 538, 1, 0, 0, 0, 538, 541, 1, 0, 0, 0, 539, + 537, 1, 0, 0, 0, 540, 528, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 546, + 1, 0, 0, 0, 542, 547, 3, 90, 45, 0, 543, 547, 3, 104, 52, 0, 544, 547, + 3, 108, 54, 0, 545, 547, 3, 112, 56, 0, 546, 542, 1, 0, 0, 0, 546, 543, + 1, 0, 0, 0, 546, 544, 1, 0, 0, 0, 546, 545, 1, 0, 0, 0, 547, 71, 1, 0, + 0, 0, 548, 561, 3, 10, 5, 0, 549, 558, 5, 7, 0, 0, 550, 555, 3, 10, 5, + 0, 551, 552, 5, 9, 0, 0, 552, 554, 3, 10, 5, 0, 553, 551, 1, 0, 0, 0, 554, + 557, 1, 0, 0, 0, 555, 553, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 559, + 1, 0, 0, 0, 557, 555, 1, 0, 0, 0, 558, 550, 1, 0, 0, 0, 558, 559, 1, 0, + 0, 0, 559, 560, 1, 0, 0, 0, 560, 562, 5, 8, 0, 0, 561, 549, 1, 0, 0, 0, + 561, 562, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 5, 82, 0, 0, 564, + 565, 5, 7, 0, 0, 565, 566, 3, 90, 45, 0, 566, 567, 5, 8, 0, 0, 567, 73, + 1, 0, 0, 0, 568, 569, 5, 42, 0, 0, 569, 573, 5, 35, 0, 0, 570, 571, 5, + 117, 0, 0, 571, 572, 5, 66, 0, 0, 572, 574, 5, 75, 0, 0, 573, 570, 1, 0, + 0, 0, 573, 574, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 576, 3, 10, 5, 0, + 576, 580, 5, 7, 0, 0, 577, 581, 3, 34, 17, 0, 578, 581, 3, 76, 38, 0, 579, + 581, 3, 38, 19, 0, 580, 577, 1, 0, 0, 0, 580, 578, 1, 0, 0, 0, 580, 579, + 1, 0, 0, 0, 581, 590, 1, 0, 0, 0, 582, 586, 5, 9, 0, 0, 583, 587, 3, 34, + 17, 0, 584, 587, 3, 76, 38, 0, 585, 587, 3, 38, 19, 0, 586, 583, 1, 0, + 0, 0, 586, 584, 1, 0, 0, 0, 586, 585, 1, 0, 0, 0, 587, 589, 1, 0, 0, 0, + 588, 582, 1, 0, 0, 0, 589, 592, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 590, + 591, 1, 0, 0, 0, 591, 593, 1, 0, 0, 0, 592, 590, 1, 0, 0, 0, 593, 594, + 5, 8, 0, 0, 594, 75, 1, 0, 0, 0, 595, 596, 5, 49, 0, 0, 596, 598, 3, 10, + 5, 0, 597, 595, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 622, 1, 0, 0, 0, + 599, 600, 5, 52, 0, 0, 600, 601, 5, 53, 0, 0, 601, 602, 5, 7, 0, 0, 602, + 603, 3, 12, 6, 0, 603, 604, 5, 8, 0, 0, 604, 623, 1, 0, 0, 0, 605, 606, + 5, 56, 0, 0, 606, 607, 5, 7, 0, 0, 607, 608, 3, 12, 6, 0, 608, 609, 5, + 8, 0, 0, 609, 623, 1, 0, 0, 0, 610, 611, 5, 50, 0, 0, 611, 612, 5, 7, 0, + 0, 612, 613, 3, 114, 57, 0, 613, 614, 5, 8, 0, 0, 614, 623, 1, 0, 0, 0, + 615, 616, 5, 51, 0, 0, 616, 617, 5, 53, 0, 0, 617, 618, 5, 7, 0, 0, 618, + 619, 3, 10, 5, 0, 619, 620, 5, 8, 0, 0, 620, 621, 3, 56, 28, 0, 621, 623, + 1, 0, 0, 0, 622, 599, 1, 0, 0, 0, 622, 605, 1, 0, 0, 0, 622, 610, 1, 0, + 0, 0, 622, 615, 1, 0, 0, 0, 623, 77, 1, 0, 0, 0, 624, 628, 5, 57, 0, 0, + 625, 628, 5, 58, 0, 0, 626, 628, 1, 0, 0, 0, 627, 624, 1, 0, 0, 0, 627, + 625, 1, 0, 0, 0, 627, 626, 1, 0, 0, 0, 628, 79, 1, 0, 0, 0, 629, 630, 5, + 46, 0, 0, 630, 633, 5, 35, 0, 0, 631, 632, 5, 117, 0, 0, 632, 634, 5, 75, + 0, 0, 633, 631, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, + 635, 636, 3, 12, 6, 0, 636, 637, 3, 78, 39, 0, 637, 81, 1, 0, 0, 0, 638, + 639, 5, 43, 0, 0, 639, 640, 5, 35, 0, 0, 640, 641, 3, 10, 5, 0, 641, 642, + 3, 84, 42, 0, 642, 83, 1, 0, 0, 0, 643, 644, 5, 43, 0, 0, 644, 645, 5, + 44, 0, 0, 645, 646, 3, 10, 5, 0, 646, 651, 5, 59, 0, 0, 647, 648, 5, 66, + 0, 0, 648, 652, 5, 61, 0, 0, 649, 650, 5, 60, 0, 0, 650, 652, 3, 8, 4, + 0, 651, 647, 1, 0, 0, 0, 651, 649, 1, 0, 0, 0, 652, 687, 1, 0, 0, 0, 653, + 654, 5, 43, 0, 0, 654, 655, 5, 44, 0, 0, 655, 656, 3, 10, 5, 0, 656, 662, + 5, 46, 0, 0, 657, 658, 5, 66, 0, 0, 658, 663, 5, 61, 0, 0, 659, 663, 5, + 60, 0, 0, 660, 661, 5, 49, 0, 0, 661, 663, 3, 10, 5, 0, 662, 657, 1, 0, + 0, 0, 662, 659, 1, 0, 0, 0, 662, 660, 1, 0, 0, 0, 663, 687, 1, 0, 0, 0, + 664, 665, 5, 45, 0, 0, 665, 666, 5, 44, 0, 0, 666, 667, 3, 10, 5, 0, 667, + 668, 3, 14, 7, 0, 668, 687, 1, 0, 0, 0, 669, 670, 5, 46, 0, 0, 670, 671, + 5, 44, 0, 0, 671, 687, 3, 10, 5, 0, 672, 673, 5, 47, 0, 0, 673, 674, 5, + 44, 0, 0, 674, 675, 3, 10, 5, 0, 675, 676, 5, 48, 0, 0, 676, 677, 3, 10, + 5, 0, 677, 687, 1, 0, 0, 0, 678, 679, 5, 47, 0, 0, 679, 680, 5, 48, 0, + 0, 680, 687, 3, 10, 5, 0, 681, 682, 5, 45, 0, 0, 682, 687, 3, 76, 38, 0, + 683, 684, 5, 46, 0, 0, 684, 685, 5, 49, 0, 0, 685, 687, 3, 10, 5, 0, 686, + 643, 1, 0, 0, 0, 686, 653, 1, 0, 0, 0, 686, 664, 1, 0, 0, 0, 686, 669, + 1, 0, 0, 0, 686, 672, 1, 0, 0, 0, 686, 678, 1, 0, 0, 0, 686, 681, 1, 0, + 0, 0, 686, 683, 1, 0, 0, 0, 687, 85, 1, 0, 0, 0, 688, 690, 5, 42, 0, 0, + 689, 691, 5, 56, 0, 0, 690, 689, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, + 692, 1, 0, 0, 0, 692, 696, 5, 67, 0, 0, 693, 694, 5, 117, 0, 0, 694, 695, + 5, 66, 0, 0, 695, 697, 5, 75, 0, 0, 696, 693, 1, 0, 0, 0, 696, 697, 1, + 0, 0, 0, 697, 699, 1, 0, 0, 0, 698, 700, 3, 10, 5, 0, 699, 698, 1, 0, 0, + 0, 699, 700, 1, 0, 0, 0, 700, 701, 1, 0, 0, 0, 701, 702, 5, 54, 0, 0, 702, + 703, 3, 10, 5, 0, 703, 704, 5, 7, 0, 0, 704, 705, 3, 12, 6, 0, 705, 706, + 5, 8, 0, 0, 706, 87, 1, 0, 0, 0, 707, 708, 5, 46, 0, 0, 708, 711, 5, 67, + 0, 0, 709, 710, 5, 117, 0, 0, 710, 712, 5, 75, 0, 0, 711, 709, 1, 0, 0, + 0, 711, 712, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 713, 714, 3, 10, 5, 0, 714, + 89, 1, 0, 0, 0, 715, 721, 3, 96, 48, 0, 716, 717, 3, 92, 46, 0, 717, 718, + 3, 96, 48, 0, 718, 720, 1, 0, 0, 0, 719, 716, 1, 0, 0, 0, 720, 723, 1, + 0, 0, 0, 721, 719, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 734, 1, 0, 0, + 0, 723, 721, 1, 0, 0, 0, 724, 725, 5, 87, 0, 0, 725, 726, 5, 88, 0, 0, + 726, 731, 3, 94, 47, 0, 727, 728, 5, 9, 0, 0, 728, 730, 3, 94, 47, 0, 729, + 727, 1, 0, 0, 0, 730, 733, 1, 0, 0, 0, 731, 729, 1, 0, 0, 0, 731, 732, + 1, 0, 0, 0, 732, 735, 1, 0, 0, 0, 733, 731, 1, 0, 0, 0, 734, 724, 1, 0, + 0, 0, 734, 735, 1, 0, 0, 0, 735, 738, 1, 0, 0, 0, 736, 737, 5, 85, 0, 0, + 737, 739, 3, 114, 57, 0, 738, 736, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, + 742, 1, 0, 0, 0, 740, 741, 5, 86, 0, 0, 741, 743, 3, 114, 57, 0, 742, 740, + 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 91, 1, 0, 0, 0, 744, 746, 5, 106, + 0, 0, 745, 747, 5, 76, 0, 0, 746, 745, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, + 747, 751, 1, 0, 0, 0, 748, 751, 5, 107, 0, 0, 749, 751, 5, 108, 0, 0, 750, + 744, 1, 0, 0, 0, 750, 748, 1, 0, 0, 0, 750, 749, 1, 0, 0, 0, 751, 93, 1, + 0, 0, 0, 752, 754, 3, 114, 57, 0, 753, 755, 7, 7, 0, 0, 754, 753, 1, 0, + 0, 0, 754, 755, 1, 0, 0, 0, 755, 758, 1, 0, 0, 0, 756, 757, 5, 109, 0, + 0, 757, 759, 7, 8, 0, 0, 758, 756, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, + 95, 1, 0, 0, 0, 760, 762, 5, 102, 0, 0, 761, 763, 5, 98, 0, 0, 762, 761, + 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 769, 3, 102, + 51, 0, 765, 766, 5, 9, 0, 0, 766, 768, 3, 102, 51, 0, 767, 765, 1, 0, 0, + 0, 768, 771, 1, 0, 0, 0, 769, 767, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, + 780, 1, 0, 0, 0, 771, 769, 1, 0, 0, 0, 772, 773, 5, 99, 0, 0, 773, 777, + 3, 98, 49, 0, 774, 776, 3, 100, 50, 0, 775, 774, 1, 0, 0, 0, 776, 779, + 1, 0, 0, 0, 777, 775, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 781, 1, 0, + 0, 0, 779, 777, 1, 0, 0, 0, 780, 772, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, + 781, 784, 1, 0, 0, 0, 782, 783, 5, 100, 0, 0, 783, 785, 3, 114, 57, 0, + 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 793, 1, 0, 0, 0, 786, + 787, 5, 89, 0, 0, 787, 788, 5, 88, 0, 0, 788, 791, 3, 120, 60, 0, 789, + 790, 5, 90, 0, 0, 790, 792, 3, 114, 57, 0, 791, 789, 1, 0, 0, 0, 791, 792, + 1, 0, 0, 0, 792, 794, 1, 0, 0, 0, 793, 786, 1, 0, 0, 0, 793, 794, 1, 0, + 0, 0, 794, 809, 1, 0, 0, 0, 795, 796, 5, 125, 0, 0, 796, 797, 3, 10, 5, + 0, 797, 798, 5, 82, 0, 0, 798, 806, 3, 116, 58, 0, 799, 800, 5, 9, 0, 0, + 800, 801, 3, 10, 5, 0, 801, 802, 5, 82, 0, 0, 802, 803, 3, 116, 58, 0, + 803, 805, 1, 0, 0, 0, 804, 799, 1, 0, 0, 0, 805, 808, 1, 0, 0, 0, 806, + 804, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 810, 1, 0, 0, 0, 808, 806, + 1, 0, 0, 0, 809, 795, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 97, 1, 0, + 0, 0, 811, 816, 3, 10, 5, 0, 812, 814, 5, 82, 0, 0, 813, 812, 1, 0, 0, + 0, 813, 814, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 817, 3, 10, 5, 0, 816, + 813, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 828, 1, 0, 0, 0, 818, 819, + 5, 7, 0, 0, 819, 820, 3, 90, 45, 0, 820, 825, 5, 8, 0, 0, 821, 823, 5, + 82, 0, 0, 822, 821, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 824, 1, 0, 0, + 0, 824, 826, 3, 10, 5, 0, 825, 822, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, + 828, 1, 0, 0, 0, 827, 811, 1, 0, 0, 0, 827, 818, 1, 0, 0, 0, 828, 99, 1, + 0, 0, 0, 829, 831, 7, 9, 0, 0, 830, 829, 1, 0, 0, 0, 830, 831, 1, 0, 0, + 0, 831, 832, 1, 0, 0, 0, 832, 833, 5, 78, 0, 0, 833, 834, 3, 98, 49, 0, + 834, 835, 5, 54, 0, 0, 835, 836, 3, 114, 57, 0, 836, 101, 1, 0, 0, 0, 837, + 842, 3, 114, 57, 0, 838, 840, 5, 82, 0, 0, 839, 838, 1, 0, 0, 0, 839, 840, + 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 843, 3, 10, 5, 0, 842, 839, 1, 0, + 0, 0, 842, 843, 1, 0, 0, 0, 843, 851, 1, 0, 0, 0, 844, 845, 3, 10, 5, 0, + 845, 846, 5, 12, 0, 0, 846, 848, 1, 0, 0, 0, 847, 844, 1, 0, 0, 0, 847, + 848, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 851, 5, 14, 0, 0, 850, 837, + 1, 0, 0, 0, 850, 847, 1, 0, 0, 0, 851, 103, 1, 0, 0, 0, 852, 853, 5, 63, + 0, 0, 853, 858, 3, 10, 5, 0, 854, 856, 5, 82, 0, 0, 855, 854, 1, 0, 0, + 0, 855, 856, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 859, 3, 10, 5, 0, 858, + 855, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 861, + 5, 59, 0, 0, 861, 866, 3, 106, 53, 0, 862, 863, 5, 9, 0, 0, 863, 865, 3, + 106, 53, 0, 864, 862, 1, 0, 0, 0, 865, 868, 1, 0, 0, 0, 866, 864, 1, 0, + 0, 0, 866, 867, 1, 0, 0, 0, 867, 877, 1, 0, 0, 0, 868, 866, 1, 0, 0, 0, + 869, 870, 5, 99, 0, 0, 870, 874, 3, 98, 49, 0, 871, 873, 3, 100, 50, 0, + 872, 871, 1, 0, 0, 0, 873, 876, 1, 0, 0, 0, 874, 872, 1, 0, 0, 0, 874, + 875, 1, 0, 0, 0, 875, 878, 1, 0, 0, 0, 876, 874, 1, 0, 0, 0, 877, 869, + 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 881, 1, 0, 0, 0, 879, 880, 5, 100, + 0, 0, 880, 882, 3, 114, 57, 0, 881, 879, 1, 0, 0, 0, 881, 882, 1, 0, 0, + 0, 882, 105, 1, 0, 0, 0, 883, 884, 3, 10, 5, 0, 884, 885, 5, 15, 0, 0, + 885, 886, 3, 114, 57, 0, 886, 107, 1, 0, 0, 0, 887, 888, 5, 103, 0, 0, + 888, 889, 5, 113, 0, 0, 889, 894, 3, 10, 5, 0, 890, 892, 5, 82, 0, 0, 891, + 890, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 895, + 3, 10, 5, 0, 894, 891, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 900, 1, 0, + 0, 0, 896, 897, 5, 7, 0, 0, 897, 898, 3, 12, 6, 0, 898, 899, 5, 8, 0, 0, + 899, 901, 1, 0, 0, 0, 900, 896, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, + 917, 1, 0, 0, 0, 902, 903, 5, 104, 0, 0, 903, 904, 5, 7, 0, 0, 904, 905, + 3, 120, 60, 0, 905, 913, 5, 8, 0, 0, 906, 907, 5, 9, 0, 0, 907, 908, 5, + 7, 0, 0, 908, 909, 3, 120, 60, 0, 909, 910, 5, 8, 0, 0, 910, 912, 1, 0, + 0, 0, 911, 906, 1, 0, 0, 0, 912, 915, 1, 0, 0, 0, 913, 911, 1, 0, 0, 0, + 913, 914, 1, 0, 0, 0, 914, 918, 1, 0, 0, 0, 915, 913, 1, 0, 0, 0, 916, + 918, 3, 90, 45, 0, 917, 902, 1, 0, 0, 0, 917, 916, 1, 0, 0, 0, 918, 920, + 1, 0, 0, 0, 919, 921, 3, 110, 55, 0, 920, 919, 1, 0, 0, 0, 920, 921, 1, + 0, 0, 0, 921, 109, 1, 0, 0, 0, 922, 923, 5, 54, 0, 0, 923, 931, 5, 114, + 0, 0, 924, 925, 5, 7, 0, 0, 925, 926, 3, 12, 6, 0, 926, 929, 5, 8, 0, 0, + 927, 928, 5, 100, 0, 0, 928, 930, 3, 114, 57, 0, 929, 927, 1, 0, 0, 0, + 929, 930, 1, 0, 0, 0, 930, 932, 1, 0, 0, 0, 931, 924, 1, 0, 0, 0, 931, + 932, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 949, 5, 55, 0, 0, 934, 950, + 5, 115, 0, 0, 935, 936, 5, 63, 0, 0, 936, 937, 5, 59, 0, 0, 937, 942, 3, + 106, 53, 0, 938, 939, 5, 9, 0, 0, 939, 941, 3, 106, 53, 0, 940, 938, 1, + 0, 0, 0, 941, 944, 1, 0, 0, 0, 942, 940, 1, 0, 0, 0, 942, 943, 1, 0, 0, + 0, 943, 947, 1, 0, 0, 0, 944, 942, 1, 0, 0, 0, 945, 946, 5, 100, 0, 0, + 946, 948, 3, 114, 57, 0, 947, 945, 1, 0, 0, 0, 947, 948, 1, 0, 0, 0, 948, + 950, 1, 0, 0, 0, 949, 934, 1, 0, 0, 0, 949, 935, 1, 0, 0, 0, 950, 111, + 1, 0, 0, 0, 951, 952, 5, 62, 0, 0, 952, 953, 5, 99, 0, 0, 953, 958, 3, + 10, 5, 0, 954, 956, 5, 82, 0, 0, 955, 954, 1, 0, 0, 0, 955, 956, 1, 0, + 0, 0, 956, 957, 1, 0, 0, 0, 957, 959, 3, 10, 5, 0, 958, 955, 1, 0, 0, 0, + 958, 959, 1, 0, 0, 0, 959, 962, 1, 0, 0, 0, 960, 961, 5, 100, 0, 0, 961, + 963, 3, 114, 57, 0, 962, 960, 1, 0, 0, 0, 962, 963, 1, 0, 0, 0, 963, 113, + 1, 0, 0, 0, 964, 965, 6, 57, -1, 0, 965, 966, 5, 7, 0, 0, 966, 967, 3, + 114, 57, 0, 967, 969, 5, 8, 0, 0, 968, 970, 3, 16, 8, 0, 969, 968, 1, 0, + 0, 0, 969, 970, 1, 0, 0, 0, 970, 1038, 1, 0, 0, 0, 971, 972, 7, 0, 0, 0, + 972, 1038, 3, 114, 57, 20, 973, 975, 3, 8, 4, 0, 974, 976, 3, 16, 8, 0, + 975, 974, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 1038, 1, 0, 0, 0, 977, + 984, 3, 122, 61, 0, 978, 979, 5, 126, 0, 0, 979, 980, 5, 7, 0, 0, 980, + 981, 5, 100, 0, 0, 981, 982, 3, 114, 57, 0, 982, 983, 5, 8, 0, 0, 983, + 985, 1, 0, 0, 0, 984, 978, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, 986, + 1, 0, 0, 0, 986, 989, 5, 123, 0, 0, 987, 990, 3, 116, 58, 0, 988, 990, + 5, 139, 0, 0, 989, 987, 1, 0, 0, 0, 989, 988, 1, 0, 0, 0, 990, 1038, 1, + 0, 0, 0, 991, 993, 3, 122, 61, 0, 992, 994, 3, 16, 8, 0, 993, 992, 1, 0, + 0, 0, 993, 994, 1, 0, 0, 0, 994, 1038, 1, 0, 0, 0, 995, 997, 3, 18, 9, + 0, 996, 998, 3, 16, 8, 0, 997, 996, 1, 0, 0, 0, 997, 998, 1, 0, 0, 0, 998, + 1038, 1, 0, 0, 0, 999, 1000, 3, 10, 5, 0, 1000, 1001, 5, 12, 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, 1006, 3, 10, 5, 0, 1005, 1007, 3, 16, 8, 0, 1006, + 1005, 1, 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1038, 1, 0, 0, 0, 1008, + 1010, 5, 94, 0, 0, 1009, 1011, 3, 114, 57, 0, 1010, 1009, 1, 0, 0, 0, 1010, + 1011, 1, 0, 0, 0, 1011, 1013, 1, 0, 0, 0, 1012, 1014, 3, 118, 59, 0, 1013, + 1012, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1013, 1, 0, 0, 0, 1015, + 1016, 1, 0, 0, 0, 1016, 1019, 1, 0, 0, 0, 1017, 1018, 5, 119, 0, 0, 1018, + 1020, 3, 114, 57, 0, 1019, 1017, 1, 0, 0, 0, 1019, 1020, 1, 0, 0, 0, 1020, + 1021, 1, 0, 0, 0, 1021, 1022, 5, 97, 0, 0, 1022, 1038, 1, 0, 0, 0, 1023, + 1025, 5, 66, 0, 0, 1024, 1023, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, + 1026, 1, 0, 0, 0, 1026, 1028, 5, 75, 0, 0, 1027, 1024, 1, 0, 0, 0, 1027, + 1028, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1030, 5, 7, 0, 0, 1030, + 1031, 3, 90, 45, 0, 1031, 1033, 5, 8, 0, 0, 1032, 1034, 3, 16, 8, 0, 1033, + 1032, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1038, 1, 0, 0, 0, 1035, + 1036, 5, 66, 0, 0, 1036, 1038, 3, 114, 57, 3, 1037, 964, 1, 0, 0, 0, 1037, + 971, 1, 0, 0, 0, 1037, 973, 1, 0, 0, 0, 1037, 977, 1, 0, 0, 0, 1037, 991, + 1, 0, 0, 0, 1037, 995, 1, 0, 0, 0, 1037, 1002, 1, 0, 0, 0, 1037, 1008, + 1, 0, 0, 0, 1037, 1027, 1, 0, 0, 0, 1037, 1035, 1, 0, 0, 0, 1038, 1124, + 1, 0, 0, 0, 1039, 1040, 10, 18, 0, 0, 1040, 1041, 7, 10, 0, 0, 1041, 1123, + 3, 114, 57, 19, 1042, 1043, 10, 17, 0, 0, 1043, 1044, 7, 0, 0, 0, 1044, + 1123, 3, 114, 57, 18, 1045, 1046, 10, 9, 0, 0, 1046, 1047, 5, 13, 0, 0, + 1047, 1123, 3, 114, 57, 10, 1048, 1050, 10, 7, 0, 0, 1049, 1051, 5, 66, + 0, 0, 1050, 1049, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1052, 1, 0, + 0, 0, 1052, 1053, 7, 11, 0, 0, 1053, 1123, 3, 114, 57, 8, 1054, 1056, 10, + 6, 0, 0, 1055, 1057, 5, 66, 0, 0, 1056, 1055, 1, 0, 0, 0, 1056, 1057, 1, + 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1059, 5, 73, 0, 0, 1059, 1060, 3, + 114, 57, 0, 1060, 1061, 5, 68, 0, 0, 1061, 1062, 3, 114, 57, 7, 1062, 1123, + 1, 0, 0, 0, 1063, 1064, 10, 5, 0, 0, 1064, 1065, 7, 12, 0, 0, 1065, 1123, + 3, 114, 57, 6, 1066, 1067, 10, 2, 0, 0, 1067, 1068, 5, 68, 0, 0, 1068, + 1123, 3, 114, 57, 3, 1069, 1070, 10, 1, 0, 0, 1070, 1071, 5, 69, 0, 0, + 1071, 1123, 3, 114, 57, 2, 1072, 1073, 10, 22, 0, 0, 1073, 1074, 5, 12, + 0, 0, 1074, 1076, 3, 10, 5, 0, 1075, 1077, 3, 16, 8, 0, 1076, 1075, 1, + 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1123, 1, 0, 0, 0, 1078, 1079, 10, + 21, 0, 0, 1079, 1088, 5, 3, 0, 0, 1080, 1089, 3, 114, 57, 0, 1081, 1083, + 3, 114, 57, 0, 1082, 1081, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, + 1, 0, 0, 0, 1084, 1086, 5, 5, 0, 0, 1085, 1087, 3, 114, 57, 0, 1086, 1085, + 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1089, 1, 0, 0, 0, 1088, 1080, + 1, 0, 0, 0, 1088, 1082, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1092, + 5, 4, 0, 0, 1091, 1093, 3, 16, 8, 0, 1092, 1091, 1, 0, 0, 0, 1092, 1093, + 1, 0, 0, 0, 1093, 1123, 1, 0, 0, 0, 1094, 1095, 10, 19, 0, 0, 1095, 1096, + 5, 101, 0, 0, 1096, 1123, 3, 10, 5, 0, 1097, 1099, 10, 8, 0, 0, 1098, 1100, + 5, 66, 0, 0, 1099, 1098, 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1101, + 1, 0, 0, 0, 1101, 1102, 5, 72, 0, 0, 1102, 1105, 5, 7, 0, 0, 1103, 1106, + 3, 120, 60, 0, 1104, 1106, 3, 90, 45, 0, 1105, 1103, 1, 0, 0, 0, 1105, + 1104, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1108, 5, 8, 0, 0, 1108, + 1123, 1, 0, 0, 0, 1109, 1110, 10, 4, 0, 0, 1110, 1112, 5, 74, 0, 0, 1111, + 1113, 5, 66, 0, 0, 1112, 1111, 1, 0, 0, 0, 1112, 1113, 1, 0, 0, 0, 1113, + 1120, 1, 0, 0, 0, 1114, 1115, 5, 98, 0, 0, 1115, 1116, 5, 99, 0, 0, 1116, + 1121, 3, 114, 57, 0, 1117, 1121, 5, 61, 0, 0, 1118, 1121, 5, 129, 0, 0, + 1119, 1121, 5, 130, 0, 0, 1120, 1114, 1, 0, 0, 0, 1120, 1117, 1, 0, 0, + 0, 1120, 1118, 1, 0, 0, 0, 1120, 1119, 1, 0, 0, 0, 1121, 1123, 1, 0, 0, + 0, 1122, 1039, 1, 0, 0, 0, 1122, 1042, 1, 0, 0, 0, 1122, 1045, 1, 0, 0, + 0, 1122, 1048, 1, 0, 0, 0, 1122, 1054, 1, 0, 0, 0, 1122, 1063, 1, 0, 0, + 0, 1122, 1066, 1, 0, 0, 0, 1122, 1069, 1, 0, 0, 0, 1122, 1072, 1, 0, 0, + 0, 1122, 1078, 1, 0, 0, 0, 1122, 1094, 1, 0, 0, 0, 1122, 1097, 1, 0, 0, + 0, 1122, 1109, 1, 0, 0, 0, 1123, 1126, 1, 0, 0, 0, 1124, 1122, 1, 0, 0, + 0, 1124, 1125, 1, 0, 0, 0, 1125, 115, 1, 0, 0, 0, 1126, 1124, 1, 0, 0, + 0, 1127, 1131, 5, 7, 0, 0, 1128, 1129, 5, 124, 0, 0, 1129, 1130, 5, 88, + 0, 0, 1130, 1132, 3, 120, 60, 0, 1131, 1128, 1, 0, 0, 0, 1131, 1132, 1, + 0, 0, 0, 1132, 1143, 1, 0, 0, 0, 1133, 1134, 5, 87, 0, 0, 1134, 1135, 5, + 88, 0, 0, 1135, 1140, 3, 94, 47, 0, 1136, 1137, 5, 9, 0, 0, 1137, 1139, + 3, 94, 47, 0, 1138, 1136, 1, 0, 0, 0, 1139, 1142, 1, 0, 0, 0, 1140, 1138, + 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1144, 1, 0, 0, 0, 1142, 1140, + 1, 0, 0, 0, 1143, 1133, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1145, + 1, 0, 0, 0, 1145, 1146, 5, 8, 0, 0, 1146, 117, 1, 0, 0, 0, 1147, 1148, + 5, 95, 0, 0, 1148, 1149, 3, 114, 57, 0, 1149, 1150, 5, 96, 0, 0, 1150, + 1151, 3, 114, 57, 0, 1151, 119, 1, 0, 0, 0, 1152, 1157, 3, 114, 57, 0, + 1153, 1154, 5, 9, 0, 0, 1154, 1156, 3, 114, 57, 0, 1155, 1153, 1, 0, 0, + 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1158, 1, 0, 0, + 0, 1158, 121, 1, 0, 0, 0, 1159, 1157, 1, 0, 0, 0, 1160, 1161, 3, 10, 5, + 0, 1161, 1167, 5, 7, 0, 0, 1162, 1164, 5, 98, 0, 0, 1163, 1162, 1, 0, 0, + 0, 1163, 1164, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1168, 3, 120, + 60, 0, 1166, 1168, 5, 14, 0, 0, 1167, 1163, 1, 0, 0, 0, 1167, 1166, 1, + 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1170, 5, + 8, 0, 0, 1170, 123, 1, 0, 0, 0, 1171, 1172, 3, 126, 63, 0, 1172, 1173, + 5, 6, 0, 0, 1173, 1175, 1, 0, 0, 0, 1174, 1171, 1, 0, 0, 0, 1175, 1178, + 1, 0, 0, 0, 1176, 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 125, + 1, 0, 0, 0, 1178, 1176, 1, 0, 0, 0, 1179, 1200, 3, 70, 35, 0, 1180, 1181, + 5, 139, 0, 0, 1181, 1183, 5, 7, 0, 0, 1182, 1184, 3, 132, 66, 0, 1183, + 1182, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, + 1200, 5, 8, 0, 0, 1186, 1187, 3, 20, 10, 0, 1187, 1188, 5, 15, 0, 0, 1188, + 1190, 1, 0, 0, 0, 1189, 1186, 1, 0, 0, 0, 1189, 1190, 1, 0, 0, 0, 1190, + 1191, 1, 0, 0, 0, 1191, 1192, 5, 139, 0, 0, 1192, 1193, 5, 12, 0, 0, 1193, + 1194, 5, 139, 0, 0, 1194, 1196, 5, 7, 0, 0, 1195, 1197, 3, 132, 66, 0, + 1196, 1195, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, + 1198, 1200, 5, 8, 0, 0, 1199, 1179, 1, 0, 0, 0, 1199, 1180, 1, 0, 0, 0, + 1199, 1189, 1, 0, 0, 0, 1200, 127, 1, 0, 0, 0, 1201, 1203, 3, 134, 67, + 0, 1202, 1201, 1, 0, 0, 0, 1203, 1206, 1, 0, 0, 0, 1204, 1202, 1, 0, 0, + 0, 1204, 1205, 1, 0, 0, 0, 1205, 129, 1, 0, 0, 0, 1206, 1204, 1, 0, 0, + 0, 1207, 1208, 6, 65, -1, 0, 1208, 1209, 5, 7, 0, 0, 1209, 1210, 3, 130, + 65, 0, 1210, 1212, 5, 8, 0, 0, 1211, 1213, 3, 16, 8, 0, 1212, 1211, 1, + 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1239, 1, 0, 0, 0, 1214, 1215, 7, + 13, 0, 0, 1215, 1239, 3, 130, 65, 13, 1216, 1218, 3, 8, 4, 0, 1217, 1219, + 3, 16, 8, 0, 1218, 1217, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1239, + 1, 0, 0, 0, 1220, 1222, 3, 138, 69, 0, 1221, 1223, 3, 16, 8, 0, 1222, 1221, + 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1239, 1, 0, 0, 0, 1224, 1226, + 3, 18, 9, 0, 1225, 1227, 3, 16, 8, 0, 1226, 1225, 1, 0, 0, 0, 1226, 1227, + 1, 0, 0, 0, 1227, 1239, 1, 0, 0, 0, 1228, 1230, 5, 3, 0, 0, 1229, 1231, + 3, 132, 66, 0, 1230, 1229, 1, 0, 0, 0, 1230, 1231, 1, 0, 0, 0, 1231, 1232, + 1, 0, 0, 0, 1232, 1234, 5, 4, 0, 0, 1233, 1235, 3, 16, 8, 0, 1234, 1233, + 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1239, 1, 0, 0, 0, 1236, 1237, + 5, 66, 0, 0, 1237, 1239, 3, 130, 65, 3, 1238, 1207, 1, 0, 0, 0, 1238, 1214, + 1, 0, 0, 0, 1238, 1216, 1, 0, 0, 0, 1238, 1220, 1, 0, 0, 0, 1238, 1224, + 1, 0, 0, 0, 1238, 1228, 1, 0, 0, 0, 1238, 1236, 1, 0, 0, 0, 1239, 1295, + 1, 0, 0, 0, 1240, 1241, 10, 12, 0, 0, 1241, 1242, 7, 10, 0, 0, 1242, 1294, + 3, 130, 65, 13, 1243, 1244, 10, 11, 0, 0, 1244, 1245, 7, 0, 0, 0, 1245, + 1294, 3, 130, 65, 12, 1246, 1247, 10, 6, 0, 0, 1247, 1248, 5, 13, 0, 0, + 1248, 1294, 3, 130, 65, 7, 1249, 1250, 10, 5, 0, 0, 1250, 1251, 7, 12, + 0, 0, 1251, 1294, 3, 130, 65, 6, 1252, 1253, 10, 2, 0, 0, 1253, 1254, 5, + 68, 0, 0, 1254, 1294, 3, 130, 65, 3, 1255, 1256, 10, 1, 0, 0, 1256, 1257, + 5, 69, 0, 0, 1257, 1294, 3, 130, 65, 2, 1258, 1259, 10, 15, 0, 0, 1259, + 1260, 5, 12, 0, 0, 1260, 1262, 5, 139, 0, 0, 1261, 1263, 3, 16, 8, 0, 1262, + 1261, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1294, 1, 0, 0, 0, 1264, + 1265, 10, 14, 0, 0, 1265, 1274, 5, 3, 0, 0, 1266, 1275, 3, 130, 65, 0, + 1267, 1269, 3, 130, 65, 0, 1268, 1267, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, + 0, 1269, 1270, 1, 0, 0, 0, 1270, 1272, 5, 5, 0, 0, 1271, 1273, 3, 130, + 65, 0, 1272, 1271, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1275, 1, 0, + 0, 0, 1274, 1266, 1, 0, 0, 0, 1274, 1268, 1, 0, 0, 0, 1275, 1276, 1, 0, + 0, 0, 1276, 1278, 5, 4, 0, 0, 1277, 1279, 3, 16, 8, 0, 1278, 1277, 1, 0, + 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1294, 1, 0, 0, 0, 1280, 1281, 10, 4, + 0, 0, 1281, 1283, 5, 74, 0, 0, 1282, 1284, 5, 66, 0, 0, 1283, 1282, 1, + 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 1291, 1, 0, 0, 0, 1285, 1286, 5, + 98, 0, 0, 1286, 1287, 5, 99, 0, 0, 1287, 1292, 3, 130, 65, 0, 1288, 1292, + 5, 61, 0, 0, 1289, 1292, 5, 129, 0, 0, 1290, 1292, 5, 130, 0, 0, 1291, + 1285, 1, 0, 0, 0, 1291, 1288, 1, 0, 0, 0, 1291, 1289, 1, 0, 0, 0, 1291, + 1290, 1, 0, 0, 0, 1292, 1294, 1, 0, 0, 0, 1293, 1240, 1, 0, 0, 0, 1293, + 1243, 1, 0, 0, 0, 1293, 1246, 1, 0, 0, 0, 1293, 1249, 1, 0, 0, 0, 1293, + 1252, 1, 0, 0, 0, 1293, 1255, 1, 0, 0, 0, 1293, 1258, 1, 0, 0, 0, 1293, + 1264, 1, 0, 0, 0, 1293, 1280, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, + 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 131, 1, 0, 0, 0, 1297, + 1295, 1, 0, 0, 0, 1298, 1303, 3, 130, 65, 0, 1299, 1300, 5, 9, 0, 0, 1300, + 1302, 3, 130, 65, 0, 1301, 1299, 1, 0, 0, 0, 1302, 1305, 1, 0, 0, 0, 1303, + 1301, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 133, 1, 0, 0, 0, 1305, + 1303, 1, 0, 0, 0, 1306, 1307, 5, 140, 0, 0, 1307, 1308, 3, 14, 7, 0, 1308, + 1309, 5, 6, 0, 0, 1309, 1387, 1, 0, 0, 0, 1310, 1315, 3, 136, 68, 0, 1311, + 1312, 5, 9, 0, 0, 1312, 1314, 3, 136, 68, 0, 1313, 1311, 1, 0, 0, 0, 1314, + 1317, 1, 0, 0, 0, 1315, 1313, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, + 1318, 1, 0, 0, 0, 1317, 1315, 1, 0, 0, 0, 1318, 1319, 5, 30, 0, 0, 1319, + 1321, 1, 0, 0, 0, 1320, 1310, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, + 1322, 1, 0, 0, 0, 1322, 1323, 3, 138, 69, 0, 1323, 1324, 5, 6, 0, 0, 1324, + 1387, 1, 0, 0, 0, 1325, 1327, 3, 130, 65, 0, 1326, 1328, 3, 14, 7, 0, 1327, + 1326, 1, 0, 0, 0, 1327, 1328, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, + 1330, 5, 30, 0, 0, 1330, 1331, 3, 130, 65, 0, 1331, 1332, 5, 6, 0, 0, 1332, + 1387, 1, 0, 0, 0, 1333, 1334, 5, 116, 0, 0, 1334, 1335, 5, 140, 0, 0, 1335, + 1339, 5, 72, 0, 0, 1336, 1340, 3, 142, 71, 0, 1337, 1340, 3, 18, 9, 0, + 1338, 1340, 3, 70, 35, 0, 1339, 1336, 1, 0, 0, 0, 1339, 1337, 1, 0, 0, + 0, 1339, 1338, 1, 0, 0, 0, 1340, 1341, 1, 0, 0, 0, 1341, 1345, 5, 1, 0, + 0, 1342, 1344, 3, 134, 67, 0, 1343, 1342, 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, 1349, 5, 2, 0, 0, 1349, 1387, 1, 0, + 0, 0, 1350, 1351, 5, 117, 0, 0, 1351, 1356, 3, 140, 70, 0, 1352, 1353, + 5, 118, 0, 0, 1353, 1355, 3, 140, 70, 0, 1354, 1352, 1, 0, 0, 0, 1355, + 1358, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, + 1368, 1, 0, 0, 0, 1358, 1356, 1, 0, 0, 0, 1359, 1360, 5, 119, 0, 0, 1360, + 1364, 5, 1, 0, 0, 1361, 1363, 3, 134, 67, 0, 1362, 1361, 1, 0, 0, 0, 1363, + 1366, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, + 1367, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1369, 5, 2, 0, 0, 1368, + 1359, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1387, 1, 0, 0, 0, 1370, + 1371, 3, 70, 35, 0, 1371, 1372, 5, 6, 0, 0, 1372, 1387, 1, 0, 0, 0, 1373, + 1374, 5, 120, 0, 0, 1374, 1387, 5, 6, 0, 0, 1375, 1378, 5, 121, 0, 0, 1376, + 1379, 3, 132, 66, 0, 1377, 1379, 3, 70, 35, 0, 1378, 1376, 1, 0, 0, 0, + 1378, 1377, 1, 0, 0, 0, 1378, 1379, 1, 0, 0, 0, 1379, 1380, 1, 0, 0, 0, + 1380, 1387, 5, 6, 0, 0, 1381, 1382, 5, 121, 0, 0, 1382, 1383, 5, 122, 0, + 0, 1383, 1384, 3, 132, 66, 0, 1384, 1385, 5, 6, 0, 0, 1385, 1387, 1, 0, + 0, 0, 1386, 1306, 1, 0, 0, 0, 1386, 1320, 1, 0, 0, 0, 1386, 1325, 1, 0, + 0, 0, 1386, 1333, 1, 0, 0, 0, 1386, 1350, 1, 0, 0, 0, 1386, 1370, 1, 0, + 0, 0, 1386, 1373, 1, 0, 0, 0, 1386, 1375, 1, 0, 0, 0, 1386, 1381, 1, 0, + 0, 0, 1387, 135, 1, 0, 0, 0, 1388, 1389, 7, 14, 0, 0, 1389, 137, 1, 0, + 0, 0, 1390, 1391, 5, 139, 0, 0, 1391, 1393, 5, 7, 0, 0, 1392, 1394, 3, + 132, 66, 0, 1393, 1392, 1, 0, 0, 0, 1393, 1394, 1, 0, 0, 0, 1394, 1395, + 1, 0, 0, 0, 1395, 1396, 5, 8, 0, 0, 1396, 139, 1, 0, 0, 0, 1397, 1398, + 3, 130, 65, 0, 1398, 1402, 5, 1, 0, 0, 1399, 1401, 3, 134, 67, 0, 1400, + 1399, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1400, 1, 0, 0, 0, 1402, + 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1402, 1, 0, 0, 0, 1405, + 1406, 5, 2, 0, 0, 1406, 141, 1, 0, 0, 0, 1407, 1408, 3, 130, 65, 0, 1408, + 1409, 5, 31, 0, 0, 1409, 1410, 3, 130, 65, 0, 1410, 143, 1, 0, 0, 0, 189, + 158, 162, 170, 176, 183, 192, 196, 208, 216, 218, 232, 235, 255, 260, 274, + 278, 288, 296, 306, 317, 330, 336, 341, 343, 346, 351, 357, 362, 365, 372, + 382, 393, 399, 405, 411, 426, 438, 448, 450, 457, 464, 470, 479, 486, 492, + 495, 503, 513, 517, 526, 530, 537, 540, 546, 555, 558, 561, 573, 580, 586, + 590, 597, 622, 627, 633, 651, 662, 686, 690, 696, 699, 711, 721, 731, 734, + 738, 742, 746, 750, 754, 758, 762, 769, 777, 780, 784, 791, 793, 806, 809, + 813, 816, 822, 825, 827, 830, 839, 842, 847, 850, 855, 858, 866, 874, 877, + 881, 891, 894, 900, 913, 917, 920, 929, 931, 942, 947, 949, 955, 958, 962, + 969, 975, 984, 989, 993, 997, 1002, 1006, 1010, 1015, 1019, 1024, 1027, + 1033, 1037, 1050, 1056, 1076, 1082, 1086, 1088, 1092, 1099, 1105, 1112, + 1120, 1122, 1124, 1131, 1140, 1143, 1157, 1163, 1167, 1176, 1183, 1189, + 1196, 1199, 1204, 1212, 1218, 1222, 1226, 1230, 1234, 1238, 1262, 1268, + 1272, 1274, 1278, 1283, 1291, 1293, 1295, 1303, 1315, 1320, 1327, 1339, + 1345, 1356, 1364, 1368, 1378, 1386, 1393, 1402, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -1004,37 +1013,39 @@ const ( KuneiformParserRULE_common_table_expression = 36 KuneiformParserRULE_create_table_statement = 37 KuneiformParserRULE_table_constraint_def = 38 - KuneiformParserRULE_alter_table_statement = 39 - KuneiformParserRULE_alter_table_action = 40 - KuneiformParserRULE_create_index_statement = 41 - KuneiformParserRULE_drop_index_statement = 42 - KuneiformParserRULE_select_statement = 43 - KuneiformParserRULE_compound_operator = 44 - KuneiformParserRULE_ordering_term = 45 - KuneiformParserRULE_select_core = 46 - KuneiformParserRULE_relation = 47 - KuneiformParserRULE_join = 48 - KuneiformParserRULE_result_column = 49 - KuneiformParserRULE_update_statement = 50 - KuneiformParserRULE_update_set_clause = 51 - KuneiformParserRULE_insert_statement = 52 - KuneiformParserRULE_upsert_clause = 53 - KuneiformParserRULE_delete_statement = 54 - KuneiformParserRULE_sql_expr = 55 - KuneiformParserRULE_window = 56 - KuneiformParserRULE_when_then_clause = 57 - KuneiformParserRULE_sql_expr_list = 58 - KuneiformParserRULE_sql_function_call = 59 - KuneiformParserRULE_action_block = 60 - KuneiformParserRULE_action_statement = 61 - KuneiformParserRULE_procedure_block = 62 - KuneiformParserRULE_procedure_expr = 63 - KuneiformParserRULE_procedure_expr_list = 64 - KuneiformParserRULE_proc_statement = 65 - KuneiformParserRULE_variable_or_underscore = 66 - KuneiformParserRULE_procedure_function_call = 67 - KuneiformParserRULE_if_then_block = 68 - KuneiformParserRULE_range = 69 + KuneiformParserRULE_opt_drop_behavior = 39 + KuneiformParserRULE_drop_table_statement = 40 + KuneiformParserRULE_alter_table_statement = 41 + KuneiformParserRULE_alter_table_action = 42 + KuneiformParserRULE_create_index_statement = 43 + KuneiformParserRULE_drop_index_statement = 44 + KuneiformParserRULE_select_statement = 45 + KuneiformParserRULE_compound_operator = 46 + KuneiformParserRULE_ordering_term = 47 + KuneiformParserRULE_select_core = 48 + KuneiformParserRULE_relation = 49 + KuneiformParserRULE_join = 50 + KuneiformParserRULE_result_column = 51 + KuneiformParserRULE_update_statement = 52 + KuneiformParserRULE_update_set_clause = 53 + KuneiformParserRULE_insert_statement = 54 + KuneiformParserRULE_upsert_clause = 55 + KuneiformParserRULE_delete_statement = 56 + KuneiformParserRULE_sql_expr = 57 + KuneiformParserRULE_window = 58 + KuneiformParserRULE_when_then_clause = 59 + KuneiformParserRULE_sql_expr_list = 60 + KuneiformParserRULE_sql_function_call = 61 + KuneiformParserRULE_action_block = 62 + KuneiformParserRULE_action_statement = 63 + KuneiformParserRULE_procedure_block = 64 + KuneiformParserRULE_procedure_expr = 65 + KuneiformParserRULE_procedure_expr_list = 66 + KuneiformParserRULE_proc_statement = 67 + KuneiformParserRULE_variable_or_underscore = 68 + KuneiformParserRULE_procedure_function_call = 69 + KuneiformParserRULE_if_then_block = 70 + KuneiformParserRULE_range = 71 ) // ISchema_entryContext is an interface to support dynamic dispatch. @@ -1127,11 +1138,11 @@ func (p *KuneiformParser) Schema_entry() (localctx ISchema_entryContext) { p.EnterRule(localctx, 0, KuneiformParserRULE_schema_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(140) + p.SetState(144) p.Schema() } { - p.SetState(141) + p.SetState(145) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1242,11 +1253,11 @@ func (p *KuneiformParser) Sql_entry() (localctx ISql_entryContext) { p.EnterRule(localctx, 2, KuneiformParserRULE_sql_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(143) + p.SetState(147) p.Sql_stmt() } { - p.SetState(144) + p.SetState(148) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1357,11 +1368,11 @@ func (p *KuneiformParser) Action_entry() (localctx IAction_entryContext) { p.EnterRule(localctx, 4, KuneiformParserRULE_action_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(146) + p.SetState(150) p.Action_block() } { - p.SetState(147) + p.SetState(151) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1472,11 +1483,11 @@ func (p *KuneiformParser) Procedure_entry() (localctx IProcedure_entryContext) { p.EnterRule(localctx, 6, KuneiformParserRULE_procedure_entry) p.EnterOuterAlt(localctx, 1) { - p.SetState(149) + p.SetState(153) p.Procedure_block() } { - p.SetState(150) + p.SetState(154) p.Match(KuneiformParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1776,7 +1787,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { p.EnterRule(localctx, 8, KuneiformParserRULE_literal) var _la int - p.SetState(166) + p.SetState(170) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1787,7 +1798,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewString_literalContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(152) + p.SetState(156) p.Match(KuneiformParserSTRING_) if p.HasError() { // Recognition error - abort rule @@ -1798,7 +1809,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { case 2: localctx = NewInteger_literalContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(154) + p.SetState(158) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1807,7 +1818,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { if _la == KuneiformParserPLUS || _la == KuneiformParserMINUS { { - p.SetState(153) + p.SetState(157) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -1820,7 +1831,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } { - p.SetState(156) + p.SetState(160) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -1831,7 +1842,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { case 3: localctx = NewDecimal_literalContext(p, localctx) p.EnterOuterAlt(localctx, 3) - p.SetState(158) + p.SetState(162) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1840,7 +1851,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { if _la == KuneiformParserPLUS || _la == KuneiformParserMINUS { { - p.SetState(157) + p.SetState(161) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -1853,7 +1864,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } { - p.SetState(160) + p.SetState(164) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -1861,7 +1872,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } } { - p.SetState(161) + p.SetState(165) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -1869,7 +1880,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { } } { - p.SetState(162) + p.SetState(166) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -1881,7 +1892,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewBoolean_literalContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(163) + p.SetState(167) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserTRUE || _la == KuneiformParserFALSE) { @@ -1896,7 +1907,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewNull_literalContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(164) + p.SetState(168) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -1908,7 +1919,7 @@ func (p *KuneiformParser) Literal() (localctx ILiteralContext) { localctx = NewBinary_literalContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(165) + p.SetState(169) p.Match(KuneiformParserBINARY_) if p.HasError() { // Recognition error - abort rule @@ -2014,7 +2025,7 @@ func (s *IdentifierContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { localctx = NewIdentifierContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 10, KuneiformParserRULE_identifier) - p.SetState(172) + p.SetState(176) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2024,7 +2035,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { case KuneiformParserDOUBLE_QUOTE: p.EnterOuterAlt(localctx, 1) { - p.SetState(168) + p.SetState(172) p.Match(KuneiformParserDOUBLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -2032,7 +2043,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { } } { - p.SetState(169) + p.SetState(173) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -2040,7 +2051,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { } } { - p.SetState(170) + p.SetState(174) p.Match(KuneiformParserDOUBLE_QUOTE) if p.HasError() { // Recognition error - abort rule @@ -2051,7 +2062,7 @@ func (p *KuneiformParser) Identifier() (localctx IIdentifierContext) { case KuneiformParserIDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(171) + p.SetState(175) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -2200,10 +2211,10 @@ func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(174) + p.SetState(178) p.Identifier() } - p.SetState(179) + p.SetState(183) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2212,7 +2223,7 @@ func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(175) + p.SetState(179) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2220,11 +2231,11 @@ func (p *KuneiformParser) Identifier_list() (localctx IIdentifier_listContext) { } } { - p.SetState(176) + p.SetState(180) p.Identifier() } - p.SetState(181) + p.SetState(185) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2353,19 +2364,19 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { p.EnterRule(localctx, 14, KuneiformParserRULE_type) p.EnterOuterAlt(localctx, 1) { - p.SetState(182) + p.SetState(186) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(188) + p.SetState(192) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 5, p.GetParserRuleContext()) == 1 { { - p.SetState(183) + p.SetState(187) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -2373,7 +2384,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(184) + p.SetState(188) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2381,7 +2392,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(185) + p.SetState(189) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2389,7 +2400,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(186) + p.SetState(190) p.Match(KuneiformParserDIGITS_) if p.HasError() { // Recognition error - abort rule @@ -2397,7 +2408,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(187) + p.SetState(191) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -2408,12 +2419,12 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } else if p.HasError() { // JIM goto errorExit } - p.SetState(192) + p.SetState(196) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 6, p.GetParserRuleContext()) == 1 { { - p.SetState(190) + p.SetState(194) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -2421,7 +2432,7 @@ func (p *KuneiformParser) Type_() (localctx ITypeContext) { } } { - p.SetState(191) + p.SetState(195) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -2536,7 +2547,7 @@ func (p *KuneiformParser) Type_cast() (localctx IType_castContext) { p.EnterRule(localctx, 16, KuneiformParserRULE_type_cast) p.EnterOuterAlt(localctx, 1) { - p.SetState(194) + p.SetState(198) p.Match(KuneiformParserTYPE_CAST) if p.HasError() { // Recognition error - abort rule @@ -2544,7 +2555,7 @@ func (p *KuneiformParser) Type_cast() (localctx IType_castContext) { } } { - p.SetState(195) + p.SetState(199) p.Type_() } @@ -2641,7 +2652,7 @@ func (p *KuneiformParser) Variable() (localctx IVariableContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(197) + p.SetState(201) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE) { @@ -2788,10 +2799,10 @@ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(199) + p.SetState(203) p.Variable() } - p.SetState(204) + p.SetState(208) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2800,7 +2811,7 @@ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(200) + p.SetState(204) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -2808,11 +2819,11 @@ func (p *KuneiformParser) Variable_list() (localctx IVariable_listContext) { } } { - p.SetState(201) + p.SetState(205) p.Variable() } - p.SetState(206) + p.SetState(210) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3092,10 +3103,10 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(207) + p.SetState(211) p.Database_declaration() } - p.SetState(214) + p.SetState(218) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3103,7 +3114,7 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { _la = p.GetTokenStream().LA(1) for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&257698037760) != 0) || _la == KuneiformParserCONTEXTUAL_VARIABLE { - p.SetState(212) + p.SetState(216) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3112,25 +3123,25 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 8, p.GetParserRuleContext()) { case 1: { - p.SetState(208) + p.SetState(212) p.Use_declaration() } case 2: { - p.SetState(209) + p.SetState(213) p.Table_declaration() } case 3: { - p.SetState(210) + p.SetState(214) p.Action_declaration() } case 4: { - p.SetState(211) + p.SetState(215) p.Procedure_declaration() } @@ -3138,7 +3149,7 @@ func (p *KuneiformParser) Schema() (localctx ISchemaContext) { goto errorExit } - p.SetState(216) + p.SetState(220) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3317,7 +3328,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(217) + p.SetState(221) p.Match(KuneiformParserCONTEXTUAL_VARIABLE) if p.HasError() { // Recognition error - abort rule @@ -3325,14 +3336,14 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(218) + p.SetState(222) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(231) + p.SetState(235) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3341,7 +3352,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { if _la == KuneiformParserIDENTIFIER { { - p.SetState(219) + p.SetState(223) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3349,7 +3360,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(220) + p.SetState(224) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -3357,10 +3368,10 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(221) + p.SetState(225) p.Literal() } - p.SetState(228) + p.SetState(232) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3369,7 +3380,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { for _la == KuneiformParserCOMMA { { - p.SetState(222) + p.SetState(226) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -3377,7 +3388,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(223) + p.SetState(227) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3385,7 +3396,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(224) + p.SetState(228) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -3393,11 +3404,11 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(225) + p.SetState(229) p.Literal() } - p.SetState(230) + p.SetState(234) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3407,7 +3418,7 @@ func (p *KuneiformParser) Annotation() (localctx IAnnotationContext) { } { - p.SetState(233) + p.SetState(237) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -3511,7 +3522,7 @@ func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declaration p.EnterRule(localctx, 26, KuneiformParserRULE_database_declaration) p.EnterOuterAlt(localctx, 1) { - p.SetState(235) + p.SetState(239) p.Match(KuneiformParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -3519,7 +3530,7 @@ func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declaration } } { - p.SetState(236) + p.SetState(240) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3527,7 +3538,7 @@ func (p *KuneiformParser) Database_declaration() (localctx IDatabase_declaration } } { - p.SetState(237) + p.SetState(241) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -3716,7 +3727,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(239) + p.SetState(243) p.Match(KuneiformParserUSE) if p.HasError() { // Recognition error - abort rule @@ -3724,14 +3735,14 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(240) + p.SetState(244) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(256) + p.SetState(260) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3740,7 +3751,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { if _la == KuneiformParserLBRACE { { - p.SetState(241) + p.SetState(245) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -3748,7 +3759,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(242) + p.SetState(246) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3756,7 +3767,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(243) + p.SetState(247) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule @@ -3764,10 +3775,10 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(244) + p.SetState(248) p.Literal() } - p.SetState(251) + p.SetState(255) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3776,7 +3787,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { for _la == KuneiformParserCOMMA { { - p.SetState(245) + p.SetState(249) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -3784,7 +3795,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(246) + p.SetState(250) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3792,7 +3803,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(247) + p.SetState(251) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule @@ -3800,11 +3811,11 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(248) + p.SetState(252) p.Literal() } - p.SetState(253) + p.SetState(257) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3812,7 +3823,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(254) + p.SetState(258) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -3822,7 +3833,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } { - p.SetState(258) + p.SetState(262) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -3830,7 +3841,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(259) + p.SetState(263) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -3838,7 +3849,7 @@ func (p *KuneiformParser) Use_declaration() (localctx IUse_declarationContext) { } } { - p.SetState(260) + p.SetState(264) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -4088,7 +4099,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex p.EnterOuterAlt(localctx, 1) { - p.SetState(262) + p.SetState(266) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -4096,7 +4107,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(263) + p.SetState(267) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -4104,7 +4115,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(264) + p.SetState(268) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -4112,10 +4123,10 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex } } { - p.SetState(265) + p.SetState(269) p.Column_def() } - p.SetState(274) + p.SetState(278) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4124,14 +4135,14 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex for _la == KuneiformParserCOMMA { { - p.SetState(266) + p.SetState(270) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(270) + p.SetState(274) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4140,19 +4151,19 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex switch p.GetTokenStream().LA(1) { case KuneiformParserIDENTIFIER: { - p.SetState(267) + p.SetState(271) p.Column_def() } case KuneiformParserHASH_IDENTIFIER: { - p.SetState(268) + p.SetState(272) p.Index_def() } case KuneiformParserFOREIGN, KuneiformParserLEGACY_FOREIGN_KEY: { - p.SetState(269) + p.SetState(273) p.Foreign_key_def() } @@ -4161,7 +4172,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex goto errorExit } - p.SetState(276) + p.SetState(280) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4169,7 +4180,7 @@ func (p *KuneiformParser) Table_declaration() (localctx ITable_declarationContex _la = p.GetTokenStream().LA(1) } { - p.SetState(277) + p.SetState(281) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -4336,7 +4347,7 @@ func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(279) + p.SetState(283) var _m = p.Match(KuneiformParserIDENTIFIER) @@ -4347,10 +4358,10 @@ func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { } } { - p.SetState(280) + p.SetState(284) p.Type_() } - p.SetState(284) + p.SetState(288) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4359,11 +4370,11 @@ func (p *KuneiformParser) Column_def() (localctx IColumn_defContext) { for ((int64((_la-52)) & ^0x3f) == 0 && ((int64(1)<<(_la-52))&16657) != 0) || _la == KuneiformParserIDENTIFIER { { - p.SetState(281) + p.SetState(285) p.Constraint() } - p.SetState(286) + p.SetState(290) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4530,7 +4541,7 @@ func (p *KuneiformParser) Table_column_def() (localctx ITable_column_defContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(287) + p.SetState(291) var _m = p.Match(KuneiformParserIDENTIFIER) @@ -4541,10 +4552,10 @@ func (p *KuneiformParser) Table_column_def() (localctx ITable_column_defContext) } } { - p.SetState(288) + p.SetState(292) p.Type_() } - p.SetState(292) + p.SetState(296) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4553,11 +4564,11 @@ func (p *KuneiformParser) Table_column_def() (localctx ITable_column_defContext) for (int64((_la-50)) & ^0x3f) == 0 && ((int64(1)<<(_la-50))&83013) != 0 { { - p.SetState(289) + p.SetState(293) p.Inline_constraint() } - p.SetState(294) + p.SetState(298) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4706,7 +4717,7 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(295) + p.SetState(299) p.Match(KuneiformParserHASH_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -4714,7 +4725,7 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { } } { - p.SetState(296) + p.SetState(300) _la = p.GetTokenStream().LA(1) if !((int64((_la-52)) & ^0x3f) == 0 && ((int64(1)<<(_la-52))&32785) != 0) { @@ -4725,7 +4736,7 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { } } { - p.SetState(297) + p.SetState(301) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -4733,14 +4744,14 @@ func (p *KuneiformParser) Index_def() (localctx IIndex_defContext) { } } { - p.SetState(298) + p.SetState(302) var _x = p.Identifier_list() localctx.(*Index_defContext).columns = _x } { - p.SetState(299) + p.SetState(303) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -4895,7 +4906,7 @@ func (p *KuneiformParser) Table_index_def() (localctx ITable_index_defContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(302) + p.SetState(306) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4904,7 +4915,7 @@ func (p *KuneiformParser) Table_index_def() (localctx ITable_index_defContext) { if _la == KuneiformParserUNIQUE { { - p.SetState(301) + p.SetState(305) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -4914,7 +4925,7 @@ func (p *KuneiformParser) Table_index_def() (localctx ITable_index_defContext) { } { - p.SetState(304) + p.SetState(308) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule @@ -4922,11 +4933,11 @@ func (p *KuneiformParser) Table_index_def() (localctx ITable_index_defContext) { } } { - p.SetState(305) + p.SetState(309) p.Identifier() } { - p.SetState(306) + p.SetState(310) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -4934,14 +4945,14 @@ func (p *KuneiformParser) Table_index_def() (localctx ITable_index_defContext) { } } { - p.SetState(307) + p.SetState(311) var _x = p.Identifier_list() localctx.(*Table_index_defContext).columns = _x } { - p.SetState(308) + p.SetState(312) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -5200,7 +5211,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(313) + p.SetState(317) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5209,7 +5220,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserFOREIGN: { - p.SetState(310) + p.SetState(314) p.Match(KuneiformParserFOREIGN) if p.HasError() { // Recognition error - abort rule @@ -5217,7 +5228,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(311) + p.SetState(315) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -5227,7 +5238,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { case KuneiformParserLEGACY_FOREIGN_KEY: { - p.SetState(312) + p.SetState(316) p.Match(KuneiformParserLEGACY_FOREIGN_KEY) if p.HasError() { // Recognition error - abort rule @@ -5240,7 +5251,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { goto errorExit } { - p.SetState(315) + p.SetState(319) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -5248,14 +5259,14 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(316) + p.SetState(320) var _x = p.Identifier_list() localctx.(*Foreign_key_defContext).child_keys = _x } { - p.SetState(317) + p.SetState(321) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -5263,7 +5274,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(318) + p.SetState(322) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserREFERENCES || _la == KuneiformParserREF) { @@ -5274,7 +5285,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(319) + p.SetState(323) var _m = p.Match(KuneiformParserIDENTIFIER) @@ -5285,7 +5296,7 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(320) + p.SetState(324) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -5293,21 +5304,21 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { } } { - p.SetState(321) + p.SetState(325) var _x = p.Identifier_list() localctx.(*Foreign_key_defContext).parent_keys = _x } { - p.SetState(322) + p.SetState(326) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(326) + p.SetState(330) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5316,11 +5327,11 @@ func (p *KuneiformParser) Foreign_key_def() (localctx IForeign_key_defContext) { for _la == KuneiformParserON || _la == KuneiformParserLEGACY_ON_UPDATE || _la == KuneiformParserLEGACY_ON_DELETE { { - p.SetState(323) + p.SetState(327) p.Foreign_key_action() } - p.SetState(328) + p.SetState(332) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5490,7 +5501,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(339) + p.SetState(343) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5498,7 +5509,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 23, p.GetParserRuleContext()) { case 1: - p.SetState(332) + p.SetState(336) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5507,7 +5518,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserON: { - p.SetState(329) + p.SetState(333) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -5515,7 +5526,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(330) + p.SetState(334) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -5525,7 +5536,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_ON_UPDATE: { - p.SetState(331) + p.SetState(335) p.Match(KuneiformParserLEGACY_ON_UPDATE) if p.HasError() { // Recognition error - abort rule @@ -5539,7 +5550,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } case 2: - p.SetState(337) + p.SetState(341) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5548,7 +5559,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserON: { - p.SetState(334) + p.SetState(338) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -5556,7 +5567,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(335) + p.SetState(339) p.Match(KuneiformParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -5566,7 +5577,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_ON_DELETE: { - p.SetState(336) + p.SetState(340) p.Match(KuneiformParserLEGACY_ON_DELETE) if p.HasError() { // Recognition error - abort rule @@ -5582,7 +5593,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(342) + p.SetState(346) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5591,7 +5602,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont if _la == KuneiformParserDO { { - p.SetState(341) + p.SetState(345) p.Match(KuneiformParserDO) if p.HasError() { // Recognition error - abort rule @@ -5600,7 +5611,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } - p.SetState(361) + p.SetState(365) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5608,7 +5619,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 28, p.GetParserRuleContext()) { case 1: - p.SetState(347) + p.SetState(351) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5617,7 +5628,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserNO: { - p.SetState(344) + p.SetState(348) p.Match(KuneiformParserNO) if p.HasError() { // Recognition error - abort rule @@ -5625,7 +5636,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(345) + p.SetState(349) p.Match(KuneiformParserACTION) if p.HasError() { // Recognition error - abort rule @@ -5635,7 +5646,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_NO_ACTION: { - p.SetState(346) + p.SetState(350) p.Match(KuneiformParserLEGACY_NO_ACTION) if p.HasError() { // Recognition error - abort rule @@ -5650,7 +5661,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case 2: { - p.SetState(349) + p.SetState(353) p.Match(KuneiformParserCASCADE) if p.HasError() { // Recognition error - abort rule @@ -5659,7 +5670,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } case 3: - p.SetState(353) + p.SetState(357) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5668,7 +5679,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserSET: { - p.SetState(350) + p.SetState(354) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -5676,7 +5687,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(351) + p.SetState(355) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -5686,7 +5697,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_SET_NULL: { - p.SetState(352) + p.SetState(356) p.Match(KuneiformParserLEGACY_SET_NULL) if p.HasError() { // Recognition error - abort rule @@ -5700,7 +5711,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } case 4: - p.SetState(358) + p.SetState(362) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5709,7 +5720,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserSET: { - p.SetState(355) + p.SetState(359) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -5717,7 +5728,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont } } { - p.SetState(356) + p.SetState(360) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -5727,7 +5738,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case KuneiformParserLEGACY_SET_DEFAULT: { - p.SetState(357) + p.SetState(361) p.Match(KuneiformParserLEGACY_SET_DEFAULT) if p.HasError() { // Recognition error - abort rule @@ -5742,7 +5753,7 @@ func (p *KuneiformParser) Foreign_key_action() (localctx IForeign_key_actionCont case 5: { - p.SetState(360) + p.SetState(364) p.Match(KuneiformParserRESTRICT) if p.HasError() { // Recognition error - abort rule @@ -5890,10 +5901,10 @@ func (p *KuneiformParser) Type_list() (localctx IType_listContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(363) + p.SetState(367) p.Type_() } - p.SetState(368) + p.SetState(372) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5902,7 +5913,7 @@ func (p *KuneiformParser) Type_list() (localctx IType_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(364) + p.SetState(368) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -5910,11 +5921,11 @@ func (p *KuneiformParser) Type_list() (localctx IType_listContext) { } } { - p.SetState(365) + p.SetState(369) p.Type_() } - p.SetState(370) + p.SetState(374) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6068,7 +6079,7 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(371) + p.SetState(375) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -6076,10 +6087,10 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { } } { - p.SetState(372) + p.SetState(376) p.Type_() } - p.SetState(378) + p.SetState(382) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6088,7 +6099,7 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(373) + p.SetState(377) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -6096,7 +6107,7 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { } } { - p.SetState(374) + p.SetState(378) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -6104,11 +6115,11 @@ func (p *KuneiformParser) Named_type_list() (localctx INamed_type_listContext) { } } { - p.SetState(375) + p.SetState(379) p.Type_() } - p.SetState(380) + p.SetState(384) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6295,14 +6306,14 @@ func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listCo p.EnterOuterAlt(localctx, 1) { - p.SetState(381) + p.SetState(385) p.Variable() } { - p.SetState(382) + p.SetState(386) p.Type_() } - p.SetState(389) + p.SetState(393) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6311,7 +6322,7 @@ func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listCo for _la == KuneiformParserCOMMA { { - p.SetState(383) + p.SetState(387) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -6319,15 +6330,15 @@ func (p *KuneiformParser) Typed_variable_list() (localctx ITyped_variable_listCo } } { - p.SetState(384) + p.SetState(388) p.Variable() } { - p.SetState(385) + p.SetState(389) p.Type_() } - p.SetState(391) + p.SetState(395) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6479,7 +6490,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(401) + p.SetState(405) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6488,7 +6499,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserIDENTIFIER: { - p.SetState(392) + p.SetState(396) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -6498,14 +6509,14 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserPRIMARY: { - p.SetState(393) + p.SetState(397) p.Match(KuneiformParserPRIMARY) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(395) + p.SetState(399) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6514,7 +6525,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { if _la == KuneiformParserKEY { { - p.SetState(394) + p.SetState(398) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -6526,7 +6537,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserNOT: { - p.SetState(397) + p.SetState(401) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -6534,7 +6545,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { } } { - p.SetState(398) + p.SetState(402) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -6544,7 +6555,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserDEFAULT: { - p.SetState(399) + p.SetState(403) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -6554,7 +6565,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { case KuneiformParserUNIQUE: { - p.SetState(400) + p.SetState(404) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -6566,7 +6577,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(407) + p.SetState(411) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6575,7 +6586,7 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { if _la == KuneiformParserLPAREN { { - p.SetState(403) + p.SetState(407) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -6583,11 +6594,11 @@ func (p *KuneiformParser) Constraint() (localctx IConstraintContext) { } } { - p.SetState(404) + p.SetState(408) p.Literal() } { - p.SetState(405) + p.SetState(409) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -6772,7 +6783,7 @@ func (s *Inline_constraintContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContext) { localctx = NewInline_constraintContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 52, KuneiformParserRULE_inline_constraint) - p.SetState(422) + p.SetState(426) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6782,7 +6793,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserPRIMARY: p.EnterOuterAlt(localctx, 1) { - p.SetState(409) + p.SetState(413) p.Match(KuneiformParserPRIMARY) if p.HasError() { // Recognition error - abort rule @@ -6790,7 +6801,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(410) + p.SetState(414) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -6801,7 +6812,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserUNIQUE: p.EnterOuterAlt(localctx, 2) { - p.SetState(411) + p.SetState(415) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -6812,7 +6823,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserNOT: p.EnterOuterAlt(localctx, 3) { - p.SetState(412) + p.SetState(416) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -6820,7 +6831,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(413) + p.SetState(417) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -6831,7 +6842,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex case KuneiformParserDEFAULT: p.EnterOuterAlt(localctx, 4) { - p.SetState(414) + p.SetState(418) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -6839,21 +6850,21 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(415) + p.SetState(419) p.Literal() } case KuneiformParserREFERENCES: p.EnterOuterAlt(localctx, 5) { - p.SetState(416) + p.SetState(420) p.Fk_constraint() } case KuneiformParserCHECK: p.EnterOuterAlt(localctx, 6) { - p.SetState(417) + p.SetState(421) p.Match(KuneiformParserCHECK) if p.HasError() { // Recognition error - abort rule @@ -6862,7 +6873,7 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } { - p.SetState(418) + p.SetState(422) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -6870,11 +6881,11 @@ func (p *KuneiformParser) Inline_constraint() (localctx IInline_constraintContex } } { - p.SetState(419) + p.SetState(423) p.sql_expr(0) } { - p.SetState(420) + p.SetState(424) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -7020,7 +7031,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(424) + p.SetState(428) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -7028,7 +7039,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(425) + p.SetState(429) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserDELETE || _la == KuneiformParserUPDATE) { @@ -7038,7 +7049,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { p.Consume() } } - p.SetState(434) + p.SetState(438) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7047,7 +7058,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 36, p.GetParserRuleContext()) { case 1: { - p.SetState(426) + p.SetState(430) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -7055,7 +7066,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(427) + p.SetState(431) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -7065,7 +7076,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 2: { - p.SetState(428) + p.SetState(432) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -7073,7 +7084,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(429) + p.SetState(433) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -7083,7 +7094,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 3: { - p.SetState(430) + p.SetState(434) p.Match(KuneiformParserRESTRICT) if p.HasError() { // Recognition error - abort rule @@ -7093,7 +7104,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 4: { - p.SetState(431) + p.SetState(435) p.Match(KuneiformParserNO) if p.HasError() { // Recognition error - abort rule @@ -7101,7 +7112,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { } } { - p.SetState(432) + p.SetState(436) p.Match(KuneiformParserACTION) if p.HasError() { // Recognition error - abort rule @@ -7111,7 +7122,7 @@ func (p *KuneiformParser) Fk_action() (localctx IFk_actionContext) { case 5: { - p.SetState(433) + p.SetState(437) p.Match(KuneiformParserCASCADE) if p.HasError() { // Recognition error - abort rule @@ -7329,7 +7340,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(436) + p.SetState(440) p.Match(KuneiformParserREFERENCES) if p.HasError() { // Recognition error - abort rule @@ -7337,7 +7348,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } } { - p.SetState(437) + p.SetState(441) var _x = p.Identifier() @@ -7345,7 +7356,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } { - p.SetState(438) + p.SetState(442) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -7353,14 +7364,14 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } } { - p.SetState(439) + p.SetState(443) var _x = p.Identifier() localctx.(*Fk_constraintContext).column = _x } { - p.SetState(440) + p.SetState(444) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -7368,7 +7379,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { } } - p.SetState(446) + p.SetState(450) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7377,10 +7388,10 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { if _la == KuneiformParserON { { - p.SetState(442) + p.SetState(446) p.Fk_action() } - p.SetState(444) + p.SetState(448) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7389,7 +7400,7 @@ func (p *KuneiformParser) Fk_constraint() (localctx IFk_constraintContext) { if _la == KuneiformParserON { { - p.SetState(443) + p.SetState(447) p.Fk_action() } @@ -7500,7 +7511,7 @@ func (p *KuneiformParser) Access_modifier() (localctx IAccess_modifierContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(448) + p.SetState(452) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { @@ -7743,7 +7754,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(453) + p.SetState(457) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7752,11 +7763,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont for _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(450) + p.SetState(454) p.Annotation() } - p.SetState(455) + p.SetState(459) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7764,7 +7775,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont _la = p.GetTokenStream().LA(1) } { - p.SetState(456) + p.SetState(460) p.Match(KuneiformParserACTION) if p.HasError() { // Recognition error - abort rule @@ -7772,7 +7783,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(457) + p.SetState(461) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -7780,14 +7791,14 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(458) + p.SetState(462) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(460) + p.SetState(464) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7796,20 +7807,20 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(459) + p.SetState(463) p.Variable_list() } } { - p.SetState(462) + p.SetState(466) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(464) + p.SetState(468) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7818,11 +7829,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { { - p.SetState(463) + p.SetState(467) p.Access_modifier() } - p.SetState(466) + p.SetState(470) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7830,7 +7841,7 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont _la = p.GetTokenStream().LA(1) } { - p.SetState(468) + p.SetState(472) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -7838,11 +7849,11 @@ func (p *KuneiformParser) Action_declaration() (localctx IAction_declarationCont } } { - p.SetState(469) + p.SetState(473) p.Action_block() } { - p.SetState(470) + p.SetState(474) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -8099,7 +8110,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(475) + p.SetState(479) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8108,11 +8119,11 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati for _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(472) + p.SetState(476) p.Annotation() } - p.SetState(477) + p.SetState(481) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8120,7 +8131,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati _la = p.GetTokenStream().LA(1) } { - p.SetState(478) + p.SetState(482) p.Match(KuneiformParserPROCEDURE) if p.HasError() { // Recognition error - abort rule @@ -8128,7 +8139,7 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(479) + p.SetState(483) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -8136,14 +8147,14 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(480) + p.SetState(484) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(482) + p.SetState(486) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8152,20 +8163,20 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(481) + p.SetState(485) p.Typed_variable_list() } } { - p.SetState(484) + p.SetState(488) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(486) + p.SetState(490) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8174,18 +8185,18 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4123168604160) != 0) { { - p.SetState(485) + p.SetState(489) p.Access_modifier() } - p.SetState(488) + p.SetState(492) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(491) + p.SetState(495) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8194,13 +8205,13 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati if _la == KuneiformParserRETURNS { { - p.SetState(490) + p.SetState(494) p.Procedure_return() } } { - p.SetState(493) + p.SetState(497) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -8208,11 +8219,11 @@ func (p *KuneiformParser) Procedure_declaration() (localctx IProcedure_declarati } } { - p.SetState(494) + p.SetState(498) p.Procedure_block() } { - p.SetState(495) + p.SetState(499) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -8385,14 +8396,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(497) + p.SetState(501) p.Match(KuneiformParserRETURNS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(509) + p.SetState(513) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8400,7 +8411,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 47, p.GetParserRuleContext()) { case 1: - p.SetState(499) + p.SetState(503) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8409,7 +8420,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) if _la == KuneiformParserTABLE { { - p.SetState(498) + p.SetState(502) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -8419,7 +8430,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } { - p.SetState(501) + p.SetState(505) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -8427,14 +8438,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } } { - p.SetState(502) + p.SetState(506) var _x = p.Named_type_list() localctx.(*Procedure_returnContext).return_columns = _x } { - p.SetState(503) + p.SetState(507) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -8444,7 +8455,7 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) case 2: { - p.SetState(505) + p.SetState(509) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -8452,14 +8463,14 @@ func (p *KuneiformParser) Procedure_return() (localctx IProcedure_returnContext) } } { - p.SetState(506) + p.SetState(510) var _x = p.Type_list() localctx.(*Procedure_returnContext).unnamed_return_types = _x } { - p.SetState(507) + p.SetState(511) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -8590,7 +8601,7 @@ func (p *KuneiformParser) Sql_stmt() (localctx ISql_stmtContext) { localctx = NewSql_stmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 66, KuneiformParserRULE_sql_stmt) p.EnterOuterAlt(localctx, 1) - p.SetState(513) + p.SetState(517) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8599,13 +8610,13 @@ func (p *KuneiformParser) Sql_stmt() (localctx ISql_stmtContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserDELETE, KuneiformParserUPDATE, KuneiformParserWITH, KuneiformParserSELECT, KuneiformParserINSERT: { - p.SetState(511) + p.SetState(515) p.Sql_statement() } case KuneiformParserCREATE, KuneiformParserALTER, KuneiformParserDROP: { - p.SetState(512) + p.SetState(516) p.Ddl_stmt() } @@ -8614,7 +8625,7 @@ func (p *KuneiformParser) Sql_stmt() (localctx ISql_stmtContext) { goto errorExit } { - p.SetState(515) + p.SetState(519) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -8645,6 +8656,7 @@ type IDdl_stmtContext interface { // Getter signatures Create_table_statement() ICreate_table_statementContext Alter_table_statement() IAlter_table_statementContext + Drop_table_statement() IDrop_table_statementContext Create_index_statement() ICreate_index_statementContext Drop_index_statement() IDrop_index_statementContext @@ -8716,6 +8728,22 @@ func (s *Ddl_stmtContext) Alter_table_statement() IAlter_table_statementContext return t.(IAlter_table_statementContext) } +func (s *Ddl_stmtContext) Drop_table_statement() IDrop_table_statementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDrop_table_statementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDrop_table_statementContext) +} + func (s *Ddl_stmtContext) Create_index_statement() ICreate_index_statementContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { @@ -8769,7 +8797,7 @@ func (s *Ddl_stmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Ddl_stmt() (localctx IDdl_stmtContext) { localctx = NewDdl_stmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 68, KuneiformParserRULE_ddl_stmt) - p.SetState(521) + p.SetState(526) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8779,28 +8807,35 @@ func (p *KuneiformParser) Ddl_stmt() (localctx IDdl_stmtContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(517) + p.SetState(521) p.Create_table_statement() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(518) + p.SetState(522) p.Alter_table_statement() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(519) - p.Create_index_statement() + p.SetState(523) + p.Drop_table_statement() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(520) + p.SetState(524) + p.Create_index_statement() + } + + case 5: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(525) p.Drop_index_statement() } @@ -9021,7 +9056,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(535) + p.SetState(540) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9030,14 +9065,14 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { if _la == KuneiformParserWITH { { - p.SetState(523) + p.SetState(528) p.Match(KuneiformParserWITH) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(525) + p.SetState(530) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9046,7 +9081,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { if _la == KuneiformParserRECURSIVE { { - p.SetState(524) + p.SetState(529) p.Match(KuneiformParserRECURSIVE) if p.HasError() { // Recognition error - abort rule @@ -9056,10 +9091,10 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } { - p.SetState(527) + p.SetState(532) p.Common_table_expression() } - p.SetState(532) + p.SetState(537) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9068,7 +9103,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { for _la == KuneiformParserCOMMA { { - p.SetState(528) + p.SetState(533) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -9076,11 +9111,11 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } } { - p.SetState(529) + p.SetState(534) p.Common_table_expression() } - p.SetState(534) + p.SetState(539) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9089,7 +9124,7 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { } } - p.SetState(541) + p.SetState(546) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9098,25 +9133,25 @@ func (p *KuneiformParser) Sql_statement() (localctx ISql_statementContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserSELECT: { - p.SetState(537) + p.SetState(542) p.Select_statement() } case KuneiformParserUPDATE: { - p.SetState(538) + p.SetState(543) p.Update_statement() } case KuneiformParserINSERT: { - p.SetState(539) + p.SetState(544) p.Insert_statement() } case KuneiformParserDELETE: { - p.SetState(540) + p.SetState(545) p.Delete_statement() } @@ -9303,10 +9338,10 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr p.EnterOuterAlt(localctx, 1) { - p.SetState(543) + p.SetState(548) p.Identifier() } - p.SetState(556) + p.SetState(561) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9315,14 +9350,14 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr if _la == KuneiformParserLPAREN { { - p.SetState(544) + p.SetState(549) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(553) + p.SetState(558) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9331,10 +9366,10 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(545) + p.SetState(550) p.Identifier() } - p.SetState(550) + p.SetState(555) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9343,7 +9378,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr for _la == KuneiformParserCOMMA { { - p.SetState(546) + p.SetState(551) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -9351,11 +9386,11 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(547) + p.SetState(552) p.Identifier() } - p.SetState(552) + p.SetState(557) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9365,7 +9400,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } { - p.SetState(555) + p.SetState(560) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9375,7 +9410,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } { - p.SetState(558) + p.SetState(563) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -9383,7 +9418,7 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(559) + p.SetState(564) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -9391,11 +9426,11 @@ func (p *KuneiformParser) Common_table_expression() (localctx ICommon_table_expr } } { - p.SetState(560) + p.SetState(565) p.Select_statement() } { - p.SetState(561) + p.SetState(566) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -9688,7 +9723,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state p.EnterOuterAlt(localctx, 1) { - p.SetState(563) + p.SetState(568) p.Match(KuneiformParserCREATE) if p.HasError() { // Recognition error - abort rule @@ -9696,14 +9731,14 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state } } { - p.SetState(564) + p.SetState(569) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(568) + p.SetState(573) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9712,7 +9747,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state if _la == KuneiformParserIF { { - p.SetState(565) + p.SetState(570) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -9720,7 +9755,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state } } { - p.SetState(566) + p.SetState(571) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -9728,7 +9763,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state } } { - p.SetState(567) + p.SetState(572) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -9738,21 +9773,21 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state } { - p.SetState(570) + p.SetState(575) var _x = p.Identifier() localctx.(*Create_table_statementContext).name = _x } { - p.SetState(571) + p.SetState(576) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(575) + p.SetState(580) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9761,26 +9796,26 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 58, p.GetParserRuleContext()) { case 1: { - p.SetState(572) + p.SetState(577) p.Table_column_def() } case 2: { - p.SetState(573) + p.SetState(578) p.Table_constraint_def() } case 3: { - p.SetState(574) + p.SetState(579) p.Table_index_def() } case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(585) + p.SetState(590) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9789,14 +9824,14 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state for _la == KuneiformParserCOMMA { { - p.SetState(577) + p.SetState(582) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(581) + p.SetState(586) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9805,19 +9840,19 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 59, p.GetParserRuleContext()) { case 1: { - p.SetState(578) + p.SetState(583) p.Table_column_def() } case 2: { - p.SetState(579) + p.SetState(584) p.Table_constraint_def() } case 3: { - p.SetState(580) + p.SetState(585) p.Table_index_def() } @@ -9825,7 +9860,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state goto errorExit } - p.SetState(587) + p.SetState(592) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9833,7 +9868,7 @@ func (p *KuneiformParser) Create_table_statement() (localctx ICreate_table_state _la = p.GetTokenStream().LA(1) } { - p.SetState(588) + p.SetState(593) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10079,7 +10114,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(592) + p.SetState(597) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10088,7 +10123,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def if _la == KuneiformParserCONSTRAINT { { - p.SetState(590) + p.SetState(595) p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule @@ -10096,7 +10131,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(591) + p.SetState(596) var _x = p.Identifier() @@ -10104,7 +10139,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } - p.SetState(617) + p.SetState(622) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10113,7 +10148,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def switch p.GetTokenStream().LA(1) { case KuneiformParserPRIMARY: { - p.SetState(594) + p.SetState(599) p.Match(KuneiformParserPRIMARY) if p.HasError() { // Recognition error - abort rule @@ -10121,7 +10156,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(595) + p.SetState(600) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -10129,7 +10164,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(596) + p.SetState(601) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10137,11 +10172,11 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(597) + p.SetState(602) p.Identifier_list() } { - p.SetState(598) + p.SetState(603) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10151,7 +10186,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def case KuneiformParserUNIQUE: { - p.SetState(600) + p.SetState(605) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -10159,7 +10194,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(601) + p.SetState(606) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10167,11 +10202,11 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(602) + p.SetState(607) p.Identifier_list() } { - p.SetState(603) + p.SetState(608) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10181,7 +10216,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def case KuneiformParserCHECK: { - p.SetState(605) + p.SetState(610) p.Match(KuneiformParserCHECK) if p.HasError() { // Recognition error - abort rule @@ -10189,7 +10224,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(606) + p.SetState(611) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10197,11 +10232,11 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(607) + p.SetState(612) p.sql_expr(0) } { - p.SetState(608) + p.SetState(613) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10211,7 +10246,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def case KuneiformParserFOREIGN: { - p.SetState(610) + p.SetState(615) p.Match(KuneiformParserFOREIGN) if p.HasError() { // Recognition error - abort rule @@ -10219,7 +10254,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(611) + p.SetState(616) p.Match(KuneiformParserKEY) if p.HasError() { // Recognition error - abort rule @@ -10227,7 +10262,7 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(612) + p.SetState(617) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -10235,28 +10270,355 @@ func (p *KuneiformParser) Table_constraint_def() (localctx ITable_constraint_def } } { - p.SetState(613) + p.SetState(618) var _x = p.Identifier() - localctx.(*Table_constraint_defContext).column = _x - } + localctx.(*Table_constraint_defContext).column = _x + } + { + p.SetState(619) + p.Match(KuneiformParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(620) + p.Fk_constraint() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IOpt_drop_behaviorContext is an interface to support dynamic dispatch. +type IOpt_drop_behaviorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CASCADE() antlr.TerminalNode + RESTRICT() antlr.TerminalNode + + // IsOpt_drop_behaviorContext differentiates from other interfaces. + IsOpt_drop_behaviorContext() +} + +type Opt_drop_behaviorContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOpt_drop_behaviorContext() *Opt_drop_behaviorContext { + var p = new(Opt_drop_behaviorContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_opt_drop_behavior + return p +} + +func InitEmptyOpt_drop_behaviorContext(p *Opt_drop_behaviorContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_opt_drop_behavior +} + +func (*Opt_drop_behaviorContext) IsOpt_drop_behaviorContext() {} + +func NewOpt_drop_behaviorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Opt_drop_behaviorContext { + var p = new(Opt_drop_behaviorContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_opt_drop_behavior + + return p +} + +func (s *Opt_drop_behaviorContext) GetParser() antlr.Parser { return s.parser } + +func (s *Opt_drop_behaviorContext) CASCADE() antlr.TerminalNode { + return s.GetToken(KuneiformParserCASCADE, 0) +} + +func (s *Opt_drop_behaviorContext) RESTRICT() antlr.TerminalNode { + return s.GetToken(KuneiformParserRESTRICT, 0) +} + +func (s *Opt_drop_behaviorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Opt_drop_behaviorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Opt_drop_behaviorContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitOpt_drop_behavior(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Opt_drop_behavior() (localctx IOpt_drop_behaviorContext) { + localctx = NewOpt_drop_behaviorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 78, KuneiformParserRULE_opt_drop_behavior) + p.SetState(627) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case KuneiformParserCASCADE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(624) + p.Match(KuneiformParserCASCADE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserRESTRICT: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(625) + p.Match(KuneiformParserRESTRICT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case KuneiformParserSCOL: + p.EnterOuterAlt(localctx, 3) + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IDrop_table_statementContext is an interface to support dynamic dispatch. +type IDrop_table_statementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // GetTables returns the tables rule contexts. + GetTables() IIdentifier_listContext + + // SetTables sets the tables rule contexts. + SetTables(IIdentifier_listContext) + + // Getter signatures + DROP() antlr.TerminalNode + TABLE() antlr.TerminalNode + Opt_drop_behavior() IOpt_drop_behaviorContext + Identifier_list() IIdentifier_listContext + IF() antlr.TerminalNode + EXISTS() antlr.TerminalNode + + // IsDrop_table_statementContext differentiates from other interfaces. + IsDrop_table_statementContext() +} + +type Drop_table_statementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser + tables IIdentifier_listContext +} + +func NewEmptyDrop_table_statementContext() *Drop_table_statementContext { + var p = new(Drop_table_statementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_drop_table_statement + return p +} + +func InitEmptyDrop_table_statementContext(p *Drop_table_statementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = KuneiformParserRULE_drop_table_statement +} + +func (*Drop_table_statementContext) IsDrop_table_statementContext() {} + +func NewDrop_table_statementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_table_statementContext { + var p = new(Drop_table_statementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = KuneiformParserRULE_drop_table_statement + + return p +} + +func (s *Drop_table_statementContext) GetParser() antlr.Parser { return s.parser } + +func (s *Drop_table_statementContext) GetTables() IIdentifier_listContext { return s.tables } + +func (s *Drop_table_statementContext) SetTables(v IIdentifier_listContext) { s.tables = v } + +func (s *Drop_table_statementContext) DROP() antlr.TerminalNode { + return s.GetToken(KuneiformParserDROP, 0) +} + +func (s *Drop_table_statementContext) TABLE() antlr.TerminalNode { + return s.GetToken(KuneiformParserTABLE, 0) +} + +func (s *Drop_table_statementContext) Opt_drop_behavior() IOpt_drop_behaviorContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOpt_drop_behaviorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOpt_drop_behaviorContext) +} + +func (s *Drop_table_statementContext) Identifier_list() IIdentifier_listContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifier_listContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifier_listContext) +} + +func (s *Drop_table_statementContext) IF() antlr.TerminalNode { + return s.GetToken(KuneiformParserIF, 0) +} + +func (s *Drop_table_statementContext) EXISTS() antlr.TerminalNode { + return s.GetToken(KuneiformParserEXISTS, 0) +} + +func (s *Drop_table_statementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Drop_table_statementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Drop_table_statementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case KuneiformParserVisitor: + return t.VisitDrop_table_statement(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *KuneiformParser) Drop_table_statement() (localctx IDrop_table_statementContext) { + localctx = NewDrop_table_statementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 80, KuneiformParserRULE_drop_table_statement) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(629) + p.Match(KuneiformParserDROP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(630) + p.Match(KuneiformParserTABLE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(633) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == KuneiformParserIF { { - p.SetState(614) - p.Match(KuneiformParserRPAREN) + p.SetState(631) + p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule goto errorExit } } { - p.SetState(615) - p.Fk_constraint() + p.SetState(632) + p.Match(KuneiformParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - goto errorExit + } + { + p.SetState(635) + + var _x = p.Identifier_list() + + localctx.(*Drop_table_statementContext).tables = _x + } + { + p.SetState(636) + p.Opt_drop_behavior() } errorExit: @@ -10392,10 +10754,10 @@ func (s *Alter_table_statementContext) Accept(visitor antlr.ParseTreeVisitor) in func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_statementContext) { localctx = NewAlter_table_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 78, KuneiformParserRULE_alter_table_statement) + p.EnterRule(localctx, 82, KuneiformParserRULE_alter_table_statement) p.EnterOuterAlt(localctx, 1) { - p.SetState(619) + p.SetState(638) p.Match(KuneiformParserALTER) if p.HasError() { // Recognition error - abort rule @@ -10403,7 +10765,7 @@ func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_stateme } } { - p.SetState(620) + p.SetState(639) p.Match(KuneiformParserTABLE) if p.HasError() { // Recognition error - abort rule @@ -10411,14 +10773,14 @@ func (p *KuneiformParser) Alter_table_statement() (localctx IAlter_table_stateme } } { - p.SetState(621) + p.SetState(640) var _x = p.Identifier() localctx.(*Alter_table_statementContext).table = _x } { - p.SetState(622) + p.SetState(641) p.Alter_table_action() } @@ -11060,19 +11422,19 @@ func (s *Drop_columnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionContext) { localctx = NewAlter_table_actionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 80, KuneiformParserRULE_alter_table_action) - p.SetState(667) + p.EnterRule(localctx, 84, KuneiformParserRULE_alter_table_action) + p.SetState(686) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 65, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 67, p.GetParserRuleContext()) { case 1: localctx = NewAdd_column_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(624) + p.SetState(643) p.Match(KuneiformParserALTER) if p.HasError() { // Recognition error - abort rule @@ -11080,7 +11442,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(625) + p.SetState(644) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11088,21 +11450,21 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(626) + p.SetState(645) var _x = p.Identifier() localctx.(*Add_column_constraintContext).column = _x } { - p.SetState(627) + p.SetState(646) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(632) + p.SetState(651) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11111,7 +11473,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserNOT: { - p.SetState(628) + p.SetState(647) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -11119,7 +11481,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(629) + p.SetState(648) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -11129,7 +11491,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont case KuneiformParserDEFAULT: { - p.SetState(630) + p.SetState(649) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -11137,7 +11499,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(631) + p.SetState(650) p.Literal() } @@ -11150,7 +11512,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewDrop_column_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(634) + p.SetState(653) p.Match(KuneiformParserALTER) if p.HasError() { // Recognition error - abort rule @@ -11158,7 +11520,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(635) + p.SetState(654) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11166,21 +11528,21 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(636) + p.SetState(655) var _x = p.Identifier() localctx.(*Drop_column_constraintContext).column = _x } { - p.SetState(637) + p.SetState(656) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(643) + p.SetState(662) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11189,7 +11551,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont switch p.GetTokenStream().LA(1) { case KuneiformParserNOT: { - p.SetState(638) + p.SetState(657) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -11197,7 +11559,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(639) + p.SetState(658) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -11207,7 +11569,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont case KuneiformParserDEFAULT: { - p.SetState(640) + p.SetState(659) p.Match(KuneiformParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -11217,7 +11579,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont case KuneiformParserCONSTRAINT: { - p.SetState(641) + p.SetState(660) p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule @@ -11225,7 +11587,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(642) + p.SetState(661) p.Identifier() } @@ -11238,7 +11600,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewAdd_columnContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(645) + p.SetState(664) p.Match(KuneiformParserADD) if p.HasError() { // Recognition error - abort rule @@ -11246,7 +11608,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(646) + p.SetState(665) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11254,14 +11616,14 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(647) + p.SetState(666) var _x = p.Identifier() localctx.(*Add_columnContext).column = _x } { - p.SetState(648) + p.SetState(667) p.Type_() } @@ -11269,7 +11631,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewDrop_columnContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(650) + p.SetState(669) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11277,7 +11639,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(651) + p.SetState(670) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11285,7 +11647,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(652) + p.SetState(671) var _x = p.Identifier() @@ -11296,7 +11658,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewRename_columnContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(653) + p.SetState(672) p.Match(KuneiformParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -11304,7 +11666,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(654) + p.SetState(673) p.Match(KuneiformParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -11312,14 +11674,14 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(655) + p.SetState(674) var _x = p.Identifier() localctx.(*Rename_columnContext).old_column = _x } { - p.SetState(656) + p.SetState(675) p.Match(KuneiformParserTO) if p.HasError() { // Recognition error - abort rule @@ -11327,7 +11689,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(657) + p.SetState(676) var _x = p.Identifier() @@ -11338,7 +11700,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewRename_tableContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(659) + p.SetState(678) p.Match(KuneiformParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -11346,7 +11708,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(660) + p.SetState(679) p.Match(KuneiformParserTO) if p.HasError() { // Recognition error - abort rule @@ -11354,7 +11716,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(661) + p.SetState(680) var _x = p.Identifier() @@ -11365,7 +11727,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewAdd_table_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(662) + p.SetState(681) p.Match(KuneiformParserADD) if p.HasError() { // Recognition error - abort rule @@ -11373,7 +11735,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(663) + p.SetState(682) p.Table_constraint_def() } @@ -11381,7 +11743,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont localctx = NewDrop_table_constraintContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(664) + p.SetState(683) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11389,7 +11751,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(665) + p.SetState(684) p.Match(KuneiformParserCONSTRAINT) if p.HasError() { // Recognition error - abort rule @@ -11397,7 +11759,7 @@ func (p *KuneiformParser) Alter_table_action() (localctx IAlter_table_actionCont } } { - p.SetState(666) + p.SetState(685) p.Identifier() } @@ -11621,19 +11983,19 @@ func (s *Create_index_statementContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_statementContext) { localctx = NewCreate_index_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 82, KuneiformParserRULE_create_index_statement) + p.EnterRule(localctx, 86, KuneiformParserRULE_create_index_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(669) + p.SetState(688) p.Match(KuneiformParserCREATE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(671) + p.SetState(690) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11642,7 +12004,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state if _la == KuneiformParserUNIQUE { { - p.SetState(670) + p.SetState(689) p.Match(KuneiformParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -11652,14 +12014,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } { - p.SetState(673) + p.SetState(692) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(677) + p.SetState(696) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11668,7 +12030,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state if _la == KuneiformParserIF { { - p.SetState(674) + p.SetState(693) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -11676,7 +12038,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(675) + p.SetState(694) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -11684,7 +12046,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(676) + p.SetState(695) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -11693,7 +12055,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } - p.SetState(680) + p.SetState(699) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11702,7 +12064,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(679) + p.SetState(698) var _x = p.Identifier() @@ -11711,7 +12073,7 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } { - p.SetState(682) + p.SetState(701) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -11719,14 +12081,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(683) + p.SetState(702) var _x = p.Identifier() localctx.(*Create_index_statementContext).table = _x } { - p.SetState(684) + p.SetState(703) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -11734,14 +12096,14 @@ func (p *KuneiformParser) Create_index_statement() (localctx ICreate_index_state } } { - p.SetState(685) + p.SetState(704) var _x = p.Identifier_list() localctx.(*Create_index_statementContext).columns = _x } { - p.SetState(686) + p.SetState(705) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -11875,12 +12237,12 @@ func (s *Drop_index_statementContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statementContext) { localctx = NewDrop_index_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 84, KuneiformParserRULE_drop_index_statement) + p.EnterRule(localctx, 88, KuneiformParserRULE_drop_index_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(688) + p.SetState(707) p.Match(KuneiformParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11888,14 +12250,14 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } } { - p.SetState(689) + p.SetState(708) p.Match(KuneiformParserINDEX) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(692) + p.SetState(711) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11904,7 +12266,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement if _la == KuneiformParserIF { { - p.SetState(690) + p.SetState(709) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -11912,7 +12274,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } } { - p.SetState(691) + p.SetState(710) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -11922,7 +12284,7 @@ func (p *KuneiformParser) Drop_index_statement() (localctx IDrop_index_statement } { - p.SetState(694) + p.SetState(713) var _x = p.Identifier() @@ -12231,15 +12593,15 @@ func (s *Select_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) { localctx = NewSelect_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 86, KuneiformParserRULE_select_statement) + p.EnterRule(localctx, 90, KuneiformParserRULE_select_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(696) + p.SetState(715) p.Select_core() } - p.SetState(702) + p.SetState(721) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12248,22 +12610,22 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for (int64((_la-106)) & ^0x3f) == 0 && ((int64(1)<<(_la-106))&7) != 0 { { - p.SetState(697) + p.SetState(716) p.Compound_operator() } { - p.SetState(698) + p.SetState(717) p.Select_core() } - p.SetState(704) + p.SetState(723) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(715) + p.SetState(734) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12272,7 +12634,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserORDER { { - p.SetState(705) + p.SetState(724) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -12280,7 +12642,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(706) + p.SetState(725) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -12288,10 +12650,10 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(707) + p.SetState(726) p.Ordering_term() } - p.SetState(712) + p.SetState(731) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12300,7 +12662,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(708) + p.SetState(727) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -12308,11 +12670,11 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(709) + p.SetState(728) p.Ordering_term() } - p.SetState(714) + p.SetState(733) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12321,7 +12683,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(719) + p.SetState(738) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12330,7 +12692,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserLIMIT { { - p.SetState(717) + p.SetState(736) p.Match(KuneiformParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -12338,7 +12700,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(718) + p.SetState(737) var _x = p.sql_expr(0) @@ -12346,7 +12708,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } - p.SetState(723) + p.SetState(742) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12355,7 +12717,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) if _la == KuneiformParserOFFSET { { - p.SetState(721) + p.SetState(740) p.Match(KuneiformParserOFFSET) if p.HasError() { // Recognition error - abort rule @@ -12363,7 +12725,7 @@ func (p *KuneiformParser) Select_statement() (localctx ISelect_statementContext) } } { - p.SetState(722) + p.SetState(741) var _x = p.sql_expr(0) @@ -12470,10 +12832,10 @@ func (s *Compound_operatorContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContext) { localctx = NewCompound_operatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 88, KuneiformParserRULE_compound_operator) + p.EnterRule(localctx, 92, KuneiformParserRULE_compound_operator) var _la int - p.SetState(731) + p.SetState(750) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12483,14 +12845,14 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserUNION: p.EnterOuterAlt(localctx, 1) { - p.SetState(725) + p.SetState(744) p.Match(KuneiformParserUNION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(727) + p.SetState(746) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12499,7 +12861,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex if _la == KuneiformParserALL { { - p.SetState(726) + p.SetState(745) p.Match(KuneiformParserALL) if p.HasError() { // Recognition error - abort rule @@ -12512,7 +12874,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserINTERSECT: p.EnterOuterAlt(localctx, 2) { - p.SetState(729) + p.SetState(748) p.Match(KuneiformParserINTERSECT) if p.HasError() { // Recognition error - abort rule @@ -12523,7 +12885,7 @@ func (p *KuneiformParser) Compound_operator() (localctx ICompound_operatorContex case KuneiformParserEXCEPT: p.EnterOuterAlt(localctx, 3) { - p.SetState(730) + p.SetState(749) p.Match(KuneiformParserEXCEPT) if p.HasError() { // Recognition error - abort rule @@ -12656,15 +13018,15 @@ func (s *Ordering_termContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { localctx = NewOrdering_termContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 90, KuneiformParserRULE_ordering_term) + p.EnterRule(localctx, 94, KuneiformParserRULE_ordering_term) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(733) + p.SetState(752) p.sql_expr(0) } - p.SetState(735) + p.SetState(754) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12673,7 +13035,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserASC || _la == KuneiformParserDESC { { - p.SetState(734) + p.SetState(753) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserASC || _la == KuneiformParserDESC) { @@ -12685,7 +13047,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } - p.SetState(739) + p.SetState(758) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12694,7 +13056,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { if _la == KuneiformParserNULLS { { - p.SetState(737) + p.SetState(756) p.Match(KuneiformParserNULLS) if p.HasError() { // Recognition error - abort rule @@ -12702,7 +13064,7 @@ func (p *KuneiformParser) Ordering_term() (localctx IOrdering_termContext) { } } { - p.SetState(738) + p.SetState(757) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserFIRST || _la == KuneiformParserLAST) { @@ -13135,19 +13497,19 @@ func (s *Select_coreContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { localctx = NewSelect_coreContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 92, KuneiformParserRULE_select_core) + p.EnterRule(localctx, 96, KuneiformParserRULE_select_core) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(741) + p.SetState(760) p.Match(KuneiformParserSELECT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(743) + p.SetState(762) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13156,7 +13518,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserDISTINCT { { - p.SetState(742) + p.SetState(761) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -13166,10 +13528,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } { - p.SetState(745) + p.SetState(764) p.Result_column() } - p.SetState(750) + p.SetState(769) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13178,7 +13540,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(746) + p.SetState(765) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -13186,18 +13548,18 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(747) + p.SetState(766) p.Result_column() } - p.SetState(752) + p.SetState(771) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(761) + p.SetState(780) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13206,7 +13568,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserFROM { { - p.SetState(753) + p.SetState(772) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -13214,10 +13576,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(754) + p.SetState(773) p.Relation() } - p.SetState(758) + p.SetState(777) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13226,11 +13588,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(755) + p.SetState(774) p.Join() } - p.SetState(760) + p.SetState(779) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13239,7 +13601,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(765) + p.SetState(784) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13248,7 +13610,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWHERE { { - p.SetState(763) + p.SetState(782) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -13256,7 +13618,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(764) + p.SetState(783) var _x = p.sql_expr(0) @@ -13264,7 +13626,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(774) + p.SetState(793) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13273,7 +13635,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserGROUP { { - p.SetState(767) + p.SetState(786) p.Match(KuneiformParserGROUP) if p.HasError() { // Recognition error - abort rule @@ -13281,7 +13643,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(768) + p.SetState(787) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -13289,13 +13651,13 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(769) + p.SetState(788) var _x = p.Sql_expr_list() localctx.(*Select_coreContext).group_by = _x } - p.SetState(772) + p.SetState(791) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13304,7 +13666,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserHAVING { { - p.SetState(770) + p.SetState(789) p.Match(KuneiformParserHAVING) if p.HasError() { // Recognition error - abort rule @@ -13312,7 +13674,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(771) + p.SetState(790) var _x = p.sql_expr(0) @@ -13322,7 +13684,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } - p.SetState(790) + p.SetState(809) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13331,7 +13693,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { if _la == KuneiformParserWINDOW { { - p.SetState(776) + p.SetState(795) p.Match(KuneiformParserWINDOW) if p.HasError() { // Recognition error - abort rule @@ -13339,11 +13701,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(777) + p.SetState(796) p.Identifier() } { - p.SetState(778) + p.SetState(797) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13351,10 +13713,10 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(779) + p.SetState(798) p.Window() } - p.SetState(787) + p.SetState(806) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13363,7 +13725,7 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { for _la == KuneiformParserCOMMA { { - p.SetState(780) + p.SetState(799) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -13371,11 +13733,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(781) + p.SetState(800) p.Identifier() } { - p.SetState(782) + p.SetState(801) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13383,11 +13745,11 @@ func (p *KuneiformParser) Select_core() (localctx ISelect_coreContext) { } } { - p.SetState(783) + p.SetState(802) p.Window() } - p.SetState(789) + p.SetState(808) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13626,10 +13988,10 @@ func (s *Subquery_relationContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewRelationContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 94, KuneiformParserRULE_relation) + p.EnterRule(localctx, 98, KuneiformParserRULE_relation) var _la int - p.SetState(808) + p.SetState(827) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13640,13 +14002,13 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewTable_relationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(792) + p.SetState(811) var _x = p.Identifier() localctx.(*Table_relationContext).table_name = _x } - p.SetState(797) + p.SetState(816) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13654,7 +14016,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(794) + p.SetState(813) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13663,7 +14025,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(793) + p.SetState(812) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13673,7 +14035,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(796) + p.SetState(815) var _x = p.Identifier() @@ -13686,7 +14048,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { localctx = NewSubquery_relationContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(799) + p.SetState(818) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -13694,18 +14056,18 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } } { - p.SetState(800) + p.SetState(819) p.Select_statement() } { - p.SetState(801) + p.SetState(820) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(806) + p.SetState(825) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13713,7 +14075,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(803) + p.SetState(822) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13722,7 +14084,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { if _la == KuneiformParserAS { { - p.SetState(802) + p.SetState(821) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -13732,7 +14094,7 @@ func (p *KuneiformParser) Relation() (localctx IRelationContext) { } { - p.SetState(805) + p.SetState(824) var _x = p.Identifier() @@ -13888,11 +14250,11 @@ func (s *JoinContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Join() (localctx IJoinContext) { localctx = NewJoinContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 96, KuneiformParserRULE_join) + p.EnterRule(localctx, 100, KuneiformParserRULE_join) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(811) + p.SetState(830) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13901,7 +14263,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { if (int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0 { { - p.SetState(810) + p.SetState(829) _la = p.GetTokenStream().LA(1) if !((int64((_la-79)) & ^0x3f) == 0 && ((int64(1)<<(_la-79))&67108871) != 0) { @@ -13914,7 +14276,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } { - p.SetState(813) + p.SetState(832) p.Match(KuneiformParserJOIN) if p.HasError() { // Recognition error - abort rule @@ -13922,11 +14284,11 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(814) + p.SetState(833) p.Relation() } { - p.SetState(815) + p.SetState(834) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -13934,7 +14296,7 @@ func (p *KuneiformParser) Join() (localctx IJoinContext) { } } { - p.SetState(816) + p.SetState(835) p.sql_expr(0) } @@ -14128,24 +14490,24 @@ func (s *Wildcard_result_columnContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { localctx = NewResult_columnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 98, KuneiformParserRULE_result_column) + p.EnterRule(localctx, 102, KuneiformParserRULE_result_column) var _la int - p.SetState(831) + p.SetState(850) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 97, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 99, p.GetParserRuleContext()) { case 1: localctx = NewExpression_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(818) + p.SetState(837) p.sql_expr(0) } - p.SetState(823) + p.SetState(842) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14153,7 +14515,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(820) + p.SetState(839) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14162,7 +14524,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserAS { { - p.SetState(819) + p.SetState(838) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14172,7 +14534,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(822) + p.SetState(841) p.Identifier() } @@ -14181,7 +14543,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { case 2: localctx = NewWildcard_result_columnContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(828) + p.SetState(847) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14190,14 +14552,14 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserIDENTIFIER { { - p.SetState(825) + p.SetState(844) var _x = p.Identifier() localctx.(*Wildcard_result_columnContext).table_name = _x } { - p.SetState(826) + p.SetState(845) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -14207,7 +14569,7 @@ func (p *KuneiformParser) Result_column() (localctx IResult_columnContext) { } { - p.SetState(830) + p.SetState(849) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -14528,12 +14890,12 @@ func (s *Update_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) { localctx = NewUpdate_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 100, KuneiformParserRULE_update_statement) + p.EnterRule(localctx, 104, KuneiformParserRULE_update_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(833) + p.SetState(852) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -14541,13 +14903,13 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(834) + p.SetState(853) var _x = p.Identifier() localctx.(*Update_statementContext).table_name = _x } - p.SetState(839) + p.SetState(858) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14555,7 +14917,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(836) + p.SetState(855) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14564,7 +14926,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserAS { { - p.SetState(835) + p.SetState(854) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -14574,7 +14936,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(838) + p.SetState(857) var _x = p.Identifier() @@ -14583,7 +14945,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } { - p.SetState(841) + p.SetState(860) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -14591,10 +14953,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(842) + p.SetState(861) p.Update_set_clause() } - p.SetState(847) + p.SetState(866) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14603,7 +14965,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(843) + p.SetState(862) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -14611,18 +14973,18 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(844) + p.SetState(863) p.Update_set_clause() } - p.SetState(849) + p.SetState(868) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(858) + p.SetState(877) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14631,7 +14993,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserFROM { { - p.SetState(850) + p.SetState(869) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -14639,10 +15001,10 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(851) + p.SetState(870) p.Relation() } - p.SetState(855) + p.SetState(874) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14651,11 +15013,11 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) for (int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&134217743) != 0 { { - p.SetState(852) + p.SetState(871) p.Join() } - p.SetState(857) + p.SetState(876) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14664,7 +15026,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } - p.SetState(862) + p.SetState(881) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14673,7 +15035,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(860) + p.SetState(879) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -14681,7 +15043,7 @@ func (p *KuneiformParser) Update_statement() (localctx IUpdate_statementContext) } } { - p.SetState(861) + p.SetState(880) var _x = p.sql_expr(0) @@ -14818,17 +15180,17 @@ func (s *Update_set_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContext) { localctx = NewUpdate_set_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 102, KuneiformParserRULE_update_set_clause) + p.EnterRule(localctx, 106, KuneiformParserRULE_update_set_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(864) + p.SetState(883) var _x = p.Identifier() localctx.(*Update_set_clauseContext).column = _x } { - p.SetState(865) + p.SetState(884) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -14836,7 +15198,7 @@ func (p *KuneiformParser) Update_set_clause() (localctx IUpdate_set_clauseContex } } { - p.SetState(866) + p.SetState(885) p.sql_expr(0) } @@ -15140,12 +15502,12 @@ func (s *Insert_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) { localctx = NewInsert_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 104, KuneiformParserRULE_insert_statement) + p.EnterRule(localctx, 108, KuneiformParserRULE_insert_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(868) + p.SetState(887) p.Match(KuneiformParserINSERT) if p.HasError() { // Recognition error - abort rule @@ -15153,7 +15515,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(869) + p.SetState(888) p.Match(KuneiformParserINTO) if p.HasError() { // Recognition error - abort rule @@ -15161,13 +15523,13 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(870) + p.SetState(889) var _x = p.Identifier() localctx.(*Insert_statementContext).table_name = _x } - p.SetState(875) + p.SetState(894) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15175,7 +15537,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(872) + p.SetState(891) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15184,7 +15546,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserAS { { - p.SetState(871) + p.SetState(890) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -15194,7 +15556,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } { - p.SetState(874) + p.SetState(893) var _x = p.Identifier() @@ -15202,7 +15564,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(881) + p.SetState(900) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15211,7 +15573,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserLPAREN { { - p.SetState(877) + p.SetState(896) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15219,14 +15581,14 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(878) + p.SetState(897) var _x = p.Identifier_list() localctx.(*Insert_statementContext).target_columns = _x } { - p.SetState(879) + p.SetState(898) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15235,7 +15597,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(898) + p.SetState(917) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15244,7 +15606,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) switch p.GetTokenStream().LA(1) { case KuneiformParserVALUES: { - p.SetState(883) + p.SetState(902) p.Match(KuneiformParserVALUES) if p.HasError() { // Recognition error - abort rule @@ -15252,7 +15614,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(884) + p.SetState(903) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15260,18 +15622,18 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(885) + p.SetState(904) p.Sql_expr_list() } { - p.SetState(886) + p.SetState(905) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(894) + p.SetState(913) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15280,7 +15642,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) for _la == KuneiformParserCOMMA { { - p.SetState(887) + p.SetState(906) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15288,7 +15650,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(888) + p.SetState(907) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15296,11 +15658,11 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } { - p.SetState(889) + p.SetState(908) p.Sql_expr_list() } { - p.SetState(890) + p.SetState(909) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -15308,7 +15670,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) } } - p.SetState(896) + p.SetState(915) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15318,7 +15680,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) case KuneiformParserSELECT: { - p.SetState(897) + p.SetState(916) p.Select_statement() } @@ -15326,7 +15688,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(901) + p.SetState(920) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15335,7 +15697,7 @@ func (p *KuneiformParser) Insert_statement() (localctx IInsert_statementContext) if _la == KuneiformParserON { { - p.SetState(900) + p.SetState(919) p.Upsert_clause() } @@ -15617,12 +15979,12 @@ func (s *Upsert_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { localctx = NewUpsert_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 106, KuneiformParserRULE_upsert_clause) + p.EnterRule(localctx, 110, KuneiformParserRULE_upsert_clause) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(903) + p.SetState(922) p.Match(KuneiformParserON) if p.HasError() { // Recognition error - abort rule @@ -15630,14 +15992,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(904) + p.SetState(923) p.Match(KuneiformParserCONFLICT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(912) + p.SetState(931) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15646,7 +16008,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserLPAREN { { - p.SetState(905) + p.SetState(924) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -15654,21 +16016,21 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(906) + p.SetState(925) var _x = p.Identifier_list() localctx.(*Upsert_clauseContext).conflict_columns = _x } { - p.SetState(907) + p.SetState(926) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(910) + p.SetState(929) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15677,7 +16039,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(908) + p.SetState(927) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -15685,7 +16047,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(909) + p.SetState(928) var _x = p.sql_expr(0) @@ -15696,14 +16058,14 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } { - p.SetState(914) + p.SetState(933) p.Match(KuneiformParserDO) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(930) + p.SetState(949) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15712,7 +16074,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserNOTHING: { - p.SetState(915) + p.SetState(934) p.Match(KuneiformParserNOTHING) if p.HasError() { // Recognition error - abort rule @@ -15722,7 +16084,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { case KuneiformParserUPDATE: { - p.SetState(916) + p.SetState(935) p.Match(KuneiformParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -15730,7 +16092,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(917) + p.SetState(936) p.Match(KuneiformParserSET) if p.HasError() { // Recognition error - abort rule @@ -15738,10 +16100,10 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(918) + p.SetState(937) p.Update_set_clause() } - p.SetState(923) + p.SetState(942) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15750,7 +16112,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { for _la == KuneiformParserCOMMA { { - p.SetState(919) + p.SetState(938) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -15758,18 +16120,18 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(920) + p.SetState(939) p.Update_set_clause() } - p.SetState(925) + p.SetState(944) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(928) + p.SetState(947) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15778,7 +16140,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { if _la == KuneiformParserWHERE { { - p.SetState(926) + p.SetState(945) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -15786,7 +16148,7 @@ func (p *KuneiformParser) Upsert_clause() (localctx IUpsert_clauseContext) { } } { - p.SetState(927) + p.SetState(946) var _x = p.sql_expr(0) @@ -15991,12 +16353,12 @@ func (s *Delete_statementContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) { localctx = NewDelete_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 108, KuneiformParserRULE_delete_statement) + p.EnterRule(localctx, 112, KuneiformParserRULE_delete_statement) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(932) + p.SetState(951) p.Match(KuneiformParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -16004,7 +16366,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(933) + p.SetState(952) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -16012,13 +16374,13 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(934) + p.SetState(953) var _x = p.Identifier() localctx.(*Delete_statementContext).table_name = _x } - p.SetState(939) + p.SetState(958) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16026,7 +16388,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) _la = p.GetTokenStream().LA(1) if _la == KuneiformParserDOUBLE_QUOTE || _la == KuneiformParserAS || _la == KuneiformParserIDENTIFIER { - p.SetState(936) + p.SetState(955) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16035,7 +16397,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserAS { { - p.SetState(935) + p.SetState(954) p.Match(KuneiformParserAS) if p.HasError() { // Recognition error - abort rule @@ -16045,7 +16407,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } { - p.SetState(938) + p.SetState(957) var _x = p.Identifier() @@ -16053,7 +16415,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } - p.SetState(943) + p.SetState(962) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16062,7 +16424,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) if _la == KuneiformParserWHERE { { - p.SetState(941) + p.SetState(960) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -16070,7 +16432,7 @@ func (p *KuneiformParser) Delete_statement() (localctx IDelete_statementContext) } } { - p.SetState(942) + p.SetState(961) var _x = p.sql_expr(0) @@ -17812,27 +18174,27 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewSql_exprContext(p, p.GetParserRuleContext(), _parentState) var _prevctx ISql_exprContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 110 - p.EnterRecursionRule(localctx, 110, KuneiformParserRULE_sql_expr, _p) + _startState := 114 + p.EnterRecursionRule(localctx, 114, KuneiformParserRULE_sql_expr, _p) var _la int var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(1018) + p.SetState(1037) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 132, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 134, p.GetParserRuleContext()) { case 1: localctx = NewParen_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(946) + p.SetState(965) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17840,23 +18202,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(947) + p.SetState(966) p.sql_expr(0) } { - p.SetState(948) + p.SetState(967) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(950) + p.SetState(969) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { { - p.SetState(949) + p.SetState(968) p.Type_cast() } @@ -17869,7 +18231,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(952) + p.SetState(971) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -17880,7 +18242,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(953) + p.SetState(972) p.sql_expr(20) } @@ -17889,15 +18251,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(954) + p.SetState(973) p.Literal() } - p.SetState(956) + p.SetState(975) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 119, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { { - p.SetState(955) + p.SetState(974) p.Type_cast() } @@ -17910,10 +18272,10 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(958) + p.SetState(977) p.Sql_function_call() } - p.SetState(965) + p.SetState(984) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17922,7 +18284,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserFILTER { { - p.SetState(959) + p.SetState(978) p.Match(KuneiformParserFILTER) if p.HasError() { // Recognition error - abort rule @@ -17930,7 +18292,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(960) + p.SetState(979) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17938,7 +18300,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(961) + p.SetState(980) p.Match(KuneiformParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -17946,11 +18308,11 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(962) + p.SetState(981) p.sql_expr(0) } { - p.SetState(963) + p.SetState(982) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -17960,14 +18322,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(967) + p.SetState(986) p.Match(KuneiformParserOVER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(970) + p.SetState(989) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17976,13 +18338,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN: { - p.SetState(968) + p.SetState(987) p.Window() } case KuneiformParserIDENTIFIER: { - p.SetState(969) + p.SetState(988) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -18000,15 +18362,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(972) + p.SetState(991) p.Sql_function_call() } - p.SetState(974) + p.SetState(993) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 122, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 124, p.GetParserRuleContext()) == 1 { { - p.SetState(973) + p.SetState(992) p.Type_cast() } @@ -18021,15 +18383,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(976) + p.SetState(995) p.Variable() } - p.SetState(978) + p.SetState(997) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 123, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 125, p.GetParserRuleContext()) == 1 { { - p.SetState(977) + p.SetState(996) p.Type_cast() } @@ -18041,19 +18403,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewColumn_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(983) + p.SetState(1002) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 124, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 126, p.GetParserRuleContext()) == 1 { { - p.SetState(980) + p.SetState(999) var _x = p.Identifier() localctx.(*Column_sql_exprContext).table = _x } { - p.SetState(981) + p.SetState(1000) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -18065,18 +18427,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(985) + p.SetState(1004) var _x = p.Identifier() localctx.(*Column_sql_exprContext).column = _x } - p.SetState(987) + p.SetState(1006) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 125, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 127, p.GetParserRuleContext()) == 1 { { - p.SetState(986) + p.SetState(1005) p.Type_cast() } @@ -18089,14 +18451,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(989) + p.SetState(1008) p.Match(KuneiformParserCASE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(991) + p.SetState(1010) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18105,7 +18467,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(990) + p.SetState(1009) var _x = p.sql_expr(0) @@ -18113,7 +18475,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(994) + p.SetState(1013) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18122,18 +18484,18 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { for ok := true; ok; ok = _la == KuneiformParserWHEN { { - p.SetState(993) + p.SetState(1012) p.When_then_clause() } - p.SetState(996) + p.SetState(1015) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(1000) + p.SetState(1019) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18142,7 +18504,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserELSE { { - p.SetState(998) + p.SetState(1017) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -18150,7 +18512,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(999) + p.SetState(1018) var _x = p.sql_expr(0) @@ -18159,7 +18521,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1002) + p.SetState(1021) p.Match(KuneiformParserEND) if p.HasError() { // Recognition error - abort rule @@ -18171,7 +18533,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx = NewSubquery_sql_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - p.SetState(1008) + p.SetState(1027) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18179,7 +18541,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _la = p.GetTokenStream().LA(1) if _la == KuneiformParserNOT || _la == KuneiformParserEXISTS { - p.SetState(1005) + p.SetState(1024) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18188,7 +18550,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1004) + p.SetState(1023) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18198,7 +18560,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1007) + p.SetState(1026) p.Match(KuneiformParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -18208,7 +18570,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1010) + p.SetState(1029) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -18216,23 +18578,23 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1011) + p.SetState(1030) p.Select_statement() } { - p.SetState(1012) + p.SetState(1031) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1014) + p.SetState(1033) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 133, p.GetParserRuleContext()) == 1 { { - p.SetState(1013) + p.SetState(1032) p.Type_cast() } @@ -18246,7 +18608,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { _prevctx = localctx { - p.SetState(1016) + p.SetState(1035) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18255,7 +18617,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1017) + p.SetState(1036) p.sql_expr(3) } @@ -18263,12 +18625,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1105) + p.SetState(1124) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 145, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 147, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -18278,26 +18640,26 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1103) + p.SetState(1122) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 144, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 146, p.GetParserRuleContext()) { case 1: localctx = NewArithmetic_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1020) + p.SetState(1039) if !(p.Precpred(p.GetParserRuleContext(), 18)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", "")) goto errorExit } { - p.SetState(1021) + p.SetState(1040) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -18308,7 +18670,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1022) + p.SetState(1041) var _x = p.sql_expr(19) @@ -18320,14 +18682,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1023) + p.SetState(1042) if !(p.Precpred(p.GetParserRuleContext(), 17)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", "")) goto errorExit } { - p.SetState(1024) + p.SetState(1043) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -18338,7 +18700,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1025) + p.SetState(1044) var _x = p.sql_expr(18) @@ -18350,14 +18712,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Arithmetic_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1026) + p.SetState(1045) if !(p.Precpred(p.GetParserRuleContext(), 9)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) goto errorExit } { - p.SetState(1027) + p.SetState(1046) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -18365,7 +18727,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1028) + p.SetState(1047) var _x = p.sql_expr(10) @@ -18377,13 +18739,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Like_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1029) + p.SetState(1048) if !(p.Precpred(p.GetParserRuleContext(), 7)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) goto errorExit } - p.SetState(1031) + p.SetState(1050) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18392,7 +18754,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1030) + p.SetState(1049) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18402,7 +18764,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1033) + p.SetState(1052) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserLIKE || _la == KuneiformParserILIKE) { @@ -18413,7 +18775,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1034) + p.SetState(1053) var _x = p.sql_expr(8) @@ -18425,13 +18787,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Between_sql_exprContext).element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1035) + p.SetState(1054) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } - p.SetState(1037) + p.SetState(1056) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18440,7 +18802,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1036) + p.SetState(1055) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18450,7 +18812,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1039) + p.SetState(1058) p.Match(KuneiformParserBETWEEN) if p.HasError() { // Recognition error - abort rule @@ -18458,14 +18820,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1040) + p.SetState(1059) var _x = p.sql_expr(0) localctx.(*Between_sql_exprContext).lower = _x } { - p.SetState(1041) + p.SetState(1060) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -18473,7 +18835,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1042) + p.SetState(1061) var _x = p.sql_expr(7) @@ -18485,14 +18847,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Comparison_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1044) + p.SetState(1063) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1045) + p.SetState(1064) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -18503,7 +18865,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1046) + p.SetState(1065) var _x = p.sql_expr(6) @@ -18515,14 +18877,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1047) + p.SetState(1066) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1048) + p.SetState(1067) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -18530,7 +18892,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1049) + p.SetState(1068) var _x = p.sql_expr(3) @@ -18542,14 +18904,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Logical_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1050) + p.SetState(1069) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1051) + p.SetState(1070) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -18557,7 +18919,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1052) + p.SetState(1071) var _x = p.sql_expr(2) @@ -18567,14 +18929,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 9: localctx = NewField_access_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1053) + p.SetState(1072) if !(p.Precpred(p.GetParserRuleContext(), 22)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 22)", "")) goto errorExit } { - p.SetState(1054) + p.SetState(1073) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -18582,15 +18944,15 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1055) + p.SetState(1074) p.Identifier() } - p.SetState(1057) + p.SetState(1076) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 137, p.GetParserRuleContext()) == 1 { { - p.SetState(1056) + p.SetState(1075) p.Type_cast() } @@ -18603,30 +18965,30 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Array_access_sql_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1059) + p.SetState(1078) if !(p.Precpred(p.GetParserRuleContext(), 21)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 21)", "")) goto errorExit } { - p.SetState(1060) + p.SetState(1079) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1069) + p.SetState(1088) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 138, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 140, p.GetParserRuleContext()) { case 1: { - p.SetState(1061) + p.SetState(1080) var _x = p.sql_expr(0) @@ -18634,7 +18996,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } case 2: - p.SetState(1063) + p.SetState(1082) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18643,7 +19005,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1062) + p.SetState(1081) var _x = p.sql_expr(0) @@ -18652,14 +19014,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1065) + p.SetState(1084) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1067) + p.SetState(1086) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18668,7 +19030,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843013511807104) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-4611686018158951935) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&3591) != 0) { { - p.SetState(1066) + p.SetState(1085) var _x = p.sql_expr(0) @@ -18681,19 +19043,19 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1071) + p.SetState(1090) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1073) + p.SetState(1092) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 139, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 141, p.GetParserRuleContext()) == 1 { { - p.SetState(1072) + p.SetState(1091) p.Type_cast() } @@ -18704,14 +19066,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case 11: localctx = NewCollate_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1075) + p.SetState(1094) if !(p.Precpred(p.GetParserRuleContext(), 19)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", "")) goto errorExit } { - p.SetState(1076) + p.SetState(1095) p.Match(KuneiformParserCOLLATE) if p.HasError() { // Recognition error - abort rule @@ -18719,20 +19081,20 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1077) + p.SetState(1096) p.Identifier() } case 12: localctx = NewIn_sql_exprContext(p, NewSql_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1078) + p.SetState(1097) if !(p.Precpred(p.GetParserRuleContext(), 8)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) goto errorExit } - p.SetState(1080) + p.SetState(1099) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18741,7 +19103,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1079) + p.SetState(1098) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18751,7 +19113,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } { - p.SetState(1082) + p.SetState(1101) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule @@ -18759,14 +19121,14 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1083) + p.SetState(1102) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1086) + p.SetState(1105) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18775,13 +19137,13 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1084) + p.SetState(1103) p.Sql_expr_list() } case KuneiformParserSELECT: { - p.SetState(1085) + p.SetState(1104) p.Select_statement() } @@ -18790,7 +19152,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { goto errorExit } { - p.SetState(1088) + p.SetState(1107) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -18803,21 +19165,21 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { localctx.(*Is_sql_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_sql_expr) - p.SetState(1090) + p.SetState(1109) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1091) + p.SetState(1110) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1093) + p.SetState(1112) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18826,7 +19188,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { if _la == KuneiformParserNOT { { - p.SetState(1092) + p.SetState(1111) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -18835,7 +19197,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1101) + p.SetState(1120) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18844,7 +19206,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1095) + p.SetState(1114) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -18852,7 +19214,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1096) + p.SetState(1115) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -18860,7 +19222,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } { - p.SetState(1097) + p.SetState(1116) var _x = p.sql_expr(0) @@ -18869,7 +19231,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserNULL: { - p.SetState(1098) + p.SetState(1117) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -18879,7 +19241,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserTRUE: { - p.SetState(1099) + p.SetState(1118) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -18889,7 +19251,7 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { case KuneiformParserFALSE: { - p.SetState(1100) + p.SetState(1119) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -18907,12 +19269,12 @@ func (p *KuneiformParser) sql_expr(_p int) (localctx ISql_exprContext) { } } - p.SetState(1107) + p.SetState(1126) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 145, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 147, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -19107,19 +19469,19 @@ func (s *WindowContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Window() (localctx IWindowContext) { localctx = NewWindowContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 112, KuneiformParserRULE_window) + p.EnterRule(localctx, 116, KuneiformParserRULE_window) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1108) + p.SetState(1127) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1112) + p.SetState(1131) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19128,7 +19490,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserPARTITION { { - p.SetState(1109) + p.SetState(1128) p.Match(KuneiformParserPARTITION) if p.HasError() { // Recognition error - abort rule @@ -19136,7 +19498,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1110) + p.SetState(1129) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -19144,7 +19506,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1111) + p.SetState(1130) var _x = p.Sql_expr_list() @@ -19152,7 +19514,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } - p.SetState(1124) + p.SetState(1143) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19161,7 +19523,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { if _la == KuneiformParserORDER { { - p.SetState(1114) + p.SetState(1133) p.Match(KuneiformParserORDER) if p.HasError() { // Recognition error - abort rule @@ -19169,7 +19531,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1115) + p.SetState(1134) p.Match(KuneiformParserBY) if p.HasError() { // Recognition error - abort rule @@ -19177,10 +19539,10 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1116) + p.SetState(1135) p.Ordering_term() } - p.SetState(1121) + p.SetState(1140) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19189,7 +19551,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1117) + p.SetState(1136) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -19197,11 +19559,11 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } } { - p.SetState(1118) + p.SetState(1137) p.Ordering_term() } - p.SetState(1123) + p.SetState(1142) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19211,7 +19573,7 @@ func (p *KuneiformParser) Window() (localctx IWindowContext) { } { - p.SetState(1126) + p.SetState(1145) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19372,10 +19734,10 @@ func (s *When_then_clauseContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) { localctx = NewWhen_then_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 114, KuneiformParserRULE_when_then_clause) + p.EnterRule(localctx, 118, KuneiformParserRULE_when_then_clause) p.EnterOuterAlt(localctx, 1) { - p.SetState(1128) + p.SetState(1147) p.Match(KuneiformParserWHEN) if p.HasError() { // Recognition error - abort rule @@ -19383,14 +19745,14 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(1129) + p.SetState(1148) var _x = p.sql_expr(0) localctx.(*When_then_clauseContext).when_condition = _x } { - p.SetState(1130) + p.SetState(1149) p.Match(KuneiformParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -19398,7 +19760,7 @@ func (p *KuneiformParser) When_then_clause() (localctx IWhen_then_clauseContext) } } { - p.SetState(1131) + p.SetState(1150) var _x = p.sql_expr(0) @@ -19536,15 +19898,15 @@ func (s *Sql_expr_listContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { localctx = NewSql_expr_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 116, KuneiformParserRULE_sql_expr_list) + p.EnterRule(localctx, 120, KuneiformParserRULE_sql_expr_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1133) + p.SetState(1152) p.sql_expr(0) } - p.SetState(1138) + p.SetState(1157) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19553,7 +19915,7 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1134) + p.SetState(1153) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -19561,11 +19923,11 @@ func (p *KuneiformParser) Sql_expr_list() (localctx ISql_expr_listContext) { } } { - p.SetState(1135) + p.SetState(1154) p.sql_expr(0) } - p.SetState(1140) + p.SetState(1159) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19718,31 +20080,31 @@ func (s *Normal_call_sqlContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContext) { localctx = NewSql_function_callContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 118, KuneiformParserRULE_sql_function_call) + p.EnterRule(localctx, 122, KuneiformParserRULE_sql_function_call) var _la int localctx = NewNormal_call_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1141) + p.SetState(1160) p.Identifier() } { - p.SetState(1142) + p.SetState(1161) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1148) + p.SetState(1167) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { case KuneiformParserLPAREN, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserDOUBLE_QUOTE, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserEXISTS, KuneiformParserCASE, KuneiformParserDISTINCT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: - p.SetState(1144) + p.SetState(1163) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19751,7 +20113,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex if _la == KuneiformParserDISTINCT { { - p.SetState(1143) + p.SetState(1162) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -19761,13 +20123,13 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex } { - p.SetState(1146) + p.SetState(1165) p.Sql_expr_list() } case KuneiformParserSTAR: { - p.SetState(1147) + p.SetState(1166) p.Match(KuneiformParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -19780,7 +20142,7 @@ func (p *KuneiformParser) Sql_function_call() (localctx ISql_function_callContex default: } { - p.SetState(1150) + p.SetState(1169) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19919,11 +20281,11 @@ func (s *Action_blockContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { localctx = NewAction_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 120, KuneiformParserRULE_action_block) + p.EnterRule(localctx, 124, KuneiformParserRULE_action_block) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1157) + p.SetState(1176) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19932,11 +20294,11 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { for _la == KuneiformParserDELETE || _la == KuneiformParserUPDATE || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&492581209245185) != 0) { { - p.SetState(1152) + p.SetState(1171) p.Action_statement() } { - p.SetState(1153) + p.SetState(1172) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -19944,7 +20306,7 @@ func (p *KuneiformParser) Action_block() (localctx IAction_blockContext) { } } - p.SetState(1159) + p.SetState(1178) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20205,21 +20567,21 @@ func (s *Sql_actionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) { localctx = NewAction_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 122, KuneiformParserRULE_action_statement) + p.EnterRule(localctx, 126, KuneiformParserRULE_action_statement) var _la int - p.SetState(1180) + p.SetState(1199) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 156, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 158, p.GetParserRuleContext()) { case 1: localctx = NewSql_actionContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1160) + p.SetState(1179) p.Sql_statement() } @@ -20227,7 +20589,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) localctx = NewLocal_actionContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(1161) + p.SetState(1180) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20235,14 +20597,14 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1162) + p.SetState(1181) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1164) + p.SetState(1183) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20251,13 +20613,13 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1163) + p.SetState(1182) p.Procedure_expr_list() } } { - p.SetState(1166) + p.SetState(1185) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20268,7 +20630,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) case 3: localctx = NewExtension_actionContext(p, localctx) p.EnterOuterAlt(localctx, 3) - p.SetState(1170) + p.SetState(1189) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20277,11 +20639,11 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if _la == KuneiformParserVARIABLE || _la == KuneiformParserCONTEXTUAL_VARIABLE { { - p.SetState(1167) + p.SetState(1186) p.Variable_list() } { - p.SetState(1168) + p.SetState(1187) p.Match(KuneiformParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -20291,7 +20653,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } { - p.SetState(1172) + p.SetState(1191) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20299,7 +20661,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1173) + p.SetState(1192) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -20307,7 +20669,7 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1174) + p.SetState(1193) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20315,14 +20677,14 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) } } { - p.SetState(1175) + p.SetState(1194) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1177) + p.SetState(1196) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20331,13 +20693,13 @@ func (p *KuneiformParser) Action_statement() (localctx IAction_statementContext) if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1176) + p.SetState(1195) p.Procedure_expr_list() } } { - p.SetState(1179) + p.SetState(1198) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20470,11 +20832,11 @@ func (s *Procedure_blockContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *KuneiformParser) Procedure_block() (localctx IProcedure_blockContext) { localctx = NewProcedure_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 124, KuneiformParserRULE_procedure_block) + p.EnterRule(localctx, 128, KuneiformParserRULE_procedure_block) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1185) + p.SetState(1204) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20483,11 +20845,11 @@ func (p *KuneiformParser) Procedure_block() (localctx IProcedure_blockContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205759403725291247) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1182) + p.SetState(1201) p.Proc_statement() } - p.SetState(1187) + p.SetState(1206) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21512,27 +21874,27 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx = NewProcedure_exprContext(p, p.GetParserRuleContext(), _parentState) var _prevctx IProcedure_exprContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 126 - p.EnterRecursionRule(localctx, 126, KuneiformParserRULE_procedure_expr, _p) + _startState := 130 + p.EnterRecursionRule(localctx, 130, KuneiformParserRULE_procedure_expr, _p) var _la int var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(1219) + p.SetState(1238) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 164, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 166, p.GetParserRuleContext()) { case 1: localctx = NewParen_procedure_exprContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1189) + p.SetState(1208) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -21540,23 +21902,23 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1190) + p.SetState(1209) p.procedure_expr(0) } { - p.SetState(1191) + p.SetState(1210) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1193) + p.SetState(1212) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 158, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { { - p.SetState(1192) + p.SetState(1211) p.Type_cast() } @@ -21569,7 +21931,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1195) + p.SetState(1214) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&3147776) != 0) { @@ -21580,7 +21942,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1196) + p.SetState(1215) p.procedure_expr(13) } @@ -21589,15 +21951,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1197) + p.SetState(1216) p.Literal() } - p.SetState(1199) + p.SetState(1218) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 159, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 161, p.GetParserRuleContext()) == 1 { { - p.SetState(1198) + p.SetState(1217) p.Type_cast() } @@ -21610,15 +21972,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1201) + p.SetState(1220) p.Procedure_function_call() } - p.SetState(1203) + p.SetState(1222) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 162, p.GetParserRuleContext()) == 1 { { - p.SetState(1202) + p.SetState(1221) p.Type_cast() } @@ -21631,15 +21993,15 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1205) + p.SetState(1224) p.Variable() } - p.SetState(1207) + p.SetState(1226) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 161, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 163, p.GetParserRuleContext()) == 1 { { - p.SetState(1206) + p.SetState(1225) p.Type_cast() } @@ -21652,14 +22014,14 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(1209) + p.SetState(1228) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1211) + p.SetState(1230) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21668,25 +22030,25 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1210) + p.SetState(1229) p.Procedure_expr_list() } } { - p.SetState(1213) + p.SetState(1232) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1215) + p.SetState(1234) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 163, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { { - p.SetState(1214) + p.SetState(1233) p.Type_cast() } @@ -21700,7 +22062,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex _prevctx = localctx { - p.SetState(1217) + p.SetState(1236) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -21709,7 +22071,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1218) + p.SetState(1237) p.procedure_expr(3) } @@ -21717,12 +22079,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1276) + p.SetState(1295) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 173, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 175, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -21732,24 +22094,24 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(1274) + p.SetState(1293) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 172, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 174, p.GetParserRuleContext()) { case 1: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1221) + p.SetState(1240) if !(p.Precpred(p.GetParserRuleContext(), 12)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 12)", "")) goto errorExit } { - p.SetState(1222) + p.SetState(1241) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4734976) != 0) { @@ -21760,21 +22122,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1223) + p.SetState(1242) p.procedure_expr(13) } case 2: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1224) + p.SetState(1243) if !(p.Precpred(p.GetParserRuleContext(), 11)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 11)", "")) goto errorExit } { - p.SetState(1225) + p.SetState(1244) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserPLUS || _la == KuneiformParserMINUS) { @@ -21785,21 +22147,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1226) + p.SetState(1245) p.procedure_expr(12) } case 3: localctx = NewProcedure_expr_arithmeticContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1227) + p.SetState(1246) if !(p.Precpred(p.GetParserRuleContext(), 6)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) goto errorExit } { - p.SetState(1228) + p.SetState(1247) p.Match(KuneiformParserCONCAT) if p.HasError() { // Recognition error - abort rule @@ -21807,21 +22169,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1229) + p.SetState(1248) p.procedure_expr(7) } case 4: localctx = NewComparison_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1230) + p.SetState(1249) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(1231) + p.SetState(1250) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&260145152) != 0) { @@ -21832,21 +22194,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1232) + p.SetState(1251) p.procedure_expr(6) } case 5: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1233) + p.SetState(1252) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(1234) + p.SetState(1253) p.Match(KuneiformParserAND) if p.HasError() { // Recognition error - abort rule @@ -21854,21 +22216,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1235) + p.SetState(1254) p.procedure_expr(3) } case 6: localctx = NewLogical_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1236) + p.SetState(1255) if !(p.Precpred(p.GetParserRuleContext(), 1)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) goto errorExit } { - p.SetState(1237) + p.SetState(1256) p.Match(KuneiformParserOR) if p.HasError() { // Recognition error - abort rule @@ -21876,21 +22238,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1238) + p.SetState(1257) p.procedure_expr(2) } case 7: localctx = NewField_access_procedure_exprContext(p, NewProcedure_exprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1239) + p.SetState(1258) if !(p.Precpred(p.GetParserRuleContext(), 15)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", "")) goto errorExit } { - p.SetState(1240) + p.SetState(1259) p.Match(KuneiformParserPERIOD) if p.HasError() { // Recognition error - abort rule @@ -21898,19 +22260,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1241) + p.SetState(1260) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1243) + p.SetState(1262) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 167, p.GetParserRuleContext()) == 1 { { - p.SetState(1242) + p.SetState(1261) p.Type_cast() } @@ -21923,30 +22285,30 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Array_access_procedure_exprContext).array_element = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1245) + p.SetState(1264) if !(p.Precpred(p.GetParserRuleContext(), 14)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) goto errorExit } { - p.SetState(1246) + p.SetState(1265) p.Match(KuneiformParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1255) + p.SetState(1274) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 168, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 170, p.GetParserRuleContext()) { case 1: { - p.SetState(1247) + p.SetState(1266) var _x = p.procedure_expr(0) @@ -21954,7 +22316,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } case 2: - p.SetState(1249) + p.SetState(1268) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21963,7 +22325,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1248) + p.SetState(1267) var _x = p.procedure_expr(0) @@ -21972,14 +22334,14 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } { - p.SetState(1251) + p.SetState(1270) p.Match(KuneiformParserCOL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1253) + p.SetState(1272) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21988,7 +22350,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1252) + p.SetState(1271) var _x = p.procedure_expr(0) @@ -22001,19 +22363,19 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex goto errorExit } { - p.SetState(1257) + p.SetState(1276) p.Match(KuneiformParserRBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1259) + p.SetState(1278) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 171, p.GetParserRuleContext()) == 1 { { - p.SetState(1258) + p.SetState(1277) p.Type_cast() } @@ -22026,21 +22388,21 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex localctx.(*Is_procedure_exprContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, KuneiformParserRULE_procedure_expr) - p.SetState(1261) + p.SetState(1280) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(1262) + p.SetState(1281) p.Match(KuneiformParserIS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1264) + p.SetState(1283) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22049,7 +22411,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex if _la == KuneiformParserNOT { { - p.SetState(1263) + p.SetState(1282) p.Match(KuneiformParserNOT) if p.HasError() { // Recognition error - abort rule @@ -22058,7 +22420,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1272) + p.SetState(1291) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22067,7 +22429,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex switch p.GetTokenStream().LA(1) { case KuneiformParserDISTINCT: { - p.SetState(1266) + p.SetState(1285) p.Match(KuneiformParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -22075,7 +22437,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1267) + p.SetState(1286) p.Match(KuneiformParserFROM) if p.HasError() { // Recognition error - abort rule @@ -22083,7 +22445,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } { - p.SetState(1268) + p.SetState(1287) var _x = p.procedure_expr(0) @@ -22092,7 +22454,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserNULL: { - p.SetState(1269) + p.SetState(1288) p.Match(KuneiformParserNULL) if p.HasError() { // Recognition error - abort rule @@ -22102,7 +22464,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserTRUE: { - p.SetState(1270) + p.SetState(1289) p.Match(KuneiformParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -22112,7 +22474,7 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex case KuneiformParserFALSE: { - p.SetState(1271) + p.SetState(1290) p.Match(KuneiformParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -22130,12 +22492,12 @@ func (p *KuneiformParser) procedure_expr(_p int) (localctx IProcedure_exprContex } } - p.SetState(1278) + p.SetState(1297) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 173, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 175, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -22272,15 +22634,15 @@ func (s *Procedure_expr_listContext) Accept(visitor antlr.ParseTreeVisitor) inte func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listContext) { localctx = NewProcedure_expr_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 128, KuneiformParserRULE_procedure_expr_list) + p.EnterRule(localctx, 132, KuneiformParserRULE_procedure_expr_list) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1279) + p.SetState(1298) p.procedure_expr(0) } - p.SetState(1284) + p.SetState(1303) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22289,7 +22651,7 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo for _la == KuneiformParserCOMMA { { - p.SetState(1280) + p.SetState(1299) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -22297,11 +22659,11 @@ func (p *KuneiformParser) Procedure_expr_list() (localctx IProcedure_expr_listCo } } { - p.SetState(1281) + p.SetState(1300) p.procedure_expr(0) } - p.SetState(1286) + p.SetState(1305) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23113,21 +23475,21 @@ func (s *Stmt_sqlContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewProc_statementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 130, KuneiformParserRULE_proc_statement) + p.EnterRule(localctx, 134, KuneiformParserRULE_proc_statement) var _la int - p.SetState(1367) + p.SetState(1386) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 184, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 186, p.GetParserRuleContext()) { case 1: localctx = NewStmt_variable_declarationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1287) + p.SetState(1306) p.Match(KuneiformParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -23135,11 +23497,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1288) + p.SetState(1307) p.Type_() } { - p.SetState(1289) + p.SetState(1308) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23150,7 +23512,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 2: localctx = NewStmt_procedure_callContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(1301) + p.SetState(1320) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23159,11 +23521,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE { { - p.SetState(1291) + p.SetState(1310) p.Variable_or_underscore() } - p.SetState(1296) + p.SetState(1315) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23172,7 +23534,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserCOMMA { { - p.SetState(1292) + p.SetState(1311) p.Match(KuneiformParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -23181,11 +23543,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1293) + p.SetState(1312) p.Variable_or_underscore() } - p.SetState(1298) + p.SetState(1317) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23193,7 +23555,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1299) + p.SetState(1318) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -23203,11 +23565,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } { - p.SetState(1303) + p.SetState(1322) p.Procedure_function_call() } { - p.SetState(1304) + p.SetState(1323) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23219,10 +23581,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_variable_assignmentContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(1306) + p.SetState(1325) p.procedure_expr(0) } - p.SetState(1308) + p.SetState(1327) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23231,13 +23593,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserIDENTIFIER { { - p.SetState(1307) + p.SetState(1326) p.Type_() } } { - p.SetState(1310) + p.SetState(1329) p.Match(KuneiformParserASSIGN) if p.HasError() { // Recognition error - abort rule @@ -23245,11 +23607,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1311) + p.SetState(1330) p.procedure_expr(0) } { - p.SetState(1312) + p.SetState(1331) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23261,7 +23623,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_for_loopContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(1314) + p.SetState(1333) p.Match(KuneiformParserFOR) if p.HasError() { // Recognition error - abort rule @@ -23269,7 +23631,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1315) + p.SetState(1334) var _m = p.Match(KuneiformParserVARIABLE) @@ -23280,29 +23642,29 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1316) + p.SetState(1335) p.Match(KuneiformParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1320) + p.SetState(1339) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 178, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 180, p.GetParserRuleContext()) { case 1: { - p.SetState(1317) + p.SetState(1336) p.Range_() } case 2: { - p.SetState(1318) + p.SetState(1337) var _x = p.Variable() @@ -23311,7 +23673,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { case 3: { - p.SetState(1319) + p.SetState(1338) p.Sql_statement() } @@ -23319,14 +23681,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { goto errorExit } { - p.SetState(1322) + p.SetState(1341) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1326) + p.SetState(1345) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23335,11 +23697,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205759403725291247) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1323) + p.SetState(1342) p.Proc_statement() } - p.SetState(1328) + p.SetState(1347) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23347,7 +23709,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1329) + p.SetState(1348) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -23359,7 +23721,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_ifContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(1331) + p.SetState(1350) p.Match(KuneiformParserIF) if p.HasError() { // Recognition error - abort rule @@ -23367,10 +23729,10 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1332) + p.SetState(1351) p.If_then_block() } - p.SetState(1337) + p.SetState(1356) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23379,7 +23741,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for _la == KuneiformParserELSEIF { { - p.SetState(1333) + p.SetState(1352) p.Match(KuneiformParserELSEIF) if p.HasError() { // Recognition error - abort rule @@ -23387,18 +23749,18 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1334) + p.SetState(1353) p.If_then_block() } - p.SetState(1339) + p.SetState(1358) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(1349) + p.SetState(1368) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23407,7 +23769,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { if _la == KuneiformParserELSE { { - p.SetState(1340) + p.SetState(1359) p.Match(KuneiformParserELSE) if p.HasError() { // Recognition error - abort rule @@ -23415,14 +23777,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1341) + p.SetState(1360) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1345) + p.SetState(1364) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23431,11 +23793,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205759403725291247) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1342) + p.SetState(1361) p.Proc_statement() } - p.SetState(1347) + p.SetState(1366) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23443,7 +23805,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1348) + p.SetState(1367) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -23457,11 +23819,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_sqlContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(1351) + p.SetState(1370) p.Sql_statement() } { - p.SetState(1352) + p.SetState(1371) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23473,7 +23835,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_breakContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(1354) + p.SetState(1373) p.Match(KuneiformParserBREAK) if p.HasError() { // Recognition error - abort rule @@ -23481,7 +23843,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1355) + p.SetState(1374) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23493,14 +23855,14 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_returnContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(1356) + p.SetState(1375) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1359) + p.SetState(1378) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23508,13 +23870,13 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { switch p.GetTokenStream().LA(1) { case KuneiformParserLBRACKET, KuneiformParserLPAREN, KuneiformParserEXCL, KuneiformParserPLUS, KuneiformParserMINUS, KuneiformParserNULL, KuneiformParserNOT, KuneiformParserSTRING_, KuneiformParserTRUE, KuneiformParserFALSE, KuneiformParserDIGITS_, KuneiformParserBINARY_, KuneiformParserIDENTIFIER, KuneiformParserVARIABLE, KuneiformParserCONTEXTUAL_VARIABLE: { - p.SetState(1357) + p.SetState(1376) p.Procedure_expr_list() } case KuneiformParserDELETE, KuneiformParserUPDATE, KuneiformParserWITH, KuneiformParserSELECT, KuneiformParserINSERT: { - p.SetState(1358) + p.SetState(1377) p.Sql_statement() } @@ -23523,7 +23885,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { default: } { - p.SetState(1361) + p.SetState(1380) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23535,7 +23897,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { localctx = NewStmt_return_nextContext(p, localctx) p.EnterOuterAlt(localctx, 9) { - p.SetState(1362) + p.SetState(1381) p.Match(KuneiformParserRETURN) if p.HasError() { // Recognition error - abort rule @@ -23543,7 +23905,7 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1363) + p.SetState(1382) p.Match(KuneiformParserNEXT) if p.HasError() { // Recognition error - abort rule @@ -23551,11 +23913,11 @@ func (p *KuneiformParser) Proc_statement() (localctx IProc_statementContext) { } } { - p.SetState(1364) + p.SetState(1383) p.Procedure_expr_list() } { - p.SetState(1365) + p.SetState(1384) p.Match(KuneiformParserSCOL) if p.HasError() { // Recognition error - abort rule @@ -23655,12 +24017,12 @@ func (s *Variable_or_underscoreContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *KuneiformParser) Variable_or_underscore() (localctx IVariable_or_underscoreContext) { localctx = NewVariable_or_underscoreContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 132, KuneiformParserRULE_variable_or_underscore) + p.EnterRule(localctx, 136, KuneiformParserRULE_variable_or_underscore) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1369) + p.SetState(1388) _la = p.GetTokenStream().LA(1) if !(_la == KuneiformParserUNDERSCORE || _la == KuneiformParserVARIABLE) { @@ -23796,13 +24158,13 @@ func (s *Normal_call_procedureContext) Accept(visitor antlr.ParseTreeVisitor) in func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_function_callContext) { localctx = NewProcedure_function_callContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 134, KuneiformParserRULE_procedure_function_call) + p.EnterRule(localctx, 138, KuneiformParserRULE_procedure_function_call) var _la int localctx = NewNormal_call_procedureContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(1371) + p.SetState(1390) p.Match(KuneiformParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -23810,14 +24172,14 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio } } { - p.SetState(1372) + p.SetState(1391) p.Match(KuneiformParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1374) + p.SetState(1393) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23826,13 +24188,13 @@ func (p *KuneiformParser) Procedure_function_call() (localctx IProcedure_functio if ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-8935141660702670575) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&14367) != 0) { { - p.SetState(1373) + p.SetState(1392) p.Procedure_expr_list() } } { - p.SetState(1376) + p.SetState(1395) p.Match(KuneiformParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -23988,23 +24350,23 @@ func (s *If_then_blockContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { localctx = NewIf_then_blockContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 136, KuneiformParserRULE_if_then_block) + p.EnterRule(localctx, 140, KuneiformParserRULE_if_then_block) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(1378) + p.SetState(1397) p.procedure_expr(0) } { - p.SetState(1379) + p.SetState(1398) p.Match(KuneiformParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1383) + p.SetState(1402) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24013,11 +24375,11 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { for ((int64((_la-3)) & ^0x3f) == 0 && ((int64(1)<<(_la-3))&-7205759403725291247) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&493646788953601) != 0) { { - p.SetState(1380) + p.SetState(1399) p.Proc_statement() } - p.SetState(1385) + p.SetState(1404) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24025,7 +24387,7 @@ func (p *KuneiformParser) If_then_block() (localctx IIf_then_blockContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1386) + p.SetState(1405) p.Match(KuneiformParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -24159,14 +24521,14 @@ func (s *RangeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *KuneiformParser) Range_() (localctx IRangeContext) { localctx = NewRangeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 138, KuneiformParserRULE_range) + p.EnterRule(localctx, 142, KuneiformParserRULE_range) p.EnterOuterAlt(localctx, 1) { - p.SetState(1388) + p.SetState(1407) p.procedure_expr(0) } { - p.SetState(1389) + p.SetState(1408) p.Match(KuneiformParserRANGE) if p.HasError() { // Recognition error - abort rule @@ -24174,7 +24536,7 @@ func (p *KuneiformParser) Range_() (localctx IRangeContext) { } } { - p.SetState(1390) + p.SetState(1409) p.procedure_expr(0) } @@ -24193,14 +24555,14 @@ errorExit: func (p *KuneiformParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { switch ruleIndex { - case 55: + case 57: var t *Sql_exprContext = nil if localctx != nil { t = localctx.(*Sql_exprContext) } return p.Sql_expr_Sempred(t, predIndex) - case 63: + case 65: var t *Procedure_exprContext = nil if localctx != nil { t = localctx.(*Procedure_exprContext) diff --git a/parse/gen/kuneiformparser_base_visitor.go b/parse/gen/kuneiformparser_base_visitor.go index 94b27bec7..54fb1b8da 100644 --- a/parse/gen/kuneiformparser_base_visitor.go +++ b/parse/gen/kuneiformparser_base_visitor.go @@ -183,6 +183,14 @@ func (v *BaseKuneiformParserVisitor) VisitTable_constraint_def(ctx *Table_constr return v.VisitChildren(ctx) } +func (v *BaseKuneiformParserVisitor) VisitOpt_drop_behavior(ctx *Opt_drop_behaviorContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseKuneiformParserVisitor) VisitDrop_table_statement(ctx *Drop_table_statementContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseKuneiformParserVisitor) VisitAlter_table_statement(ctx *Alter_table_statementContext) interface{} { return v.VisitChildren(ctx) } diff --git a/parse/gen/kuneiformparser_visitor.go b/parse/gen/kuneiformparser_visitor.go index 9262f36be..20943c244 100644 --- a/parse/gen/kuneiformparser_visitor.go +++ b/parse/gen/kuneiformparser_visitor.go @@ -139,6 +139,12 @@ type KuneiformParserVisitor interface { // Visit a parse tree produced by KuneiformParser#table_constraint_def. VisitTable_constraint_def(ctx *Table_constraint_defContext) interface{} + // Visit a parse tree produced by KuneiformParser#opt_drop_behavior. + VisitOpt_drop_behavior(ctx *Opt_drop_behaviorContext) interface{} + + // Visit a parse tree produced by KuneiformParser#drop_table_statement. + VisitDrop_table_statement(ctx *Drop_table_statementContext) interface{} + // Visit a parse tree produced by KuneiformParser#alter_table_statement. VisitAlter_table_statement(ctx *Alter_table_statementContext) interface{} diff --git a/parse/grammar/KuneiformParser.g4 b/parse/grammar/KuneiformParser.g4 index 6f1ccfe2e..f9e6953ab 100644 --- a/parse/grammar/KuneiformParser.g4 +++ b/parse/grammar/KuneiformParser.g4 @@ -211,6 +211,7 @@ sql_stmt: ddl_stmt: create_table_statement | alter_table_statement + | drop_table_statement | create_index_statement | drop_index_statement ; @@ -240,6 +241,16 @@ table_constraint_def: | FOREIGN KEY LPAREN column=identifier RPAREN fk_constraint) ; +opt_drop_behavior: + CASCADE + | RESTRICT + | +; + +drop_table_statement: + DROP TABLE (IF EXISTS)? tables=identifier_list opt_drop_behavior +; + alter_table_statement: ALTER TABLE table=identifier alter_table_action diff --git a/parse/parse_test.go b/parse/parse_test.go index 98612afc8..3eeea08c3 100644 --- a/parse/parse_test.go +++ b/parse/parse_test.go @@ -2308,6 +2308,48 @@ primary key (name) }, }, }, + { + name: "drop table", + sql: `DROP TABLE users, posts;`, + want: &parse.DropTableStatement{ + Tables: []string{"users", "posts"}, + Behavior: parse.DropBehaviorNon, + }, + }, + { + name: "drop table single table", + sql: `DROP TABLE users;`, + want: &parse.DropTableStatement{ + Tables: []string{"users"}, + Behavior: parse.DropBehaviorNon, + }, + }, + { + name: "drop table if exists", + sql: `DROP TABLE IF EXISTS users, posts;`, + want: &parse.DropTableStatement{ + Tables: []string{"users", "posts"}, + IfExists: true, + Behavior: parse.DropBehaviorNon, + }, + }, + { + name: "drop table CASCADE", + sql: `DROP TABLE IF EXISTS users, posts CASCADE;`, + want: &parse.DropTableStatement{ + Tables: []string{"users", "posts"}, + Behavior: parse.DropBehaviorCascade, + IfExists: true, + }, + }, + { + name: "drop table RESTRICT ", + sql: `DROP TABLE users, posts RESTRICT;`, + want: &parse.DropTableStatement{ + Tables: []string{"users", "posts"}, + Behavior: parse.DropBehaviorRestrict, + }, + }, { name: "create index", sql: `CREATE INDEX abc ON user(name);`, @@ -2368,7 +2410,7 @@ primary key (name) for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - res, err := parse.ParseDDL(tt.sql, nil, false) + res, err := parse.ParseDDL(tt.sql) require.NoError(t, err) if res.ParseErrs.Err() != nil {