From e1c554c0b51f02865c19f07b70a9cc491411a2fa Mon Sep 17 00:00:00 2001 From: storojs72 Date: Mon, 14 Jan 2019 13:04:57 +0200 Subject: [PATCH 01/13] Add sensible comment that explain parser conflicts --- sqlparser/sql.y | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqlparser/sql.y b/sqlparser/sql.y index a5acf1ec9..893c00e99 100644 --- a/sqlparser/sql.y +++ b/sqlparser/sql.y @@ -2922,7 +2922,7 @@ sql_id: { $$ = NewColIdent(string($1)) } -| STRING +| STRING // if comment this rule, current conflicts will be resolved. This is due to ambiguities in MySQL/PostgreSQL using quotes in table/column names { $$ = NewColIdentWithQuotes(string($1), true) } From e6767e0f6048d4ca0712f38512dc760cad4ab109 Mon Sep 17 00:00:00 2001 From: storojs72 Date: Fri, 18 Jan 2019 19:54:46 +0200 Subject: [PATCH 02/13] Add support prepared statements support --- sqlparser/analyzer.go | 15 +++++ sqlparser/analyzer_test.go | 3 + sqlparser/ast.go | 123 ++++++++----------------------------- sqlparser/parse_test.go | 19 ++++++ sqlparser/sql.y | 63 ++++++++++++++++++- sqlparser/token.go | 3 + 6 files changed, 124 insertions(+), 102 deletions(-) diff --git a/sqlparser/analyzer.go b/sqlparser/analyzer.go index 8e29eb548..fbb027681 100644 --- a/sqlparser/analyzer.go +++ b/sqlparser/analyzer.go @@ -46,6 +46,9 @@ const ( StmtOther StmtUnknown StmtComment + StmtDeallocatePrepare + StmtPrepare + StmtExecute ) // Preview analyzes the beginning of the query using a simpler and faster @@ -73,6 +76,10 @@ func Preview(sql string) int { return StmtUpdate case "delete": return StmtDelete + case "prepare": + return StmtPrepare + case "execute": + return StmtExecute } // For the following statements it is not sufficient to rely // on loweredFirstWord. This is because they are not statements @@ -87,6 +94,8 @@ func Preview(sql string) int { return StmtCommit case "rollback": return StmtRollback + case "deallocate prepare": + return StmtDeallocatePrepare } switch loweredFirstWord { case "create", "alter", "rename", "drop", "truncate": @@ -137,6 +146,12 @@ func StmtType(stmtType int) string { return "USE" case StmtOther: return "OTHER" + case StmtDeallocatePrepare: + return "DEALLOCATE PREPARE" + case StmtPrepare: + return "PREPARE" + case StmtExecute: + return "EXECUTE" default: return "UNKNOWN" } diff --git a/sqlparser/analyzer_test.go b/sqlparser/analyzer_test.go index 07bc74cc0..6339393ab 100644 --- a/sqlparser/analyzer_test.go +++ b/sqlparser/analyzer_test.go @@ -68,6 +68,9 @@ func TestPreview(t *testing.T) { {"optimize", StmtOther}, {"truncate", StmtDDL}, {"unknown", StmtUnknown}, + {"deallocate prepare", StmtDeallocatePrepare}, + {"prepare", StmtPrepare}, + {"execute", StmtExecute}, {"/* leading comment */ select ...", StmtSelect}, {"/* leading comment */ (select ...", StmtSelect}, diff --git a/sqlparser/ast.go b/sqlparser/ast.go index 7ef030901..505722301 100644 --- a/sqlparser/ast.go +++ b/sqlparser/ast.go @@ -21,12 +21,9 @@ import ( "encoding/hex" "encoding/json" "fmt" - "io" - "log" - "strings" - "github.com/cossacklabs/acra/sqlparser/dependency/querypb" "github.com/cossacklabs/acra/sqlparser/dependency/sqltypes" + "strings" ) //go:generate goyacc -o sql.go sql.y @@ -1338,136 +1335,64 @@ type ShowFilter struct { Filter Expr } -// Format formats the node. -func (node *ShowFilter) Format(buf *TrackedBuffer) { - if node.Like != "" { - buf.Myprintf("like '%s'", node.Like) - } else { - buf.Myprintf("where %v", node.Filter) - } -} - -func (node *ShowFilter) walkSubtree(visit Visit) error { - return nil -} - // Use represents a use statement. type Use struct { DBName TableIdent } -// Format formats the node. -func (node *Use) Format(buf *TrackedBuffer) { - if node.DBName.v != "" { - buf.Myprintf("use %v", node.DBName) - } else { - buf.Myprintf("use") - } -} - -func (node *Use) walkSubtree(visit Visit) error { - return Walk(visit, node.DBName) -} - // Begin represents a Begin statement. type Begin struct{} -// Format formats the node. -func (node *Begin) Format(buf *TrackedBuffer) { - buf.WriteString("begin") -} - -func (node *Begin) walkSubtree(visit Visit) error { - return nil -} - // Commit represents a Commit statement. type Commit struct{} -// Format formats the node. -func (node *Commit) Format(buf *TrackedBuffer) { - buf.WriteString("commit") -} - -func (node *Commit) walkSubtree(visit Visit) error { - return nil -} - // Rollback represents a Rollback statement. type Rollback struct{} -// Format formats the node. -func (node *Rollback) Format(buf *TrackedBuffer) { - buf.WriteString("rollback") -} - -func (node *Rollback) walkSubtree(visit Visit) error { - return nil -} - // OtherRead represents a DESCRIBE, or EXPLAIN statement. // It should be used only as an indicator. It does not contain // the full AST for the statement. type OtherRead struct{} -// Format formats the node. -func (node *OtherRead) Format(buf *TrackedBuffer) { - buf.WriteString("otherread") -} - -func (node *OtherRead) walkSubtree(visit Visit) error { - return nil -} - // OtherAdmin represents a misc statement that relies on ADMIN privileges, // such as REPAIR, OPTIMIZE, or TRUNCATE statement. // It should be used only as an indicator. It does not contain // the full AST for the statement. type OtherAdmin struct{} -// Format formats the node. -func (node *OtherAdmin) Format(buf *TrackedBuffer) { - buf.WriteString("otheradmin") +// FromInPrepare represents FROM statement in Prepare +type FromInPrepare interface { + iFromInPrepare() + SQLNode } -func (node *OtherAdmin) walkSubtree(visit Visit) error { - return nil -} +func (TableIdent) iFromInPrepare() {} +func (*SQLVal) iFromInPrepare() {} -// Comments represents a list of comments. -type Comments [][]byte +type UsingInExecuteList []TableIdent -// Format formats the node. -func (node Comments) Format(buf *TrackedBuffer) { - for _, c := range node { - buf.Myprintf("%s ", c) - } +// Execute executes prepared statement +type Execute struct { + PreparedStatementName TableIdent + Using UsingInExecuteList } -func (node Comments) walkSubtree(visit Visit) error { - return nil +// Prepare prepares statement for future execution +type Prepare struct { + PreparedStatementName TableIdent + From FromInPrepare } -// SelectExprs represents SELECT expressions. -type SelectExprs []SelectExpr - -// Format formats the node. -func (node SelectExprs) Format(buf *TrackedBuffer) { - var prefix string - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } +// DeallocatePrepare deallocates memory that stores compiled prepared statement +type DeallocatePrepare struct { + PreparedStatementName TableIdent } -func (node SelectExprs) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} +// Comments represents a list of comments. +type Comments [][]byte + +// SelectExprs represents SELECT expressions. +type SelectExprs []SelectExpr // SelectExpr represents a SELECT expression. type SelectExpr interface { diff --git a/sqlparser/parse_test.go b/sqlparser/parse_test.go index 1b50fd5e2..b0938665c 100644 --- a/sqlparser/parse_test.go +++ b/sqlparser/parse_test.go @@ -1936,6 +1936,25 @@ func TestCreateTableEscaped(t *testing.T) { } } +func TestPreparedStatements(t *testing.T) { + testQueries := []string{ + `prepare stmt1 from 'select 1'`, + `prepare stmt1 from @variable`, + `prepare stmt1 from E'pg_escape_string'`, + `execute stmt1`, + `execute stmt1 using @variable`, + `execute stmt1 using @variable1, @variable2`, + `deallocate prepare stmt1`, + } + + for _, query := range testQueries { + _, err := Parse(query) + if err != nil { + t.Fatal(err) + } + } +} + var ( invalidSQL = []struct { input string diff --git a/sqlparser/sql.y b/sqlparser/sql.y index 893c00e99..21b9a0ed4 100644 --- a/sqlparser/sql.y +++ b/sqlparser/sql.y @@ -91,6 +91,7 @@ func forceEOF(yylex interface{}) { setExpr *SetExpr colIdent ColIdent tableIdent TableIdent + usingInExecuteList UsingInExecuteList convertType *ConvertType aliasedTableName *AliasedTableExpr TableSpec *TableSpec @@ -111,6 +112,7 @@ func forceEOF(yylex interface{}) { vindexParam VindexParam vindexParams []VindexParam showFilter *ShowFilter + fromInPrepare FromInPrepare } %token LEX_ERROR @@ -164,6 +166,9 @@ func forceEOF(yylex interface{}) { // Transaction Tokens %token BEGIN START TRANSACTION COMMIT ROLLBACK +// Prepared statements Tokens +%token DEALLOCATE PREPARE EXECUTE + // Type Tokens %token BIT TINYINT SMALLINT MEDIUMINT INT INTEGER BIGINT INTNUM %token REAL DOUBLE FLOAT_TYPE DECIMAL NUMERIC @@ -207,6 +212,7 @@ func forceEOF(yylex interface{}) { %type create_table_prefix %type analyze_statement show_statement use_statement other_statement %type begin_statement commit_statement rollback_statement +%type deallocate_prepare_statement prepare_statement execute_statement %type comment_opt comment_list %type union_op insert_or_replace %type distinct_opt straight_join_opt cache_opt match_option separator_opt @@ -299,6 +305,8 @@ func forceEOF(yylex interface{}) { %type alter_object_type %type typecast %type returning_opt +%type from_in_prepare +%type using_in_execute_list %start any_command @@ -336,6 +344,9 @@ command: | commit_statement | rollback_statement | other_statement +| deallocate_prepare_statement +| prepare_statement +| execute_statement select_statement: base_select order_by_opt limit_opt lock_opt @@ -1555,6 +1566,52 @@ other_statement: $$ = &OtherAdmin{} } +deallocate_prepare_statement: + DEALLOCATE PREPARE table_id + { + $$ = &DeallocatePrepare{PreparedStatementName: $3} + } + +prepare_statement: + PREPARE table_id FROM from_in_prepare + { + $$ = &Prepare{PreparedStatementName: $2, From: $4} + } + +from_in_prepare: + ID + { + $$ = NewTableIdent(string($1)) + } +| PG_ESCAPE_STRING + { + $$ = NewPgEscapeString($1) + } +| STRING + { + $$ = NewStrVal($1) + } + +execute_statement: + EXECUTE ID + { + $$ = &Execute{PreparedStatementName: NewTableIdent(string($2))} + } +| EXECUTE ID USING using_in_execute_list + { + $$ = &Execute{PreparedStatementName: NewTableIdent(string($2)), Using: $4} + } + +using_in_execute_list: + table_id + { + $$ = UsingInExecuteList{$1} + } +| using_in_execute_list ',' table_id + { + $$ = append($1, $3) + } + comment_opt: { setAllowComments(yylex, true) @@ -2923,9 +2980,9 @@ sql_id: $$ = NewColIdent(string($1)) } | STRING // if comment this rule, current conflicts will be resolved. This is due to ambiguities in MySQL/PostgreSQL using quotes in table/column names -{ - $$ = NewColIdentWithQuotes(string($1), true) -} + { + $$ = NewColIdentWithQuotes(string($1), true) + } reserved_sql_id: sql_id diff --git a/sqlparser/token.go b/sqlparser/token.go index 10e015aed..6e69e441e 100644 --- a/sqlparser/token.go +++ b/sqlparser/token.go @@ -393,6 +393,9 @@ var keywords = map[string]int{ "year_month": UNUSED, "zerofill": ZEROFILL, "returning": RETURNING, + "deallocate": DEALLOCATE, + "prepare": PREPARE, + "execute": EXECUTE, } // keywordStrings contains the reverse mapping of token to keyword strings From c2bd5ec3f0495d1967c3aa1efad7bcc6eed214ea Mon Sep 17 00:00:00 2001 From: storojs72 Date: Fri, 18 Jan 2019 19:57:35 +0200 Subject: [PATCH 03/13] split ast into two files --- sqlparser/ast.go | 1734 +-------------- sqlparser/sql.go | 5433 +++++++++++++++++++++++----------------------- 2 files changed, 2818 insertions(+), 4349 deletions(-) diff --git a/sqlparser/ast.go b/sqlparser/ast.go index 505722301..a9ab42990 100644 --- a/sqlparser/ast.go +++ b/sqlparser/ast.go @@ -40,110 +40,6 @@ import ( // a set of types, define the function as iTypeName. // This will help avoid name collisions. -// Parse parses the SQL in full and returns a Statement, which -// is the AST representation of the query. If a DDL statement -// is partially parsed but still contains a syntax error, the -// error is ignored and the DDL is returned anyway. -func Parse(sql string) (Statement, error) { - tokenizer := NewStringTokenizer(sql) - if yyParse(tokenizer) != 0 { - if tokenizer.partialDDL != nil { - log.Printf("ignoring error parsing DDL '%s': %v", sql, tokenizer.LastError) - tokenizer.ParseTree = tokenizer.partialDDL - return tokenizer.ParseTree, nil - } - return nil, tokenizer.LastError - } - return tokenizer.ParseTree, nil -} - -// ParseStrictDDL is the same as Parse except it errors on -// partially parsed DDL statements. -func ParseStrictDDL(sql string) (Statement, error) { - tokenizer := NewStringTokenizer(sql) - if yyParse(tokenizer) != 0 { - return nil, tokenizer.LastError - } - return tokenizer.ParseTree, nil -} - -// ParseNext parses a single SQL statement from the tokenizer -// returning a Statement which is the AST representation of the query. -// The tokenizer will always read up to the end of the statement, allowing for -// the next call to ParseNext to parse any subsequent SQL statements. When -// there are no more statements to parse, a error of io.EOF is returned. -func ParseNext(tokenizer *Tokenizer) (Statement, error) { - if tokenizer.lastChar == ';' { - tokenizer.next() - tokenizer.skipBlank() - } - if tokenizer.lastChar == eofChar { - return nil, io.EOF - } - - tokenizer.reset() - tokenizer.multi = true - if yyParse(tokenizer) != 0 { - if tokenizer.partialDDL != nil { - tokenizer.ParseTree = tokenizer.partialDDL - return tokenizer.ParseTree, nil - } - return nil, tokenizer.LastError - } - return tokenizer.ParseTree, nil -} - -// SplitStatement returns the first sql statement up to either a ; or EOF -// and the remainder from the given buffer -func SplitStatement(blob string) (string, string, error) { - tokenizer := NewStringTokenizer(blob) - tkn := 0 - for { - tkn, _ = tokenizer.Scan() - if tkn == 0 || tkn == ';' || tkn == eofChar { - break - } - } - if tokenizer.LastError != nil { - return "", "", tokenizer.LastError - } - if tkn == ';' { - return blob[:tokenizer.Position-2], blob[tokenizer.Position-1:], nil - } - return blob, "", nil -} - -// SplitStatementToPieces split raw sql statement that may have multi sql pieces to sql pieces -// returns the sql pieces blob contains; or error if sql cannot be parsed -func SplitStatementToPieces(blob string) (pieces []string, err error) { - pieces = make([]string, 0, 16) - tokenizer := NewStringTokenizer(blob) - - tkn := 0 - var stmt string - stmtBegin := 0 - for { - tkn, _ = tokenizer.Scan() - if tkn == ';' { - stmt = blob[stmtBegin : tokenizer.Position-2] - pieces = append(pieces, stmt) - stmtBegin = tokenizer.Position - 1 - - } else if tkn == 0 || tkn == eofChar { - blobTail := tokenizer.Position - 2 - - if stmtBegin < blobTail { - stmt = blob[stmtBegin : blobTail+1] - pieces = append(pieces, stmt) - } - break - } - } - - err = tokenizer.LastError - return -} - // SQLNode defines the interface for all nodes // generated by the parser. type SQLNode interface { @@ -206,22 +102,25 @@ type Statement interface { SQLNode } -func (*Union) iStatement() {} -func (*Select) iStatement() {} -func (*Stream) iStatement() {} -func (*Insert) iStatement() {} -func (*Update) iStatement() {} -func (*Delete) iStatement() {} -func (*Set) iStatement() {} -func (*DBDDL) iStatement() {} -func (*DDL) iStatement() {} -func (*Show) iStatement() {} -func (*Use) iStatement() {} -func (*Begin) iStatement() {} -func (*Commit) iStatement() {} -func (*Rollback) iStatement() {} -func (*OtherRead) iStatement() {} -func (*OtherAdmin) iStatement() {} +func (*Union) iStatement() {} +func (*Select) iStatement() {} +func (*Stream) iStatement() {} +func (*Insert) iStatement() {} +func (*Update) iStatement() {} +func (*Delete) iStatement() {} +func (*Set) iStatement() {} +func (*DBDDL) iStatement() {} +func (*DDL) iStatement() {} +func (*Show) iStatement() {} +func (*Use) iStatement() {} +func (*Begin) iStatement() {} +func (*Commit) iStatement() {} +func (*Rollback) iStatement() {} +func (*OtherRead) iStatement() {} +func (*OtherAdmin) iStatement() {} +func (*DeallocatePrepare) iStatement() {} +func (*Prepare) iStatement() {} +func (*Execute) iStatement() {} // ParenSelect can actually not be a top level statement, // but we have to allow it because it's a requirement @@ -258,24 +157,6 @@ type Select struct { Lock string } -// Select.Distinct -const ( - DistinctStr = "distinct " - StraightJoinHint = "straight_join " -) - -// Select.Lock -const ( - ForUpdateStr = " for update" - ShareModeStr = " lock in share mode" -) - -// Select.Cache -const ( - SQLCacheStr = "sql_cache " - SQLNoCacheStr = "sql_no_cache " -) - // AddOrder adds an order by element func (node *Select) AddOrder(order *Order) { node.OrderBy = append(node.OrderBy, order) @@ -286,32 +167,6 @@ func (node *Select) SetLimit(limit *Limit) { node.Limit = limit } -// Format formats the node. -func (node *Select) Format(buf *TrackedBuffer) { - buf.Myprintf("select %v%s%s%s%v from %v%v%v%v%v%v%s", - node.Comments, node.Cache, node.Distinct, node.Hints, node.SelectExprs, - node.From, node.Where, - node.GroupBy, node.Having, node.OrderBy, - node.Limit, node.Lock) -} - -func (node *Select) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Comments, - node.SelectExprs, - node.From, - node.Where, - node.GroupBy, - node.Having, - node.OrderBy, - node.Limit, - ) -} - // AddWhere adds the boolean expression to the // WHERE clause as an AND condition. If the expression // is an OR clause, it parenthesizes it. Currently, @@ -358,6 +213,24 @@ func (node *Select) AddHaving(expr Expr) { return } +// Select.Distinct +const ( + DistinctStr = "distinct " + StraightJoinHint = "straight_join " +) + +// Select.Lock +const ( + ForUpdateStr = " for update" + ShareModeStr = " lock in share mode" +) + +// Select.Cache +const ( + SQLCacheStr = "sql_cache " + SQLNoCacheStr = "sql_no_cache " +) + // ParenSelect is a parenthesized SELECT statement. type ParenSelect struct { Select SelectStatement @@ -373,21 +246,6 @@ func (node *ParenSelect) SetLimit(limit *Limit) { panic("unreachable") } -// Format formats the node. -func (node *ParenSelect) Format(buf *TrackedBuffer) { - buf.Myprintf("(%v)", node.Select) -} - -func (node *ParenSelect) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Select, - ) -} - // Union represents a UNION statement. type Union struct { Type string @@ -414,23 +272,6 @@ func (node *Union) SetLimit(limit *Limit) { node.Limit = limit } -// Format formats the node. -func (node *Union) Format(buf *TrackedBuffer) { - buf.Myprintf("%v %s %v%v%v%s", node.Left, node.Type, node.Right, - node.OrderBy, node.Limit, node.Lock) -} - -func (node *Union) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Left, - node.Right, - ) -} - // Stream represents a SELECT statement. type Stream struct { Comments Comments @@ -438,24 +279,6 @@ type Stream struct { Table TableName } -// Format formats the node. -func (node *Stream) Format(buf *TrackedBuffer) { - buf.Myprintf("stream %v%v from %v", - node.Comments, node.SelectExpr, node.Table) -} - -func (node *Stream) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Comments, - node.SelectExpr, - node.Table, - ) -} - // Insert represents an INSERT or REPLACE statement. // Per the MySQL docs, http://dev.mysql.com/doc/refman/5.7/en/replace.html // Replace is the counterpart to `INSERT IGNORE`, and works exactly like a @@ -482,28 +305,6 @@ const ( ReplaceStr = "replace" ) -// Format formats the node. -func (node *Insert) Format(buf *TrackedBuffer) { - buf.Myprintf("%s %v%sinto %v%v%v %v%v%v", - node.Action, - node.Comments, node.Ignore, - node.Table, node.Partitions, node.Columns, node.Rows, node.OnDup, node.Returning) -} - -func (node *Insert) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Comments, - node.Table, - node.Columns, - node.Rows, - node.OnDup, - ) -} - // InsertRows represents the rows for an INSERT statement. type InsertRows interface { iInsertRows() @@ -526,28 +327,6 @@ type Update struct { Limit *Limit } -// Format formats the node. -func (node *Update) Format(buf *TrackedBuffer) { - buf.Myprintf("update %v%v set %v%v%v%v", - node.Comments, node.TableExprs, - node.Exprs, node.Where, node.OrderBy, node.Limit) -} - -func (node *Update) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Comments, - node.TableExprs, - node.Exprs, - node.Where, - node.OrderBy, - node.Limit, - ) -} - // Delete represents a DELETE statement. // If you add fields here, consider adding them to calls to validateSubquerySamePlan. type Delete struct { @@ -560,30 +339,6 @@ type Delete struct { Limit *Limit } -// Format formats the node. -func (node *Delete) Format(buf *TrackedBuffer) { - buf.Myprintf("delete %v", node.Comments) - if node.Targets != nil { - buf.Myprintf("%v ", node.Targets) - } - buf.Myprintf("from %v%v%v%v%v", node.TableExprs, node.Partitions, node.Where, node.OrderBy, node.Limit) -} - -func (node *Delete) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Comments, - node.Targets, - node.TableExprs, - node.Where, - node.OrderBy, - node.Limit, - ) -} - // Set represents a SET statement. type Set struct { Comments Comments @@ -597,26 +352,6 @@ const ( GlobalStr = "global" ) -// Format formats the node. -func (node *Set) Format(buf *TrackedBuffer) { - if node.Scope == "" { - buf.Myprintf("set %v%v", node.Comments, node.Exprs) - } else { - buf.Myprintf("set %v%s %v", node.Comments, node.Scope, node.Exprs) - } -} - -func (node *Set) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Comments, - node.Exprs, - ) -} - // DBDDL represents a CREATE, DROP database statement. type DBDDL struct { Action string @@ -626,25 +361,6 @@ type DBDDL struct { Charset string } -// Format formats the node. -func (node *DBDDL) Format(buf *TrackedBuffer) { - switch node.Action { - case CreateStr: - buf.WriteString(fmt.Sprintf("%s database %s", node.Action, node.DBName)) - case DropStr: - exists := "" - if node.IfExists { - exists = " if exists" - } - buf.WriteString(fmt.Sprintf("%s database%s %v", node.Action, exists, node.DBName)) - } -} - -// walkSubtree walks the nodes of the subtree. -func (node *DBDDL) walkSubtree(visit Visit) error { - return nil -} - // DDL represents a CREATE, ALTER, DROP, RENAME or TRUNCATE statement. // Table is set for AlterStr, DropStr, RenameStr, TruncateStr // NewName is set for AlterStr, CreateStr, RenameStr. @@ -676,67 +392,6 @@ const ( VindexOwnerStr = "owner" ) -// Format formats the node. -func (node *DDL) Format(buf *TrackedBuffer) { - switch node.Action { - case CreateStr: - if node.TableSpec == nil { - buf.Myprintf("%s table %v", node.Action, node.NewName) - } else { - buf.Myprintf("%s table %v %v", node.Action, node.NewName, node.TableSpec) - } - case DropStr: - exists := "" - if node.IfExists { - exists = " if exists" - } - buf.Myprintf("%s table%s %v", node.Action, exists, node.Table) - case RenameStr: - buf.Myprintf("%s table %v to %v", node.Action, node.Table, node.NewName) - case AlterStr: - if node.PartitionSpec != nil { - buf.Myprintf("%s table %v %v", node.Action, node.Table, node.PartitionSpec) - } else { - buf.Myprintf("%s table %v", node.Action, node.Table) - } - case CreateVindexStr: - buf.Myprintf("%s %v %v", node.Action, node.VindexSpec.Name, node.VindexSpec) - case AddColVindexStr: - buf.Myprintf("alter table %v %s %v (", node.Table, node.Action, node.VindexSpec.Name) - for i, col := range node.VindexCols { - if i != 0 { - buf.Myprintf(", %v", col) - } else { - buf.Myprintf("%v", col) - } - } - buf.Myprintf(")") - if node.VindexSpec.Type.String() != "" { - buf.Myprintf(" %v", node.VindexSpec) - } - case DropColVindexStr: - buf.Myprintf("alter table %v %s %v", node.Table, node.Action, node.VindexSpec.Name) - default: - buf.Myprintf("%s table %v", node.Action, node.Table) - } -} - -func (node *DDL) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Table, - node.NewName, - ) -} - -// Partition strings -const ( - ReorganizeStr = "reorganize partition" -) - // PartitionSpec describe partition actions (for alter and create) type PartitionSpec struct { Action string @@ -744,36 +399,10 @@ type PartitionSpec struct { Definitions []*PartitionDefinition } -// Format formats the node. -func (node *PartitionSpec) Format(buf *TrackedBuffer) { - switch node.Action { - case ReorganizeStr: - buf.Myprintf("%s %v into (", node.Action, node.Name) - var prefix string - for _, pd := range node.Definitions { - buf.Myprintf("%s%v", prefix, pd) - prefix = ", " - } - buf.Myprintf(")") - default: - panic("unimplemented") - } -} - -func (node *PartitionSpec) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - if err := Walk(visit, node.Name); err != nil { - return err - } - for _, def := range node.Definitions { - if err := Walk(visit, def); err != nil { - return err - } - } - return nil -} +// Partition strings +const ( + ReorganizeStr = "reorganize partition" +) // PartitionDefinition describes a very minimal partition definition type PartitionDefinition struct { @@ -782,26 +411,6 @@ type PartitionDefinition struct { Maxvalue bool } -// Format formats the node -func (node *PartitionDefinition) Format(buf *TrackedBuffer) { - if !node.Maxvalue { - buf.Myprintf("partition %v values less than (%v)", node.Name, node.Limit) - } else { - buf.Myprintf("partition %v values less than (maxvalue)", node.Name) - } -} - -func (node *PartitionDefinition) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Name, - node.Limit, - ) -} - // TableSpec describes the structure of a table from a CREATE TABLE statement type TableSpec struct { Columns []*ColumnDefinition @@ -809,23 +418,6 @@ type TableSpec struct { Options string } -// Format formats the node. -func (ts *TableSpec) Format(buf *TrackedBuffer) { - buf.Myprintf("(\n") - for i, col := range ts.Columns { - if i == 0 { - buf.Myprintf("\t%v", col) - } else { - buf.Myprintf(",\n\t%v", col) - } - } - for _, idx := range ts.Indexes { - buf.Myprintf(",\n\t%v", idx) - } - - buf.Myprintf("\n)%s", strings.Replace(ts.Options, ", ", ",\n ", -1)) -} - // AddColumn appends the given column to the list in the spec func (ts *TableSpec) AddColumn(cd *ColumnDefinition) { ts.Columns = append(ts.Columns, cd) @@ -836,26 +428,6 @@ func (ts *TableSpec) AddIndex(id *IndexDefinition) { ts.Indexes = append(ts.Indexes, id) } -func (ts *TableSpec) walkSubtree(visit Visit) error { - if ts == nil { - return nil - } - - for _, n := range ts.Columns { - if err := Walk(visit, n); err != nil { - return err - } - } - - for _, n := range ts.Indexes { - if err := Walk(visit, n); err != nil { - return err - } - } - - return nil -} - // ColumnDefinition describes a column in a CREATE TABLE statement type ColumnDefinition struct { Name ColIdent @@ -908,21 +480,17 @@ type ColumnType struct { KeyOpt ColumnKeyOption } -// Format returns a canonical string representation of the type and all relevant options -func (ct *ColumnType) Format(buf *TrackedBuffer) { +// DescribeType returns the abbreviated type information as required for +// describe table +func (ct *ColumnType) DescribeType() string { + buf := NewTrackedBuffer(nil) buf.Myprintf("%s", ct.Type) - if ct.Length != nil && ct.Scale != nil { buf.Myprintf("(%v,%v)", ct.Length, ct.Scale) - } else if ct.Length != nil { buf.Myprintf("(%v)", ct.Length) } - if ct.EnumValues != nil { - buf.Myprintf("(%s)", strings.Join(ct.EnumValues, ", ")) - } - opts := make([]string, 0, 16) if ct.Unsigned { opts = append(opts, keywordStrings[UNSIGNED]) @@ -930,70 +498,10 @@ func (ct *ColumnType) Format(buf *TrackedBuffer) { if ct.Zerofill { opts = append(opts, keywordStrings[ZEROFILL]) } - if ct.Charset != "" { - opts = append(opts, keywordStrings[CHARACTER], keywordStrings[SET], ct.Charset) - } - if ct.Collate != "" { - opts = append(opts, keywordStrings[COLLATE], ct.Collate) - } - if ct.NotNull { - opts = append(opts, keywordStrings[NOT], keywordStrings[NULL]) - } - if ct.Default != nil { - opts = append(opts, keywordStrings[DEFAULT], String(ct.Default)) - } - if ct.OnUpdate != nil { - opts = append(opts, keywordStrings[ON], keywordStrings[UPDATE], String(ct.OnUpdate)) - } - if ct.Autoincrement { - opts = append(opts, keywordStrings[AUTO_INCREMENT]) - } - if ct.Comment != nil { - opts = append(opts, keywordStrings[COMMENT_KEYWORD], String(ct.Comment)) - } - if ct.KeyOpt == colKeyPrimary { - opts = append(opts, keywordStrings[PRIMARY], keywordStrings[KEY]) - } - if ct.KeyOpt == colKeyUnique { - opts = append(opts, keywordStrings[UNIQUE]) - } - if ct.KeyOpt == colKeyUniqueKey { - opts = append(opts, keywordStrings[UNIQUE], keywordStrings[KEY]) - } - if ct.KeyOpt == colKeySpatialKey { - opts = append(opts, keywordStrings[SPATIAL], keywordStrings[KEY]) - } - if ct.KeyOpt == colKey { - opts = append(opts, keywordStrings[KEY]) - } - if len(opts) != 0 { buf.Myprintf(" %s", strings.Join(opts, " ")) } -} - -// DescribeType returns the abbreviated type information as required for -// describe table -func (ct *ColumnType) DescribeType() string { - buf := NewTrackedBuffer(nil) - buf.Myprintf("%s", ct.Type) - if ct.Length != nil && ct.Scale != nil { - buf.Myprintf("(%v,%v)", ct.Length, ct.Scale) - } else if ct.Length != nil { - buf.Myprintf("(%v)", ct.Length) - } - - opts := make([]string, 0, 16) - if ct.Unsigned { - opts = append(opts, keywordStrings[UNSIGNED]) - } - if ct.Zerofill { - opts = append(opts, keywordStrings[ZEROFILL]) - } - if len(opts) != 0 { - buf.Myprintf(" %s", strings.Join(opts, " ")) - } - return buf.String() + return buf.String() } // SQLType returns the sqltypes type code for the given column @@ -1094,10 +602,6 @@ func (ct *ColumnType) SQLType() querypb.Type { panic("unimplemented type " + ct.Type) } -func (ct *ColumnType) walkSubtree(visit Visit) error { - return nil -} - // IndexDefinition describes an index in a CREATE TABLE statement type IndexDefinition struct { Info *IndexInfo @@ -1105,45 +609,6 @@ type IndexDefinition struct { Options []*IndexOption } -// Format formats the node. -func (idx *IndexDefinition) Format(buf *TrackedBuffer) { - buf.Myprintf("%v (", idx.Info) - for i, col := range idx.Columns { - if i != 0 { - buf.Myprintf(", %v", col.Column) - } else { - buf.Myprintf("%v", col.Column) - } - if col.Length != nil { - buf.Myprintf("(%v)", col.Length) - } - } - buf.Myprintf(")") - - for _, opt := range idx.Options { - buf.Myprintf(" %s", opt.Name) - if opt.Using != "" { - buf.Myprintf(" %s", opt.Using) - } else { - buf.Myprintf(" %v", opt.Value) - } - } -} - -func (idx *IndexDefinition) walkSubtree(visit Visit) error { - if idx == nil { - return nil - } - - for _, n := range idx.Columns { - if err := Walk(visit, n.Column); err != nil { - return err - } - } - - return nil -} - // IndexInfo describes the name and type of an index in a CREATE TABLE statement type IndexInfo struct { Type string @@ -1153,19 +618,6 @@ type IndexInfo struct { Unique bool } -// Format formats the node. -func (ii *IndexInfo) Format(buf *TrackedBuffer) { - if ii.Primary { - buf.Myprintf("%s", ii.Type) - } else { - buf.Myprintf("%s %v", ii.Type, ii.Name) - } -} - -func (ii *IndexInfo) walkSubtree(visit Visit) error { - return Walk(visit, ii.Name) -} - // IndexColumn describes a column in an index definition with optional length type IndexColumn struct { Column ColIdent @@ -1221,60 +673,12 @@ func (node *VindexSpec) ParseParams() (string, map[string]string) { return owner, params } -// Format formats the node. The "CREATE VINDEX" preamble was formatted in -// the containing DDL node Format, so this just prints the type, any -// parameters, and optionally the owner -func (node *VindexSpec) Format(buf *TrackedBuffer) { - buf.Myprintf("using %v", node.Type) - - numParams := len(node.Params) - if numParams != 0 { - buf.Myprintf(" with ") - for i, p := range node.Params { - if i != 0 { - buf.Myprintf(", ") - } - buf.Myprintf("%v", p) - } - } -} - -func (node *VindexSpec) walkSubtree(visit Visit) error { - err := Walk(visit, - node.Name, - ) - - if err != nil { - return err - } - - for _, p := range node.Params { - err := Walk(visit, p) - - if err != nil { - return err - } - } - return nil -} - // VindexParam defines a key/value parameter for a CREATE VINDEX statement type VindexParam struct { Key ColIdent Val string } -// Format formats the node. -func (node VindexParam) Format(buf *TrackedBuffer) { - buf.Myprintf("%s=%s", node.Key.String(), node.Val) -} - -func (node VindexParam) walkSubtree(visit Visit) error { - return Walk(visit, - node.Key, - ) -} - // Show represents a show statement. type Show struct { Type string @@ -1283,44 +687,11 @@ type Show struct { Scope string } -// Format formats the node. -func (node *Show) Format(buf *TrackedBuffer) { - if node.Type == "tables" && node.ShowTablesOpt != nil { - opt := node.ShowTablesOpt - if opt.DbName != "" { - if opt.Filter != nil { - buf.Myprintf("show %s%stables from %s %v", opt.Extended, opt.Full, opt.DbName, opt.Filter) - } else { - buf.Myprintf("show %s%stables from %s", opt.Extended, opt.Full, opt.DbName) - } - } else { - if opt.Filter != nil { - buf.Myprintf("show %s%stables %v", opt.Extended, opt.Full, opt.Filter) - } else { - buf.Myprintf("show %s%stables", opt.Extended, opt.Full) - } - } - return - } - if node.Scope == "" { - buf.Myprintf("show %s", node.Type) - } else { - buf.Myprintf("show %s %s", node.Scope, node.Type) - } - if node.HasOnTable() { - buf.Myprintf(" on %v", node.OnTable) - } -} - // HasOnTable returns true if the show statement has an "on" clause func (node *Show) HasOnTable() bool { return node.OnTable.Name.v != "" } -func (node *Show) walkSubtree(visit Visit) error { - return nil -} - // ShowTablesOpt is show tables option type ShowTablesOpt struct { Extended string @@ -1409,24 +780,6 @@ type StarExpr struct { TableName TableName } -// Format formats the node. -func (node *StarExpr) Format(buf *TrackedBuffer) { - if !node.TableName.IsEmpty() { - buf.Myprintf("%v.", node.TableName) - } - buf.Myprintf("*") -} - -func (node *StarExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.TableName, - ) -} - func (*StarExpr) replace(from, to Expr) bool { return false } @@ -1437,64 +790,14 @@ type AliasedExpr struct { As ColIdent } -// Format formats the node. -func (node *AliasedExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("%v", node.Expr) - if !node.As.IsEmpty() { - buf.Myprintf(" as %v", node.As) - } -} - -func (node *AliasedExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - node.As, - ) -} - // Nextval defines the NEXT VALUE expression. type Nextval struct { Expr Expr } -// Format formats the node. -func (node Nextval) Format(buf *TrackedBuffer) { - buf.Myprintf("next %v values", node.Expr) -} - -func (node Nextval) walkSubtree(visit Visit) error { - return Walk(visit, node.Expr) -} - // Columns represents an insert column list. type Columns []ColIdent -// Format formats the node. -func (node Columns) Format(buf *TrackedBuffer) { - if node == nil { - return - } - prefix := "(" - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } - buf.WriteString(")") -} - -func (node Columns) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - // FindColumn finds a column in the column list, returning // the index if it exists or -1 otherwise func (node Columns) FindColumn(col ColIdent) int { @@ -1509,49 +812,9 @@ func (node Columns) FindColumn(col ColIdent) int { // Partitions is a type alias for Columns so we can handle printing efficiently type Partitions Columns -// Format formats the node -func (node Partitions) Format(buf *TrackedBuffer) { - if node == nil { - return - } - prefix := " partition (" - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } - buf.WriteString(")") -} - -func (node Partitions) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - // TableExprs represents a list of table expressions. type TableExprs []TableExpr -// Format formats the node. -func (node TableExprs) Format(buf *TrackedBuffer) { - var prefix string - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } -} - -func (node TableExprs) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - // TableExpr represents a table expression. type TableExpr interface { iTableExpr() @@ -1572,30 +835,6 @@ type AliasedTableExpr struct { Hints *IndexHints } -// Format formats the node. -func (node *AliasedTableExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("%v%v", node.Expr, node.Partitions) - if !node.As.IsEmpty() { - buf.Myprintf(" as %v", node.As) - } - if node.Hints != nil { - // Hint node provides the space padding. - buf.Myprintf("%v", node.Hints) - } -} - -func (node *AliasedTableExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - node.As, - node.Hints, - ) -} - // RemoveHints returns a new AliasedTableExpr with the hints removed. func (node *AliasedTableExpr) RemoveHints() *AliasedTableExpr { noHints := *node @@ -1615,24 +854,6 @@ func (*Subquery) iSimpleTableExpr() {} // TableNames is a list of TableName. type TableNames []TableName -// Format formats the node. -func (node TableNames) Format(buf *TrackedBuffer) { - var prefix string - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } -} - -func (node TableNames) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - // TableName represents a table name. // Qualifier, if specified, represents a database or keyspace. // TableName is a value struct whose fields are case sensitive. @@ -1642,25 +863,6 @@ type TableName struct { Name, Qualifier TableIdent } -// Format formats the node. -func (node TableName) Format(buf *TrackedBuffer) { - if node.IsEmpty() { - return - } - if !node.Qualifier.IsEmpty() { - buf.Myprintf("%v.", node.Qualifier) - } - buf.Myprintf("%v", node.Name) -} - -func (node TableName) walkSubtree(visit Visit) error { - return Walk( - visit, - node.Name, - node.Qualifier, - ) -} - // IsEmpty returns true if TableName is nil or empty. func (node TableName) IsEmpty() bool { // If Name is empty, Qualifer is also empty. @@ -1682,21 +884,6 @@ type ParenTableExpr struct { Exprs TableExprs } -// Format formats the node. -func (node *ParenTableExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("(%v)", node.Exprs) -} - -func (node *ParenTableExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Exprs, - ) -} - // JoinCondition represents the join conditions (either a ON or USING clause) // of a JoinTableExpr. type JoinCondition struct { @@ -1704,24 +891,6 @@ type JoinCondition struct { Using Columns } -// Format formats the node. -func (node JoinCondition) Format(buf *TrackedBuffer) { - if node.On != nil { - buf.Myprintf(" on %v", node.On) - } - if node.Using != nil { - buf.Myprintf(" using %v", node.Using) - } -} - -func (node JoinCondition) walkSubtree(visit Visit) error { - return Walk( - visit, - node.On, - node.Using, - ) -} - // JoinTableExpr represents a TableExpr that's a JOIN operation. type JoinTableExpr struct { LeftExpr TableExpr @@ -1741,23 +910,6 @@ const ( NaturalRightJoinStr = "natural right join" ) -// Format formats the node. -func (node *JoinTableExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("%v %s %v%v", node.LeftExpr, node.Join, node.RightExpr, node.Condition) -} - -func (node *JoinTableExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.LeftExpr, - node.RightExpr, - node.Condition, - ) -} - // IndexHints represents a list of index hints. type IndexHints struct { Type string @@ -1771,29 +923,6 @@ const ( ForceStr = "force " ) -// Format formats the node. -func (node *IndexHints) Format(buf *TrackedBuffer) { - buf.Myprintf(" %sindex ", node.Type) - prefix := "(" - for _, n := range node.Indexes { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } - buf.Myprintf(")") -} - -func (node *IndexHints) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - for _, n := range node.Indexes { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - // Where represents a WHERE or HAVING clause. type Where struct { Type string @@ -1815,24 +944,6 @@ func NewWhere(typ string, expr Expr) *Where { return &Where{Type: typ, Expr: expr} } -// Format formats the node. -func (node *Where) Format(buf *TrackedBuffer) { - if node == nil || node.Expr == nil { - return - } - buf.Myprintf(" %s %v", node.Type, node.Expr) -} - -func (node *Where) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - ) -} - // Expr represents an expression. type Expr interface { iExpr() @@ -1906,43 +1017,9 @@ func replaceExprs(from, to Expr, exprs ...*Expr) bool { // It's not a valid expression because it's not parenthesized. type Exprs []Expr -// Format formats the node. -func (node Exprs) Format(buf *TrackedBuffer) { - var prefix string - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } -} - -func (node Exprs) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - -// AndExpr represents an AND expression. -type AndExpr struct { - Left, Right Expr -} - -// Format formats the node. -func (node *AndExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("%v and %v", node.Left, node.Right) -} - -func (node *AndExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Left, - node.Right, - ) +// AndExpr represents an AND expression. +type AndExpr struct { + Left, Right Expr } func (node *AndExpr) replace(from, to Expr) bool { @@ -1954,22 +1031,6 @@ type OrExpr struct { Left, Right Expr } -// Format formats the node. -func (node *OrExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("%v or %v", node.Left, node.Right) -} - -func (node *OrExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Left, - node.Right, - ) -} - func (node *OrExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Left, &node.Right) } @@ -1979,21 +1040,6 @@ type NotExpr struct { Expr Expr } -// Format formats the node. -func (node *NotExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("not %v", node.Expr) -} - -func (node *NotExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - ) -} - func (node *NotExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Expr) } @@ -2003,21 +1049,6 @@ type ParenExpr struct { Expr Expr } -// Format formats the node. -func (node *ParenExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("(%v)", node.Expr) -} - -func (node *ParenExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - ) -} - func (node *ParenExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Expr) } @@ -2048,26 +1079,6 @@ const ( JSONUnquoteExtractOp = "->>" ) -// Format formats the node. -func (node *ComparisonExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("%v %s %v", node.Left, node.Operator, node.Right) - if node.Escape != nil { - buf.Myprintf(" escape %v", node.Escape) - } -} - -func (node *ComparisonExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Left, - node.Right, - node.Escape, - ) -} - func (node *ComparisonExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Left, &node.Right, &node.Escape) } @@ -2085,23 +1096,6 @@ const ( NotBetweenStr = "not between" ) -// Format formats the node. -func (node *RangeCond) Format(buf *TrackedBuffer) { - buf.Myprintf("%v %s %v and %v", node.Left, node.Operator, node.From, node.To) -} - -func (node *RangeCond) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Left, - node.From, - node.To, - ) -} - func (node *RangeCond) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Left, &node.From, &node.To) } @@ -2122,21 +1116,6 @@ const ( IsNotFalseStr = "is not false" ) -// Format formats the node. -func (node *IsExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("%v %s", node.Expr, node.Operator) -} - -func (node *IsExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - ) -} - func (node *IsExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Expr) } @@ -2146,21 +1125,6 @@ type ExistsExpr struct { Subquery *Subquery } -// Format formats the node. -func (node *ExistsExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("exists %v", node.Subquery) -} - -func (node *ExistsExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Subquery, - ) -} - func (node *ExistsExpr) replace(from, to Expr) bool { return false } @@ -2256,33 +1220,6 @@ func NewValArg(in []byte) *SQLVal { return &SQLVal{Type: ValArg, Val: in} } -// Format formats the node. -func (node *SQLVal) Format(buf *TrackedBuffer) { - switch node.Type { - case StrVal: - sqltypes.MakeTrusted(sqltypes.VarBinary, node.Val).EncodeSQL(buf) - case IntVal, FloatVal, HexNum: - buf.Myprintf("%s", []byte(node.Val)) - case HexVal: - buf.Myprintf("X'%s'", []byte(node.Val)) - case BitVal: - buf.Myprintf("B'%s'", []byte(node.Val)) - case ValArg: - buf.WriteArg(string(node.Val)) - case PgEscapeString: - buf.Myprintf("E'%s'", sqltypes.EncodeBytesSQLWithoutQuotes(node.Val)) - default: - panic("unexpected") - } - if len(node.CastType) > 0 { - buf.Myprintf("%s", node.CastType) - } -} - -func (node *SQLVal) walkSubtree(visit Visit) error { - return nil -} - func (node *SQLVal) replace(from, to Expr) bool { return false } @@ -2300,15 +1237,6 @@ func (node *SQLVal) HexDecode() ([]byte, error) { // NullVal represents a NULL value. type NullVal struct{} -// Format formats the node. -func (node *NullVal) Format(buf *TrackedBuffer) { - buf.Myprintf("null") -} - -func (node *NullVal) walkSubtree(visit Visit) error { - return nil -} - func (node *NullVal) replace(from, to Expr) bool { return false } @@ -2316,19 +1244,6 @@ func (node *NullVal) replace(from, to Expr) bool { // BoolVal is true or false. type BoolVal bool -// Format formats the node. -func (node BoolVal) Format(buf *TrackedBuffer) { - if node { - buf.Myprintf("true") - } else { - buf.Myprintf("false") - } -} - -func (node BoolVal) walkSubtree(visit Visit) error { - return nil -} - func (node BoolVal) replace(from, to Expr) bool { return false } @@ -2344,25 +1259,6 @@ type ColName struct { Qualifier TableName } -// Format formats the node. -func (node *ColName) Format(buf *TrackedBuffer) { - if !node.Qualifier.IsEmpty() { - buf.Myprintf("%v.", node.Qualifier) - } - buf.Myprintf("%v", node.Name) -} - -func (node *ColName) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Name, - node.Qualifier, - ) -} - func (node *ColName) replace(from, to Expr) bool { return false } @@ -2390,15 +1286,6 @@ func (ListArg) iColTuple() {} // ValTuple represents a tuple of actual values. type ValTuple Exprs -// Format formats the node. -func (node ValTuple) Format(buf *TrackedBuffer) { - buf.Myprintf("(%v)", Exprs(node)) -} - -func (node ValTuple) walkSubtree(visit Visit) error { - return Walk(visit, Exprs(node)) -} - func (node ValTuple) replace(from, to Expr) bool { for i := range node { if replaceExprs(from, to, &node[i]) { @@ -2413,21 +1300,6 @@ type Subquery struct { Select SelectStatement } -// Format formats the node. -func (node *Subquery) Format(buf *TrackedBuffer) { - buf.Myprintf("(%v)", node.Select) -} - -func (node *Subquery) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Select, - ) -} - func (node *Subquery) replace(from, to Expr) bool { return false } @@ -2435,15 +1307,6 @@ func (node *Subquery) replace(from, to Expr) bool { // ListArg represents a named list argument. type ListArg []byte -// Format formats the node. -func (node ListArg) Format(buf *TrackedBuffer) { - buf.WriteArg(string(node)) -} - -func (node ListArg) walkSubtree(visit Visit) error { - return nil -} - func (node ListArg) replace(from, to Expr) bool { return false } @@ -2469,22 +1332,6 @@ const ( ShiftRightStr = ">>" ) -// Format formats the node. -func (node *BinaryExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("%v %s %v", node.Left, node.Operator, node.Right) -} - -func (node *BinaryExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Left, - node.Right, - ) -} - func (node *BinaryExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Left, &node.Right) } @@ -2505,25 +1352,6 @@ const ( UBinaryStr = "_binary " ) -// Format formats the node. -func (node *UnaryExpr) Format(buf *TrackedBuffer) { - if _, unary := node.Expr.(*UnaryExpr); unary { - buf.Myprintf("%s %v", node.Operator, node.Expr) - return - } - buf.Myprintf("%s%v", node.Operator, node.Expr) -} - -func (node *UnaryExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - ) -} - func (node *UnaryExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Expr) } @@ -2534,21 +1362,6 @@ type IntervalExpr struct { Unit string } -// Format formats the node. -func (node *IntervalExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("interval %v %s", node.Expr, node.Unit) -} - -func (node *IntervalExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - ) -} - func (node *IntervalExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Expr) } @@ -2559,21 +1372,6 @@ type CollateExpr struct { Charset string } -// Format formats the node. -func (node *CollateExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("%v collate %s", node.Expr, node.Charset) -} - -func (node *CollateExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - ) -} - func (node *CollateExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Expr) } @@ -2586,33 +1384,6 @@ type FuncExpr struct { Exprs SelectExprs } -// Format formats the node. -func (node *FuncExpr) Format(buf *TrackedBuffer) { - var distinct string - if node.Distinct { - distinct = "distinct " - } - if !node.Qualifier.IsEmpty() { - buf.Myprintf("%v.", node.Qualifier) - } - // Function names should not be back-quoted even - // if they match a reserved word. So, print the - // name as is. - buf.Myprintf("%s(%s%v)", node.Name.String(), distinct, node.Exprs) -} - -func (node *FuncExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Qualifier, - node.Name, - node.Exprs, - ) -} - func (node *FuncExpr) replace(from, to Expr) bool { for _, sel := range node.Exprs { aliased, ok := sel.(*AliasedExpr) @@ -2659,22 +1430,6 @@ type GroupConcatExpr struct { Separator string } -// Format formats the node -func (node *GroupConcatExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("group_concat(%s%v%v%s)", node.Distinct, node.Exprs, node.OrderBy, node.Separator) -} - -func (node *GroupConcatExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Exprs, - node.OrderBy, - ) -} - func (node *GroupConcatExpr) replace(from, to Expr) bool { for _, sel := range node.Exprs { aliased, ok := sel.(*AliasedExpr) @@ -2698,21 +1453,6 @@ type ValuesFuncExpr struct { Name *ColName } -// Format formats the node. -func (node *ValuesFuncExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("values(%v)", node.Name) -} - -func (node *ValuesFuncExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Name, - ) -} - func (node *ValuesFuncExpr) replace(from, to Expr) bool { return false } @@ -2725,32 +1465,10 @@ type SubstrExpr struct { To Expr } -// Format formats the node. -func (node *SubstrExpr) Format(buf *TrackedBuffer) { - - if node.To == nil { - buf.Myprintf("substr(%v, %v)", node.Name, node.From) - } else { - buf.Myprintf("substr(%v, %v, %v)", node.Name, node.From, node.To) - } -} - func (node *SubstrExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.From, &node.To) } -func (node *SubstrExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Name, - node.From, - node.To, - ) -} - // ConvertExpr represents a call to CONVERT(expr, type) // or it's equivalent CAST(expr AS type). Both are rewritten to the former. type ConvertExpr struct { @@ -2758,22 +1476,6 @@ type ConvertExpr struct { Type *ConvertType } -// Format formats the node. -func (node *ConvertExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("convert(%v, %v)", node.Expr, node.Type) -} - -func (node *ConvertExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - node.Type, - ) -} - func (node *ConvertExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Expr) } @@ -2784,21 +1486,6 @@ type ConvertUsingExpr struct { Type string } -// Format formats the node. -func (node *ConvertUsingExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("convert(%v using %s)", node.Expr, node.Type) -} - -func (node *ConvertUsingExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - ) -} - func (node *ConvertUsingExpr) replace(from, to Expr) bool { return replaceExprs(from, to, &node.Expr) } @@ -2817,25 +1504,6 @@ const ( CharacterSetStr = " character set" ) -// Format formats the node. -func (node *ConvertType) Format(buf *TrackedBuffer) { - buf.Myprintf("%s", node.Type) - if node.Length != nil { - buf.Myprintf("(%v", node.Length) - if node.Scale != nil { - buf.Myprintf(", %v", node.Scale) - } - buf.Myprintf(")") - } - if node.Charset != "" { - buf.Myprintf("%s %s", node.Operator, node.Charset) - } -} - -func (node *ConvertType) walkSubtree(visit Visit) error { - return nil -} - // MatchExpr represents a call to the MATCH function type MatchExpr struct { Columns SelectExprs @@ -2851,22 +1519,6 @@ const ( QueryExpansionStr = " with query expansion" ) -// Format formats the node -func (node *MatchExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("match(%v) against (%v%s)", node.Columns, node.Expr, node.Option) -} - -func (node *MatchExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Columns, - node.Expr, - ) -} - func (node *MatchExpr) replace(from, to Expr) bool { for _, sel := range node.Columns { aliased, ok := sel.(*AliasedExpr) @@ -2887,36 +1539,6 @@ type CaseExpr struct { Else Expr } -// Format formats the node. -func (node *CaseExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("case ") - if node.Expr != nil { - buf.Myprintf("%v ", node.Expr) - } - for _, when := range node.Whens { - buf.Myprintf("%v ", when) - } - if node.Else != nil { - buf.Myprintf("else %v ", node.Else) - } - buf.Myprintf("end") -} - -func (node *CaseExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - if err := Walk(visit, node.Expr); err != nil { - return err - } - for _, n := range node.Whens { - if err := Walk(visit, n); err != nil { - return err - } - } - return Walk(visit, node.Else) -} - func (node *CaseExpr) replace(from, to Expr) bool { for _, when := range node.Whens { if replaceExprs(from, to, &when.Cond, &when.Val) { @@ -2931,18 +1553,6 @@ type Default struct { ColName string } -// Format formats the node. -func (node *Default) Format(buf *TrackedBuffer) { - buf.Myprintf("default") - if node.ColName != "" { - buf.Myprintf("(%s)", node.ColName) - } -} - -func (node *Default) walkSubtree(visit Visit) error { - return nil -} - func (node *Default) replace(from, to Expr) bool { return false } @@ -2953,64 +1563,12 @@ type When struct { Val Expr } -// Format formats the node. -func (node *When) Format(buf *TrackedBuffer) { - buf.Myprintf("when %v then %v", node.Cond, node.Val) -} - -func (node *When) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Cond, - node.Val, - ) -} - // GroupBy represents a GROUP BY clause. type GroupBy []Expr -// Format formats the node. -func (node GroupBy) Format(buf *TrackedBuffer) { - prefix := " group by " - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } -} - -func (node GroupBy) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - // OrderBy represents an ORDER By clause. type OrderBy []*Order -// Format formats the node. -func (node OrderBy) Format(buf *TrackedBuffer) { - prefix := " order by " - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } -} - -func (node OrderBy) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - // Order represents an ordering expression. type Order struct { Expr Expr @@ -3023,202 +1581,38 @@ const ( DescScr = "desc" ) -// Format formats the node. -func (node *Order) Format(buf *TrackedBuffer) { - if node, ok := node.Expr.(*NullVal); ok { - buf.Myprintf("%v", node) - return - } - if node, ok := node.Expr.(*FuncExpr); ok { - if node.Name.Lowered() == "rand" { - buf.Myprintf("%v", node) - return - } - } - - buf.Myprintf("%v %s", node.Expr, node.Direction) -} - -func (node *Order) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Expr, - ) -} - // Limit represents a LIMIT clause. type Limit struct { Offset, Rowcount Expr } -// Format formats the node. -func (node *Limit) Format(buf *TrackedBuffer) { - if node == nil { - return - } - buf.Myprintf(" limit ") - if node.Offset != nil { - buf.Myprintf("%v, ", node.Offset) - } - buf.Myprintf("%v", node.Rowcount) -} - -func (node *Limit) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Offset, - node.Rowcount, - ) -} - // Values represents a VALUES clause. type Values []ValTuple -// Format formats the node. -func (node Values) Format(buf *TrackedBuffer) { - prefix := "values " - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } -} - -func (node Values) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - // UpdateExprs represents a list of update expressions. type UpdateExprs []*UpdateExpr -// Format formats the node. -func (node UpdateExprs) Format(buf *TrackedBuffer) { - var prefix string - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } -} - -func (node UpdateExprs) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - // UpdateExpr represents an update expression. type UpdateExpr struct { Name *ColName Expr Expr } -// Format formats the node. -func (node *UpdateExpr) Format(buf *TrackedBuffer) { - buf.Myprintf("%v = %v", node.Name, node.Expr) -} - -func (node *UpdateExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Name, - node.Expr, - ) -} - // SetExprs represents a list of set expressions. type SetExprs []*SetExpr -// Format formats the node. -func (node SetExprs) Format(buf *TrackedBuffer) { - var prefix string - for _, n := range node { - buf.Myprintf("%s%v", prefix, n) - prefix = ", " - } -} - -func (node SetExprs) walkSubtree(visit Visit) error { - for _, n := range node { - if err := Walk(visit, n); err != nil { - return err - } - } - return nil -} - // SetExpr represents a set expression. type SetExpr struct { Name ColIdent Expr Expr } -// Format formats the node. -func (node *SetExpr) Format(buf *TrackedBuffer) { - // We don't have to backtick set variable names. - if node.Name.EqualString("charset") || node.Name.EqualString("names") { - buf.Myprintf("%s %v", node.Name.String(), node.Expr) - } else { - buf.Myprintf("%s = %v", node.Name.String(), node.Expr) - } -} - -func (node *SetExpr) walkSubtree(visit Visit) error { - if node == nil { - return nil - } - return Walk( - visit, - node.Name, - node.Expr, - ) -} - // OnDup represents an ON DUPLICATE KEY clause. type OnDup UpdateExprs -// Format formats the node. -func (node OnDup) Format(buf *TrackedBuffer) { - if node == nil { - return - } - buf.Myprintf(" on duplicate key update %v", UpdateExprs(node)) -} - -func (node OnDup) walkSubtree(visit Visit) error { - return Walk(visit, UpdateExprs(node)) -} - // Returning represents RETURNING clause from postgresql syntex type Returning Exprs -// Format formats the node. -func (node Returning) Format(buf *TrackedBuffer) { - if node == nil { - return - } - buf.Myprintf(" returning %v", Exprs(node)) -} - -func (node Returning) walkSubtree(visit Visit) error { - return Walk(visit, Exprs(node)) -} - // replace implement Expr interface func (node Returning) replace(from, to Expr) bool { for i := range node { @@ -3255,21 +1649,6 @@ func NewColIdentWithQuotes(str string, quotes bool) ColIdent { } } -// Format formats the node. -func (node ColIdent) Format(buf *TrackedBuffer) { - if node.wrapWithQuotes { - // print as is in quotes - buf.Myprintf(`"%s"`, node.val) - } else { - formatID(buf, node.val, node.Lowered()) - } - -} - -func (node ColIdent) walkSubtree(visit Visit) error { - return nil -} - // IsEmpty returns true if the name is empty. func (node ColIdent) IsEmpty() bool { return node.val == "" @@ -3350,21 +1729,6 @@ func NewTableIdentWithQuotes(str string, quotes bool) TableIdent { return TableIdent{v: str, wrapWithQuotes: quotes} } -// Format formats the node. -func (node TableIdent) Format(buf *TrackedBuffer) { - if node.wrapWithQuotes { - // print as is in quotes - buf.Myprintf(`"%s"`, node.v) - } else { - formatID(buf, node.v, strings.ToLower(node.v)) - } - -} - -func (node TableIdent) walkSubtree(visit Visit) error { - return nil -} - // IsEmpty returns true if TabIdent is empty. func (node TableIdent) IsEmpty() bool { return node.v == "" diff --git a/sqlparser/sql.go b/sqlparser/sql.go index ab92adc9b..9d320263f 100644 --- a/sqlparser/sql.go +++ b/sqlparser/sql.go @@ -40,67 +40,69 @@ func forceEOF(yylex interface{}) { //line sql.y:53 type yySymType struct { - yys int - empty struct{} - statement Statement - selStmt SelectStatement - ddl *DDL - ins *Insert - byt byte - bytes []byte - bytes2 [][]byte - str string - strs []string - selectExprs SelectExprs - selectExpr SelectExpr - columns Columns - partitions Partitions - colName *ColName - tableExprs TableExprs - tableExpr TableExpr - joinCondition JoinCondition - tableName TableName - tableNames TableNames - indexHints *IndexHints - returning Returning - expr Expr - exprs Exprs - boolVal BoolVal - colTuple ColTuple - values Values - valTuple ValTuple - subquery *Subquery - whens []*When - when *When - orderBy OrderBy - order *Order - limit *Limit - updateExprs UpdateExprs - setExprs SetExprs - updateExpr *UpdateExpr - setExpr *SetExpr - colIdent ColIdent - tableIdent TableIdent - convertType *ConvertType - aliasedTableName *AliasedTableExpr - TableSpec *TableSpec - columnType ColumnType - colKeyOpt ColumnKeyOption - optVal *SQLVal - LengthScaleOption LengthScaleOption - columnDefinition *ColumnDefinition - indexDefinition *IndexDefinition - indexInfo *IndexInfo - indexOption *IndexOption - indexOptions []*IndexOption - indexColumn *IndexColumn - indexColumns []*IndexColumn - partDefs []*PartitionDefinition - partDef *PartitionDefinition - partSpec *PartitionSpec - vindexParam VindexParam - vindexParams []VindexParam - showFilter *ShowFilter + yys int + empty struct{} + statement Statement + selStmt SelectStatement + ddl *DDL + ins *Insert + byt byte + bytes []byte + bytes2 [][]byte + str string + strs []string + selectExprs SelectExprs + selectExpr SelectExpr + columns Columns + partitions Partitions + colName *ColName + tableExprs TableExprs + tableExpr TableExpr + joinCondition JoinCondition + tableName TableName + tableNames TableNames + indexHints *IndexHints + returning Returning + expr Expr + exprs Exprs + boolVal BoolVal + colTuple ColTuple + values Values + valTuple ValTuple + subquery *Subquery + whens []*When + when *When + orderBy OrderBy + order *Order + limit *Limit + updateExprs UpdateExprs + setExprs SetExprs + updateExpr *UpdateExpr + setExpr *SetExpr + colIdent ColIdent + tableIdent TableIdent + usingInExecuteList UsingInExecuteList + convertType *ConvertType + aliasedTableName *AliasedTableExpr + TableSpec *TableSpec + columnType ColumnType + colKeyOpt ColumnKeyOption + optVal *SQLVal + LengthScaleOption LengthScaleOption + columnDefinition *ColumnDefinition + indexDefinition *IndexDefinition + indexInfo *IndexInfo + indexOption *IndexOption + indexOptions []*IndexOption + indexColumn *IndexColumn + indexColumns []*IndexColumn + partDefs []*PartitionDefinition + partDef *PartitionDefinition + partSpec *PartitionSpec + vindexParam VindexParam + vindexParams []VindexParam + showFilter *ShowFilter + fromInPrepare FromInPrepare } const LEX_ERROR = 57346 @@ -240,100 +242,103 @@ const START = 57479 const TRANSACTION = 57480 const COMMIT = 57481 const ROLLBACK = 57482 -const BIT = 57483 -const TINYINT = 57484 -const SMALLINT = 57485 -const MEDIUMINT = 57486 -const INT = 57487 -const INTEGER = 57488 -const BIGINT = 57489 -const INTNUM = 57490 -const REAL = 57491 -const DOUBLE = 57492 -const FLOAT_TYPE = 57493 -const DECIMAL = 57494 -const NUMERIC = 57495 -const TIME = 57496 -const TIMESTAMP = 57497 -const DATETIME = 57498 -const YEAR = 57499 -const CHAR = 57500 -const VARCHAR = 57501 -const BOOL = 57502 -const CHARACTER = 57503 -const VARBINARY = 57504 -const NCHAR = 57505 -const TEXT = 57506 -const TINYTEXT = 57507 -const MEDIUMTEXT = 57508 -const LONGTEXT = 57509 -const BLOB = 57510 -const TINYBLOB = 57511 -const MEDIUMBLOB = 57512 -const LONGBLOB = 57513 -const JSON = 57514 -const ENUM = 57515 -const GEOMETRY = 57516 -const POINT = 57517 -const LINESTRING = 57518 -const POLYGON = 57519 -const GEOMETRYCOLLECTION = 57520 -const MULTIPOINT = 57521 -const MULTILINESTRING = 57522 -const MULTIPOLYGON = 57523 -const NULLX = 57524 -const AUTO_INCREMENT = 57525 -const APPROXNUM = 57526 -const SIGNED = 57527 -const UNSIGNED = 57528 -const ZEROFILL = 57529 -const DATABASES = 57530 -const TABLES = 57531 -const VITESS_KEYSPACES = 57532 -const VITESS_SHARDS = 57533 -const VITESS_TABLETS = 57534 -const VSCHEMA_TABLES = 57535 -const EXTENDED = 57536 -const FULL = 57537 -const PROCESSLIST = 57538 -const NAMES = 57539 -const CHARSET = 57540 -const GLOBAL = 57541 -const SESSION = 57542 -const ISOLATION = 57543 -const LEVEL = 57544 -const READ = 57545 -const WRITE = 57546 -const ONLY = 57547 -const REPEATABLE = 57548 -const COMMITTED = 57549 -const UNCOMMITTED = 57550 -const SERIALIZABLE = 57551 -const CURRENT_TIMESTAMP = 57552 -const DATABASE = 57553 -const CURRENT_DATE = 57554 -const CURRENT_TIME = 57555 -const LOCALTIME = 57556 -const LOCALTIMESTAMP = 57557 -const UTC_DATE = 57558 -const UTC_TIME = 57559 -const UTC_TIMESTAMP = 57560 -const REPLACE = 57561 -const CONVERT = 57562 -const CAST = 57563 -const SUBSTR = 57564 -const SUBSTRING = 57565 -const GROUP_CONCAT = 57566 -const SEPARATOR = 57567 -const MATCH = 57568 -const AGAINST = 57569 -const BOOLEAN = 57570 -const LANGUAGE = 57571 -const WITH = 57572 -const QUERY = 57573 -const EXPANSION = 57574 -const UNUSED = 57575 -const RETURNING = 57576 +const DEALLOCATE = 57483 +const PREPARE = 57484 +const EXECUTE = 57485 +const BIT = 57486 +const TINYINT = 57487 +const SMALLINT = 57488 +const MEDIUMINT = 57489 +const INT = 57490 +const INTEGER = 57491 +const BIGINT = 57492 +const INTNUM = 57493 +const REAL = 57494 +const DOUBLE = 57495 +const FLOAT_TYPE = 57496 +const DECIMAL = 57497 +const NUMERIC = 57498 +const TIME = 57499 +const TIMESTAMP = 57500 +const DATETIME = 57501 +const YEAR = 57502 +const CHAR = 57503 +const VARCHAR = 57504 +const BOOL = 57505 +const CHARACTER = 57506 +const VARBINARY = 57507 +const NCHAR = 57508 +const TEXT = 57509 +const TINYTEXT = 57510 +const MEDIUMTEXT = 57511 +const LONGTEXT = 57512 +const BLOB = 57513 +const TINYBLOB = 57514 +const MEDIUMBLOB = 57515 +const LONGBLOB = 57516 +const JSON = 57517 +const ENUM = 57518 +const GEOMETRY = 57519 +const POINT = 57520 +const LINESTRING = 57521 +const POLYGON = 57522 +const GEOMETRYCOLLECTION = 57523 +const MULTIPOINT = 57524 +const MULTILINESTRING = 57525 +const MULTIPOLYGON = 57526 +const NULLX = 57527 +const AUTO_INCREMENT = 57528 +const APPROXNUM = 57529 +const SIGNED = 57530 +const UNSIGNED = 57531 +const ZEROFILL = 57532 +const DATABASES = 57533 +const TABLES = 57534 +const VITESS_KEYSPACES = 57535 +const VITESS_SHARDS = 57536 +const VITESS_TABLETS = 57537 +const VSCHEMA_TABLES = 57538 +const EXTENDED = 57539 +const FULL = 57540 +const PROCESSLIST = 57541 +const NAMES = 57542 +const CHARSET = 57543 +const GLOBAL = 57544 +const SESSION = 57545 +const ISOLATION = 57546 +const LEVEL = 57547 +const READ = 57548 +const WRITE = 57549 +const ONLY = 57550 +const REPEATABLE = 57551 +const COMMITTED = 57552 +const UNCOMMITTED = 57553 +const SERIALIZABLE = 57554 +const CURRENT_TIMESTAMP = 57555 +const DATABASE = 57556 +const CURRENT_DATE = 57557 +const CURRENT_TIME = 57558 +const LOCALTIME = 57559 +const LOCALTIMESTAMP = 57560 +const UTC_DATE = 57561 +const UTC_TIME = 57562 +const UTC_TIMESTAMP = 57563 +const REPLACE = 57564 +const CONVERT = 57565 +const CAST = 57566 +const SUBSTR = 57567 +const SUBSTRING = 57568 +const GROUP_CONCAT = 57569 +const SEPARATOR = 57570 +const MATCH = 57571 +const AGAINST = 57572 +const BOOLEAN = 57573 +const LANGUAGE = 57574 +const WITH = 57575 +const QUERY = 57576 +const EXPANSION = 57577 +const UNUSED = 57578 +const RETURNING = 57579 var yyToknames = [...]string{ "$end", @@ -493,6 +498,9 @@ var yyToknames = [...]string{ "TRANSACTION", "COMMIT", "ROLLBACK", + "DEALLOCATE", + "PREPARE", + "EXECUTE", "BIT", "TINYINT", "SMALLINT", @@ -601,991 +609,1023 @@ var yyExca = [...]int{ 1, -1, -2, 0, -1, 3, - 5, 27, + 5, 30, -2, 4, - -1, 36, - 151, 262, - 152, 262, - -2, 252, - -1, 238, - 110, 590, - -2, 487, - -1, 256, - 53, 587, - 110, 587, - 111, 587, - 112, 587, - -2, 490, - -1, 307, - 81, 748, - -2, 58, - -1, 308, - 81, 709, - -2, 59, - -1, 313, - 81, 693, - -2, 552, - -1, 315, - 81, 730, - -2, 554, - -1, 574, - 52, 41, - 54, 41, - -2, 43, - -1, 706, - 110, 592, - -2, 589, - -1, 707, - 110, 590, - -2, 588, - -1, 753, - 110, 590, - -2, 487, - -1, 911, - 5, 28, - -2, 392, - -1, 936, - 5, 27, - -2, 524, - -1, 1162, - 5, 28, - -2, 525, - -1, 1208, - 5, 27, - -2, 527, - -1, 1270, - 5, 28, - -2, 528, + -1, 39, + 151, 265, + 152, 265, + -2, 255, + -1, 247, + 110, 602, + -2, 499, + -1, 265, + 53, 599, + 110, 599, + 111, 599, + 112, 599, + -2, 502, + -1, 316, + 81, 760, + -2, 61, + -1, 317, + 81, 721, + -2, 62, + -1, 322, + 81, 705, + -2, 564, + -1, 324, + 81, 742, + -2, 566, + -1, 586, + 52, 44, + 54, 44, + -2, 46, + -1, 724, + 110, 604, + -2, 601, + -1, 725, + 110, 602, + -2, 600, + -1, 771, + 110, 602, + -2, 499, + -1, 930, + 5, 31, + -2, 404, + -1, 955, + 5, 30, + -2, 536, + -1, 1182, + 5, 31, + -2, 537, + -1, 1228, + 5, 30, + -2, 539, + -1, 1290, + 5, 31, + -2, 540, } const yyPrivate = 57344 -const yyLast = 9110 +const yyLast = 9429 var yyAct = [...]int{ - 238, 853, 1261, 522, 452, 770, 644, 1219, 1068, 1096, - 241, 788, 267, 806, 997, 567, 810, 847, 521, 3, - 1069, 1065, 809, 771, 312, 569, 955, 211, 903, 1042, - 1000, 74, 1168, 732, 939, 186, 217, 739, 186, 53, - 988, 584, 759, 736, 944, 454, 709, 819, 843, 409, - 268, 47, 460, 583, 306, 767, 571, 556, 294, 474, - 885, 466, 186, 186, 311, 303, 216, 226, 186, 738, - 414, 212, 213, 214, 215, 301, 536, 292, 52, 1157, - 293, 1290, 1280, 1288, 240, 1268, 1286, 854, 1279, 1267, - 1060, 1154, 413, 833, 434, 1228, 1090, 230, 47, 182, - 178, 179, 180, 1091, 1092, 585, 222, 586, 244, 801, - 827, 449, 298, 1243, 486, 485, 495, 496, 488, 489, - 490, 491, 492, 493, 494, 487, 57, 673, 497, 1102, - 1103, 1104, 979, 963, 674, 826, 962, 1107, 1105, 964, - 802, 803, 1180, 1043, 834, 1195, 1143, 1141, 210, 445, - 446, 59, 60, 61, 62, 63, 1287, 1285, 436, 1262, - 438, 1021, 422, 768, 1226, 789, 791, 1220, 423, 416, - 297, 176, 821, 1045, 652, 175, 186, 176, 186, 870, - 643, 1222, 821, 821, 186, 435, 437, 954, 953, 952, - 186, 419, 1018, 869, 311, 311, 311, 311, 1020, 311, - 410, 411, 189, 177, 1248, 1047, 311, 1051, 181, 1046, - 973, 1044, 512, 513, 1165, 1029, 1049, 919, 897, 680, - 874, 477, 429, 487, 807, 1048, 497, 497, 677, 473, - 868, 1253, 1111, 476, 1121, 880, 760, 942, 1050, 1052, - 790, 463, 472, 471, 440, 440, 440, 440, 1221, 440, - 490, 491, 492, 493, 494, 487, 440, 1062, 497, 473, - 462, 587, 1227, 1225, 647, 820, 433, 834, 471, 1244, - 818, 816, 977, 47, 817, 820, 820, 1025, 865, 862, - 863, 1008, 861, 1112, 473, 760, 1266, 926, 506, 507, - 509, 1019, 186, 1017, 894, 895, 896, 1106, 716, 186, - 186, 186, 1256, 468, 511, 311, 916, 872, 875, 1006, - 1272, 589, 714, 715, 713, 881, 174, 50, 1186, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 712, 535, - 537, 537, 537, 537, 537, 537, 537, 537, 545, 546, - 547, 548, 867, 425, 426, 427, 823, 1185, 508, 568, - 464, 824, 683, 684, 1024, 472, 471, 538, 539, 540, - 541, 542, 543, 544, 866, 992, 698, 700, 701, 415, - 581, 699, 473, 991, 1007, 733, 575, 291, 734, 1012, - 1009, 1002, 1003, 1010, 1005, 1004, 495, 496, 488, 489, - 490, 491, 492, 493, 494, 487, 1011, 980, 497, 472, - 471, 871, 1014, 1273, 1254, 472, 471, 297, 915, 1202, - 914, 1183, 1064, 311, 873, 453, 473, 1129, 1251, 186, - 186, 311, 473, 186, 989, 1099, 186, 472, 471, 1098, - 186, 974, 311, 311, 311, 311, 311, 311, 311, 311, - 965, 417, 418, 856, 473, 735, 311, 311, 1276, 453, - 1232, 186, 1212, 1259, 661, 488, 489, 490, 491, 492, - 493, 494, 487, 440, 658, 497, 689, 1231, 686, 657, - 186, 440, 1212, 453, 1212, 1213, 476, 648, 707, 646, - 679, 641, 440, 440, 440, 440, 440, 440, 440, 440, - 659, 1177, 1176, 710, 1087, 453, 440, 440, 431, 685, - 1164, 453, 706, 486, 485, 495, 496, 488, 489, 490, - 491, 492, 493, 494, 487, 424, 678, 497, 1118, 1117, - 23, 743, 1114, 1115, 1114, 1113, 744, 746, 909, 453, - 753, 753, 687, 472, 471, 702, 753, 410, 704, 232, - 752, 755, 762, 747, 934, 578, 761, 935, 1108, 904, - 473, 186, 23, 753, 186, 186, 186, 186, 186, 1032, - 47, 553, 453, 772, 745, 453, 186, 50, 21, 186, - 593, 592, 787, 186, 795, 524, 577, 186, 186, 1207, - 1066, 311, 921, 940, 941, 918, 579, 747, 577, 711, - 764, 941, 796, 311, 757, 748, 749, 740, 742, 50, - 54, 756, 909, 940, 298, 298, 298, 298, 298, 745, - 1160, 553, 236, 774, 775, 763, 777, 765, 766, 568, - 23, 792, 785, 1120, 221, 920, 553, 298, 917, 793, - 794, 552, 1116, 940, 773, 798, 799, 776, 966, 909, - 800, 909, 580, 813, 186, 681, 223, 311, 50, 311, - 1190, 828, 441, 186, 645, 553, 186, 311, 849, 848, - 1081, 969, 297, 297, 297, 297, 297, 50, 264, 257, - 741, 259, 260, 261, 262, 945, 946, 297, 258, 263, - 844, 707, 839, 838, 65, 297, 845, 846, 558, 561, - 562, 563, 559, 50, 560, 564, 851, 440, 693, 440, - 835, 836, 837, 1101, 1066, 706, 993, 440, 948, 655, - 450, 951, 829, 830, 831, 832, 309, 782, 780, 950, - 779, 778, 783, 781, 227, 228, 710, 1284, 840, 841, - 842, 887, 1278, 784, 886, 562, 563, 1028, 882, 1283, - 906, 907, 892, 467, 891, 984, 591, 432, 976, 1258, - 1158, 455, 911, 912, 913, 1257, 898, 465, 457, 461, - 899, 922, 893, 456, 1191, 1205, 928, 970, 929, 930, - 931, 932, 858, 654, 566, 478, 467, 558, 561, 562, - 563, 559, 218, 560, 564, 54, 936, 945, 946, 224, - 225, 890, 1237, 956, 219, 1236, 186, 1193, 941, 889, - 469, 925, 1245, 1181, 676, 56, 58, 908, 523, 576, - 311, 958, 51, 1, 1156, 510, 855, 534, 937, 938, - 996, 949, 711, 864, 1260, 1218, 967, 923, 1095, 957, - 815, 959, 808, 408, 64, 1252, 814, 1224, 1179, 822, - 978, 825, 960, 1100, 1255, 975, 298, 983, 458, 985, - 986, 987, 994, 311, 598, 311, 439, 596, 514, 515, - 516, 517, 518, 519, 520, 971, 972, 597, 595, 600, - 599, 594, 197, 304, 565, 588, 850, 470, 311, 76, - 990, 186, 186, 185, 66, 1016, 209, 1015, 999, 186, - 860, 1023, 672, 1013, 879, 448, 199, 505, 311, 888, - 961, 310, 1073, 440, 297, 682, 459, 1235, 233, 1192, - 185, 185, 924, 1040, 533, 758, 185, 243, 697, 255, - 707, 252, 254, 981, 982, 253, 688, 933, 440, 1036, - 479, 242, 234, 296, 549, 753, 557, 555, 1074, 956, - 1067, 753, 1035, 554, 706, 772, 1054, 1041, 1070, 1053, - 947, 772, 943, 295, 1031, 1153, 1072, 309, 1242, 692, - 1086, 25, 55, 1061, 1077, 1075, 229, 311, 19, 311, - 1097, 18, 17, 20, 16, 15, 14, 29, 13, 1076, - 12, 11, 10, 9, 8, 1094, 1071, 7, 47, 1093, - 6, 5, 4, 1089, 186, 1109, 1110, 1088, 220, 22, - 2, 0, 1123, 1083, 1084, 1085, 0, 0, 0, 0, - 0, 695, 696, 0, 0, 1125, 186, 0, 0, 0, - 0, 0, 1128, 0, 185, 0, 185, 0, 1122, 0, - 311, 0, 185, 186, 0, 0, 0, 0, 185, 0, - 1133, 1124, 0, 0, 1127, 0, 0, 1135, 1132, 0, - 0, 442, 443, 444, 0, 447, 0, 0, 1144, 1145, - 1146, 0, 451, 1149, 523, 1139, 1131, 750, 751, 0, - 0, 0, 0, 0, 0, 0, 1161, 1162, 1163, 0, - 1166, 0, 1169, 298, 1169, 1169, 1169, 186, 1174, 1159, - 0, 0, 708, 0, 311, 717, 718, 719, 720, 721, - 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 967, 1152, 1173, 1167, 0, 0, 1170, 1171, 1172, 0, - 311, 311, 311, 0, 0, 1175, 0, 805, 0, 0, - 705, 0, 0, 0, 0, 1188, 0, 0, 1189, 0, - 185, 297, 0, 0, 0, 0, 0, 185, 573, 185, - 0, 0, 0, 0, 1136, 1137, 0, 1138, 1201, 0, - 1140, 1204, 1142, 0, 299, 1210, 1211, 0, 0, 0, - 440, 0, 0, 1070, 0, 1214, 1215, 1216, 1097, 0, - 0, 1206, 1208, 0, 0, 1217, 0, 1223, 0, 0, - 0, 1169, 0, 0, 0, 0, 1229, 0, 1230, 184, - 0, 1238, 1239, 1240, 1241, 0, 0, 1182, 1178, 1184, - 0, 1071, 0, 1249, 1209, 0, 1246, 0, 883, 884, - 1070, 461, 0, 1233, 0, 0, 1250, 302, 1247, 0, - 0, 1194, 412, 309, 0, 0, 0, 0, 0, 0, - 0, 1264, 1234, 0, 0, 811, 753, 1265, 0, 1271, - 0, 1269, 1270, 0, 0, 0, 772, 0, 1071, 0, - 47, 0, 0, 1277, 0, 1275, 1274, 185, 185, 642, - 0, 185, 0, 0, 185, 0, 1281, 651, 660, 1282, - 0, 0, 0, 0, 0, 910, 1037, 0, 662, 663, - 664, 665, 666, 667, 668, 669, 1293, 1294, 0, 185, - 927, 0, 670, 671, 0, 0, 486, 485, 495, 496, - 488, 489, 490, 491, 492, 493, 494, 487, 185, 0, - 497, 0, 0, 0, 0, 0, 660, 900, 901, 902, - 0, 0, 0, 705, 0, 0, 0, 0, 1289, 0, - 420, 0, 421, 23, 24, 48, 26, 27, 428, 0, - 0, 0, 0, 0, 430, 0, 233, 0, 0, 0, - 0, 0, 42, 0, 0, 0, 0, 28, 0, 0, - 0, 0, 0, 0, 233, 233, 0, 0, 754, 754, - 233, 0, 0, 0, 754, 0, 37, 0, 0, 0, - 50, 0, 1150, 453, 233, 233, 233, 233, 0, 185, - 0, 754, 185, 185, 185, 185, 185, 0, 0, 0, - 0, 0, 0, 0, 786, 0, 0, 185, 0, 0, - 0, 573, 0, 0, 0, 185, 185, 0, 0, 0, - 486, 485, 495, 496, 488, 489, 490, 491, 492, 493, - 494, 487, 0, 0, 497, 0, 0, 0, 0, 0, - 30, 31, 33, 32, 35, 1008, 551, 0, 0, 0, - 0, 0, 811, 195, 0, 574, 1063, 0, 0, 0, - 0, 36, 43, 44, 0, 0, 45, 46, 34, 0, - 0, 1078, 1079, 1006, 0, 1080, 0, 205, 1082, 0, - 38, 39, 185, 40, 41, 0, 0, 0, 0, 0, - 0, 185, 0, 857, 185, 859, 0, 998, 0, 0, - 0, 0, 0, 878, 0, 0, 0, 1038, 1039, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 660, - 1055, 1056, 0, 1058, 1059, 0, 0, 0, 190, 0, - 0, 233, 0, 0, 192, 0, 0, 0, 1007, 0, - 1034, 198, 194, 1012, 1009, 1002, 1003, 1010, 1005, 1004, - 0, 0, 0, 0, 0, 1130, 0, 0, 0, 0, - 1011, 905, 1057, 49, 0, 0, 1001, 0, 196, 0, - 0, 200, 0, 649, 650, 0, 233, 653, 0, 0, - 656, 486, 485, 495, 496, 488, 489, 490, 491, 492, - 493, 494, 487, 0, 1155, 497, 233, 0, 0, 191, - 0, 523, 1151, 0, 0, 675, 0, 0, 0, 811, - 0, 811, 485, 495, 496, 488, 489, 490, 491, 492, - 493, 494, 487, 0, 694, 497, 193, 0, 201, 202, - 203, 204, 208, 481, 185, 484, 0, 207, 206, 0, - 1134, 498, 499, 500, 501, 502, 503, 504, 0, 482, - 483, 480, 486, 485, 495, 496, 488, 489, 490, 491, - 492, 493, 494, 487, 0, 0, 497, 0, 0, 1147, - 453, 0, 1034, 0, 0, 486, 485, 495, 496, 488, - 489, 490, 491, 492, 493, 494, 487, 523, 0, 497, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 995, - 0, 0, 0, 0, 0, 769, 0, 486, 485, 495, - 496, 488, 489, 490, 491, 492, 493, 494, 487, 1026, - 1027, 497, 0, 0, 1022, 0, 0, 185, 0, 0, - 0, 0, 797, 0, 0, 0, 811, 233, 0, 0, - 0, 0, 0, 453, 0, 0, 0, 0, 233, 0, - 1196, 1197, 0, 1198, 1199, 1200, 0, 0, 660, 0, - 0, 0, 0, 998, 811, 0, 1263, 523, 1148, 0, - 0, 0, 0, 754, 0, 0, 0, 0, 0, 754, - 486, 485, 495, 496, 488, 489, 490, 491, 492, 493, - 494, 487, 0, 0, 497, 0, 0, 0, 852, 0, - 0, 0, 0, 0, 0, 0, 0, 876, 0, 0, - 877, 0, 0, 0, 0, 0, 0, 0, 0, 126, - 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, - 0, 0, 185, 108, 0, 110, 0, 0, 143, 119, - 0, 486, 485, 495, 496, 488, 489, 490, 491, 492, - 493, 494, 487, 0, 185, 497, 0, 75, 0, 0, - 77, 0, 0, 0, 0, 0, 0, 87, 0, 0, - 0, 185, 486, 485, 495, 496, 488, 489, 490, 491, - 492, 493, 494, 487, 0, 0, 497, 0, 0, 0, - 0, 0, 1291, 486, 485, 495, 496, 488, 489, 490, - 491, 492, 493, 494, 487, 0, 0, 497, 0, 0, + 247, 1281, 871, 534, 1239, 656, 1188, 788, 1088, 249, + 276, 1116, 806, 581, 1089, 579, 828, 865, 1016, 789, + 827, 1085, 974, 321, 750, 226, 837, 922, 1062, 1007, + 596, 1019, 958, 777, 80, 963, 466, 757, 192, 472, + 785, 192, 59, 217, 727, 861, 418, 595, 568, 486, + 277, 53, 192, 478, 315, 824, 250, 533, 3, 583, + 904, 235, 303, 312, 754, 310, 58, 1177, 192, 192, + 320, 851, 1310, 1300, 192, 1308, 423, 1288, 1306, 302, + 888, 872, 1299, 301, 1287, 1080, 1174, 422, 1248, 548, + 218, 219, 220, 221, 887, 443, 1111, 1112, 820, 821, + 464, 1110, 756, 239, 53, 1122, 1123, 1124, 597, 685, + 598, 225, 231, 1127, 1125, 819, 686, 458, 307, 998, + 63, 892, 188, 184, 185, 186, 844, 1200, 1063, 1215, + 852, 886, 1263, 498, 497, 507, 508, 500, 501, 502, + 503, 504, 505, 506, 499, 1163, 1161, 509, 65, 66, + 67, 68, 69, 222, 982, 216, 1307, 981, 1065, 445, + 983, 447, 454, 455, 1305, 1282, 448, 431, 1040, 786, + 807, 809, 1037, 432, 425, 1240, 1246, 182, 1039, 883, + 880, 881, 192, 879, 192, 664, 444, 446, 839, 1242, + 192, 655, 241, 1067, 428, 1071, 192, 1066, 973, 1064, + 320, 320, 320, 320, 1069, 320, 972, 839, 890, 893, + 839, 971, 320, 1068, 195, 181, 419, 182, 420, 183, + 522, 523, 1268, 192, 1185, 1049, 1070, 1072, 502, 503, + 504, 505, 506, 499, 187, 992, 509, 938, 916, 698, + 825, 489, 488, 438, 1131, 808, 885, 509, 695, 1044, + 449, 449, 449, 449, 852, 449, 1241, 499, 485, 1273, + 509, 1141, 449, 245, 734, 961, 484, 483, 884, 483, + 442, 1038, 474, 1036, 1247, 1245, 1126, 898, 732, 733, + 731, 838, 53, 485, 1286, 485, 836, 834, 599, 475, + 835, 1264, 1082, 1027, 778, 1132, 945, 518, 519, 521, + 838, 192, 778, 838, 659, 889, 841, 996, 192, 192, + 192, 842, 701, 702, 320, 913, 914, 915, 891, 845, + 601, 1025, 1276, 935, 480, 525, 1043, 1292, 536, 537, + 538, 539, 540, 541, 542, 543, 544, 424, 547, 549, + 549, 549, 549, 549, 549, 549, 549, 557, 558, 559, + 560, 24, 180, 476, 434, 435, 436, 899, 580, 484, + 483, 716, 718, 719, 1271, 1206, 717, 451, 452, 453, + 1205, 456, 484, 483, 1011, 587, 485, 593, 460, 550, + 551, 552, 553, 554, 555, 556, 1026, 689, 690, 485, + 691, 1031, 1028, 1021, 1022, 1029, 1024, 1023, 507, 508, + 500, 501, 502, 503, 504, 505, 506, 499, 1030, 1010, + 509, 999, 56, 230, 1033, 426, 427, 484, 483, 300, + 469, 473, 320, 730, 1084, 1293, 1274, 1222, 192, 192, + 320, 934, 192, 933, 485, 192, 1203, 490, 1119, 192, + 1149, 320, 320, 320, 320, 320, 320, 320, 320, 751, + 484, 483, 752, 1008, 1118, 320, 320, 1296, 465, 465, + 192, 993, 673, 984, 192, 1232, 1279, 485, 1232, 465, + 535, 874, 449, 1232, 1233, 1197, 1196, 1252, 707, 546, + 449, 753, 192, 670, 450, 1107, 465, 1251, 488, 669, + 725, 449, 449, 449, 449, 449, 449, 449, 449, 671, + 703, 1184, 465, 728, 660, 449, 449, 1138, 1137, 1134, + 1135, 1134, 1133, 724, 928, 465, 1128, 26, 526, 527, + 528, 529, 530, 531, 532, 500, 501, 502, 503, 504, + 505, 506, 499, 761, 658, 509, 653, 720, 705, 565, + 465, 953, 771, 771, 954, 763, 465, 564, 771, 440, + 722, 770, 773, 433, 318, 605, 604, 779, 419, 590, + 224, 960, 959, 192, 56, 771, 192, 192, 192, 192, + 192, 565, 53, 960, 790, 813, 704, 589, 192, 758, + 760, 192, 763, 1086, 1180, 192, 959, 536, 654, 192, + 192, 565, 1140, 320, 765, 1136, 663, 60, 775, 985, + 591, 697, 589, 565, 814, 320, 1052, 674, 675, 676, + 677, 678, 679, 680, 681, 959, 307, 307, 307, 307, + 307, 682, 683, 782, 940, 803, 26, 812, 26, 792, + 793, 580, 795, 810, 762, 764, 928, 696, 765, 307, + 766, 767, 817, 818, 811, 791, 774, 816, 794, 928, + 780, 928, 831, 1227, 484, 483, 192, 937, 900, 320, + 781, 320, 783, 784, 592, 192, 699, 939, 192, 320, + 867, 485, 56, 56, 1210, 56, 713, 714, 846, 657, + 805, 232, 1027, 273, 266, 759, 268, 269, 270, 271, + 853, 854, 855, 267, 272, 863, 864, 866, 1101, 725, + 936, 570, 573, 574, 575, 571, 988, 572, 576, 449, + 1025, 449, 964, 965, 570, 573, 574, 575, 571, 449, + 572, 576, 724, 862, 964, 965, 970, 857, 56, 535, + 856, 71, 768, 769, 253, 869, 463, 1121, 1086, 905, + 906, 1012, 728, 498, 497, 507, 508, 500, 501, 502, + 503, 504, 505, 506, 499, 726, 967, 509, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 667, 917, 1026, 918, 459, 711, 969, + 1031, 1028, 1021, 1022, 1029, 1024, 1023, 797, 800, 923, + 798, 796, 823, 801, 1304, 799, 1298, 1030, 318, 236, + 237, 901, 306, 1020, 802, 1048, 574, 575, 479, 1303, + 944, 975, 911, 912, 192, 910, 1003, 1278, 603, 467, + 441, 995, 477, 1277, 1225, 875, 989, 877, 320, 977, + 968, 468, 1178, 1211, 876, 896, 956, 957, 666, 578, + 233, 234, 479, 955, 986, 976, 227, 978, 909, 979, + 1257, 228, 1213, 60, 925, 926, 908, 1256, 927, 960, + 481, 462, 990, 991, 307, 1265, 930, 931, 932, 1201, + 1013, 320, 694, 320, 62, 941, 64, 588, 942, 57, + 947, 1, 948, 949, 950, 951, 692, 1009, 688, 902, + 903, 1176, 473, 524, 873, 1015, 320, 882, 1280, 192, + 192, 192, 1238, 1115, 833, 826, 417, 1002, 192, 1004, + 1005, 1006, 1032, 70, 1272, 832, 1244, 320, 1199, 1000, + 1001, 449, 1018, 840, 997, 843, 1120, 1275, 994, 610, + 608, 609, 607, 847, 848, 849, 850, 612, 611, 725, + 606, 203, 313, 470, 577, 600, 449, 1056, 868, 858, + 859, 860, 482, 82, 771, 72, 929, 1094, 975, 1073, + 771, 1087, 724, 790, 1074, 1090, 1061, 1035, 1034, 790, + 878, 946, 1042, 684, 723, 897, 457, 205, 517, 1097, + 1095, 191, 1055, 520, 215, 1081, 320, 907, 320, 1117, + 980, 319, 1093, 700, 471, 223, 919, 920, 921, 1255, + 1212, 1096, 943, 545, 1114, 1091, 1113, 53, 776, 242, + 1109, 191, 191, 192, 1092, 252, 715, 191, 264, 1108, + 261, 1143, 1103, 1104, 1105, 263, 262, 706, 1060, 952, + 491, 251, 243, 305, 1145, 192, 561, 1014, 569, 567, + 566, 1148, 306, 966, 962, 304, 1051, 1173, 1262, 710, + 320, 28, 61, 192, 238, 23, 1129, 1130, 22, 21, + 19, 18, 1041, 1142, 17, 20, 16, 15, 1152, 14, + 32, 13, 12, 11, 10, 1106, 1144, 318, 9, 1147, + 8, 7, 6, 5, 1151, 1159, 4, 229, 25, 829, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1189, 307, 1189, 1189, 1189, 192, 1194, 1179, + 1190, 1191, 1192, 0, 320, 0, 0, 0, 0, 0, + 1193, 0, 1187, 0, 0, 191, 0, 191, 0, 0, + 986, 1172, 0, 191, 1195, 0, 0, 0, 1083, 191, + 320, 320, 320, 0, 0, 0, 308, 0, 0, 0, + 0, 0, 0, 1098, 1099, 0, 1153, 1100, 1209, 1208, + 1102, 0, 0, 1155, 0, 0, 461, 0, 0, 0, + 0, 0, 0, 0, 1164, 1165, 1166, 0, 0, 1169, + 0, 1224, 0, 723, 190, 1230, 1231, 1058, 1059, 0, + 449, 1090, 1181, 1182, 1183, 1226, 1186, 0, 1117, 0, + 1075, 1076, 0, 1078, 1079, 1202, 1237, 1204, 0, 1243, + 0, 1189, 0, 0, 0, 311, 0, 1253, 0, 0, + 421, 0, 0, 0, 0, 0, 0, 729, 0, 1214, + 0, 1091, 0, 1269, 1229, 0, 1266, 1150, 1090, 0, + 0, 1228, 0, 1270, 191, 0, 0, 0, 0, 0, + 0, 191, 585, 191, 0, 0, 0, 0, 1249, 0, + 1250, 1284, 1254, 0, 0, 0, 771, 0, 0, 1291, + 0, 0, 0, 1289, 1221, 790, 0, 1175, 1091, 0, + 53, 0, 0, 1297, 535, 1294, 0, 1267, 0, 0, + 0, 1234, 1235, 1236, 0, 0, 0, 1301, 1302, 0, + 306, 306, 306, 306, 306, 0, 1207, 1170, 465, 0, + 0, 0, 829, 0, 0, 306, 0, 1258, 1259, 1260, + 1261, 1154, 0, 306, 0, 0, 0, 0, 429, 0, + 430, 0, 0, 0, 0, 0, 437, 0, 0, 0, + 0, 0, 439, 0, 0, 498, 497, 507, 508, 500, + 501, 502, 503, 504, 505, 506, 499, 1017, 1309, 509, + 0, 0, 0, 1285, 0, 0, 0, 0, 1290, 0, + 535, 191, 191, 0, 0, 191, 0, 0, 191, 0, + 0, 1295, 672, 1156, 1157, 0, 1158, 0, 0, 1160, + 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1054, 0, 191, 0, 0, 0, 693, 0, 0, + 0, 0, 1313, 1314, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1077, 0, 191, 0, 0, 0, 0, + 0, 1216, 1217, 672, 1218, 1219, 1220, 1198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 563, 0, 1283, + 535, 0, 0, 0, 0, 0, 586, 0, 0, 0, + 0, 0, 0, 242, 0, 0, 729, 0, 0, 0, + 829, 0, 829, 0, 0, 0, 0, 0, 0, 0, + 0, 242, 242, 0, 0, 772, 772, 242, 0, 0, + 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 242, 242, 242, 242, 0, 191, 0, 772, 191, + 191, 191, 191, 191, 0, 0, 0, 0, 0, 0, + 0, 804, 0, 0, 191, 0, 0, 0, 585, 0, + 0, 0, 191, 191, 1054, 0, 26, 27, 54, 29, + 30, 0, 201, 0, 0, 0, 0, 0, 306, 465, + 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 211, 0, 0, 0, + 0, 0, 0, 1311, 661, 662, 0, 0, 665, 40, + 0, 668, 0, 56, 0, 0, 498, 497, 507, 508, + 500, 501, 502, 503, 504, 505, 506, 499, 829, 191, + 509, 0, 0, 0, 0, 0, 687, 0, 191, 0, + 0, 191, 0, 0, 0, 0, 0, 196, 0, 0, + 0, 0, 0, 198, 0, 1017, 829, 0, 712, 0, + 204, 200, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 672, 33, 34, 36, 35, 38, 0, 0, + 0, 0, 0, 0, 242, 0, 0, 202, 0, 0, + 206, 0, 0, 0, 39, 46, 47, 0, 0, 48, + 49, 37, 497, 507, 508, 500, 501, 502, 503, 504, + 505, 506, 499, 41, 42, 509, 43, 44, 50, 51, + 52, 197, 0, 0, 0, 0, 0, 0, 0, 242, + 1167, 465, 1171, 0, 0, 0, 0, 0, 0, 787, + 0, 0, 0, 0, 0, 0, 0, 1168, 199, 242, + 207, 208, 209, 210, 214, 0, 0, 0, 0, 213, + 212, 0, 0, 0, 0, 0, 815, 0, 498, 497, + 507, 508, 500, 501, 502, 503, 504, 505, 506, 499, + 0, 0, 509, 0, 0, 0, 0, 191, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, + 0, 0, 0, 627, 0, 498, 497, 507, 508, 500, + 501, 502, 503, 504, 505, 506, 499, 306, 0, 509, + 498, 497, 507, 508, 500, 501, 502, 503, 504, 505, + 506, 499, 870, 0, 509, 0, 0, 493, 0, 496, + 0, 894, 0, 0, 895, 510, 511, 512, 513, 514, + 515, 516, 0, 494, 495, 492, 498, 497, 507, 508, + 500, 501, 502, 503, 504, 505, 506, 499, 0, 0, + 509, 0, 1045, 1046, 1047, 0, 0, 0, 0, 0, + 615, 191, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 242, 0, 0, 1057, 0, 0, 0, 0, 0, + 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, + 628, 0, 672, 0, 498, 497, 507, 508, 500, 501, + 502, 503, 504, 505, 506, 499, 0, 772, 509, 0, + 0, 0, 0, 772, 641, 642, 643, 644, 645, 646, + 647, 0, 648, 649, 650, 651, 652, 629, 630, 631, + 632, 613, 614, 0, 0, 616, 0, 617, 618, 619, + 620, 621, 622, 623, 624, 625, 626, 633, 634, 635, + 636, 637, 638, 639, 640, 924, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 498, 497, 507, 508, 500, + 501, 502, 503, 504, 505, 506, 499, 0, 191, 509, + 498, 497, 507, 508, 500, 501, 502, 503, 504, 505, + 506, 499, 0, 0, 509, 0, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 585, 0, 0, 0, 1050, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 573, 0, 0, 132, 0, - 0, 146, 99, 98, 107, 0, 0, 0, 90, 0, - 138, 128, 158, 0, 129, 137, 111, 150, 133, 157, - 188, 165, 148, 164, 79, 147, 156, 88, 140, 81, - 154, 145, 117, 103, 104, 80, 1187, 136, 93, 97, - 92, 125, 151, 152, 91, 172, 84, 163, 83, 85, - 162, 124, 149, 155, 118, 115, 82, 153, 116, 114, - 106, 95, 100, 130, 113, 131, 101, 121, 120, 122, - 0, 0, 0, 144, 160, 173, 0, 0, 166, 167, - 168, 169, 0, 0, 0, 123, 86, 102, 141, 105, - 112, 135, 171, 127, 139, 89, 159, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1030, 0, 78, 0, 109, 170, 134, - 96, 161, 0, 0, 0, 0, 0, 0, 0, 0, + 406, 396, 0, 368, 408, 346, 360, 416, 361, 362, + 389, 332, 376, 132, 358, 0, 349, 327, 355, 328, + 347, 370, 100, 373, 345, 398, 379, 114, 414, 116, + 384, 0, 149, 125, 0, 0, 372, 400, 374, 394, + 367, 390, 337, 383, 409, 359, 387, 410, 0, 0, + 0, 81, 0, 0, 83, 830, 0, 0, 0, 1139, + 0, 93, 0, 386, 405, 357, 388, 326, 385, 0, + 330, 333, 415, 403, 352, 353, 987, 0, 0, 0, + 0, 1146, 0, 371, 375, 391, 365, 0, 0, 0, + 0, 0, 0, 0, 0, 350, 0, 382, 0, 0, + 0, 334, 331, 0, 369, 0, 0, 0, 336, 772, + 351, 392, 0, 325, 395, 401, 366, 193, 404, 364, + 363, 407, 138, 0, 0, 152, 105, 104, 113, 399, + 348, 356, 96, 354, 144, 134, 164, 381, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 329, 0, + 150, 166, 179, 344, 402, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 340, 343, 338, 339, 377, + 378, 411, 412, 413, 393, 335, 0, 341, 342, 0, + 397, 380, 84, 0, 115, 176, 140, 102, 167, 406, + 396, 0, 368, 408, 346, 360, 416, 361, 362, 389, + 332, 376, 132, 358, 0, 349, 327, 355, 328, 347, + 370, 100, 373, 345, 398, 379, 114, 414, 116, 384, + 0, 149, 125, 0, 0, 372, 400, 374, 394, 367, + 390, 337, 383, 409, 359, 387, 410, 0, 0, 0, + 81, 0, 0, 83, 830, 0, 0, 0, 0, 0, + 93, 0, 386, 405, 357, 388, 326, 385, 0, 330, + 333, 415, 403, 352, 353, 0, 0, 0, 0, 0, + 0, 0, 371, 375, 391, 365, 0, 0, 0, 0, + 0, 0, 0, 0, 350, 0, 382, 0, 0, 0, + 334, 331, 0, 369, 0, 0, 0, 336, 0, 351, + 392, 0, 325, 395, 401, 366, 193, 404, 364, 363, + 407, 138, 0, 0, 152, 105, 104, 113, 399, 348, + 356, 96, 354, 144, 134, 164, 381, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, + 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, + 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, + 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, + 119, 137, 107, 127, 126, 128, 0, 329, 0, 150, + 166, 179, 344, 402, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 340, 343, 338, 339, 377, 378, + 411, 412, 413, 393, 335, 0, 341, 342, 0, 397, + 380, 84, 0, 115, 176, 140, 102, 167, 406, 396, + 0, 368, 408, 346, 360, 416, 361, 362, 389, 332, + 376, 132, 358, 0, 349, 327, 355, 328, 347, 370, + 100, 373, 345, 398, 379, 114, 414, 116, 384, 0, + 149, 125, 0, 0, 372, 400, 374, 394, 367, 390, + 337, 383, 409, 359, 387, 410, 56, 0, 0, 81, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, + 0, 386, 405, 357, 388, 326, 385, 0, 330, 333, + 415, 403, 352, 353, 0, 0, 0, 0, 0, 0, + 0, 371, 375, 391, 365, 0, 0, 0, 0, 0, + 0, 0, 0, 350, 0, 382, 0, 0, 0, 334, + 331, 0, 369, 0, 0, 0, 336, 0, 351, 392, + 0, 325, 395, 401, 366, 193, 404, 364, 363, 407, + 138, 0, 0, 152, 105, 104, 113, 399, 348, 356, + 96, 354, 144, 134, 164, 381, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, + 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, + 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, + 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, + 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, + 137, 107, 127, 126, 128, 0, 329, 0, 150, 166, + 179, 344, 402, 172, 173, 174, 175, 0, 0, 0, + 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 340, 343, 338, 339, 377, 378, 411, + 412, 413, 393, 335, 0, 341, 342, 0, 397, 380, + 84, 0, 115, 176, 140, 102, 167, 406, 396, 0, + 368, 408, 346, 360, 416, 361, 362, 389, 332, 376, + 132, 358, 0, 349, 327, 355, 328, 347, 370, 100, + 373, 345, 398, 379, 114, 414, 116, 384, 0, 149, + 125, 0, 0, 372, 400, 374, 394, 367, 390, 337, + 383, 409, 359, 387, 410, 0, 0, 0, 81, 0, + 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, + 386, 405, 357, 388, 326, 385, 0, 330, 333, 415, + 403, 352, 353, 0, 0, 0, 0, 0, 0, 0, + 371, 375, 391, 365, 0, 0, 0, 0, 0, 0, + 1053, 0, 350, 0, 382, 0, 0, 0, 334, 331, + 0, 369, 0, 0, 0, 336, 0, 351, 392, 0, + 325, 395, 401, 366, 193, 404, 364, 363, 407, 138, + 0, 0, 152, 105, 104, 113, 399, 348, 356, 96, + 354, 144, 134, 164, 381, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 329, 0, 150, 166, 179, + 344, 402, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 340, 343, 338, 339, 377, 378, 411, 412, + 413, 393, 335, 0, 341, 342, 0, 397, 380, 84, + 0, 115, 176, 140, 102, 167, 406, 396, 0, 368, + 408, 346, 360, 416, 361, 362, 389, 332, 376, 132, + 358, 0, 349, 327, 355, 328, 347, 370, 100, 373, + 345, 398, 379, 114, 414, 116, 384, 0, 149, 125, + 0, 0, 372, 400, 374, 394, 367, 390, 337, 383, + 409, 359, 387, 410, 0, 0, 0, 81, 0, 0, + 83, 0, 0, 0, 0, 0, 0, 93, 0, 386, + 405, 357, 388, 326, 385, 0, 330, 333, 415, 403, + 352, 353, 0, 0, 0, 0, 0, 0, 0, 371, + 375, 391, 365, 0, 0, 0, 0, 0, 0, 721, + 0, 350, 0, 382, 0, 0, 0, 334, 331, 0, + 369, 0, 0, 0, 336, 0, 351, 392, 0, 325, + 395, 401, 366, 193, 404, 364, 363, 407, 138, 0, + 0, 152, 105, 104, 113, 399, 348, 356, 96, 354, + 144, 134, 164, 381, 135, 143, 117, 156, 139, 163, + 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, + 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, + 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, + 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, + 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, + 127, 126, 128, 0, 329, 0, 150, 166, 179, 344, + 402, 172, 173, 174, 175, 0, 0, 0, 129, 92, + 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, + 148, 340, 343, 338, 339, 377, 378, 411, 412, 413, + 393, 335, 0, 341, 342, 0, 397, 380, 84, 0, + 115, 176, 140, 102, 167, 406, 396, 0, 368, 408, + 346, 360, 416, 361, 362, 389, 332, 376, 132, 358, + 0, 349, 327, 355, 328, 347, 370, 100, 373, 345, + 398, 379, 114, 414, 116, 384, 0, 149, 125, 0, + 0, 372, 400, 374, 394, 367, 390, 337, 383, 409, + 359, 387, 410, 0, 0, 0, 81, 0, 0, 83, + 0, 0, 0, 0, 0, 0, 93, 0, 386, 405, + 357, 388, 326, 385, 0, 330, 333, 415, 403, 352, + 353, 0, 0, 0, 0, 0, 0, 0, 371, 375, + 391, 365, 0, 0, 0, 0, 0, 0, 0, 0, + 350, 0, 382, 0, 0, 0, 334, 331, 0, 369, + 0, 0, 0, 336, 0, 351, 392, 0, 325, 395, + 401, 366, 193, 404, 364, 363, 407, 138, 0, 0, + 152, 105, 104, 113, 399, 348, 356, 96, 354, 144, + 134, 164, 381, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 329, 0, 150, 166, 179, 344, 402, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 340, 343, 338, 339, 377, 378, 411, 412, 413, 393, + 335, 0, 341, 342, 0, 397, 380, 84, 0, 115, + 176, 140, 102, 167, 406, 396, 0, 368, 408, 346, + 360, 416, 361, 362, 389, 332, 376, 132, 358, 0, + 349, 327, 355, 328, 347, 370, 100, 373, 345, 398, + 379, 114, 414, 116, 384, 0, 149, 125, 0, 0, + 372, 400, 374, 394, 367, 390, 337, 383, 409, 359, + 387, 410, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 386, 405, 357, + 388, 326, 385, 0, 330, 333, 415, 403, 352, 353, + 0, 0, 0, 0, 0, 0, 0, 371, 375, 391, + 365, 0, 0, 0, 0, 0, 0, 0, 0, 350, + 0, 382, 0, 0, 0, 334, 331, 0, 369, 0, + 0, 0, 336, 0, 351, 392, 0, 325, 395, 401, + 366, 193, 404, 364, 363, 407, 138, 0, 0, 152, + 105, 104, 113, 399, 348, 356, 96, 354, 144, 134, + 164, 381, 135, 143, 117, 156, 139, 163, 194, 171, + 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, + 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, + 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, + 323, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, + 128, 0, 329, 0, 150, 166, 179, 344, 402, 172, + 173, 174, 175, 0, 0, 0, 324, 322, 108, 147, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 340, + 343, 338, 339, 377, 378, 411, 412, 413, 393, 335, + 0, 341, 342, 0, 397, 380, 84, 0, 115, 176, + 140, 102, 167, 406, 396, 0, 368, 408, 346, 360, + 416, 361, 362, 389, 332, 376, 132, 358, 0, 349, + 327, 355, 328, 347, 370, 100, 373, 345, 398, 379, + 114, 414, 116, 384, 0, 149, 125, 0, 0, 372, + 400, 374, 394, 367, 390, 337, 383, 409, 359, 387, + 410, 0, 0, 0, 81, 0, 0, 83, 0, 0, + 0, 0, 0, 0, 93, 0, 386, 405, 357, 388, + 326, 385, 0, 330, 333, 415, 403, 352, 353, 0, + 0, 0, 0, 0, 0, 0, 371, 375, 391, 365, + 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, + 382, 0, 0, 0, 334, 331, 0, 369, 0, 0, + 0, 336, 0, 351, 392, 0, 325, 395, 401, 366, + 193, 404, 364, 363, 407, 138, 0, 0, 152, 105, + 104, 113, 399, 348, 356, 96, 354, 144, 134, 164, + 381, 135, 143, 117, 156, 139, 163, 194, 171, 154, + 170, 85, 153, 594, 94, 146, 0, 0, 0, 87, + 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, + 98, 131, 157, 158, 97, 178, 90, 169, 89, 323, + 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, + 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, + 0, 329, 0, 150, 166, 179, 344, 402, 172, 173, + 174, 175, 0, 0, 0, 324, 322, 108, 147, 111, + 118, 141, 177, 133, 145, 95, 165, 148, 340, 343, + 338, 339, 377, 378, 411, 412, 413, 393, 335, 0, + 341, 342, 0, 397, 380, 84, 0, 115, 176, 140, + 102, 167, 406, 396, 0, 368, 408, 346, 360, 416, + 361, 362, 389, 332, 376, 132, 358, 0, 349, 327, + 355, 328, 347, 370, 100, 373, 345, 398, 379, 114, + 414, 116, 384, 0, 149, 125, 0, 0, 372, 400, + 374, 394, 367, 390, 337, 383, 409, 359, 387, 410, + 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 93, 0, 386, 405, 357, 388, 326, + 385, 0, 330, 333, 415, 403, 352, 353, 0, 0, + 0, 0, 0, 0, 0, 371, 375, 391, 365, 0, + 0, 0, 0, 0, 0, 0, 0, 350, 0, 382, + 0, 0, 0, 334, 331, 0, 369, 0, 0, 0, + 336, 0, 351, 392, 0, 325, 395, 401, 366, 193, + 404, 364, 363, 407, 138, 0, 0, 152, 105, 104, + 113, 399, 348, 356, 96, 354, 144, 134, 164, 381, + 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, + 85, 153, 314, 94, 146, 0, 0, 0, 87, 160, + 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, + 131, 157, 158, 97, 178, 90, 169, 89, 323, 168, + 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, + 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, + 329, 0, 150, 166, 179, 344, 402, 172, 173, 174, + 175, 0, 0, 0, 324, 322, 317, 316, 111, 118, + 141, 177, 133, 145, 95, 165, 148, 340, 343, 338, + 339, 377, 378, 411, 412, 413, 393, 335, 0, 341, + 342, 0, 397, 380, 84, 0, 115, 176, 140, 102, + 167, 132, 0, 0, 755, 0, 248, 0, 0, 0, + 100, 0, 246, 0, 0, 114, 287, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 278, 279, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, + 273, 266, 265, 268, 269, 270, 271, 0, 0, 93, + 267, 272, 274, 275, 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, + 257, 240, 0, 0, 0, 298, 0, 258, 0, 0, + 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 0, 0, 296, 0, + 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, + 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, + 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, + 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, + 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, + 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, + 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, + 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, + 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 288, 297, 294, 295, 292, 293, 291, + 290, 289, 299, 280, 281, 282, 283, 285, 0, 284, + 84, 0, 115, 176, 140, 102, 167, 132, 0, 0, + 0, 0, 248, 0, 0, 0, 100, 0, 246, 0, + 0, 114, 287, 116, 0, 0, 149, 125, 0, 0, + 0, 0, 278, 279, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 81, 273, 266, 265, 268, + 269, 270, 271, 0, 0, 93, 267, 272, 274, 275, + 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 754, 0, 0, 0, 397, 387, - 0, 359, 399, 337, 351, 407, 352, 353, 380, 323, - 367, 126, 349, 0, 340, 318, 346, 319, 338, 361, - 94, 364, 336, 389, 370, 108, 405, 110, 375, 0, - 143, 119, 0, 0, 363, 391, 365, 385, 358, 381, - 328, 374, 400, 350, 378, 401, 0, 0, 0, 75, - 0, 0, 77, 812, 0, 0, 0, 0, 1119, 87, - 0, 377, 396, 348, 379, 317, 376, 0, 321, 324, - 406, 394, 343, 344, 968, 0, 0, 0, 0, 0, - 1126, 362, 366, 382, 356, 0, 0, 0, 0, 0, - 0, 0, 0, 341, 0, 373, 0, 0, 0, 325, - 322, 0, 360, 0, 0, 0, 327, 0, 342, 383, - 0, 316, 386, 392, 357, 187, 395, 355, 354, 398, - 132, 0, 0, 146, 99, 98, 107, 390, 339, 347, - 90, 345, 138, 128, 158, 372, 129, 137, 111, 150, - 133, 157, 188, 165, 148, 164, 79, 147, 156, 88, - 140, 81, 154, 145, 117, 103, 104, 80, 0, 136, - 93, 97, 92, 125, 151, 152, 91, 172, 84, 163, - 83, 85, 162, 124, 149, 155, 118, 115, 82, 153, - 116, 114, 106, 95, 100, 130, 113, 131, 101, 121, - 120, 122, 0, 320, 0, 144, 160, 173, 335, 393, - 166, 167, 168, 169, 0, 0, 0, 123, 86, 102, - 141, 105, 112, 135, 171, 127, 139, 89, 159, 142, - 331, 334, 329, 330, 368, 369, 402, 403, 404, 384, - 326, 0, 332, 333, 0, 388, 371, 78, 0, 109, - 170, 134, 96, 161, 397, 387, 0, 359, 399, 337, - 351, 407, 352, 353, 380, 323, 367, 126, 349, 0, - 340, 318, 346, 319, 338, 361, 94, 364, 336, 389, - 370, 108, 405, 110, 375, 0, 143, 119, 0, 0, - 363, 391, 365, 385, 358, 381, 328, 374, 400, 350, - 378, 401, 0, 0, 0, 75, 0, 0, 77, 812, - 0, 0, 0, 0, 0, 87, 0, 377, 396, 348, - 379, 317, 376, 0, 321, 324, 406, 394, 343, 344, - 0, 0, 0, 0, 0, 0, 0, 362, 366, 382, - 356, 0, 0, 0, 0, 0, 0, 0, 0, 341, - 0, 373, 0, 0, 0, 325, 322, 0, 360, 0, - 0, 0, 327, 0, 342, 383, 0, 316, 386, 392, - 357, 187, 395, 355, 354, 398, 132, 0, 0, 146, - 99, 98, 107, 390, 339, 347, 90, 345, 138, 128, - 158, 372, 129, 137, 111, 150, 133, 157, 188, 165, - 148, 164, 79, 147, 156, 88, 140, 81, 154, 145, - 117, 103, 104, 80, 0, 136, 93, 97, 92, 125, - 151, 152, 91, 172, 84, 163, 83, 85, 162, 124, - 149, 155, 118, 115, 82, 153, 116, 114, 106, 95, - 100, 130, 113, 131, 101, 121, 120, 122, 0, 320, - 0, 144, 160, 173, 335, 393, 166, 167, 168, 169, - 0, 0, 0, 123, 86, 102, 141, 105, 112, 135, - 171, 127, 139, 89, 159, 142, 331, 334, 329, 330, - 368, 369, 402, 403, 404, 384, 326, 0, 332, 333, - 0, 388, 371, 78, 0, 109, 170, 134, 96, 161, - 397, 387, 0, 359, 399, 337, 351, 407, 352, 353, - 380, 323, 367, 126, 349, 0, 340, 318, 346, 319, - 338, 361, 94, 364, 336, 389, 370, 108, 405, 110, - 375, 0, 143, 119, 0, 0, 363, 391, 365, 385, - 358, 381, 328, 374, 400, 350, 378, 401, 50, 0, - 0, 75, 0, 0, 77, 0, 0, 0, 0, 0, - 0, 87, 0, 377, 396, 348, 379, 317, 376, 0, - 321, 324, 406, 394, 343, 344, 0, 0, 0, 0, - 0, 0, 0, 362, 366, 382, 356, 0, 0, 0, - 0, 0, 0, 0, 0, 341, 0, 373, 0, 0, - 0, 325, 322, 0, 360, 0, 0, 0, 327, 0, - 342, 383, 0, 316, 386, 392, 357, 187, 395, 355, - 354, 398, 132, 0, 0, 146, 99, 98, 107, 390, - 339, 347, 90, 345, 138, 128, 158, 372, 129, 137, - 111, 150, 133, 157, 188, 165, 148, 164, 79, 147, - 156, 88, 140, 81, 154, 145, 117, 103, 104, 80, - 0, 136, 93, 97, 92, 125, 151, 152, 91, 172, - 84, 163, 83, 85, 162, 124, 149, 155, 118, 115, - 82, 153, 116, 114, 106, 95, 100, 130, 113, 131, - 101, 121, 120, 122, 0, 320, 0, 144, 160, 173, - 335, 393, 166, 167, 168, 169, 0, 0, 0, 123, - 86, 102, 141, 105, 112, 135, 171, 127, 139, 89, - 159, 142, 331, 334, 329, 330, 368, 369, 402, 403, - 404, 384, 326, 0, 332, 333, 0, 388, 371, 78, - 0, 109, 170, 134, 96, 161, 397, 387, 0, 359, - 399, 337, 351, 407, 352, 353, 380, 323, 367, 126, - 349, 0, 340, 318, 346, 319, 338, 361, 94, 364, - 336, 389, 370, 108, 405, 110, 375, 0, 143, 119, - 0, 0, 363, 391, 365, 385, 358, 381, 328, 374, - 400, 350, 378, 401, 0, 0, 0, 75, 0, 0, - 77, 0, 0, 0, 0, 0, 0, 87, 0, 377, - 396, 348, 379, 317, 376, 0, 321, 324, 406, 394, - 343, 344, 0, 0, 0, 0, 0, 0, 0, 362, - 366, 382, 356, 0, 0, 0, 0, 0, 0, 1033, - 0, 341, 0, 373, 0, 0, 0, 325, 322, 0, - 360, 0, 0, 0, 327, 0, 342, 383, 0, 316, - 386, 392, 357, 187, 395, 355, 354, 398, 132, 0, - 0, 146, 99, 98, 107, 390, 339, 347, 90, 345, - 138, 128, 158, 372, 129, 137, 111, 150, 133, 157, - 188, 165, 148, 164, 79, 147, 156, 88, 140, 81, - 154, 145, 117, 103, 104, 80, 0, 136, 93, 97, - 92, 125, 151, 152, 91, 172, 84, 163, 83, 85, - 162, 124, 149, 155, 118, 115, 82, 153, 116, 114, - 106, 95, 100, 130, 113, 131, 101, 121, 120, 122, - 0, 320, 0, 144, 160, 173, 335, 393, 166, 167, - 168, 169, 0, 0, 0, 123, 86, 102, 141, 105, - 112, 135, 171, 127, 139, 89, 159, 142, 331, 334, - 329, 330, 368, 369, 402, 403, 404, 384, 326, 0, - 332, 333, 0, 388, 371, 78, 0, 109, 170, 134, - 96, 161, 397, 387, 0, 359, 399, 337, 351, 407, - 352, 353, 380, 323, 367, 126, 349, 0, 340, 318, - 346, 319, 338, 361, 94, 364, 336, 389, 370, 108, - 405, 110, 375, 0, 143, 119, 0, 0, 363, 391, - 365, 385, 358, 381, 328, 374, 400, 350, 378, 401, - 0, 0, 0, 75, 0, 0, 77, 0, 0, 0, - 0, 0, 0, 87, 0, 377, 396, 348, 379, 317, - 376, 0, 321, 324, 406, 394, 343, 344, 0, 0, - 0, 0, 0, 0, 0, 362, 366, 382, 356, 0, - 0, 0, 0, 0, 0, 703, 0, 341, 0, 373, - 0, 0, 0, 325, 322, 0, 360, 0, 0, 0, - 327, 0, 342, 383, 0, 316, 386, 392, 357, 187, - 395, 355, 354, 398, 132, 0, 0, 146, 99, 98, - 107, 390, 339, 347, 90, 345, 138, 128, 158, 372, - 129, 137, 111, 150, 133, 157, 188, 165, 148, 164, - 79, 147, 156, 88, 140, 81, 154, 145, 117, 103, - 104, 80, 0, 136, 93, 97, 92, 125, 151, 152, - 91, 172, 84, 163, 83, 85, 162, 124, 149, 155, - 118, 115, 82, 153, 116, 114, 106, 95, 100, 130, - 113, 131, 101, 121, 120, 122, 0, 320, 0, 144, - 160, 173, 335, 393, 166, 167, 168, 169, 0, 0, - 0, 123, 86, 102, 141, 105, 112, 135, 171, 127, - 139, 89, 159, 142, 331, 334, 329, 330, 368, 369, - 402, 403, 404, 384, 326, 0, 332, 333, 0, 388, - 371, 78, 0, 109, 170, 134, 96, 161, 397, 387, - 0, 359, 399, 337, 351, 407, 352, 353, 380, 323, - 367, 126, 349, 0, 340, 318, 346, 319, 338, 361, - 94, 364, 336, 389, 370, 108, 405, 110, 375, 0, - 143, 119, 0, 0, 363, 391, 365, 385, 358, 381, - 328, 374, 400, 350, 378, 401, 0, 0, 0, 75, - 0, 0, 77, 0, 0, 0, 0, 0, 0, 87, - 0, 377, 396, 348, 379, 317, 376, 0, 321, 324, - 406, 394, 343, 344, 0, 0, 0, 0, 0, 0, - 0, 362, 366, 382, 356, 0, 0, 0, 0, 0, - 0, 0, 0, 341, 0, 373, 0, 0, 0, 325, - 322, 0, 360, 0, 0, 0, 327, 0, 342, 383, - 0, 316, 386, 392, 357, 187, 395, 355, 354, 398, - 132, 0, 0, 146, 99, 98, 107, 390, 339, 347, - 90, 345, 138, 128, 158, 372, 129, 137, 111, 150, - 133, 157, 188, 165, 148, 164, 79, 147, 156, 88, - 140, 81, 154, 145, 117, 103, 104, 80, 0, 136, - 93, 97, 92, 125, 151, 152, 91, 172, 84, 163, - 83, 85, 162, 124, 149, 155, 118, 115, 82, 153, - 116, 114, 106, 95, 100, 130, 113, 131, 101, 121, - 120, 122, 0, 320, 0, 144, 160, 173, 335, 393, - 166, 167, 168, 169, 0, 0, 0, 123, 86, 102, - 141, 105, 112, 135, 171, 127, 139, 89, 159, 142, - 331, 334, 329, 330, 368, 369, 402, 403, 404, 384, - 326, 0, 332, 333, 0, 388, 371, 78, 0, 109, - 170, 134, 96, 161, 397, 387, 0, 359, 399, 337, - 351, 407, 352, 353, 380, 323, 367, 126, 349, 0, - 340, 318, 346, 319, 338, 361, 94, 364, 336, 389, - 370, 108, 405, 110, 375, 0, 143, 119, 0, 0, - 363, 391, 365, 385, 358, 381, 328, 374, 400, 350, - 378, 401, 0, 0, 0, 75, 0, 0, 77, 0, - 0, 0, 0, 0, 0, 87, 0, 377, 396, 348, - 379, 317, 376, 0, 321, 324, 406, 394, 343, 344, - 0, 0, 0, 0, 0, 0, 0, 362, 366, 382, - 356, 0, 0, 0, 0, 0, 0, 0, 0, 341, - 0, 373, 0, 0, 0, 325, 322, 0, 360, 0, - 0, 0, 327, 0, 342, 383, 0, 316, 386, 392, - 357, 187, 395, 355, 354, 398, 132, 0, 0, 146, - 99, 98, 107, 390, 339, 347, 90, 345, 138, 128, - 158, 372, 129, 137, 111, 150, 133, 157, 188, 165, - 148, 164, 79, 147, 156, 88, 140, 81, 154, 145, - 117, 103, 104, 80, 0, 136, 93, 97, 92, 125, - 151, 152, 91, 172, 84, 163, 83, 314, 162, 124, - 149, 155, 118, 115, 82, 153, 116, 114, 106, 95, - 100, 130, 113, 131, 101, 121, 120, 122, 0, 320, - 0, 144, 160, 173, 335, 393, 166, 167, 168, 169, - 0, 0, 0, 315, 313, 102, 141, 105, 112, 135, - 171, 127, 139, 89, 159, 142, 331, 334, 329, 330, - 368, 369, 402, 403, 404, 384, 326, 0, 332, 333, - 0, 388, 371, 78, 0, 109, 170, 134, 96, 161, - 397, 387, 0, 359, 399, 337, 351, 407, 352, 353, - 380, 323, 367, 126, 349, 0, 340, 318, 346, 319, - 338, 361, 94, 364, 336, 389, 370, 108, 405, 110, - 375, 0, 143, 119, 0, 0, 363, 391, 365, 385, - 358, 381, 328, 374, 400, 350, 378, 401, 0, 0, - 0, 75, 0, 0, 77, 0, 0, 0, 0, 0, - 0, 87, 0, 377, 396, 348, 379, 317, 376, 0, - 321, 324, 406, 394, 343, 344, 0, 0, 0, 0, - 0, 0, 0, 362, 366, 382, 356, 0, 0, 0, - 0, 0, 0, 0, 0, 341, 0, 373, 0, 0, - 0, 325, 322, 0, 360, 0, 0, 0, 327, 0, - 342, 383, 0, 316, 386, 392, 357, 187, 395, 355, - 354, 398, 132, 0, 0, 146, 99, 98, 107, 390, - 339, 347, 90, 345, 138, 128, 158, 372, 129, 137, - 111, 150, 133, 157, 188, 165, 148, 164, 79, 147, - 582, 88, 140, 81, 154, 145, 117, 103, 104, 80, - 0, 136, 93, 97, 92, 125, 151, 152, 91, 172, - 84, 163, 83, 314, 162, 124, 149, 155, 118, 115, - 82, 153, 116, 114, 106, 95, 100, 130, 113, 131, - 101, 121, 120, 122, 0, 320, 0, 144, 160, 173, - 335, 393, 166, 167, 168, 169, 0, 0, 0, 315, - 313, 102, 141, 105, 112, 135, 171, 127, 139, 89, - 159, 142, 331, 334, 329, 330, 368, 369, 402, 403, - 404, 384, 326, 0, 332, 333, 0, 388, 371, 78, - 0, 109, 170, 134, 96, 161, 397, 387, 0, 359, - 399, 337, 351, 407, 352, 353, 380, 323, 367, 126, - 349, 0, 340, 318, 346, 319, 338, 361, 94, 364, - 336, 389, 370, 108, 405, 110, 375, 0, 143, 119, - 0, 0, 363, 391, 365, 385, 358, 381, 328, 374, - 400, 350, 378, 401, 0, 0, 0, 75, 0, 0, - 77, 0, 0, 0, 0, 0, 0, 87, 0, 377, - 396, 348, 379, 317, 376, 0, 321, 324, 406, 394, - 343, 344, 0, 0, 0, 0, 0, 0, 0, 362, - 366, 382, 356, 0, 0, 0, 0, 0, 0, 0, - 0, 341, 0, 373, 0, 0, 0, 325, 322, 0, - 360, 0, 0, 0, 327, 0, 342, 383, 0, 316, - 386, 392, 357, 187, 395, 355, 354, 398, 132, 0, - 0, 146, 99, 98, 107, 390, 339, 347, 90, 345, - 138, 128, 158, 372, 129, 137, 111, 150, 133, 157, - 188, 165, 148, 164, 79, 147, 305, 88, 140, 81, - 154, 145, 117, 103, 104, 80, 0, 136, 93, 97, - 92, 125, 151, 152, 91, 172, 84, 163, 83, 314, - 162, 124, 149, 155, 118, 115, 82, 153, 116, 114, - 106, 95, 100, 130, 113, 131, 101, 121, 120, 122, - 0, 320, 0, 144, 160, 173, 335, 393, 166, 167, - 168, 169, 0, 0, 0, 315, 313, 308, 307, 105, - 112, 135, 171, 127, 139, 89, 159, 142, 331, 334, - 329, 330, 368, 369, 402, 403, 404, 384, 326, 0, - 332, 333, 0, 388, 371, 78, 0, 109, 170, 134, - 96, 161, 126, 0, 0, 737, 0, 239, 0, 0, - 0, 94, 0, 237, 0, 0, 108, 278, 110, 0, - 0, 143, 119, 0, 0, 0, 0, 269, 270, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, - 75, 264, 257, 256, 259, 260, 261, 262, 0, 0, - 87, 258, 263, 265, 266, 0, 0, 235, 250, 0, - 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 256, 257, 1223, 0, 0, + 0, 298, 0, 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 247, 248, 231, 0, 0, 0, 289, 0, 249, 0, - 0, 245, 246, 251, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 187, 0, 0, 287, - 0, 132, 0, 0, 146, 99, 98, 107, 0, 0, - 0, 90, 0, 138, 128, 158, 0, 129, 137, 111, - 150, 133, 157, 188, 165, 148, 164, 79, 147, 156, - 88, 140, 81, 154, 145, 117, 103, 104, 80, 0, - 136, 93, 97, 92, 125, 151, 152, 91, 172, 84, - 163, 83, 85, 162, 124, 149, 155, 118, 115, 82, - 153, 116, 114, 106, 95, 100, 130, 113, 131, 101, - 121, 120, 122, 0, 0, 0, 144, 160, 173, 0, - 0, 166, 167, 168, 169, 0, 0, 0, 123, 86, - 102, 141, 105, 112, 135, 171, 127, 139, 89, 159, - 142, 279, 288, 285, 286, 283, 284, 282, 281, 280, - 290, 271, 272, 273, 274, 276, 0, 275, 78, 0, - 109, 170, 134, 96, 161, 126, 0, 0, 0, 0, - 239, 0, 0, 0, 94, 0, 237, 0, 0, 108, - 278, 110, 0, 0, 143, 119, 0, 0, 0, 0, - 269, 270, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 0, 0, 75, 264, 257, 256, 259, 260, 261, - 262, 0, 0, 87, 258, 263, 265, 266, 0, 0, - 235, 250, 0, 277, 0, 0, 0, 0, 0, 0, + 0, 193, 0, 0, 296, 0, 138, 0, 0, 152, + 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, + 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, + 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, + 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, + 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, + 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, + 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, + 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 288, + 297, 294, 295, 292, 293, 291, 290, 289, 299, 280, + 281, 282, 283, 285, 0, 284, 84, 0, 115, 176, + 140, 102, 167, 132, 0, 0, 0, 0, 248, 0, + 0, 0, 100, 0, 246, 0, 0, 114, 287, 116, + 0, 0, 149, 125, 0, 0, 0, 0, 278, 279, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 465, 81, 273, 266, 265, 268, 269, 270, 271, 0, + 0, 93, 267, 272, 274, 275, 0, 0, 244, 259, + 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 247, 248, 1203, 0, 0, 0, 289, - 0, 249, 0, 0, 245, 246, 251, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, - 0, 0, 287, 0, 132, 0, 0, 146, 99, 98, - 107, 0, 0, 0, 90, 0, 138, 128, 158, 0, - 129, 137, 111, 150, 133, 157, 188, 165, 148, 164, - 79, 147, 156, 88, 140, 81, 154, 145, 117, 103, - 104, 80, 0, 136, 93, 97, 92, 125, 151, 152, - 91, 172, 84, 163, 83, 85, 162, 124, 149, 155, - 118, 115, 82, 153, 116, 114, 106, 95, 100, 130, - 113, 131, 101, 121, 120, 122, 0, 0, 0, 144, - 160, 173, 0, 0, 166, 167, 168, 169, 0, 0, - 0, 123, 86, 102, 141, 105, 112, 135, 171, 127, - 139, 89, 159, 142, 279, 288, 285, 286, 283, 284, - 282, 281, 280, 290, 271, 272, 273, 274, 276, 0, - 275, 78, 0, 109, 170, 134, 96, 161, 126, 0, - 0, 0, 0, 239, 0, 0, 0, 94, 0, 237, - 0, 0, 108, 278, 110, 0, 0, 143, 119, 0, - 0, 0, 0, 269, 270, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 0, 453, 75, 264, 257, 256, - 259, 260, 261, 262, 0, 0, 87, 258, 263, 265, - 266, 0, 0, 235, 250, 0, 277, 0, 0, 0, + 0, 256, 257, 0, 0, 0, 0, 298, 0, 258, + 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 296, 0, 138, 0, 0, 152, 105, 104, 113, 0, + 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, + 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 288, 297, 294, 295, 292, + 293, 291, 290, 289, 299, 280, 281, 282, 283, 285, + 0, 284, 84, 0, 115, 176, 140, 102, 167, 132, + 0, 0, 0, 0, 248, 0, 0, 0, 100, 0, + 246, 0, 0, 114, 287, 116, 0, 0, 149, 125, + 0, 0, 0, 0, 278, 279, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 0, 81, 273, 266, + 265, 268, 269, 270, 271, 0, 0, 93, 267, 272, + 274, 275, 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 247, 248, 0, 0, - 0, 0, 289, 0, 249, 0, 0, 245, 246, 251, + 0, 0, 0, 0, 0, 0, 0, 256, 257, 240, + 0, 0, 0, 298, 0, 258, 0, 0, 254, 255, + 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 0, 0, 296, 0, 138, 0, + 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, + 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, + 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, + 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, + 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, + 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, + 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, + 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, + 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, + 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, + 148, 288, 297, 294, 295, 292, 293, 291, 290, 289, + 299, 280, 281, 282, 283, 285, 0, 284, 84, 0, + 115, 176, 140, 102, 167, 132, 0, 0, 0, 0, + 248, 0, 0, 0, 100, 0, 246, 0, 0, 114, + 287, 116, 0, 0, 149, 125, 0, 0, 0, 0, + 278, 279, 0, 0, 0, 0, 0, 0, 822, 0, + 56, 0, 0, 81, 273, 266, 265, 268, 269, 270, + 271, 0, 0, 93, 267, 272, 274, 275, 0, 0, + 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 187, 0, 0, 287, 0, 132, 0, 0, - 146, 99, 98, 107, 0, 0, 0, 90, 0, 138, - 128, 158, 0, 129, 137, 111, 150, 133, 157, 188, - 165, 148, 164, 79, 147, 156, 88, 140, 81, 154, - 145, 117, 103, 104, 80, 0, 136, 93, 97, 92, - 125, 151, 152, 91, 172, 84, 163, 83, 85, 162, - 124, 149, 155, 118, 115, 82, 153, 116, 114, 106, - 95, 100, 130, 113, 131, 101, 121, 120, 122, 0, - 0, 0, 144, 160, 173, 0, 0, 166, 167, 168, - 169, 0, 0, 0, 123, 86, 102, 141, 105, 112, - 135, 171, 127, 139, 89, 159, 142, 279, 288, 285, - 286, 283, 284, 282, 281, 280, 290, 271, 272, 273, - 274, 276, 0, 275, 78, 0, 109, 170, 134, 96, - 161, 126, 0, 0, 0, 0, 239, 0, 0, 0, - 94, 0, 237, 0, 0, 108, 278, 110, 0, 0, - 143, 119, 0, 0, 0, 0, 269, 270, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 0, 0, 75, - 264, 257, 256, 259, 260, 261, 262, 0, 0, 87, - 258, 263, 265, 266, 0, 0, 235, 250, 0, 277, + 0, 0, 0, 256, 257, 0, 0, 0, 0, 298, + 0, 258, 0, 0, 254, 255, 260, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 0, 296, 0, 138, 0, 0, 152, 105, 104, + 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, + 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, + 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, + 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, + 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, + 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, + 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, + 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, + 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, + 141, 177, 133, 145, 95, 165, 148, 288, 297, 294, + 295, 292, 293, 291, 290, 289, 299, 280, 281, 282, + 283, 285, 26, 284, 84, 0, 115, 176, 140, 102, + 167, 0, 0, 0, 132, 0, 0, 0, 0, 248, + 0, 0, 0, 100, 0, 246, 0, 0, 114, 287, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 278, + 279, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 0, 81, 273, 266, 265, 268, 269, 270, 271, + 0, 0, 93, 267, 272, 274, 275, 0, 0, 244, + 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, - 248, 231, 0, 0, 0, 289, 0, 249, 0, 0, - 245, 246, 251, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 187, 0, 0, 287, 0, - 132, 0, 0, 146, 99, 98, 107, 0, 0, 0, - 90, 0, 138, 128, 158, 0, 129, 137, 111, 150, - 133, 157, 188, 165, 148, 164, 79, 147, 156, 88, - 140, 81, 154, 145, 117, 103, 104, 80, 0, 136, - 93, 97, 92, 125, 151, 152, 91, 172, 84, 163, - 83, 85, 162, 124, 149, 155, 118, 115, 82, 153, - 116, 114, 106, 95, 100, 130, 113, 131, 101, 121, - 120, 122, 0, 0, 0, 144, 160, 173, 0, 0, - 166, 167, 168, 169, 0, 0, 0, 123, 86, 102, - 141, 105, 112, 135, 171, 127, 139, 89, 159, 142, - 279, 288, 285, 286, 283, 284, 282, 281, 280, 290, - 271, 272, 273, 274, 276, 0, 275, 78, 0, 109, - 170, 134, 96, 161, 126, 0, 0, 0, 0, 239, - 0, 0, 0, 94, 0, 237, 0, 0, 108, 278, - 110, 0, 0, 143, 119, 0, 0, 0, 0, 269, - 270, 0, 0, 0, 0, 0, 0, 804, 0, 50, - 0, 0, 75, 264, 257, 256, 259, 260, 261, 262, - 0, 0, 87, 258, 263, 265, 266, 0, 0, 235, - 250, 0, 277, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 256, 257, 0, 0, 0, 0, 298, 0, + 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 296, 0, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 288, 297, 294, 295, + 292, 293, 291, 290, 289, 299, 280, 281, 282, 283, + 285, 0, 284, 84, 0, 115, 176, 140, 102, 167, + 132, 0, 0, 0, 0, 248, 0, 0, 0, 100, + 0, 246, 0, 0, 114, 287, 116, 0, 0, 149, + 125, 0, 0, 0, 0, 278, 279, 0, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 81, 273, + 266, 265, 268, 269, 270, 271, 0, 0, 93, 267, + 272, 274, 275, 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 247, 248, 0, 0, 0, 0, 289, 0, - 249, 0, 0, 245, 246, 251, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, - 0, 287, 0, 132, 0, 0, 146, 99, 98, 107, - 0, 0, 0, 90, 0, 138, 128, 158, 0, 129, - 137, 111, 150, 133, 157, 188, 165, 148, 164, 79, - 147, 156, 88, 140, 81, 154, 145, 117, 103, 104, - 80, 0, 136, 93, 97, 92, 125, 151, 152, 91, - 172, 84, 163, 83, 85, 162, 124, 149, 155, 118, - 115, 82, 153, 116, 114, 106, 95, 100, 130, 113, - 131, 101, 121, 120, 122, 0, 0, 0, 144, 160, - 173, 0, 0, 166, 167, 168, 169, 0, 0, 0, - 123, 86, 102, 141, 105, 112, 135, 171, 127, 139, - 89, 159, 142, 279, 288, 285, 286, 283, 284, 282, - 281, 280, 290, 271, 272, 273, 274, 276, 23, 275, - 78, 0, 109, 170, 134, 96, 161, 0, 0, 0, - 126, 0, 0, 0, 0, 239, 0, 0, 0, 94, - 0, 237, 0, 0, 108, 278, 110, 0, 0, 143, - 119, 0, 0, 0, 0, 269, 270, 0, 0, 0, - 0, 0, 0, 0, 0, 50, 0, 0, 75, 264, - 257, 256, 259, 260, 261, 262, 0, 0, 87, 258, - 263, 265, 266, 0, 0, 235, 250, 0, 277, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, + 0, 0, 0, 0, 298, 0, 258, 0, 0, 254, + 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 0, 296, 0, 138, + 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, + 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 288, 297, 294, 295, 292, 293, 291, 290, + 289, 299, 280, 281, 282, 283, 285, 132, 284, 84, + 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, + 0, 114, 287, 116, 0, 0, 149, 125, 0, 0, + 0, 0, 278, 279, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 81, 273, 266, 265, 268, + 269, 270, 271, 0, 0, 93, 267, 272, 274, 275, + 0, 0, 0, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 247, 248, - 0, 0, 0, 0, 289, 0, 249, 0, 0, 245, - 246, 251, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 187, 0, 0, 287, 0, 132, - 0, 0, 146, 99, 98, 107, 0, 0, 0, 90, - 0, 138, 128, 158, 0, 129, 137, 111, 150, 133, - 157, 188, 165, 148, 164, 79, 147, 156, 88, 140, - 81, 154, 145, 117, 103, 104, 80, 0, 136, 93, - 97, 92, 125, 151, 152, 91, 172, 84, 163, 83, - 85, 162, 124, 149, 155, 118, 115, 82, 153, 116, - 114, 106, 95, 100, 130, 113, 131, 101, 121, 120, - 122, 0, 0, 0, 144, 160, 173, 0, 0, 166, - 167, 168, 169, 0, 0, 0, 123, 86, 102, 141, - 105, 112, 135, 171, 127, 139, 89, 159, 142, 279, - 288, 285, 286, 283, 284, 282, 281, 280, 290, 271, - 272, 273, 274, 276, 0, 275, 78, 0, 109, 170, - 134, 96, 161, 126, 0, 0, 0, 0, 239, 0, - 0, 0, 94, 0, 237, 0, 0, 108, 278, 110, - 0, 0, 143, 119, 0, 0, 0, 0, 269, 270, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, - 0, 75, 264, 257, 256, 259, 260, 261, 262, 0, - 0, 87, 258, 263, 265, 266, 0, 0, 235, 250, - 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 256, 257, 0, 0, 0, + 0, 298, 0, 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 247, 248, 0, 0, 0, 0, 289, 0, 249, - 0, 0, 245, 246, 251, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, - 287, 0, 132, 0, 0, 146, 99, 98, 107, 0, - 0, 0, 90, 0, 138, 128, 158, 0, 129, 137, - 111, 150, 133, 157, 188, 165, 148, 164, 79, 147, - 156, 88, 140, 81, 154, 145, 117, 103, 104, 80, - 0, 136, 93, 97, 92, 125, 151, 152, 91, 172, - 84, 163, 83, 85, 162, 124, 149, 155, 118, 115, - 82, 153, 116, 114, 106, 95, 100, 130, 113, 131, - 101, 121, 120, 122, 0, 0, 0, 144, 160, 173, - 0, 0, 166, 167, 168, 169, 0, 0, 0, 123, - 86, 102, 141, 105, 112, 135, 171, 127, 139, 89, - 159, 142, 279, 288, 285, 286, 283, 284, 282, 281, - 280, 290, 271, 272, 273, 274, 276, 126, 275, 78, - 0, 109, 170, 134, 96, 161, 94, 0, 0, 0, - 0, 108, 278, 110, 0, 0, 143, 119, 0, 0, - 0, 0, 269, 270, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 0, 0, 75, 264, 257, 256, 259, - 260, 261, 262, 0, 0, 87, 258, 263, 265, 266, - 0, 0, 0, 250, 0, 277, 0, 0, 0, 0, + 0, 193, 0, 0, 296, 0, 138, 0, 0, 152, + 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, + 164, 1312, 135, 143, 117, 156, 139, 163, 194, 171, + 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, + 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, + 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, + 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, + 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, + 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 288, + 297, 294, 295, 292, 293, 291, 290, 289, 299, 280, + 281, 282, 283, 285, 132, 284, 84, 0, 115, 176, + 140, 102, 167, 100, 0, 0, 0, 0, 114, 287, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 278, + 279, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 0, 81, 273, 266, 265, 268, 269, 270, 271, + 0, 0, 93, 267, 272, 274, 275, 0, 0, 0, + 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 247, 248, 0, 0, 0, - 0, 289, 0, 249, 0, 0, 245, 246, 251, 0, + 0, 0, 256, 257, 0, 0, 0, 0, 298, 0, + 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 296, 0, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 288, 297, 294, 295, + 292, 293, 291, 290, 289, 299, 280, 281, 282, 283, + 285, 132, 284, 84, 0, 115, 176, 140, 102, 167, + 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 287, 0, 132, 0, 0, 146, - 99, 98, 107, 0, 0, 0, 90, 0, 138, 128, - 158, 1292, 129, 137, 111, 150, 133, 157, 188, 165, - 148, 164, 79, 147, 156, 88, 140, 81, 154, 145, - 117, 103, 104, 80, 0, 136, 93, 97, 92, 125, - 151, 152, 91, 172, 84, 163, 83, 85, 162, 124, - 149, 155, 118, 115, 82, 153, 116, 114, 106, 95, - 100, 130, 113, 131, 101, 121, 120, 122, 0, 0, - 0, 144, 160, 173, 0, 0, 166, 167, 168, 169, - 0, 0, 0, 123, 86, 102, 141, 105, 112, 135, - 171, 127, 139, 89, 159, 142, 279, 288, 285, 286, - 283, 284, 282, 281, 280, 290, 271, 272, 273, 274, - 276, 126, 275, 78, 0, 109, 170, 134, 96, 161, - 94, 0, 0, 0, 0, 108, 278, 110, 0, 0, - 143, 119, 0, 0, 0, 0, 269, 270, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 0, 0, 75, - 264, 257, 256, 259, 260, 261, 262, 0, 0, 87, - 258, 263, 265, 266, 0, 0, 0, 250, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, - 248, 0, 0, 0, 0, 289, 0, 249, 0, 0, - 245, 246, 251, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 187, 0, 0, 287, 0, - 132, 0, 0, 146, 99, 98, 107, 0, 0, 0, - 90, 0, 138, 128, 158, 0, 129, 137, 111, 150, - 133, 157, 188, 165, 148, 164, 79, 147, 156, 88, - 140, 81, 154, 145, 117, 103, 104, 80, 0, 136, - 93, 97, 92, 125, 151, 152, 91, 172, 84, 163, - 83, 85, 162, 124, 149, 155, 118, 115, 82, 153, - 116, 114, 106, 95, 100, 130, 113, 131, 101, 121, - 120, 122, 0, 0, 0, 144, 160, 173, 0, 0, - 166, 167, 168, 169, 0, 0, 0, 123, 86, 102, - 141, 105, 112, 135, 171, 127, 139, 89, 159, 142, - 279, 288, 285, 286, 283, 284, 282, 281, 280, 290, - 271, 272, 273, 274, 276, 126, 275, 78, 0, 109, - 170, 134, 96, 161, 94, 0, 0, 0, 0, 108, - 0, 110, 0, 0, 143, 119, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 498, 497, 507, 508, 500, + 501, 502, 503, 504, 505, 506, 499, 0, 0, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 75, 0, 0, 77, 0, 0, 0, - 0, 0, 0, 87, 0, 0, 0, 0, 68, 0, + 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, + 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, + 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, + 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, + 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, + 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, + 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, + 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, + 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, + 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, + 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, + 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, + 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, + 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 71, 72, 0, 67, - 0, 0, 0, 73, 132, 0, 0, 146, 99, 98, - 107, 0, 0, 0, 90, 0, 138, 128, 158, 0, - 129, 137, 111, 150, 133, 157, 69, 165, 148, 164, - 79, 147, 156, 88, 140, 81, 154, 145, 117, 103, - 104, 80, 0, 136, 93, 97, 92, 125, 151, 152, - 91, 172, 84, 163, 83, 85, 162, 124, 149, 155, - 118, 115, 82, 153, 116, 114, 106, 95, 100, 130, - 113, 131, 101, 121, 120, 122, 0, 0, 0, 144, - 160, 173, 0, 0, 166, 167, 168, 169, 0, 0, - 0, 123, 86, 102, 141, 105, 112, 135, 171, 127, - 139, 89, 159, 142, 0, 70, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, + 78, 0, 73, 0, 0, 0, 79, 138, 0, 0, + 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, + 134, 164, 0, 135, 143, 117, 156, 139, 163, 75, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 0, 115, + 176, 140, 102, 167, 132, 0, 0, 0, 487, 0, + 0, 0, 0, 100, 0, 0, 0, 0, 114, 0, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 78, 0, 109, 170, 134, 96, 161, 126, 0, - 0, 0, 475, 0, 0, 0, 0, 94, 0, 0, - 0, 0, 108, 0, 110, 0, 0, 143, 119, 0, + 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 93, 0, 0, 0, 0, 484, 483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 75, 0, 0, 77, - 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, - 0, 472, 471, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 473, 0, + 0, 0, 0, 0, 485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 187, 0, 0, 0, 0, 132, 0, 0, - 146, 99, 98, 107, 0, 0, 0, 90, 0, 138, - 128, 158, 0, 129, 137, 111, 150, 133, 157, 188, - 165, 148, 164, 79, 147, 156, 88, 140, 81, 154, - 145, 117, 103, 104, 80, 0, 136, 93, 97, 92, - 125, 151, 152, 91, 172, 84, 163, 83, 85, 162, - 124, 149, 155, 118, 115, 82, 153, 116, 114, 106, - 95, 100, 130, 113, 131, 101, 121, 120, 122, 0, - 0, 0, 144, 160, 173, 0, 0, 166, 167, 168, - 169, 0, 0, 0, 123, 86, 102, 141, 105, 112, - 135, 171, 127, 139, 89, 159, 142, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 126, 0, 78, 0, 109, 170, 134, 96, - 161, 94, 0, 0, 0, 0, 108, 0, 110, 0, - 0, 143, 119, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, - 75, 0, 0, 77, 0, 0, 0, 0, 0, 0, - 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 132, 0, 84, 0, 115, 176, 140, 102, 167, + 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, - 0, 132, 0, 0, 146, 99, 98, 107, 0, 0, - 0, 90, 0, 138, 128, 158, 0, 129, 137, 111, - 150, 133, 157, 188, 165, 148, 164, 79, 147, 156, - 88, 140, 81, 154, 145, 117, 103, 104, 80, 0, - 136, 93, 97, 92, 125, 151, 152, 91, 172, 84, - 163, 83, 85, 162, 124, 149, 155, 118, 115, 82, - 153, 116, 114, 106, 95, 100, 130, 113, 131, 101, - 121, 120, 122, 0, 0, 0, 144, 160, 173, 0, - 0, 166, 167, 168, 169, 0, 0, 0, 123, 86, - 102, 141, 105, 112, 135, 171, 127, 139, 89, 159, - 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 126, 0, 78, 0, - 109, 170, 134, 96, 161, 94, 0, 0, 0, 0, - 108, 0, 110, 0, 0, 143, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 75, 0, 0, 77, 690, 0, - 0, 691, 0, 0, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, + 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, + 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, + 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, + 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, + 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, + 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, + 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, + 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, + 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, + 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, + 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, + 708, 0, 0, 709, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 0, 0, 132, 0, 0, 146, 99, - 98, 107, 0, 0, 0, 90, 0, 138, 128, 158, - 0, 129, 137, 111, 150, 133, 157, 188, 165, 148, - 164, 79, 147, 156, 88, 140, 81, 154, 145, 117, - 103, 104, 80, 0, 136, 93, 97, 92, 125, 151, - 152, 91, 172, 84, 163, 83, 85, 162, 124, 149, - 155, 118, 115, 82, 153, 116, 114, 106, 95, 100, - 130, 113, 131, 101, 121, 120, 122, 0, 0, 0, - 144, 160, 173, 0, 0, 166, 167, 168, 169, 0, - 0, 0, 123, 86, 102, 141, 105, 112, 135, 171, - 127, 139, 89, 159, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 78, 0, 109, 170, 134, 96, 161, 126, - 0, 0, 0, 572, 0, 0, 0, 0, 94, 0, - 0, 0, 0, 108, 0, 110, 0, 0, 143, 119, + 0, 0, 193, 0, 0, 0, 0, 138, 0, 0, + 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, + 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, - 77, 0, 0, 0, 0, 0, 0, 87, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 0, 115, + 176, 140, 102, 167, 132, 0, 0, 0, 584, 0, + 0, 0, 0, 100, 0, 0, 0, 0, 114, 0, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 0, 132, 0, - 0, 146, 99, 98, 107, 0, 0, 0, 90, 0, - 138, 128, 158, 0, 129, 137, 111, 150, 133, 157, - 188, 165, 148, 164, 79, 147, 156, 88, 140, 81, - 154, 145, 117, 103, 104, 80, 0, 136, 93, 97, - 92, 125, 151, 152, 91, 172, 84, 163, 83, 85, - 162, 124, 149, 155, 118, 115, 82, 153, 116, 114, - 106, 95, 100, 130, 113, 131, 101, 121, 120, 122, - 0, 0, 0, 144, 160, 173, 0, 0, 166, 167, - 168, 169, 0, 0, 0, 123, 86, 102, 141, 105, - 112, 135, 171, 127, 139, 89, 159, 142, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 126, 0, 78, 0, 109, 170, 134, - 96, 161, 94, 0, 0, 0, 0, 108, 0, 110, - 0, 0, 143, 119, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, - 0, 75, 0, 0, 77, 0, 0, 0, 0, 0, - 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 132, 0, 84, 0, 115, 176, 140, 102, 167, + 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, - 0, 0, 132, 0, 0, 146, 99, 98, 107, 0, - 0, 0, 90, 0, 138, 128, 158, 0, 129, 137, - 111, 150, 133, 157, 188, 165, 148, 164, 79, 147, - 156, 88, 140, 81, 154, 145, 117, 103, 104, 80, - 0, 136, 93, 97, 92, 125, 151, 152, 91, 172, - 84, 163, 83, 85, 162, 124, 149, 155, 118, 115, - 82, 153, 116, 114, 106, 95, 100, 130, 113, 131, - 101, 121, 120, 122, 0, 0, 0, 144, 160, 173, - 0, 0, 166, 167, 168, 169, 0, 0, 0, 123, - 86, 102, 141, 105, 112, 135, 171, 127, 139, 89, - 159, 142, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 126, 0, 78, - 0, 109, 170, 134, 96, 161, 94, 0, 590, 0, - 0, 108, 0, 110, 0, 0, 143, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 75, 0, 0, 77, 0, - 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, + 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, + 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, + 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, + 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, + 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, + 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, + 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, + 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, + 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, + 84, 0, 115, 176, 140, 102, 167, 100, 0, 602, + 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, + 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 0, 0, 132, 0, 0, 146, - 99, 98, 107, 0, 0, 0, 90, 0, 138, 128, - 158, 0, 129, 137, 111, 150, 133, 157, 188, 165, - 148, 164, 79, 147, 156, 88, 140, 81, 154, 145, - 117, 103, 104, 80, 0, 136, 93, 97, 92, 125, - 151, 152, 91, 172, 84, 163, 83, 85, 162, 124, - 149, 155, 118, 115, 82, 153, 116, 114, 106, 95, - 100, 130, 113, 131, 101, 121, 120, 122, 0, 0, - 0, 144, 160, 173, 0, 0, 166, 167, 168, 169, - 0, 0, 0, 123, 86, 102, 141, 105, 112, 135, - 171, 127, 139, 89, 159, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 78, 0, 109, 170, 134, 96, 161, - 126, 0, 0, 0, 572, 0, 0, 0, 0, 94, - 0, 0, 0, 0, 108, 0, 110, 0, 0, 143, - 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, - 0, 77, 0, 0, 0, 0, 0, 0, 87, 0, + 0, 0, 193, 0, 0, 0, 0, 138, 0, 0, + 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, + 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 0, 115, + 176, 140, 102, 167, 132, 0, 0, 0, 584, 0, + 0, 0, 0, 100, 0, 0, 0, 0, 114, 0, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 187, 0, 0, 0, 0, 132, - 0, 0, 146, 99, 98, 107, 0, 0, 0, 90, - 0, 138, 128, 158, 0, 570, 137, 111, 150, 133, - 157, 188, 165, 148, 164, 79, 147, 156, 88, 140, - 81, 154, 145, 117, 103, 104, 80, 615, 136, 93, - 97, 92, 125, 151, 152, 91, 172, 84, 163, 83, - 85, 162, 124, 149, 155, 118, 115, 82, 153, 116, - 114, 106, 95, 100, 130, 113, 131, 101, 121, 120, - 122, 0, 0, 0, 144, 160, 173, 0, 0, 166, - 167, 168, 169, 0, 0, 0, 123, 86, 102, 141, - 105, 112, 135, 171, 127, 139, 89, 159, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 603, 126, 78, 0, 109, 170, - 134, 96, 161, 550, 94, 0, 0, 0, 0, 108, - 0, 110, 0, 0, 143, 119, 0, 0, 0, 0, - 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, - 0, 0, 0, 75, 0, 0, 77, 0, 0, 0, - 0, 0, 0, 87, 0, 629, 630, 631, 632, 633, - 634, 635, 0, 636, 637, 638, 639, 640, 617, 618, - 619, 620, 601, 602, 0, 0, 604, 0, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 621, 622, - 623, 624, 625, 626, 627, 628, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, - 0, 0, 0, 0, 132, 0, 0, 146, 99, 98, - 107, 0, 0, 0, 90, 0, 138, 128, 158, 0, - 129, 137, 111, 150, 133, 157, 188, 165, 148, 164, - 79, 147, 156, 88, 140, 81, 154, 145, 117, 103, - 104, 80, 0, 136, 93, 97, 92, 125, 151, 152, - 91, 172, 84, 163, 83, 85, 162, 124, 149, 155, - 118, 115, 82, 153, 116, 114, 106, 95, 100, 130, - 113, 131, 101, 121, 120, 122, 0, 0, 0, 144, - 160, 173, 0, 0, 166, 167, 168, 169, 0, 0, - 0, 123, 86, 102, 141, 105, 112, 135, 171, 127, - 139, 89, 159, 142, 0, 0, 0, 0, 0, 0, - 0, 0, 300, 0, 0, 0, 0, 0, 0, 126, - 0, 78, 0, 109, 170, 134, 96, 161, 94, 0, - 0, 0, 0, 108, 0, 110, 0, 0, 143, 119, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 582, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, - 77, 0, 0, 0, 0, 0, 0, 87, 0, 0, + 0, 0, 132, 84, 0, 115, 176, 140, 102, 167, + 562, 100, 0, 0, 0, 0, 114, 0, 116, 0, + 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 0, 132, 0, - 0, 146, 99, 98, 107, 0, 0, 0, 90, 0, - 138, 128, 158, 0, 129, 137, 111, 150, 133, 157, - 188, 165, 148, 164, 79, 147, 156, 88, 140, 81, - 154, 145, 117, 103, 104, 80, 0, 136, 93, 97, - 92, 125, 151, 152, 91, 172, 84, 163, 83, 85, - 162, 124, 149, 155, 118, 115, 82, 153, 116, 114, - 106, 95, 100, 130, 113, 131, 101, 121, 120, 122, - 0, 0, 0, 144, 160, 173, 0, 0, 166, 167, - 168, 169, 0, 0, 0, 123, 86, 102, 141, 105, - 112, 135, 171, 127, 139, 89, 159, 142, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, + 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, + 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, + 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, + 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, + 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, + 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, + 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 309, 0, 0, 0, 0, 0, 0, 132, + 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, + 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 126, 0, 78, 0, 109, 170, 134, - 96, 161, 94, 0, 0, 0, 0, 108, 0, 110, - 0, 0, 143, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 75, 0, 0, 77, 0, 0, 0, 0, 0, - 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 183, 0, 187, 0, 0, - 0, 0, 132, 0, 0, 146, 99, 98, 107, 0, - 0, 0, 90, 0, 138, 128, 158, 0, 129, 137, - 111, 150, 133, 157, 188, 165, 148, 164, 79, 147, - 156, 88, 140, 81, 154, 145, 117, 103, 104, 80, - 0, 136, 93, 97, 92, 125, 151, 152, 91, 172, - 84, 163, 83, 85, 162, 124, 149, 155, 118, 115, - 82, 153, 116, 114, 106, 95, 100, 130, 113, 131, - 101, 121, 120, 122, 0, 0, 0, 144, 160, 173, - 0, 0, 166, 167, 168, 169, 0, 0, 0, 123, - 86, 102, 141, 105, 112, 135, 171, 127, 139, 89, - 159, 142, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 126, 0, 78, - 0, 109, 170, 134, 96, 161, 94, 0, 0, 0, - 0, 108, 0, 110, 0, 0, 143, 119, 0, 0, + 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, + 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, + 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, + 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, + 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, + 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, + 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, + 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, + 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, + 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, + 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, + 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 132, 0, 84, 0, + 115, 176, 140, 102, 167, 100, 0, 0, 0, 0, + 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 75, 0, 0, 77, 0, - 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 83, 0, 0, + 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, + 193, 0, 0, 0, 0, 138, 0, 0, 152, 105, + 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, + 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, + 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, + 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, + 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, + 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, + 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, + 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, + 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, + 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 0, 0, 132, 0, 0, 146, - 99, 98, 107, 0, 0, 0, 90, 0, 138, 128, - 158, 0, 129, 137, 111, 150, 133, 157, 188, 165, - 148, 164, 79, 147, 156, 88, 140, 81, 154, 145, - 117, 103, 104, 80, 0, 136, 93, 97, 92, 125, - 151, 152, 91, 172, 84, 163, 83, 85, 162, 124, - 149, 155, 118, 115, 82, 153, 116, 114, 106, 95, - 100, 130, 113, 131, 101, 121, 120, 122, 0, 0, - 0, 144, 160, 173, 0, 0, 166, 167, 168, 169, - 0, 0, 0, 123, 86, 102, 141, 105, 112, 135, - 171, 127, 139, 89, 159, 142, 0, 0, 0, 0, + 0, 0, 0, 132, 0, 84, 0, 115, 176, 140, + 102, 167, 100, 0, 0, 0, 0, 114, 0, 116, + 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 78, 0, 109, 170, 134, 96, 161, + 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, + 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, + 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 0, 115, 176, 140, 102, 167, } var yyPact = [...]int{ - 1337, -1000, -174, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1530, -1000, -189, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 770, 800, -1000, -1000, -1000, -1000, -1000, -1000, 631, - 6367, 53, 83, -20, 8635, 82, 1431, 8859, -1000, -7, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 614, -1000, -1000, - -1000, -1000, -1000, 765, 778, 640, 769, 685, -1000, 4993, - 47, 7505, 8411, 4061, -1000, 481, 80, 8859, -144, 8859, - 44, 44, 44, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 838, 869, -1000, -1000, -1000, -1000, + -1000, -1000, 678, 6650, 93, 99, 3, 8948, 94, 1510, + 9175, -1000, 0, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -6, 9175, 504, 622, -1000, -1000, -1000, -1000, -1000, 829, + 835, 675, 820, 760, -1000, 5031, 53, 7803, 8721, 4087, + -1000, 502, 97, 9175, -152, 9175, 49, 49, 49, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1595,22 +1635,22 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 71, 8859, -1000, 8859, 43, 459, - 43, 43, 43, 8859, -1000, 112, -1000, -1000, -1000, 8859, - 442, 717, 38, 2585, 2585, 2585, 2585, -2, 2585, -101, - 659, -1000, -1000, -1000, -1000, 2585, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 360, 732, 5695, 5695, - 770, -1000, 614, -1000, -1000, -1000, 722, -1000, -1000, 238, - 789, -1000, 6600, 111, -1000, 5695, 1570, 595, 595, 595, - 240, 101, -1000, -1000, -1000, 6143, 6143, 6143, 6143, 6143, - 6143, 6143, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5462, 595, - 595, 595, 595, 595, 595, 595, 595, 5695, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, - 595, 8187, 601, 647, -1000, -1000, -1000, 752, 6824, 7962, - 8859, 534, -1000, 588, 3815, -113, -1000, -1000, -1000, 180, - 7729, -1000, -1000, -1000, 716, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 74, 9175, -1000, 9175, 48, 497, 48, 48, 48, 9175, + -1000, 133, -1000, -1000, -1000, 9175, 493, 790, 39, 2593, + 2593, 2593, 2593, 11, 2593, -98, 726, -1000, -1000, -1000, + -1000, 2593, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 9175, 850, 684, 404, 800, 5742, 5742, 838, + -1000, 622, -1000, -1000, -1000, 787, -1000, -1000, 259, 849, + -1000, 6886, 131, -1000, 5742, 1734, 619, 619, 619, 109, + 261, -1000, -1000, -1000, 6196, 6196, 6196, 6196, 6196, 6196, + 6196, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5506, 619, 619, + 619, 619, 619, 619, 619, 619, 5742, 619, 619, 619, + 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, + 8494, 517, 660, -1000, -1000, -1000, 817, 7113, 8266, 9175, + 548, -1000, 610, 3838, -113, -1000, -1000, -1000, 207, 8030, + -1000, -1000, -1000, 788, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1618,262 +1658,268 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 516, -1000, - 8097, 425, 2585, 58, 602, 423, 191, 421, 8859, 8859, - 2585, 51, 8859, 750, 658, 8859, 413, 408, -1000, 3323, - -1000, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, -1000, - -1000, -1000, -1000, -1000, -1000, 2585, 2585, -1000, -79, -1000, - 8859, -1000, -1000, -1000, -1000, 795, 137, 462, 109, 591, - -1000, 328, 765, 360, 685, 7048, 656, -1000, -1000, 8859, - -1000, 5695, 5695, 298, -1000, 8859, -1000, 3077, 141, 6143, - 264, 223, 6143, 6143, 6143, 6143, 6143, 6143, 6143, 6143, - 6143, 6143, 6143, 6143, 6143, 6143, 6143, 319, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 389, 4294, -1000, 614, - -1000, -1000, 611, 611, 121, 121, 121, 121, 121, 121, - 1811, 360, 510, 171, 5462, 4993, 4993, 5695, 5695, 8859, - 8859, 4993, 755, 159, 171, 8859, -1000, 360, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 4993, 4993, 4993, 4993, 20, - 8859, -1000, 8859, 7505, 7505, 7505, 7505, 7505, -1000, 680, - 679, -1000, 677, 676, 692, 8859, -1000, 507, 6824, 116, - 595, -1000, 8859, -1000, 20, 522, 7505, 8859, -1000, -1000, - 3569, 588, -113, 586, -1000, -110, -81, 5226, 118, -1000, - -1000, -1000, 2339, 144, 278, -68, -1000, -1000, -1000, 598, - -1000, 598, 598, 598, 598, -34, -34, -34, -34, -1000, - -1000, -1000, -1000, -1000, 630, 629, -1000, 598, 598, 598, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 627, 627, 627, 606, - 606, 644, -1000, 8859, -160, 387, 2585, 749, 2585, -1000, - 164, -1000, 8859, -1000, -1000, 8859, 2585, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 501, -1000, 1743, + 480, 2593, 69, 627, 478, 231, 448, 9175, 9175, 2593, + 62, 9175, 815, 722, 9175, 433, 427, -1000, 3340, -1000, + 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, -1000, -1000, + -1000, -1000, -1000, -1000, 2593, 2593, -1000, -100, -1000, 9175, + -1000, -1000, 331, 9175, -1000, -1000, -1000, 863, 157, 583, + 129, 612, -1000, 288, 829, 404, 760, 7340, 736, -1000, + -1000, 9175, -1000, 5742, 5742, 293, -1000, 9175, -1000, 3091, + 170, 6196, 359, 189, 6196, 6196, 6196, 6196, 6196, 6196, + 6196, 6196, 6196, 6196, 6196, 6196, 6196, 6196, 6196, 393, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 425, 4323, + -1000, 622, 626, 626, -1000, -1000, 141, 141, 141, 141, + 141, 141, 6423, 404, 491, 195, 5506, 5031, 5031, 5742, + 5742, 9175, 9175, 5031, 821, 225, 195, 9175, -1000, 404, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5031, 5031, 5031, + 5031, 26, 9175, -1000, 9175, 7803, 7803, 7803, 7803, 7803, + -1000, 750, 746, -1000, 749, 747, 763, 9175, -1000, 485, + 7113, 121, 619, -1000, 9175, -1000, 26, 523, 7803, 9175, + -1000, -1000, 3589, 610, -113, 589, -1000, -107, -126, 5267, + 134, -1000, -1000, -1000, 2344, 160, 238, -80, -1000, -1000, + -1000, 625, -1000, 625, 625, 625, 625, -51, -51, -51, + -51, -1000, -1000, -1000, -1000, -1000, 677, 674, -1000, 625, + 625, 625, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 670, 670, + 670, 644, 644, 683, -1000, 9175, -169, 415, 2593, 811, + 2593, -1000, 65, -1000, 9175, -1000, -1000, 9175, 2593, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 224, -1000, -1000, -1000, -1000, 701, 5695, 5695, - 3323, 5695, -1000, -1000, -1000, 732, -1000, 755, 780, -1000, - 711, 709, 4993, -1000, -1000, 141, 196, -1000, -1000, 226, - -1000, -1000, -1000, -1000, 108, 595, -1000, -1000, 1790, -1000, - -1000, -1000, -1000, 264, 6143, 6143, 6143, 411, 1790, 1499, - 292, 1529, 121, 152, 152, 120, 120, 120, 120, 120, - 359, 359, -1000, -1000, -1000, 360, 360, 4993, 587, -1000, - 240, -1000, 240, -1000, -1000, 5695, -1000, 360, 474, 474, - 356, 284, 574, -1000, 107, 571, 474, 4993, 208, -1000, - 5695, 360, -1000, 474, 360, 474, 474, 514, 595, -1000, - 579, -1000, 156, 647, 624, 657, 736, -1000, -1000, -1000, - -1000, 678, -1000, 670, -1000, -1000, -1000, -1000, -1000, 68, - 67, 66, 8859, -1000, 786, 7505, 572, -1000, -1000, 586, - -113, -87, -1000, -1000, -1000, 171, -1000, 384, 584, 2093, - -1000, -1000, -1000, -1000, -1000, 608, 739, 155, 154, 375, - -1000, -1000, 719, -1000, 204, -72, -1000, -1000, 337, -34, - -34, -1000, -1000, 118, 715, 118, 118, 118, 365, 365, - -1000, -1000, -1000, -1000, 313, -1000, -1000, -1000, 305, -1000, - 655, 8859, 2585, -1000, 3323, -1000, -1000, -1000, -1000, -1000, - -1000, 1427, 253, 170, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 18, -1000, 2585, -1000, 265, - 8859, 8859, 699, 171, 171, 105, -1000, -1000, 8859, -1000, - -1000, -1000, -1000, 548, -1000, -1000, -1000, 2831, 4993, -1000, - 411, 1790, 1214, -1000, 6143, 6143, -1000, -1000, 474, 4993, - 171, -1000, -1000, -1000, 36, 319, 36, 6143, 6143, 3323, - 6143, 6143, -154, 585, 177, -1000, 5695, 334, -1000, -1000, - -1000, -1000, -1000, 653, 8859, 595, -1000, 6824, 8859, 770, - 8859, 5695, 5695, -1000, -1000, 5695, 607, -1000, 5695, -1000, - -1000, -1000, 595, 595, 595, 440, -1000, 770, 572, -1000, - -1000, -1000, -124, -121, -1000, -1000, 2339, -1000, 2339, 8859, - -1000, 373, 369, -1000, -1000, 652, 70, -1000, -1000, -1000, - 493, 118, 118, -1000, 176, -1000, -1000, -1000, 470, -1000, - 468, 578, 464, 8859, -1000, -1000, 569, -1000, 153, -1000, - -1000, 8859, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 8859, 8859, -1000, -1000, -1000, -1000, - -1000, 8859, -1000, -1000, 358, 5695, -1000, -1000, -1000, 3323, - -1000, 786, 7505, -1000, -1000, 360, -1000, 6143, 1790, 1790, - -1000, -1000, 360, 598, 598, -1000, 598, 606, -1000, 598, - -16, 598, -17, 360, 360, 1625, 1759, -1000, 1338, 1593, - 595, -151, -1000, 171, 5695, -172, 723, 529, 556, -1000, - -1000, 4760, 360, 446, 104, 440, 765, -1000, 171, 171, - 171, 8859, 171, 8859, 8859, 8859, 7281, 8859, 765, -1000, - -1000, -1000, -1000, 2093, -1000, 437, -1000, 598, -1000, -1000, - -58, 794, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -34, 352, -34, 287, -1000, 258, 2585, - 3323, 2339, -1000, 597, -1000, -1000, -1000, -1000, 738, -1000, - 171, 784, 557, -1000, 1790, -1000, -1000, 89, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6143, 6143, -1000, - 6143, 6143, 6143, 360, 350, 171, -1000, 4527, 737, -1000, - 595, -1000, -1000, 546, 8859, 8859, -1000, -1000, 420, -1000, - 418, 418, 418, 116, -1000, -1000, 115, 8859, -1000, 136, - -1000, -132, 118, -1000, 118, 412, 395, -1000, -1000, -1000, - 8859, 595, 781, 776, -1000, -1000, 1698, 1698, 1698, 1698, - 22, -1000, -1000, -1000, 555, 793, -1000, 595, -1000, 614, - 94, -1000, 8859, -1000, -1000, -1000, -1000, -1000, 115, -1000, - 362, 150, 345, -1000, 236, 727, -1000, 721, -1000, -1000, - -1000, -1000, -1000, 398, 16, -1000, 5695, 5695, -1000, -1000, - -1000, -1000, 360, 41, -163, 8859, 556, 360, 8859, -1000, - -1000, -1000, 250, -1000, -1000, -1000, 344, -1000, -1000, 602, - 394, -1000, 8859, 171, 555, -1000, 694, -158, -167, 549, - -1000, -1000, -1000, -1000, -160, -1000, 16, 706, -1000, 689, - -1000, -1000, -1000, 12, -161, 10, -165, 595, -168, 5919, - -1000, 1698, 360, -1000, -1000, + -1000, -1000, -1000, -1000, 266, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 604, -1000, -1000, 764, 5742, 5742, 3340, 5742, + -1000, -1000, -1000, 800, -1000, 821, 837, -1000, 782, 779, + 5031, -1000, -1000, 170, 197, -1000, -1000, 247, -1000, -1000, + -1000, -1000, 128, 619, -1000, -1000, 1888, -1000, -1000, -1000, + -1000, 359, 6196, 6196, 6196, 651, 1888, 1873, 304, 1579, + 141, 130, 130, 154, 154, 154, 154, 154, 429, 429, + -1000, -1000, -1000, 404, 404, 5031, 597, -1000, 261, -1000, + 261, -1000, -1000, 5742, -1000, 404, 460, 460, 379, 301, + 646, -1000, 127, 613, 460, 5031, 217, -1000, 5742, 404, + -1000, 460, 404, 460, 460, 511, 619, -1000, 561, -1000, + 184, 660, 661, 705, 673, -1000, -1000, -1000, -1000, 738, + -1000, 685, -1000, -1000, -1000, -1000, -1000, 90, 85, 77, + 9175, -1000, 847, 7803, 549, -1000, -1000, 589, -113, -69, + -1000, -1000, -1000, 195, -1000, 407, 545, 2095, -1000, -1000, + -1000, -1000, -1000, 653, 798, 182, 179, 405, -1000, -1000, + 792, -1000, 239, -88, -1000, -1000, 351, -51, -51, -1000, + -1000, 134, 786, 134, 134, 134, 394, 394, -1000, -1000, + -1000, -1000, 349, -1000, -1000, -1000, 314, -1000, 690, 9175, + 2593, -1000, 3340, -1000, -1000, -1000, -1000, -1000, -1000, 654, + 265, 150, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 25, -1000, 2593, -1000, 237, 9175, 9175, + 9175, 767, 195, 195, 115, -1000, -1000, 9175, -1000, -1000, + -1000, -1000, 595, -1000, -1000, -1000, 2842, 5031, -1000, 651, + 1888, 1792, -1000, 6196, 6196, -1000, -1000, 460, 5031, 195, + -1000, -1000, -1000, 21, 393, 21, 6196, 6196, 3340, 6196, + 6196, -162, 582, 212, -1000, 5742, 346, -1000, -1000, -1000, + -1000, -1000, 687, 9175, 619, -1000, 7113, 9175, 838, 9175, + 5742, 5742, -1000, -1000, 5742, 645, -1000, 5742, -1000, -1000, + -1000, 619, 619, 619, 431, -1000, 838, 549, -1000, -1000, + -1000, -122, -131, -1000, -1000, 2344, -1000, 2344, 9175, -1000, + 398, 382, -1000, -1000, 686, 46, -1000, -1000, -1000, 461, + 134, 134, -1000, 188, -1000, -1000, -1000, 457, -1000, 455, + 541, 453, 9175, -1000, -1000, 538, -1000, 180, -1000, -1000, + 9175, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 9175, 9175, -1000, -1000, -1000, -1000, -1000, + 9175, -1000, -1000, 381, 5742, -1000, -1000, -1000, -1000, 3340, + -1000, 847, 7803, -1000, -1000, 404, -1000, 6196, 1888, 1888, + -1000, -1000, 404, 625, 625, -1000, 625, 644, -1000, 625, + -20, 625, -21, 404, 404, 1646, 1698, -1000, 1253, 1683, + 619, -159, -1000, 195, 5742, -187, 805, 532, 530, -1000, + -1000, 4795, 404, 447, 114, 431, 829, -1000, 195, 195, + 195, 9175, 195, 9175, 9175, 9175, 7576, 9175, 829, -1000, + -1000, -1000, -1000, 2095, -1000, 421, -1000, 625, -1000, -1000, + -76, 860, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -51, 377, -51, 310, -1000, 305, 2593, + 3340, 2344, -1000, 621, -1000, -1000, -1000, -1000, 807, -1000, + 195, 839, 537, -1000, 1888, -1000, -1000, 73, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6196, 6196, -1000, + 6196, 6196, 6196, 404, 368, 195, -1000, 4559, 796, -1000, + 619, -1000, -1000, 620, 9175, 9175, -1000, -1000, 419, -1000, + 414, 414, 414, 121, -1000, -1000, 123, 9175, -1000, 148, + -1000, -142, 134, -1000, 134, 432, 422, -1000, -1000, -1000, + 9175, 619, 843, 834, -1000, -1000, 1494, 1494, 1494, 1494, + 41, -1000, -1000, -1000, 528, 856, -1000, 619, -1000, 622, + 112, -1000, 9175, -1000, -1000, -1000, -1000, -1000, 123, -1000, + 308, 178, 367, -1000, 256, 795, -1000, 789, -1000, -1000, + -1000, -1000, -1000, 411, 22, -1000, 5742, 5742, -1000, -1000, + -1000, -1000, 404, 36, -174, 9175, 530, 404, 9175, -1000, + -1000, -1000, 267, -1000, -1000, -1000, 366, -1000, -1000, 627, + 403, -1000, 9175, 195, 528, -1000, 758, -167, -179, 508, + -1000, -1000, -1000, -1000, -169, -1000, 22, 776, -1000, 756, + -1000, -1000, -1000, 19, -172, 10, -176, 619, -180, 5969, + -1000, 1494, 404, -1000, -1000, } var yyPgo = [...]int{ - 0, 1000, 18, 568, 999, 998, 992, 991, 990, 987, - 984, 983, 982, 981, 980, 978, 977, 976, 975, 974, - 973, 972, 971, 968, 126, 966, 962, 961, 61, 959, - 67, 958, 955, 28, 69, 43, 37, 539, 954, 15, - 80, 58, 953, 44, 952, 950, 75, 943, 57, 937, - 936, 1164, 934, 933, 11, 34, 932, 931, 930, 927, - 84, 612, 926, 925, 922, 921, 919, 918, 46, 3, - 8, 12, 20, 917, 108, 10, 915, 42, 914, 912, - 909, 907, 39, 906, 52, 905, 36, 45, 902, 32, - 55, 26, 21, 5, 65, 53, 901, 23, 54, 41, - 900, 899, 316, 897, 896, 895, 894, 892, 891, 162, - 369, 890, 887, 885, 884, 24, 879, 0, 652, 59, - 877, 876, 875, 848, 60, 56, 25, 874, 27, 856, - 33, 873, 872, 29, 871, 870, 869, 868, 867, 857, - 854, 110, 845, 844, 843, 93, 13, 841, 840, 48, - 17, 839, 838, 837, 40, 49, 836, 47, 835, 834, - 833, 832, 22, 16, 830, 9, 828, 7, 825, 824, - 2, 823, 14, 820, 1, 816, 6, 30, 815, 814, - 813, 812, 50, 4, 809, 806, 76, + 0, 1090, 57, 351, 1088, 1087, 1086, 1083, 1082, 1081, + 1080, 1078, 1074, 1073, 1072, 1071, 1070, 1069, 1067, 1066, + 1065, 1064, 1061, 1060, 1059, 1058, 1055, 120, 1054, 1052, + 1051, 53, 1049, 61, 1048, 1047, 27, 102, 64, 37, + 192, 1046, 15, 79, 62, 1045, 35, 1044, 1043, 65, + 1040, 48, 1039, 1038, 1146, 1036, 1033, 12, 32, 1032, + 1031, 1030, 1029, 56, 263, 1027, 1026, 1025, 1020, 1018, + 1016, 44, 3, 8, 10, 14, 1015, 734, 9, 1008, + 33, 1003, 1002, 1000, 999, 42, 994, 39, 993, 25, + 36, 992, 6, 40, 22, 21, 7, 63, 47, 991, + 19, 54, 30, 990, 987, 352, 978, 977, 976, 975, + 973, 972, 167, 337, 970, 968, 967, 955, 23, 953, + 0, 484, 49, 952, 948, 945, 943, 60, 59, 13, + 944, 43, 166, 24, 942, 941, 28, 940, 938, 937, + 932, 931, 930, 929, 319, 928, 927, 926, 71, 55, + 925, 924, 45, 17, 923, 918, 916, 29, 46, 915, + 26, 914, 913, 906, 905, 20, 16, 904, 11, 903, + 4, 902, 898, 1, 897, 18, 895, 2, 894, 5, + 31, 893, 891, 888, 886, 881, 879, 50, 100, 877, + 876, 89, } var yyR1 = [...]int{ - 0, 180, 181, 181, 1, 1, 1, 1, 1, 1, + 0, 185, 186, 186, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 6, 3, 4, 4, 5, - 5, 7, 7, 27, 27, 8, 9, 9, 9, 184, - 184, 46, 46, 90, 90, 10, 10, 10, 10, 95, - 95, 99, 99, 99, 100, 100, 100, 100, 131, 131, - 11, 11, 11, 11, 11, 11, 11, 176, 176, 175, - 174, 174, 173, 173, 172, 16, 159, 160, 160, 160, - 155, 134, 134, 134, 134, 137, 137, 135, 135, 135, - 135, 135, 135, 135, 136, 136, 136, 136, 136, 138, - 138, 138, 138, 138, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 140, - 140, 140, 140, 140, 140, 140, 140, 154, 154, 141, - 141, 149, 149, 150, 150, 150, 147, 147, 148, 148, - 151, 151, 151, 142, 142, 142, 142, 142, 142, 142, - 144, 144, 152, 152, 145, 145, 145, 146, 146, 153, - 153, 153, 153, 153, 143, 143, 156, 156, 168, 168, - 167, 167, 167, 158, 158, 164, 164, 164, 164, 164, - 157, 157, 166, 166, 165, 161, 161, 161, 162, 162, - 162, 163, 163, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 171, 169, 169, 170, 170, 13, 14, - 14, 14, 14, 14, 15, 15, 17, 18, 18, 18, + 1, 1, 1, 1, 1, 2, 2, 2, 6, 3, + 4, 4, 5, 5, 7, 7, 30, 30, 8, 9, + 9, 9, 189, 189, 49, 49, 93, 93, 10, 10, + 10, 10, 98, 98, 102, 102, 102, 103, 103, 103, + 103, 134, 134, 11, 11, 11, 11, 11, 11, 11, + 179, 179, 178, 177, 177, 176, 176, 175, 16, 162, + 163, 163, 163, 158, 137, 137, 137, 137, 140, 140, + 138, 138, 138, 138, 138, 138, 138, 139, 139, 139, + 139, 139, 141, 141, 141, 141, 141, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, + 157, 157, 144, 144, 152, 152, 153, 153, 153, 150, + 150, 151, 151, 154, 154, 154, 145, 145, 145, 145, + 145, 145, 145, 147, 147, 155, 155, 148, 148, 148, + 149, 149, 156, 156, 156, 156, 156, 146, 146, 159, + 159, 171, 171, 170, 170, 170, 161, 161, 167, 167, + 167, 167, 167, 160, 160, 169, 169, 168, 164, 164, + 164, 165, 165, 165, 166, 166, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 174, 172, 172, 173, + 173, 13, 14, 14, 14, 14, 14, 15, 15, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 107, 107, 104, 104, 105, 105, 106, 106, 106, 108, - 108, 108, 132, 132, 132, 19, 19, 21, 21, 22, - 23, 20, 20, 20, 20, 20, 185, 24, 25, 25, - 26, 26, 26, 30, 30, 30, 28, 28, 29, 29, - 35, 35, 34, 34, 36, 36, 36, 36, 120, 120, - 120, 119, 38, 38, 39, 39, 40, 40, 41, 41, - 41, 53, 53, 89, 89, 91, 91, 42, 42, 42, - 42, 43, 43, 44, 44, 45, 45, 127, 127, 126, - 126, 126, 125, 47, 47, 47, 49, 48, 48, 48, - 48, 50, 50, 52, 52, 51, 51, 54, 54, 54, - 54, 55, 55, 37, 37, 37, 37, 37, 37, 37, - 103, 103, 57, 57, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 67, 67, 67, 67, 67, 67, - 58, 58, 58, 58, 58, 58, 58, 33, 33, 68, - 68, 68, 74, 69, 69, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 65, 65, 65, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, - 64, 64, 186, 186, 66, 66, 66, 66, 31, 31, - 31, 31, 31, 130, 130, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 78, 78, - 32, 32, 76, 76, 77, 79, 79, 75, 75, 75, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 178, 62, 62, 62, 80, 80, 81, 81, 82, 82, - 83, 83, 84, 85, 85, 85, 86, 86, 86, 86, - 87, 87, 87, 59, 59, 59, 59, 59, 59, 88, - 88, 88, 88, 92, 92, 70, 70, 72, 72, 71, - 73, 179, 179, 179, 93, 93, 97, 94, 94, 98, - 98, 98, 96, 96, 96, 122, 122, 101, 101, 109, - 109, 110, 110, 102, 102, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 112, 112, 112, 113, 113, - 114, 114, 114, 121, 121, 117, 117, 117, 118, 118, - 123, 124, 124, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 182, 183, 128, 129, 129, 129, + 18, 18, 18, 110, 110, 107, 107, 108, 108, 109, + 109, 109, 111, 111, 111, 135, 135, 135, 19, 19, + 21, 21, 22, 23, 20, 20, 20, 20, 20, 24, + 25, 183, 183, 183, 26, 26, 184, 184, 190, 27, + 28, 28, 29, 29, 29, 33, 33, 33, 31, 31, + 32, 32, 38, 38, 37, 37, 39, 39, 39, 39, + 123, 123, 123, 122, 41, 41, 42, 42, 43, 43, + 44, 44, 44, 56, 56, 92, 92, 94, 94, 45, + 45, 45, 45, 46, 46, 47, 47, 48, 48, 130, + 130, 129, 129, 129, 128, 50, 50, 50, 52, 51, + 51, 51, 51, 53, 53, 55, 55, 54, 54, 57, + 57, 57, 57, 58, 58, 40, 40, 40, 40, 40, + 40, 40, 106, 106, 60, 60, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 70, 70, 70, 70, + 70, 70, 61, 61, 61, 61, 61, 61, 61, 36, + 36, 71, 71, 71, 77, 72, 72, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 68, 68, + 68, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, + 67, 67, 67, 67, 191, 191, 69, 69, 69, 69, + 34, 34, 34, 34, 34, 133, 133, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 81, 81, 35, 35, 79, 79, 80, 82, 82, 78, + 78, 78, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 181, 65, 65, 65, 83, 83, 84, 84, + 85, 85, 86, 86, 87, 88, 88, 88, 89, 89, + 89, 89, 90, 90, 90, 62, 62, 62, 62, 62, + 62, 91, 91, 91, 91, 95, 95, 73, 73, 75, + 75, 74, 76, 182, 182, 182, 96, 96, 100, 97, + 97, 101, 101, 101, 99, 99, 99, 125, 125, 104, + 104, 112, 112, 113, 113, 105, 105, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, + 116, 116, 117, 117, 117, 124, 124, 120, 120, 120, + 121, 121, 126, 127, 127, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 187, 188, 131, 132, 132, + 132, } var yyR2 = [...]int{ 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 4, 6, 7, 5, 10, 1, 3, 1, - 3, 8, 8, 1, 1, 8, 8, 7, 6, 1, - 1, 1, 3, 0, 4, 3, 4, 5, 4, 1, - 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, - 2, 8, 4, 6, 5, 5, 5, 0, 2, 1, - 0, 2, 1, 3, 3, 4, 4, 1, 3, 3, - 8, 3, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, - 2, 2, 2, 1, 4, 4, 2, 2, 3, 3, - 3, 3, 1, 1, 1, 1, 1, 6, 6, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 0, - 3, 0, 5, 0, 3, 5, 0, 1, 0, 1, - 0, 1, 2, 0, 2, 2, 2, 2, 2, 2, - 0, 3, 0, 1, 0, 3, 3, 0, 2, 0, - 2, 1, 2, 1, 0, 2, 5, 4, 1, 2, - 2, 3, 2, 0, 1, 2, 3, 3, 2, 2, - 1, 1, 1, 3, 2, 0, 1, 3, 1, 2, - 3, 1, 1, 6, 7, 7, 12, 7, 7, 7, - 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 7, 1, 3, 8, 8, 5, 4, - 6, 5, 4, 4, 3, 2, 3, 4, 4, 4, - 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, - 3, 6, 4, 2, 4, 2, 2, 2, 2, 3, - 1, 1, 0, 1, 0, 1, 0, 2, 2, 0, - 2, 2, 0, 1, 1, 2, 1, 1, 2, 1, - 1, 2, 2, 2, 2, 2, 0, 2, 0, 2, - 1, 2, 2, 0, 1, 1, 0, 1, 0, 1, - 0, 1, 1, 3, 1, 2, 3, 5, 0, 1, - 2, 1, 0, 2, 1, 3, 1, 1, 1, 3, - 3, 3, 7, 1, 3, 1, 3, 4, 4, 4, - 3, 2, 4, 0, 1, 0, 2, 0, 1, 0, - 1, 2, 1, 1, 2, 2, 1, 2, 3, 2, - 3, 2, 2, 2, 1, 1, 3, 0, 5, 5, - 5, 0, 2, 1, 3, 3, 2, 3, 1, 2, - 0, 3, 1, 1, 3, 3, 4, 4, 5, 3, - 4, 5, 6, 2, 1, 2, 1, 2, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, - 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, - 2, 3, 1, 1, 1, 1, 4, 5, 6, 4, - 4, 6, 6, 6, 6, 8, 8, 6, 8, 8, - 9, 7, 5, 4, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 2, 4, 4, 4, 4, 0, 3, - 4, 7, 3, 1, 1, 2, 3, 3, 1, 2, - 2, 1, 2, 1, 2, 2, 1, 2, 0, 1, - 0, 2, 1, 2, 4, 0, 2, 1, 3, 5, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 2, 2, 0, 3, 0, 2, 0, 3, - 1, 3, 2, 0, 1, 1, 0, 2, 4, 4, - 0, 2, 4, 2, 1, 3, 5, 4, 6, 1, - 3, 3, 5, 0, 5, 1, 3, 1, 2, 3, - 1, 0, 2, 2, 1, 3, 3, 1, 3, 3, - 3, 3, 1, 2, 1, 1, 1, 1, 1, 0, - 2, 0, 3, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, - 0, 1, 1, 0, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 4, 6, 7, 5, 10, + 1, 3, 1, 3, 8, 8, 1, 1, 8, 8, + 7, 6, 1, 1, 1, 3, 0, 4, 3, 4, + 5, 4, 1, 3, 3, 2, 2, 2, 2, 2, + 1, 1, 1, 2, 8, 4, 6, 5, 5, 5, + 0, 2, 1, 0, 2, 1, 3, 3, 4, 4, + 1, 3, 3, 8, 3, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 1, 2, 2, 2, 1, 4, 4, 2, + 2, 3, 3, 3, 3, 1, 1, 1, 1, 1, + 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 0, 3, 0, 5, 0, 3, 5, 0, + 1, 0, 1, 0, 1, 2, 0, 2, 2, 2, + 2, 2, 2, 0, 3, 0, 1, 0, 3, 3, + 0, 2, 0, 2, 1, 2, 1, 0, 2, 5, + 4, 1, 2, 2, 3, 2, 0, 1, 2, 3, + 3, 2, 2, 1, 1, 1, 3, 2, 0, 1, + 3, 1, 2, 3, 1, 1, 6, 7, 7, 12, + 7, 7, 7, 4, 5, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 7, 1, 3, 8, + 8, 5, 4, 6, 5, 4, 4, 3, 2, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, + 3, 3, 4, 3, 6, 4, 2, 4, 2, 2, + 2, 2, 3, 1, 1, 0, 1, 0, 1, 0, + 2, 2, 0, 2, 2, 0, 1, 1, 2, 1, + 1, 2, 1, 1, 2, 2, 2, 2, 2, 3, + 4, 1, 1, 1, 2, 4, 1, 3, 0, 2, + 0, 2, 1, 2, 2, 0, 1, 1, 0, 1, + 0, 1, 0, 1, 1, 3, 1, 2, 3, 5, + 0, 1, 2, 1, 0, 2, 1, 3, 1, 1, + 1, 3, 3, 3, 7, 1, 3, 1, 3, 4, + 4, 4, 3, 2, 4, 0, 1, 0, 2, 0, + 1, 0, 1, 2, 1, 1, 2, 2, 1, 2, + 3, 2, 3, 2, 2, 2, 1, 1, 3, 0, + 5, 5, 5, 0, 2, 1, 3, 3, 2, 3, + 1, 2, 0, 3, 1, 1, 3, 3, 4, 4, + 5, 3, 4, 5, 6, 2, 1, 2, 1, 2, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, + 2, 1, 1, 1, 3, 1, 3, 1, 1, 1, + 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, + 2, 2, 2, 3, 1, 1, 1, 1, 4, 5, + 6, 4, 4, 6, 6, 6, 6, 8, 8, 6, + 8, 8, 9, 7, 5, 4, 2, 2, 2, 2, + 2, 2, 2, 2, 0, 2, 4, 4, 4, 4, + 0, 3, 4, 7, 3, 1, 1, 2, 3, 3, + 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, + 0, 1, 0, 2, 1, 2, 4, 0, 2, 1, + 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 2, 2, 0, 3, 0, 2, + 0, 3, 1, 3, 2, 0, 1, 1, 0, 2, + 4, 4, 0, 2, 4, 2, 1, 3, 5, 4, + 6, 1, 3, 3, 5, 0, 5, 1, 3, 1, + 2, 3, 1, 0, 2, 2, 1, 3, 3, 1, + 3, 3, 3, 3, 1, 2, 1, 1, 1, 1, + 1, 0, 2, 0, 3, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 1, 1, 0, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1893,273 +1939,278 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, + 1, } var yyChk = [...]int{ - -1000, -180, -1, -2, -6, -7, -8, -9, -10, -11, + -1000, -185, -1, -2, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -17, -18, -19, -21, -22, -23, - -20, -3, -4, 6, 7, -27, 9, 10, 30, -16, - 113, 114, 116, 115, 141, 117, 134, 49, 153, 154, - 156, 157, 25, 135, 136, 139, 140, -182, 8, 236, - 53, -181, 252, -82, 15, -26, 5, -24, -185, -24, - -24, -24, -24, -24, -159, 53, -114, 122, 71, 149, - 228, 119, 120, 126, -117, 56, -116, 59, 244, 153, - 164, 158, 185, 177, 175, 178, 215, 66, 156, 224, - 137, 173, 169, 167, 27, 190, 249, 168, 132, 131, - 191, 195, 216, 162, 163, 218, 189, 133, 32, 246, - 34, 145, 219, 193, 188, 184, 187, 161, 183, 38, - 197, 196, 198, 214, 180, 170, 18, 222, 140, 143, - 192, 194, 127, 147, 248, 220, 166, 144, 139, 223, - 157, 217, 226, 37, 202, 160, 130, 154, 151, 181, - 146, 171, 172, 186, 159, 182, 155, 148, 141, 225, - 203, 250, 179, 176, 152, 150, 207, 208, 209, 210, - 247, 221, 174, 204, -102, 122, 124, 120, 120, 121, - 122, 228, 119, 120, -51, -123, -117, 122, 149, 120, - 107, 178, 113, 205, 121, 32, 147, -132, 120, -104, - 150, 207, 208, 209, 210, 56, 217, 216, 211, -123, - 155, -128, -128, -128, -128, -128, -2, -86, 17, 16, - -5, -3, -182, 6, 20, 21, -30, 39, 40, -25, - -36, 98, -37, -123, -56, 73, -61, 29, -117, 23, - -60, -75, -57, -73, -74, 107, 108, 96, 97, 104, - 74, 109, -65, -63, -64, -66, 59, 58, 67, 60, - 61, 62, 63, 68, 57, 69, 70, -71, -182, 43, - 44, 237, 238, 239, 240, 243, 241, 76, 33, 227, - 235, 234, 233, 231, 232, 229, 230, 125, 228, 102, - 236, -102, -39, -40, -41, -42, -53, -74, -182, -51, - 11, -46, -51, -94, -131, 155, -98, 217, 216, -118, - -96, -117, -115, 215, 178, 214, 118, 72, 22, 24, - 200, 75, 107, 16, 76, 106, 237, 113, 47, 229, - 230, 227, 239, 240, 228, 205, 29, 10, 25, 135, - 21, 100, 115, 79, 80, 138, 23, 136, 70, 19, - 50, 11, 13, 14, 125, 124, 91, 121, 45, 8, - 109, 26, 88, 41, 28, 43, 89, 17, 231, 232, - 31, 243, 142, 102, 48, 35, 73, 68, 51, 71, - 15, 46, 90, 116, 236, 44, 119, 6, 242, 30, - 134, 42, 120, 206, 78, 123, 69, 5, 126, 9, - 49, 52, 233, 234, 235, 33, 77, 12, -160, -155, - 56, 121, -51, 236, -117, -110, 125, -110, -110, 120, - -51, -51, -109, 125, 56, -109, -109, -109, -51, 110, - -51, 56, 30, 228, 56, 147, 120, 148, 122, -129, - -182, -118, -129, -129, -129, 151, 152, -129, -105, 212, - 51, -129, -183, 55, -87, 19, 31, -37, -123, -83, - -84, -37, -82, -2, -24, 35, -28, 21, 65, 11, - -120, 72, 71, 88, -119, 22, -117, 110, -37, -58, - 91, 73, 89, 90, 75, 93, 92, 103, 96, 97, - 98, 99, 100, 101, 102, 94, 95, 106, 81, 82, - 83, 84, 85, 86, 87, -103, -182, -182, -74, -182, - -178, 64, 111, 112, -61, -61, -61, -61, -61, -61, - -61, -2, -69, -37, -182, -182, -182, -182, -182, -182, - -182, -182, -182, -78, -37, -182, -186, -182, -186, -186, - -186, -186, -186, -186, -186, -182, -182, -182, -182, -52, - 26, -51, 30, 54, -47, -49, -48, -50, 41, 45, - 47, 42, 43, 44, 48, -127, 22, -39, -182, -126, - 143, -125, 22, -123, -51, -46, -184, 54, 11, 52, - 54, -94, 155, -95, -99, 218, 220, 81, -122, -117, - 29, 30, 55, 54, -134, -137, -139, -138, -140, -135, - -136, 175, 176, 107, 179, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 30, 137, 171, 172, 173, - 174, 191, 192, 193, 194, 195, 196, 197, 198, 158, - 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, - 170, 56, -129, 122, -176, 52, 56, 73, 56, -51, - -51, -129, 123, -51, 23, 51, -51, 56, 56, -124, - -123, -115, -129, -129, -129, -129, -129, -129, -129, -129, - -129, -129, -107, 206, 213, -51, 9, 91, 54, 18, - 110, 54, -85, 24, 25, -86, -183, -30, -62, -117, - 60, 63, -29, 42, -51, -37, -37, -67, 68, 73, - 69, 70, -119, 98, -124, -118, -115, -117, -61, -68, - -71, -74, 64, 91, 89, 90, 75, -61, -61, -61, - -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, - -61, -61, -130, 56, 59, 56, -35, 21, -34, -36, - -60, 59, -60, -117, -183, 54, -183, -2, -34, -34, - -37, -37, -75, -117, -123, -75, -34, -28, -76, -77, - 77, -75, -183, -34, -35, -34, -34, -90, 143, -51, - -93, -97, -75, -40, -41, -41, -40, -41, 41, 41, - 41, 46, 41, 46, 41, -48, -123, -183, -54, 49, - 124, 50, -182, -125, -90, 52, -39, -51, -98, -95, - 54, 219, 221, 222, 51, -37, -146, 106, -161, -162, - -163, -118, 60, -155, -156, -164, 127, 130, 126, -157, - 121, 28, -151, 68, 73, -147, 203, -141, 53, -141, - -141, -141, -141, -145, 178, -145, -145, -145, 53, 53, - -141, -141, -141, -149, 53, -149, -149, -150, 53, -150, - -121, 52, -51, -174, 247, -175, 56, -129, 23, -129, - -111, 118, 115, 116, -171, 114, 200, 178, 66, 29, - 15, 237, 143, 250, 56, 144, -51, -51, -129, -106, - 11, 91, 37, -37, -37, -124, -84, -87, -101, 19, - 11, 33, 33, -34, 68, 69, 70, 110, -182, -68, - -61, -61, -61, -33, 138, 72, -183, -183, -34, 54, - -37, -183, -183, -183, 54, 52, 22, 54, 11, 110, - 54, 11, -183, -34, -79, -77, 79, -37, -183, -183, - -183, -183, -183, -59, 30, 33, -2, -182, -182, -55, - 54, 12, 81, -44, -43, 51, 52, -45, 51, -43, - 41, 41, 121, 121, 121, -91, -117, -55, -39, -55, - -99, -100, 223, 220, 226, 56, 54, -163, 81, 53, - 28, -157, -157, 56, 56, -142, 29, 68, -148, 204, - 60, -145, -145, -146, 30, -146, -146, -146, -154, 59, - -154, 60, 60, 51, -117, -129, -173, -172, -118, -128, - -177, 149, 128, 129, 132, 131, 56, 121, 28, 127, - 130, 143, 126, -177, 149, -112, -113, 123, 22, 121, - 28, 143, -129, -108, 89, 12, -123, -123, 38, 110, - -51, -38, 11, 98, -118, -35, -33, 72, -61, -61, - -183, -36, -133, 107, 175, 137, 173, 169, 189, 180, - 202, 171, 203, -130, -133, -61, -61, -118, -61, -61, - 244, -82, 80, -37, 78, -92, 51, -93, -70, -72, - -71, -182, -2, -88, -117, -91, -82, -97, -37, -37, - -37, 53, -37, -182, -182, -182, -183, 54, -82, -55, - 220, 224, 225, -162, -163, -166, -165, -117, 56, 56, - -144, 51, 59, 60, 61, 68, 227, 67, 55, -146, - -146, 56, 107, 55, 54, 55, 54, 55, 54, -51, - 54, 81, -128, -117, -128, -117, -51, -128, -117, 59, - -37, -55, -39, -183, -61, -183, -141, -141, -141, -150, - -141, 163, -141, 163, -183, -183, -183, 54, 19, -183, - 54, 19, -182, -32, 242, -37, -179, 251, 27, -92, - 54, -183, -183, -183, 54, 110, -183, -86, -89, -117, - -89, -89, -89, -126, -117, -86, 55, 54, -141, -152, - 200, 9, -145, 59, -145, 60, 60, -129, -172, -163, - 53, 26, -80, 13, -145, 56, -61, -61, -61, -61, - -61, -183, 59, 98, -69, 28, -72, 33, -2, -182, - -117, -117, 54, 55, -183, -183, -183, -54, -168, -167, - 52, 133, 66, -165, -153, 127, 28, 126, 227, -146, - -146, 55, 55, -89, -182, -81, 14, 16, -183, -183, - -183, -183, -31, 91, 247, 9, -70, -2, 110, -117, - -167, 56, -158, 81, 59, -143, 66, 28, 28, 55, - -169, -170, 143, -37, -69, -183, 245, 48, 248, -93, - -183, -117, 60, 59, -176, -183, 54, -117, 38, 246, - 249, -174, -170, 33, 38, 145, 247, 146, 248, -182, - 249, -61, 142, -183, -183, + -20, -24, -25, -26, -3, -4, 6, 7, -30, 9, + 10, 30, -16, 113, 114, 116, 115, 141, 117, 134, + 49, 153, 154, 156, 157, 25, 135, 136, 139, 140, + 158, 159, 160, -187, 8, 239, 53, -186, 255, -85, + 15, -29, 5, -27, -190, -27, -27, -27, -27, -27, + -162, 53, -117, 122, 71, 149, 231, 119, 120, 126, + -120, 56, -119, 59, 247, 153, 167, 161, 188, 180, + 178, 181, 218, 66, 156, 227, 137, 176, 172, 170, + 27, 193, 252, 171, 132, 131, 194, 198, 219, 165, + 166, 221, 192, 133, 32, 249, 34, 145, 222, 196, + 191, 187, 190, 164, 186, 38, 200, 199, 201, 217, + 183, 173, 18, 225, 140, 143, 195, 197, 127, 147, + 251, 223, 169, 144, 139, 226, 157, 220, 229, 37, + 205, 163, 130, 154, 151, 184, 146, 174, 175, 189, + 162, 185, 155, 148, 141, 228, 206, 253, 182, 179, + 152, 150, 210, 211, 212, 213, 250, 224, 177, 207, + -105, 122, 124, 120, 120, 121, 122, 231, 119, 120, + -54, -126, -120, 122, 149, 120, 107, 181, 113, 208, + 121, 32, 147, -135, 120, -107, 150, 210, 211, 212, + 213, 56, 220, 219, 214, -126, 155, -131, -131, -131, + -131, -131, 159, -126, 56, -2, -89, 17, 16, -5, + -3, -187, 6, 20, 21, -33, 39, 40, -28, -39, + 98, -40, -126, -59, 73, -64, 29, -120, 23, -78, + -63, -60, -76, -77, 107, 108, 96, 97, 104, 74, + 109, -68, -66, -67, -69, 59, 58, 67, 60, 61, + 62, 63, 68, 57, 69, 70, -74, -187, 43, 44, + 240, 241, 242, 243, 246, 244, 76, 33, 230, 238, + 237, 236, 234, 235, 232, 233, 125, 231, 102, 239, + -105, -42, -43, -44, -45, -56, -77, -187, -54, 11, + -49, -54, -97, -134, 155, -101, 220, 219, -121, -99, + -120, -118, 218, 181, 217, 118, 72, 22, 24, 203, + 75, 107, 16, 76, 106, 240, 113, 47, 232, 233, + 230, 242, 243, 231, 208, 29, 10, 25, 135, 21, + 100, 115, 79, 80, 138, 23, 136, 70, 19, 50, + 11, 13, 14, 125, 124, 91, 121, 45, 8, 109, + 26, 88, 41, 28, 43, 89, 17, 234, 235, 31, + 246, 142, 102, 48, 35, 73, 68, 51, 71, 15, + 46, 90, 116, 239, 44, 119, 6, 245, 30, 134, + 42, 120, 209, 78, 123, 69, 5, 126, 9, 49, + 52, 236, 237, 238, 33, 77, 12, -163, -158, 56, + 121, -54, 239, -120, -113, 125, -113, -113, 120, -54, + -54, -112, 125, 56, -112, -112, -112, -54, 110, -54, + 56, 30, 231, 56, 147, 120, 148, 122, -132, -187, + -121, -132, -132, -132, 151, 152, -132, -108, 215, 51, + -132, -126, 11, 52, -188, 55, -90, 19, 31, -40, + -126, -86, -87, -40, -85, -2, -27, 35, -31, 21, + 65, 11, -123, 72, 71, 88, -122, 22, -120, 110, + -40, -61, 91, 73, 89, 90, 75, 93, 92, 103, + 96, 97, 98, 99, 100, 101, 102, 94, 95, 106, + 81, 82, 83, 84, 85, 86, 87, -106, -187, -187, + -77, -187, 111, 112, -181, 64, -64, -64, -64, -64, + -64, -64, -64, -2, -72, -40, -187, -187, -187, -187, + -187, -187, -187, -187, -187, -81, -40, -187, -191, -187, + -191, -191, -191, -191, -191, -191, -191, -187, -187, -187, + -187, -55, 26, -54, 30, 54, -50, -52, -51, -53, + 41, 45, 47, 42, 43, 44, 48, -130, 22, -42, + -187, -129, 143, -128, 22, -126, -54, -49, -189, 54, + 11, 52, 54, -97, 155, -98, -102, 221, 223, 81, + -125, -120, 29, 30, 55, 54, -137, -140, -142, -141, + -143, -138, -139, 178, 179, 107, 182, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 30, 137, 174, + 175, 176, 177, 194, 195, 196, 197, 198, 199, 200, + 201, 161, 162, 163, 164, 165, 166, 167, 169, 170, + 171, 172, 173, 56, -132, 122, -179, 52, 56, 73, + 56, -54, -54, -132, 123, -54, 23, 51, -54, 56, + 56, -127, -126, -118, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -110, 209, 216, -54, -183, 56, + 57, 59, -184, -126, 9, 91, 54, 18, 110, 54, + -88, 24, 25, -89, -188, -33, -65, -120, 60, 63, + -32, 42, -54, -40, -40, -70, 68, 73, 69, 70, + -122, 98, -127, -121, -118, -120, -64, -71, -74, -77, + 64, 91, 89, 90, 75, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -133, 56, 59, 56, -38, 21, -37, -39, -63, 59, + -63, -120, -188, 54, -188, -2, -37, -37, -40, -40, + -78, -120, -126, -78, -37, -31, -79, -80, 77, -78, + -188, -37, -38, -37, -37, -93, 143, -54, -96, -100, + -78, -43, -44, -44, -43, -44, 41, 41, 41, 46, + 41, 46, 41, -51, -126, -188, -57, 49, 124, 50, + -187, -128, -93, 52, -42, -54, -101, -98, 54, 222, + 224, 225, 51, -40, -149, 106, -164, -165, -166, -121, + 60, -158, -159, -167, 127, 130, 126, -160, 121, 28, + -154, 68, 73, -150, 206, -144, 53, -144, -144, -144, + -144, -148, 181, -148, -148, -148, 53, 53, -144, -144, + -144, -152, 53, -152, -152, -153, 53, -153, -124, 52, + -54, -177, 250, -178, 56, -132, 23, -132, -114, 118, + 115, 116, -174, 114, 203, 181, 66, 29, 15, 240, + 143, 253, 56, 144, -54, -54, -132, -109, 11, 91, + 54, 37, -40, -40, -127, -87, -90, -104, 19, 11, + 33, 33, -37, 68, 69, 70, 110, -187, -71, -64, + -64, -64, -36, 138, 72, -188, -188, -37, 54, -40, + -188, -188, -188, 54, 52, 22, 54, 11, 110, 54, + 11, -188, -37, -82, -80, 79, -40, -188, -188, -188, + -188, -188, -62, 30, 33, -2, -187, -187, -58, 54, + 12, 81, -47, -46, 51, 52, -48, 51, -46, 41, + 41, 121, 121, 121, -94, -120, -58, -42, -58, -102, + -103, 226, 223, 229, 56, 54, -166, 81, 53, 28, + -160, -160, 56, 56, -145, 29, 68, -151, 207, 60, + -148, -148, -149, 30, -149, -149, -149, -157, 59, -157, + 60, 60, 51, -120, -132, -176, -175, -121, -131, -180, + 149, 128, 129, 132, 131, 56, 121, 28, 127, 130, + 143, 126, -180, 149, -115, -116, 123, 22, 121, 28, + 143, -132, -111, 89, 12, -126, -126, -126, 38, 110, + -54, -41, 11, 98, -121, -38, -36, 72, -64, -64, + -188, -39, -136, 107, 178, 137, 176, 172, 192, 183, + 205, 174, 206, -133, -136, -64, -64, -121, -64, -64, + 247, -85, 80, -40, 78, -95, 51, -96, -73, -75, + -74, -187, -2, -91, -120, -94, -85, -100, -40, -40, + -40, 53, -40, -187, -187, -187, -188, 54, -85, -58, + 223, 227, 228, -165, -166, -169, -168, -120, 56, 56, + -147, 51, 59, 60, 61, 68, 230, 67, 55, -149, + -149, 56, 107, 55, 54, 55, 54, 55, 54, -54, + 54, 81, -131, -120, -131, -120, -54, -131, -120, 59, + -40, -58, -42, -188, -64, -188, -144, -144, -144, -153, + -144, 166, -144, 166, -188, -188, -188, 54, 19, -188, + 54, 19, -187, -35, 245, -40, -182, 254, 27, -95, + 54, -188, -188, -188, 54, 110, -188, -89, -92, -120, + -92, -92, -92, -129, -120, -89, 55, 54, -144, -155, + 203, 9, -148, 59, -148, 60, 60, -132, -175, -166, + 53, 26, -83, 13, -148, 56, -64, -64, -64, -64, + -64, -188, 59, 98, -72, 28, -75, 33, -2, -187, + -120, -120, 54, 55, -188, -188, -188, -57, -171, -170, + 52, 133, 66, -168, -156, 127, 28, 126, 230, -149, + -149, 55, 55, -92, -187, -84, 14, 16, -188, -188, + -188, -188, -34, 91, 250, 9, -73, -2, 110, -120, + -170, 56, -161, 81, 59, -146, 66, 28, 28, 55, + -172, -173, 143, -40, -72, -188, 248, 48, 251, -96, + -188, -120, 60, 59, -179, -188, 54, -120, 38, 249, + 252, -177, -173, 33, 38, 145, 250, 146, 251, -187, + 252, -64, 142, -188, -188, } var yyDef = [...]int{ 0, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 508, 0, 276, 276, 276, 276, 276, 276, 0, - 580, 563, 0, 0, 0, 0, -2, 266, 267, 0, - 269, 270, 785, 785, 785, 785, 785, 0, 33, 34, - 783, 1, 3, 516, 0, 0, 280, 283, 278, 0, - 563, 0, 0, 0, 60, 0, 0, 772, 0, 773, - 561, 561, 561, 581, 582, 585, 586, 587, 685, 686, - 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, - 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, - 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, - 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, - 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, - 767, 768, 769, 770, 771, 774, 775, 776, 777, 778, - 779, 780, 781, 782, 0, 0, 564, 0, 559, 0, - 559, 559, 559, 0, 225, 345, 590, 772, 773, 0, - 0, 0, 0, 786, 786, 786, 786, 0, 786, 254, - 243, 245, 246, 247, 248, 786, 263, 264, 253, 265, - 268, 271, 272, 273, 274, 275, 27, 520, 0, 0, - 508, 29, 0, 276, 281, 282, 286, 284, 285, 277, - 0, 294, 298, 0, 353, 0, 358, 360, -2, 0, - 395, 396, 397, 398, 399, 0, 0, 0, 0, 0, - 0, 0, 422, 423, 424, 425, -2, 491, 492, 493, - 494, 495, 496, 497, 498, 362, 363, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 478, 0, 452, - 452, 452, 452, 452, 452, 452, 452, 0, 0, 0, - 0, 0, 0, 304, 306, 307, 308, 327, 0, 329, - 0, 0, 41, 45, 0, 763, 547, -2, -2, 0, - 0, 588, 589, -2, 692, -2, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, - 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, - 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, - 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 679, 680, 681, 682, 683, 684, 0, 77, - 0, 0, 786, 0, 67, 0, 0, 0, 0, 0, - 786, 0, 0, 0, 0, 0, 0, 0, 224, 0, - 226, 786, 786, 786, 786, 786, 786, 786, 786, 235, - 787, 788, 236, 237, 238, 786, 786, 240, 0, 255, - 0, 249, 28, 784, 22, 0, 0, 517, 0, 509, - 510, 513, 516, 27, 283, 0, 288, 287, 279, 0, - 295, 0, 0, 0, 299, 0, 301, 0, 356, 0, + 21, 22, 23, 24, 520, 0, 288, 288, 288, 288, + 288, 288, 0, 592, 575, 0, 0, 0, 0, -2, + 269, 270, 0, 272, 273, 797, 797, 797, 797, 797, + 0, 0, 0, 0, 36, 37, 795, 1, 3, 528, + 0, 0, 292, 295, 290, 0, 575, 0, 0, 0, + 63, 0, 0, 784, 0, 785, 573, 573, 573, 593, + 594, 597, 598, 599, 697, 698, 699, 700, 701, 702, + 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, + 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, + 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, + 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, + 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, + 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, + 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, + 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, + 783, 786, 787, 788, 789, 790, 791, 792, 793, 794, + 0, 0, 576, 0, 571, 0, 571, 571, 571, 0, + 228, 357, 602, 784, 785, 0, 0, 0, 0, 798, + 798, 798, 798, 0, 798, 257, 246, 248, 249, 250, + 251, 798, 266, 267, 256, 268, 271, 274, 275, 276, + 277, 278, 0, 0, 284, 30, 532, 0, 0, 520, + 32, 0, 288, 293, 294, 298, 296, 297, 289, 0, + 306, 310, 0, 365, 0, 370, 372, -2, 0, 407, + 408, 409, 410, 411, 0, 0, 0, 0, 0, 0, + 0, 434, 435, 436, 437, -2, 503, 504, 505, 506, + 507, 508, 509, 510, 374, 375, 552, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 490, 0, 464, 464, + 464, 464, 464, 464, 464, 464, 0, 0, 0, 0, + 0, 0, 316, 318, 319, 320, 339, 0, 341, 0, + 0, 44, 48, 0, 775, 559, -2, -2, 0, 0, + 600, 601, -2, 704, -2, 605, 606, 607, 608, 609, + 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, + 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, + 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, + 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, + 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, + 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, + 690, 691, 692, 693, 694, 695, 696, 0, 80, 0, + 0, 798, 0, 70, 0, 0, 0, 0, 0, 798, + 0, 0, 0, 0, 0, 0, 0, 227, 0, 229, + 798, 798, 798, 798, 798, 798, 798, 798, 238, 799, + 800, 239, 240, 241, 798, 798, 243, 0, 258, 0, + 252, 279, 0, 0, 31, 796, 25, 0, 0, 529, + 0, 521, 522, 525, 528, 30, 295, 0, 300, 299, + 291, 0, 307, 0, 0, 0, 311, 0, 313, 0, + 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 380, 381, - 382, 383, 384, 385, 386, 359, 0, 290, 373, 0, - 499, 500, 0, 0, 415, 416, 417, 418, 419, 420, - 0, 27, 0, 393, 0, 0, 0, 0, 0, 0, - 0, 0, 286, 0, 479, 0, 444, 0, 445, 446, - 447, 448, 449, 450, 451, 0, 290, 0, 0, 43, - 0, 344, 0, 0, 0, 0, 0, 0, 333, 0, - 0, 336, 0, 0, 0, 0, 328, 0, 0, 347, - 736, 330, 0, 332, -2, 0, 0, 0, 39, 40, - 0, 46, 763, 48, 49, 0, 0, 0, 157, 555, - 556, 553, 185, 0, 140, 136, 82, 83, 84, 129, - 86, 129, 129, 129, 129, 154, 154, 154, 154, 112, - 113, 114, 115, 116, 0, 0, 99, 129, 129, 129, - 103, 119, 120, 121, 122, 123, 124, 125, 126, 87, - 88, 89, 90, 91, 92, 93, 131, 131, 131, 133, - 133, 583, 62, 0, 70, 0, 786, 0, 786, 75, - 0, 200, 0, 219, 560, 0, 786, 222, 223, 346, - 591, 592, 227, 228, 229, 230, 231, 232, 233, 234, - 239, 242, 256, 250, 251, 244, 521, 0, 0, 0, - 0, 0, 512, 514, 515, 520, 30, 286, 0, 501, - 0, 0, 0, 289, 25, 354, 355, 357, 374, 0, - 376, 378, 300, 296, 0, 488, -2, -2, 364, 365, - 389, 390, 391, 0, 0, 0, 0, 387, 369, 0, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 414, 463, 464, 0, 0, 0, 291, 292, - 412, 490, 413, 421, 392, 0, 539, 27, 0, 0, - 0, 0, 0, -2, 0, 0, 0, 0, 485, 482, - 0, 0, 453, 0, 0, 0, 0, 0, 0, 343, - 351, 544, 0, 305, 323, 325, 0, 320, 334, 335, - 337, 0, 339, 0, 341, 342, 309, 310, 311, 0, - 0, 0, 0, 331, 351, 0, 351, 42, 548, 47, - 0, 0, 52, 53, 549, 550, 551, 0, 76, 186, - 188, 191, 192, 78, 79, 0, 0, 0, 0, 0, - 180, 181, 143, 141, 0, 138, 137, 85, 0, 154, - 154, 106, 107, 157, 0, 157, 157, 157, 0, 0, - 100, 101, 102, 94, 0, 95, 96, 97, 0, 98, - 0, 0, 786, 64, 0, 68, 69, 65, 562, 66, - 785, 0, 0, 575, 201, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 0, 218, 786, 221, 259, - 0, 0, 0, 518, 519, 0, 511, 23, 0, 557, - 558, 502, 503, 302, 375, 377, 379, 0, 290, 366, - 387, 370, 0, 367, 0, 0, 361, 426, 0, 0, - 394, -2, 429, 430, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 508, 0, 483, 0, 0, 443, 454, - 455, 456, 457, 533, 0, 0, -2, 0, 0, 508, - 0, 0, 0, 317, 324, 0, 0, 318, 0, 319, - 338, 340, 0, 0, 0, 0, 315, 508, 351, 38, - 50, 51, 0, 0, 57, 158, 0, 189, 0, 0, - 175, 0, 0, 178, 179, 150, 0, 142, 81, 139, - 0, 157, 157, 108, 0, 109, 110, 111, 0, 127, - 0, 0, 0, 0, 584, 63, 71, 72, 0, 193, - 785, 0, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 785, 0, 0, 785, 576, 577, 578, - 579, 0, 220, 241, 0, 0, 257, 258, 522, 0, - 24, 351, 0, 297, 489, 0, 368, 0, 388, 371, - 427, 293, 0, 129, 129, 468, 129, 133, 471, 129, - 473, 129, 476, 0, 0, 0, 0, 488, 0, 0, - 0, 480, 442, 486, 0, 541, 0, 533, 523, 535, - 537, 0, 27, 0, 529, 0, 516, 545, 352, 546, - 321, 0, 326, 0, 0, 0, 329, 0, 516, 37, - 54, 55, 56, 187, 190, 0, 182, 129, 176, 177, - 152, 0, 144, 145, 146, 147, 148, 149, 130, 104, - 105, 155, 156, 154, 0, 154, 0, 134, 0, 786, - 0, 0, 194, 0, 195, 197, 198, 199, 0, 260, - 261, 504, 303, 428, 372, 431, 465, 154, 469, 470, - 472, 474, 475, 477, 433, 432, 434, 0, 0, 437, - 0, 0, 0, 0, 0, 484, 31, 0, 0, 32, - 0, 538, -2, 0, 0, 0, 44, 35, 0, 313, - 0, 0, 0, 347, 316, 36, 167, 0, 184, 159, - 153, 0, 157, 128, 157, 0, 0, 61, 73, 74, - 0, 0, 506, 0, 466, 467, 0, 0, 0, 0, - 458, 441, 481, 542, 543, 0, 536, 0, -2, 0, - 531, 530, 0, 322, 348, 349, 350, 312, 166, 168, - 0, 173, 0, 183, 164, 0, 161, 163, 151, 117, - 118, 132, 135, 0, 0, 26, 0, 0, 435, 436, - 438, 439, 0, 0, 0, 0, 526, 27, 0, 314, - 169, 170, 0, 174, 172, 80, 0, 160, 162, 67, - 0, 214, 0, 507, 505, 440, 0, 0, 0, 534, - -2, 532, 171, 165, 70, 213, 0, 0, 459, 0, - 462, 196, 215, 0, 460, 0, 0, 0, 0, 0, - 461, 0, 0, 216, 217, + 392, 393, 394, 395, 396, 397, 398, 371, 0, 302, + 385, 0, 0, 0, 511, 512, 427, 428, 429, 430, + 431, 432, 0, 30, 0, 405, 0, 0, 0, 0, + 0, 0, 0, 0, 298, 0, 491, 0, 456, 0, + 457, 458, 459, 460, 461, 462, 463, 0, 302, 0, + 0, 46, 0, 356, 0, 0, 0, 0, 0, 0, + 345, 0, 0, 348, 0, 0, 0, 0, 340, 0, + 0, 359, 748, 342, 0, 344, -2, 0, 0, 0, + 42, 43, 0, 49, 775, 51, 52, 0, 0, 0, + 160, 567, 568, 565, 188, 0, 143, 139, 85, 86, + 87, 132, 89, 132, 132, 132, 132, 157, 157, 157, + 157, 115, 116, 117, 118, 119, 0, 0, 102, 132, + 132, 132, 106, 122, 123, 124, 125, 126, 127, 128, + 129, 90, 91, 92, 93, 94, 95, 96, 134, 134, + 134, 136, 136, 595, 65, 0, 73, 0, 798, 0, + 798, 78, 0, 203, 0, 222, 572, 0, 798, 225, + 226, 358, 603, 604, 230, 231, 232, 233, 234, 235, + 236, 237, 242, 245, 259, 253, 254, 247, 280, 281, + 282, 283, 285, 286, 533, 0, 0, 0, 0, 0, + 524, 526, 527, 532, 33, 298, 0, 513, 0, 0, + 0, 301, 28, 366, 367, 369, 386, 0, 388, 390, + 312, 308, 0, 500, -2, -2, 376, 377, 401, 402, + 403, 0, 0, 0, 0, 399, 381, 0, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 426, 475, 476, 0, 0, 0, 303, 304, 424, 502, + 425, 433, 404, 0, 551, 30, 0, 0, 0, 0, + 0, -2, 0, 0, 0, 0, 497, 494, 0, 0, + 465, 0, 0, 0, 0, 0, 0, 355, 363, 556, + 0, 317, 335, 337, 0, 332, 346, 347, 349, 0, + 351, 0, 353, 354, 321, 322, 323, 0, 0, 0, + 0, 343, 363, 0, 363, 45, 560, 50, 0, 0, + 55, 56, 561, 562, 563, 0, 79, 189, 191, 194, + 195, 81, 82, 0, 0, 0, 0, 0, 183, 184, + 146, 144, 0, 141, 140, 88, 0, 157, 157, 109, + 110, 160, 0, 160, 160, 160, 0, 0, 103, 104, + 105, 97, 0, 98, 99, 100, 0, 101, 0, 0, + 798, 67, 0, 71, 72, 68, 574, 69, 797, 0, + 0, 587, 204, 577, 578, 579, 580, 581, 582, 583, + 584, 585, 586, 0, 221, 798, 224, 262, 0, 0, + 0, 0, 530, 531, 0, 523, 26, 0, 569, 570, + 514, 515, 314, 387, 389, 391, 0, 302, 378, 399, + 382, 0, 379, 0, 0, 373, 438, 0, 0, 406, + -2, 441, 442, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 520, 0, 495, 0, 0, 455, 466, 467, + 468, 469, 545, 0, 0, -2, 0, 0, 520, 0, + 0, 0, 329, 336, 0, 0, 330, 0, 331, 350, + 352, 0, 0, 0, 0, 327, 520, 363, 41, 53, + 54, 0, 0, 60, 161, 0, 192, 0, 0, 178, + 0, 0, 181, 182, 153, 0, 145, 84, 142, 0, + 160, 160, 111, 0, 112, 113, 114, 0, 130, 0, + 0, 0, 0, 596, 66, 74, 75, 0, 196, 797, + 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 797, 0, 0, 797, 588, 589, 590, 591, + 0, 223, 244, 0, 0, 260, 261, 287, 534, 0, + 27, 363, 0, 309, 501, 0, 380, 0, 400, 383, + 439, 305, 0, 132, 132, 480, 132, 136, 483, 132, + 485, 132, 488, 0, 0, 0, 0, 500, 0, 0, + 0, 492, 454, 498, 0, 553, 0, 545, 535, 547, + 549, 0, 30, 0, 541, 0, 528, 557, 364, 558, + 333, 0, 338, 0, 0, 0, 341, 0, 528, 40, + 57, 58, 59, 190, 193, 0, 185, 132, 179, 180, + 155, 0, 147, 148, 149, 150, 151, 152, 133, 107, + 108, 158, 159, 157, 0, 157, 0, 137, 0, 798, + 0, 0, 197, 0, 198, 200, 201, 202, 0, 263, + 264, 516, 315, 440, 384, 443, 477, 157, 481, 482, + 484, 486, 487, 489, 445, 444, 446, 0, 0, 449, + 0, 0, 0, 0, 0, 496, 34, 0, 0, 35, + 0, 550, -2, 0, 0, 0, 47, 38, 0, 325, + 0, 0, 0, 359, 328, 39, 170, 0, 187, 162, + 156, 0, 160, 131, 160, 0, 0, 64, 76, 77, + 0, 0, 518, 0, 478, 479, 0, 0, 0, 0, + 470, 453, 493, 554, 555, 0, 548, 0, -2, 0, + 543, 542, 0, 334, 360, 361, 362, 324, 169, 171, + 0, 176, 0, 186, 167, 0, 164, 166, 154, 120, + 121, 135, 138, 0, 0, 29, 0, 0, 447, 448, + 450, 451, 0, 0, 0, 0, 538, 30, 0, 326, + 172, 173, 0, 177, 175, 83, 0, 163, 165, 70, + 0, 217, 0, 519, 517, 452, 0, 0, 0, 546, + -2, 544, 174, 168, 73, 216, 0, 0, 471, 0, + 474, 199, 218, 0, 472, 0, 0, 0, 0, 0, + 473, 0, 0, 219, 220, } var yyTok1 = [...]int{ @@ -2168,7 +2219,7 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 74, 3, 3, 3, 101, 93, 3, 53, 55, 98, 96, 54, 97, 110, 99, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 252, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 255, 82, 81, 83, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -2202,7 +2253,7 @@ var yyTok2 = [...]int{ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, + 249, 250, 251, 252, 253, 254, } var yyTok3 = [...]int{ 0, @@ -2547,29 +2598,29 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:309 +//line sql.y:317 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:314 +//line sql.y:322 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:315 +//line sql.y:323 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:319 +//line sql.y:327 { yyVAL.statement = yyDollar[1].selStmt } - case 22: + case 25: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:342 +//line sql.y:353 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -2577,57 +2628,57 @@ yydefault: sel.Lock = yyDollar[4].str yyVAL.selStmt = sel } - case 23: + case 26: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:350 +//line sql.y:361 { yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].str} } - case 24: + case 27: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:354 +//line sql.y:365 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, SelectExprs: SelectExprs{Nextval{Expr: yyDollar[5].expr}}, From: TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}} } - case 25: + case 28: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:360 +//line sql.y:371 { yyVAL.statement = &Stream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName} } - case 26: + case 29: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:367 +//line sql.y:378 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, Distinct: yyDollar[4].str, Hints: yyDollar[5].str, SelectExprs: yyDollar[6].selectExprs, From: yyDollar[7].tableExprs, Where: NewWhere(WhereStr, yyDollar[8].expr), GroupBy: GroupBy(yyDollar[9].exprs), Having: NewWhere(HavingStr, yyDollar[10].expr)} } - case 27: + case 30: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:373 +//line sql.y:384 { yyVAL.selStmt = yyDollar[1].selStmt } - case 28: + case 31: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:377 +//line sql.y:388 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } - case 29: + case 32: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:383 +//line sql.y:394 { yyVAL.selStmt = yyDollar[1].selStmt } - case 30: + case 33: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:387 +//line sql.y:398 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } - case 31: + case 34: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:394 +//line sql.y:405 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].ins @@ -2640,9 +2691,9 @@ yydefault: ins.Returning = yyDollar[8].returning yyVAL.statement = ins } - case 32: + case 35: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:407 +//line sql.y:418 { cols := make(Columns, 0, len(yyDollar[7].updateExprs)) vals := make(ValTuple, 0, len(yyDollar[8].updateExprs)) @@ -2652,195 +2703,195 @@ yydefault: } yyVAL.statement = &Insert{Action: yyDollar[1].str, Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, Table: yyDollar[4].tableName, Partitions: yyDollar[5].partitions, Columns: cols, Rows: Values{vals}, OnDup: OnDup(yyDollar[8].updateExprs)} } - case 33: + case 36: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:419 +//line sql.y:430 { yyVAL.str = InsertStr } - case 34: + case 37: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:423 +//line sql.y:434 { yyVAL.str = ReplaceStr } - case 35: + case 38: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:429 +//line sql.y:440 { yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), TableExprs: yyDollar[3].tableExprs, Exprs: yyDollar[5].updateExprs, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } - case 36: + case 39: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:435 +//line sql.y:446 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[4].tableName}}, Partitions: yyDollar[5].partitions, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } - case 37: + case 40: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:439 +//line sql.y:450 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereStr, yyDollar[7].expr)} } - case 38: + case 41: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:443 +//line sql.y:454 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} } - case 39: + case 42: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:448 +//line sql.y:459 { } - case 40: + case 43: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:449 +//line sql.y:460 { } - case 41: + case 44: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:453 +//line sql.y:464 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } - case 42: + case 45: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:457 +//line sql.y:468 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } - case 43: + case 46: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:462 +//line sql.y:473 { yyVAL.partitions = nil } - case 44: + case 47: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:466 +//line sql.y:477 { yyVAL.partitions = yyDollar[3].partitions } - case 45: + case 48: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:472 +//line sql.y:483 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } - case 46: + case 49: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:476 +//line sql.y:487 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[4].setExprs} } - case 47: + case 50: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:480 +//line sql.y:491 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[5].setExprs} } - case 48: + case 51: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:484 +//line sql.y:495 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[4].setExprs} } - case 49: + case 52: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:490 +//line sql.y:501 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 50: + case 53: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:494 +//line sql.y:505 { yyVAL.setExprs = append(yyVAL.setExprs, yyDollar[3].setExpr) } - case 51: + case 54: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:500 +//line sql.y:511 { yyVAL.setExpr = yyDollar[3].setExpr } - case 52: + case 55: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:504 +//line sql.y:515 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_read_only"), Expr: NewIntVal([]byte("0"))} } - case 53: + case 56: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:508 +//line sql.y:519 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_read_only"), Expr: NewIntVal([]byte("1"))} } - case 54: + case 57: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:514 +//line sql.y:525 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("repeatable read"))} } - case 55: + case 58: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:518 +//line sql.y:529 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("read committed"))} } - case 56: + case 59: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:522 +//line sql.y:533 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("read uncommitted"))} } - case 57: + case 60: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:526 +//line sql.y:537 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("serializable"))} } - case 58: + case 61: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:532 +//line sql.y:543 { yyVAL.str = SessionStr } - case 59: + case 62: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:536 +//line sql.y:547 { yyVAL.str = GlobalStr } - case 60: + case 63: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:542 +//line sql.y:553 { yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec yyVAL.statement = yyDollar[1].ddl } - case 61: + case 64: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:547 +//line sql.y:558 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName, NewName: yyDollar[7].tableName} } - case 62: + case 65: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:552 +//line sql.y:563 { yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[3].tableName.ToViewName()} } - case 63: + case 66: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:556 +//line sql.y:567 { yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[5].tableName.ToViewName()} } - case 64: + case 67: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:560 +//line sql.y:571 { yyVAL.statement = &DDL{Action: CreateVindexStr, VindexSpec: &VindexSpec{ Name: yyDollar[3].colIdent, @@ -2848,104 +2899,104 @@ yydefault: Params: yyDollar[5].vindexParams, }} } - case 65: + case 68: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:568 +//line sql.y:579 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].bytes)} } - case 66: + case 69: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:572 +//line sql.y:583 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].bytes)} } - case 67: + case 70: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:577 +//line sql.y:588 { yyVAL.colIdent = NewColIdent("") } - case 68: + case 71: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:581 +//line sql.y:592 { yyVAL.colIdent = yyDollar[2].colIdent } - case 69: + case 72: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:587 +//line sql.y:598 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 70: + case 73: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:592 +//line sql.y:603 { var v []VindexParam yyVAL.vindexParams = v } - case 71: + case 74: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:597 +//line sql.y:608 { yyVAL.vindexParams = yyDollar[2].vindexParams } - case 72: + case 75: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:603 +//line sql.y:614 { yyVAL.vindexParams = make([]VindexParam, 0, 4) yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam) } - case 73: + case 76: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:608 +//line sql.y:619 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } - case 74: + case 77: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:614 +//line sql.y:625 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } - case 75: + case 78: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:620 +//line sql.y:631 { yyVAL.ddl = &DDL{Action: CreateStr, NewName: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } - case 76: + case 79: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:627 +//line sql.y:638 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } - case 77: + case 80: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:634 +//line sql.y:645 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } - case 78: + case 81: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:639 +//line sql.y:650 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } - case 79: + case 82: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:643 +//line sql.y:654 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } - case 80: + case 83: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:649 +//line sql.y:660 { yyDollar[2].columnType.NotNull = yyDollar[3].boolVal yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -2955,674 +3006,674 @@ yydefault: yyDollar[2].columnType.Comment = yyDollar[8].optVal yyVAL.columnDefinition = &ColumnDefinition{Name: NewColIdent(string(yyDollar[1].bytes)), Type: yyDollar[2].columnType} } - case 81: + case 84: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:660 +//line sql.y:671 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolVal yyVAL.columnType.Zerofill = yyDollar[3].boolVal } - case 85: + case 88: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:671 +//line sql.y:682 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].optVal } - case 86: + case 89: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:676 +//line sql.y:687 { yyVAL.columnType = yyDollar[1].columnType } - case 87: + case 90: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:682 +//line sql.y:693 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 88: + case 91: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:686 +//line sql.y:697 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 89: + case 92: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:690 +//line sql.y:701 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 90: + case 93: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:694 +//line sql.y:705 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 91: + case 94: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:698 +//line sql.y:709 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 92: + case 95: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:702 +//line sql.y:713 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 93: + case 96: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:706 +//line sql.y:717 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 94: + case 97: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:712 +//line sql.y:723 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 95: + case 98: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:718 +//line sql.y:729 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 96: + case 99: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:724 +//line sql.y:735 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 97: + case 100: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:730 +//line sql.y:741 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 98: + case 101: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:736 +//line sql.y:747 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 99: + case 102: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:744 +//line sql.y:755 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 100: + case 103: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:748 +//line sql.y:759 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 101: + case 104: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:752 +//line sql.y:763 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 102: + case 105: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:756 +//line sql.y:767 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 103: + case 106: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:760 +//line sql.y:771 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 104: + case 107: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:766 +//line sql.y:777 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 105: + case 108: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:770 +//line sql.y:781 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 106: + case 109: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:774 +//line sql.y:785 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 107: + case 110: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:778 +//line sql.y:789 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 108: + case 111: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:782 +//line sql.y:793 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 109: + case 112: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:786 +//line sql.y:797 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 110: + case 113: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:790 +//line sql.y:801 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 111: + case 114: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:794 +//line sql.y:805 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 112: + case 115: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:798 +//line sql.y:809 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 113: + case 116: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:802 +//line sql.y:813 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 114: + case 117: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:806 +//line sql.y:817 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 115: + case 118: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:810 +//line sql.y:821 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 116: + case 119: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:814 +//line sql.y:825 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 117: + case 120: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:818 +//line sql.y:829 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } - case 118: + case 121: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:823 +//line sql.y:834 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } - case 119: + case 122: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:829 +//line sql.y:840 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 120: + case 123: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:833 +//line sql.y:844 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 121: + case 124: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:837 +//line sql.y:848 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 122: + case 125: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:841 +//line sql.y:852 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 123: + case 126: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:845 +//line sql.y:856 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 124: + case 127: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:849 +//line sql.y:860 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 125: + case 128: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:853 +//line sql.y:864 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 126: + case 129: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:857 +//line sql.y:868 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 127: + case 130: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:863 +//line sql.y:874 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } - case 128: + case 131: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:868 +//line sql.y:879 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } - case 129: + case 132: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:873 +//line sql.y:884 { yyVAL.optVal = nil } - case 130: + case 133: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:877 +//line sql.y:888 { yyVAL.optVal = NewIntVal(yyDollar[2].bytes) } - case 131: + case 134: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:882 +//line sql.y:893 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 132: + case 135: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:886 +//line sql.y:897 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 133: + case 136: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:894 +//line sql.y:905 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 134: + case 137: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:898 +//line sql.y:909 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), } } - case 135: + case 138: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:904 +//line sql.y:915 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 136: + case 139: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:912 +//line sql.y:923 { yyVAL.boolVal = BoolVal(false) } - case 137: + case 140: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:916 +//line sql.y:927 { yyVAL.boolVal = BoolVal(true) } - case 138: + case 141: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:921 +//line sql.y:932 { yyVAL.boolVal = BoolVal(false) } - case 139: + case 142: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:925 +//line sql.y:936 { yyVAL.boolVal = BoolVal(true) } - case 140: + case 143: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:931 +//line sql.y:942 { yyVAL.boolVal = BoolVal(false) } - case 141: + case 144: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:935 +//line sql.y:946 { yyVAL.boolVal = BoolVal(false) } - case 142: + case 145: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:939 +//line sql.y:950 { yyVAL.boolVal = BoolVal(true) } - case 143: + case 146: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:944 +//line sql.y:955 { yyVAL.optVal = nil } - case 144: + case 147: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:948 +//line sql.y:959 { yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } - case 145: + case 148: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:952 +//line sql.y:963 { yyVAL.optVal = NewIntVal(yyDollar[2].bytes) } - case 146: + case 149: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:956 +//line sql.y:967 { yyVAL.optVal = NewFloatVal(yyDollar[2].bytes) } - case 147: + case 150: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:960 +//line sql.y:971 { yyVAL.optVal = NewValArg(yyDollar[2].bytes) } - case 148: + case 151: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:964 +//line sql.y:975 { yyVAL.optVal = NewValArg(yyDollar[2].bytes) } - case 149: + case 152: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:968 +//line sql.y:979 { yyVAL.optVal = NewBitVal(yyDollar[2].bytes) } - case 150: + case 153: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:973 +//line sql.y:984 { yyVAL.optVal = nil } - case 151: + case 154: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:977 +//line sql.y:988 { yyVAL.optVal = NewValArg(yyDollar[3].bytes) } - case 152: + case 155: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:982 +//line sql.y:993 { yyVAL.boolVal = BoolVal(false) } - case 153: + case 156: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:986 +//line sql.y:997 { yyVAL.boolVal = BoolVal(true) } - case 154: + case 157: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:991 +//line sql.y:1002 { yyVAL.str = "" } - case 155: + case 158: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:995 +//line sql.y:1006 { yyVAL.str = string(yyDollar[3].bytes) } - case 156: + case 159: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:999 +//line sql.y:1010 { yyVAL.str = string(yyDollar[3].bytes) } - case 157: + case 160: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1004 +//line sql.y:1015 { yyVAL.str = "" } - case 158: + case 161: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1008 +//line sql.y:1019 { yyVAL.str = string(yyDollar[2].bytes) } - case 159: + case 162: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1013 +//line sql.y:1024 { yyVAL.colKeyOpt = colKeyNone } - case 160: + case 163: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1017 +//line sql.y:1028 { yyVAL.colKeyOpt = colKeyPrimary } - case 161: + case 164: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1021 +//line sql.y:1032 { yyVAL.colKeyOpt = colKey } - case 162: + case 165: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1025 +//line sql.y:1036 { yyVAL.colKeyOpt = colKeyUniqueKey } - case 163: + case 166: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1029 +//line sql.y:1040 { yyVAL.colKeyOpt = colKeyUnique } - case 164: + case 167: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1034 +//line sql.y:1045 { yyVAL.optVal = nil } - case 165: + case 168: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1038 +//line sql.y:1049 { yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } - case 166: + case 169: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1044 +//line sql.y:1055 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } - case 167: + case 170: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1048 +//line sql.y:1059 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} } - case 168: + case 171: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1054 +//line sql.y:1065 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 169: + case 172: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1058 +//line sql.y:1069 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } - case 170: + case 173: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1064 +//line sql.y:1075 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].bytes)} } - case 171: + case 174: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1068 +//line sql.y:1079 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntVal(yyDollar[3].bytes)} } - case 172: + case 175: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1073 +//line sql.y:1084 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrVal(yyDollar[2].bytes)} } - case 173: + case 176: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1079 +//line sql.y:1090 { yyVAL.str = "" } - case 174: + case 177: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1083 +//line sql.y:1094 { yyVAL.str = string(yyDollar[1].bytes) } - case 175: + case 178: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1089 +//line sql.y:1100 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } - case 176: + case 179: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1093 +//line sql.y:1104 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Spatial: true, Unique: false} } - case 177: + case 180: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1097 +//line sql.y:1108 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Unique: true} } - case 178: + case 181: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1101 +//line sql.y:1112 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: true} } - case 179: + case 182: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1105 +//line sql.y:1116 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: false} } - case 180: + case 183: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1111 +//line sql.y:1122 { yyVAL.str = string(yyDollar[1].bytes) } - case 181: + case 184: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1115 +//line sql.y:1126 { yyVAL.str = string(yyDollar[1].bytes) } - case 182: + case 185: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1121 +//line sql.y:1132 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } - case 183: + case 186: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1125 +//line sql.y:1136 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } - case 184: + case 187: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1131 +//line sql.y:1142 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].optVal} } - case 185: + case 188: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1136 +//line sql.y:1147 { yyVAL.str = "" } - case 186: + case 189: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1140 +//line sql.y:1151 { yyVAL.str = " " + string(yyDollar[1].str) } - case 187: + case 190: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1144 +//line sql.y:1155 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } - case 188: + case 191: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1152 +//line sql.y:1163 { yyVAL.str = yyDollar[1].str } - case 189: + case 192: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1156 +//line sql.y:1167 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } - case 190: + case 193: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1160 +//line sql.y:1171 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } - case 191: + case 194: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1166 +//line sql.y:1177 { if yyDollar[1].colIdent.NeedQuotes() { yyVAL.str = "'" + yyDollar[1].colIdent.String() + "'" @@ -3631,33 +3682,33 @@ yydefault: } } - case 192: + case 195: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1175 +//line sql.y:1186 { yyVAL.str = string(yyDollar[1].bytes) } - case 193: + case 196: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1181 +//line sql.y:1192 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 194: + case 197: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1185 +//line sql.y:1196 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 195: + case 198: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1189 +//line sql.y:1200 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 196: + case 199: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1193 +//line sql.y:1204 { yyVAL.statement = &DDL{ Action: AddColVindexStr, @@ -3670,9 +3721,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 197: + case 200: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1206 +//line sql.y:1217 { yyVAL.statement = &DDL{ Action: DropColVindexStr, @@ -3682,71 +3733,71 @@ yydefault: }, } } - case 198: + case 201: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1216 +//line sql.y:1227 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableName, NewName: yyDollar[7].tableName} } - case 199: + case 202: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1221 +//line sql.y:1232 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 200: + case 203: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1226 +//line sql.y:1237 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName(), NewName: yyDollar[3].tableName.ToViewName()} } - case 201: + case 204: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1230 +//line sql.y:1241 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } - case 213: + case 216: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1249 +//line sql.y:1260 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeStr, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } - case 214: + case 217: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1255 +//line sql.y:1266 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 215: + case 218: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1259 +//line sql.y:1270 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 216: + case 219: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1265 +//line sql.y:1276 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 217: + case 220: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1269 +//line sql.y:1280 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 218: + case 221: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1275 +//line sql.y:1286 { yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[3].tableName, NewName: yyDollar[5].tableName} } - case 219: + case 222: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1281 +//line sql.y:1292 { var exists bool if yyDollar[3].byt != 0 { @@ -3754,16 +3805,16 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName, IfExists: exists} } - case 220: + case 223: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1289 +//line sql.y:1300 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName, NewName: yyDollar[5].tableName} } - case 221: + case 224: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1294 +//line sql.y:1305 { var exists bool if yyDollar[3].byt != 0 { @@ -3771,123 +3822,123 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName.ToViewName(), IfExists: exists} } - case 222: + case 225: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1302 +//line sql.y:1313 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 223: + case 226: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1306 +//line sql.y:1317 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 224: + case 227: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1312 +//line sql.y:1323 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[3].tableName} } - case 225: + case 228: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1316 +//line sql.y:1327 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[2].tableName} } - case 226: + case 229: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1321 +//line sql.y:1332 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName} } - case 227: + case 230: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1327 +//line sql.y:1338 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 228: + case 231: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1331 +//line sql.y:1342 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 229: + case 232: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1335 +//line sql.y:1346 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 230: + case 233: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1340 +//line sql.y:1351 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 231: + case 234: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1344 +//line sql.y:1355 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 232: + case 235: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1348 +//line sql.y:1359 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 233: + case 236: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1352 +//line sql.y:1363 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 234: + case 237: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1356 +//line sql.y:1367 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 235: + case 238: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1360 +//line sql.y:1371 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 236: + case 239: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1364 +//line sql.y:1375 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 237: + case 240: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1368 +//line sql.y:1379 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 238: + case 241: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1372 +//line sql.y:1383 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 239: + case 242: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1376 +//line sql.y:1387 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 240: + case 243: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1380 +//line sql.y:1391 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 241: + case 244: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1384 +//line sql.y:1395 { // this is ugly, but I couldn't find a better way for now if yyDollar[4].str == "processlist" { @@ -3897,586 +3948,640 @@ yydefault: yyVAL.statement = &Show{Type: yyDollar[4].str, ShowTablesOpt: showTablesOpt} } } - case 242: + case 245: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1394 +//line sql.y:1405 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 243: + case 246: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1398 +//line sql.y:1409 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 244: + case 247: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1402 +//line sql.y:1413 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), OnTable: yyDollar[4].tableName} } - case 245: + case 248: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1406 +//line sql.y:1417 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 246: + case 249: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1410 +//line sql.y:1421 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 247: + case 250: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1414 +//line sql.y:1425 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 248: + case 251: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1418 +//line sql.y:1429 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 249: + case 252: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1428 +//line sql.y:1439 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 250: + case 253: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1434 +//line sql.y:1445 { yyVAL.str = string(yyDollar[1].bytes) } - case 251: + case 254: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1438 +//line sql.y:1449 { yyVAL.str = string(yyDollar[1].bytes) } - case 252: + case 255: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1444 +//line sql.y:1455 { yyVAL.str = "" } - case 253: + case 256: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1448 +//line sql.y:1459 { yyVAL.str = "extended " } - case 254: + case 257: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1454 +//line sql.y:1465 { yyVAL.str = "" } - case 255: + case 258: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1458 +//line sql.y:1469 { yyVAL.str = "full " } - case 256: + case 259: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1464 +//line sql.y:1475 { yyVAL.str = "" } - case 257: + case 260: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1468 +//line sql.y:1479 { yyVAL.str = yyDollar[2].tableIdent.v } - case 258: + case 261: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1472 +//line sql.y:1483 { yyVAL.str = yyDollar[2].tableIdent.v } - case 259: + case 262: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1478 +//line sql.y:1489 { yyVAL.showFilter = nil } - case 260: + case 263: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1482 +//line sql.y:1493 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 261: + case 264: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1486 +//line sql.y:1497 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 262: + case 265: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1492 +//line sql.y:1503 { yyVAL.str = "" } - case 263: + case 266: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1496 +//line sql.y:1507 { yyVAL.str = SessionStr } - case 264: + case 267: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1500 +//line sql.y:1511 { yyVAL.str = GlobalStr } - case 265: + case 268: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1506 +//line sql.y:1517 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 266: + case 269: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1510 +//line sql.y:1521 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 267: + case 270: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1516 +//line sql.y:1527 { yyVAL.statement = &Begin{} } - case 268: + case 271: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1520 +//line sql.y:1531 { yyVAL.statement = &Begin{} } - case 269: + case 272: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1526 +//line sql.y:1537 { yyVAL.statement = &Commit{} } - case 270: + case 273: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1532 +//line sql.y:1543 { yyVAL.statement = &Rollback{} } - case 271: + case 274: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1538 +//line sql.y:1549 { yyVAL.statement = &OtherRead{} } - case 272: + case 275: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1542 +//line sql.y:1553 { yyVAL.statement = &OtherRead{} } - case 273: + case 276: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1546 +//line sql.y:1557 { yyVAL.statement = &OtherRead{} } - case 274: + case 277: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1550 +//line sql.y:1561 { yyVAL.statement = &OtherAdmin{} } - case 275: + case 278: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1554 +//line sql.y:1565 { yyVAL.statement = &OtherAdmin{} } - case 276: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1559 + case 279: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1571 + { + yyVAL.statement = &DeallocatePrepare{PreparedStatementName: yyDollar[3].tableIdent} + } + case 280: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:1577 + { + yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, From: yyDollar[4].fromInPrepare} + } + case 281: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1583 + { + yyVAL.fromInPrepare = NewTableIdent(string(yyDollar[1].bytes)) + } + case 282: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1587 + { + yyVAL.fromInPrepare = NewPgEscapeString(yyDollar[1].bytes) + } + case 283: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1591 + { + yyVAL.fromInPrepare = NewStrVal(yyDollar[1].bytes) + } + case 284: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1597 + { + yyVAL.statement = &Execute{PreparedStatementName: NewTableIdent(string(yyDollar[2].bytes))} + } + case 285: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:1601 + { + yyVAL.statement = &Execute{PreparedStatementName: NewTableIdent(string(yyDollar[2].bytes)), Using: yyDollar[4].usingInExecuteList} + } + case 286: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1607 + { + yyVAL.usingInExecuteList = UsingInExecuteList{yyDollar[1].tableIdent} + } + case 287: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1611 + { + yyVAL.usingInExecuteList = append(yyDollar[1].usingInExecuteList, yyDollar[3].tableIdent) + } + case 288: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1616 { setAllowComments(yylex, true) } - case 277: + case 289: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1563 +//line sql.y:1620 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 278: + case 290: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1569 +//line sql.y:1626 { yyVAL.bytes2 = nil } - case 279: + case 291: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1573 +//line sql.y:1630 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 280: + case 292: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1579 +//line sql.y:1636 { yyVAL.str = UnionStr } - case 281: + case 293: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1583 +//line sql.y:1640 { yyVAL.str = UnionAllStr } - case 282: + case 294: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1587 +//line sql.y:1644 { yyVAL.str = UnionDistinctStr } - case 283: + case 295: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1592 +//line sql.y:1649 { yyVAL.str = "" } - case 284: + case 296: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1596 +//line sql.y:1653 { yyVAL.str = SQLNoCacheStr } - case 285: + case 297: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1600 +//line sql.y:1657 { yyVAL.str = SQLCacheStr } - case 286: + case 298: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1605 +//line sql.y:1662 { yyVAL.str = "" } - case 287: + case 299: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1609 +//line sql.y:1666 { yyVAL.str = DistinctStr } - case 288: + case 300: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1614 +//line sql.y:1671 { yyVAL.str = "" } - case 289: + case 301: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1618 +//line sql.y:1675 { yyVAL.str = StraightJoinHint } - case 290: + case 302: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1623 +//line sql.y:1680 { yyVAL.selectExprs = nil } - case 291: + case 303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1627 +//line sql.y:1684 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 292: + case 304: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1633 +//line sql.y:1690 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 293: + case 305: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1637 +//line sql.y:1694 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 294: + case 306: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1643 +//line sql.y:1700 { yyVAL.selectExpr = &StarExpr{} } - case 295: + case 307: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1647 +//line sql.y:1704 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 296: + case 308: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1651 +//line sql.y:1708 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 297: + case 309: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1655 +//line sql.y:1712 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 298: + case 310: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1660 +//line sql.y:1717 { yyVAL.colIdent = ColIdent{} } - case 299: + case 311: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1664 +//line sql.y:1721 { yyVAL.colIdent = yyDollar[1].colIdent } - case 300: + case 312: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1668 +//line sql.y:1725 { yyVAL.colIdent = yyDollar[2].colIdent } - case 302: + case 314: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1676 +//line sql.y:1733 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 303: + case 315: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1680 +//line sql.y:1737 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 304: + case 316: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1686 +//line sql.y:1743 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 305: + case 317: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1690 +//line sql.y:1747 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 308: + case 320: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1700 +//line sql.y:1757 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 309: + case 321: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1704 +//line sql.y:1761 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 310: + case 322: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1708 +//line sql.y:1765 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 311: + case 323: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1714 +//line sql.y:1771 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 312: + case 324: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1718 +//line sql.y:1775 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 313: + case 325: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1724 +//line sql.y:1781 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 314: + case 326: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1728 +//line sql.y:1785 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 315: + case 327: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1734 +//line sql.y:1791 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 316: + case 328: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1738 +//line sql.y:1795 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 317: + case 329: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1751 +//line sql.y:1808 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 318: + case 330: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1755 +//line sql.y:1812 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 319: + case 331: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1759 +//line sql.y:1816 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 320: + case 332: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1763 +//line sql.y:1820 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 321: + case 333: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1769 +//line sql.y:1826 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 322: + case 334: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1771 +//line sql.y:1828 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 323: + case 335: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1775 +//line sql.y:1832 { yyVAL.joinCondition = JoinCondition{} } - case 324: + case 336: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1777 +//line sql.y:1834 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 325: + case 337: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1781 +//line sql.y:1838 { yyVAL.joinCondition = JoinCondition{} } - case 326: + case 338: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1783 +//line sql.y:1840 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 327: + case 339: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1786 +//line sql.y:1843 { yyVAL.empty = struct{}{} } - case 328: + case 340: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1788 +//line sql.y:1845 { yyVAL.empty = struct{}{} } - case 329: + case 341: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1791 +//line sql.y:1848 { yyVAL.tableIdent = NewTableIdent("") } - case 330: + case 342: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1795 +//line sql.y:1852 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 331: + case 343: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1799 +//line sql.y:1856 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 333: + case 345: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1809 +//line sql.y:1866 { yyVAL.str = JoinStr } - case 334: + case 346: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1813 +//line sql.y:1870 { yyVAL.str = JoinStr } - case 335: + case 347: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1817 +//line sql.y:1874 { yyVAL.str = JoinStr } - case 336: + case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1823 +//line sql.y:1880 { yyVAL.str = StraightJoinStr } - case 337: + case 349: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1829 +//line sql.y:1886 { yyVAL.str = LeftJoinStr } - case 338: + case 350: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1833 +//line sql.y:1890 { yyVAL.str = LeftJoinStr } - case 339: + case 351: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1837 +//line sql.y:1894 { yyVAL.str = RightJoinStr } - case 340: + case 352: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1841 +//line sql.y:1898 { yyVAL.str = RightJoinStr } - case 341: + case 353: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1847 +//line sql.y:1904 { yyVAL.str = NaturalJoinStr } - case 342: + case 354: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1851 +//line sql.y:1908 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -4484,453 +4589,453 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 343: + case 355: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1861 +//line sql.y:1918 { yyVAL.tableName = yyDollar[2].tableName } - case 344: + case 356: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1865 +//line sql.y:1922 { yyVAL.tableName = yyDollar[1].tableName } - case 345: + case 357: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1871 +//line sql.y:1928 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 346: + case 358: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1875 +//line sql.y:1932 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 347: + case 359: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1880 +//line sql.y:1937 { yyVAL.indexHints = nil } - case 348: + case 360: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1884 +//line sql.y:1941 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 349: + case 361: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1888 +//line sql.y:1945 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 350: + case 362: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1892 +//line sql.y:1949 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 351: + case 363: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1897 +//line sql.y:1954 { yyVAL.expr = nil } - case 352: + case 364: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1901 +//line sql.y:1958 { yyVAL.expr = yyDollar[2].expr } - case 353: + case 365: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1907 +//line sql.y:1964 { yyVAL.expr = yyDollar[1].expr } - case 354: + case 366: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1911 +//line sql.y:1968 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 355: + case 367: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1915 +//line sql.y:1972 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 356: + case 368: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1919 +//line sql.y:1976 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 357: + case 369: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1923 +//line sql.y:1980 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 358: + case 370: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1927 +//line sql.y:1984 { yyVAL.expr = yyDollar[1].expr } - case 359: + case 371: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1931 +//line sql.y:1988 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 360: + case 372: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1937 +//line sql.y:1994 { yyVAL.str = "" } - case 361: + case 373: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1941 +//line sql.y:1998 { yyVAL.str = string(yyDollar[2].bytes) } - case 362: + case 374: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1947 +//line sql.y:2004 { yyVAL.boolVal = BoolVal(true) } - case 363: + case 375: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1951 +//line sql.y:2008 { yyVAL.boolVal = BoolVal(false) } - case 364: + case 376: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1957 +//line sql.y:2014 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 365: + case 377: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1961 +//line sql.y:2018 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 366: + case 378: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1965 +//line sql.y:2022 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 367: + case 379: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1969 +//line sql.y:2026 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 368: + case 380: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1973 +//line sql.y:2030 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 369: + case 381: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1977 +//line sql.y:2034 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 370: + case 382: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1981 +//line sql.y:2038 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 371: + case 383: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1985 +//line sql.y:2042 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 372: + case 384: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1989 +//line sql.y:2046 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 373: + case 385: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1993 +//line sql.y:2050 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 374: + case 386: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1999 +//line sql.y:2056 { yyVAL.str = IsNullStr } - case 375: + case 387: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2003 +//line sql.y:2060 { yyVAL.str = IsNotNullStr } - case 376: + case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2007 +//line sql.y:2064 { yyVAL.str = IsTrueStr } - case 377: + case 389: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2011 +//line sql.y:2068 { yyVAL.str = IsNotTrueStr } - case 378: + case 390: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2015 +//line sql.y:2072 { yyVAL.str = IsFalseStr } - case 379: + case 391: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2019 +//line sql.y:2076 { yyVAL.str = IsNotFalseStr } - case 380: + case 392: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2025 +//line sql.y:2082 { yyVAL.str = EqualStr } - case 381: + case 393: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2029 +//line sql.y:2086 { yyVAL.str = LessThanStr } - case 382: + case 394: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2033 +//line sql.y:2090 { yyVAL.str = GreaterThanStr } - case 383: + case 395: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2037 +//line sql.y:2094 { yyVAL.str = LessEqualStr } - case 384: + case 396: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2041 +//line sql.y:2098 { yyVAL.str = GreaterEqualStr } - case 385: + case 397: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2045 +//line sql.y:2102 { yyVAL.str = NotEqualStr } - case 386: + case 398: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2049 +//line sql.y:2106 { yyVAL.str = NullSafeEqualStr } - case 387: + case 399: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2054 +//line sql.y:2111 { yyVAL.expr = nil } - case 388: + case 400: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2058 +//line sql.y:2115 { yyVAL.expr = yyDollar[2].expr } - case 389: + case 401: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2064 +//line sql.y:2121 { yyVAL.colTuple = yyDollar[1].valTuple } - case 390: + case 402: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2068 +//line sql.y:2125 { yyVAL.colTuple = yyDollar[1].subquery } - case 391: + case 403: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2072 +//line sql.y:2129 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 392: + case 404: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2078 +//line sql.y:2135 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 393: + case 405: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2084 +//line sql.y:2141 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 394: + case 406: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2088 +//line sql.y:2145 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 395: + case 407: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2095 +//line sql.y:2152 { - yyVAL.expr = yyDollar[1].expr + yyVAL.expr = yyDollar[1].colName } - case 396: + case 408: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2100 +//line sql.y:2157 { - yyVAL.expr = yyDollar[1].colName + yyVAL.expr = yyDollar[1].expr } - case 397: + case 409: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2105 +//line sql.y:2161 { yyVAL.expr = yyDollar[1].boolVal } - case 398: + case 410: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2109 +//line sql.y:2165 { yyVAL.expr = yyDollar[1].expr } - case 399: + case 411: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2113 +//line sql.y:2169 { yyVAL.expr = yyDollar[1].subquery } - case 400: + case 412: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2117 +//line sql.y:2173 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } - case 401: + case 413: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2121 +//line sql.y:2177 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } - case 402: + case 414: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2125 +//line sql.y:2181 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } - case 403: + case 415: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2129 +//line sql.y:2185 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } - case 404: + case 416: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2133 +//line sql.y:2189 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } - case 405: + case 417: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2137 +//line sql.y:2193 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } - case 406: + case 418: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2141 +//line sql.y:2197 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } - case 407: + case 419: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2145 +//line sql.y:2201 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } - case 408: + case 420: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2149 +//line sql.y:2205 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 409: + case 421: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2153 +//line sql.y:2209 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 410: + case 422: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2157 +//line sql.y:2213 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } - case 411: + case 423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2161 +//line sql.y:2217 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } - case 412: + case 424: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2165 +//line sql.y:2221 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 413: + case 425: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2169 +//line sql.y:2225 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 414: + case 426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2173 +//line sql.y:2229 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 415: + case 427: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2177 +//line sql.y:2233 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } - case 416: + case 428: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2181 +//line sql.y:2237 { yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } - case 417: + case 429: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2185 +//line sql.y:2241 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -4938,9 +5043,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 418: + case 430: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2193 +//line sql.y:2249 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -4954,21 +5059,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 419: + case 431: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2207 +//line sql.y:2263 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 420: + case 432: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2211 +//line sql.y:2267 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 421: + case 433: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2215 +//line sql.y:2271 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -4976,449 +5081,449 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 426: + case 438: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2233 +//line sql.y:2289 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 427: + case 439: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2237 +//line sql.y:2293 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 428: + case 440: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2241 +//line sql.y:2297 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 429: + case 441: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2251 +//line sql.y:2307 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 430: + case 442: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2255 +//line sql.y:2311 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 431: + case 443: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2259 +//line sql.y:2315 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 432: + case 444: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2263 +//line sql.y:2319 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 433: + case 445: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2267 +//line sql.y:2323 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 434: + case 446: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2271 +//line sql.y:2327 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 435: + case 447: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2275 +//line sql.y:2331 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 436: + case 448: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2279 +//line sql.y:2335 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 437: + case 449: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2283 +//line sql.y:2339 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 438: + case 450: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2287 +//line sql.y:2343 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 439: + case 451: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2291 +//line sql.y:2347 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 440: + case 452: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2295 +//line sql.y:2351 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 441: + case 453: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2299 +//line sql.y:2355 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } - case 442: + case 454: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2303 +//line sql.y:2359 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 443: + case 455: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2307 +//line sql.y:2363 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 444: + case 456: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2317 +//line sql.y:2373 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 445: + case 457: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2321 +//line sql.y:2377 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 446: + case 458: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2325 +//line sql.y:2381 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 447: + case 459: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2329 +//line sql.y:2385 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 448: + case 460: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2334 +//line sql.y:2390 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 449: + case 461: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2339 +//line sql.y:2395 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 450: + case 462: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2344 +//line sql.y:2400 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 451: + case 463: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2349 +//line sql.y:2405 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 454: + case 466: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2363 +//line sql.y:2419 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 455: + case 467: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2367 +//line sql.y:2423 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 456: + case 468: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2371 +//line sql.y:2427 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 457: + case 469: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2375 +//line sql.y:2431 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 458: + case 470: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2381 +//line sql.y:2437 { yyVAL.str = "" } - case 459: + case 471: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2385 +//line sql.y:2441 { yyVAL.str = BooleanModeStr } - case 460: + case 472: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2389 +//line sql.y:2445 { yyVAL.str = NaturalLanguageModeStr } - case 461: + case 473: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2393 +//line sql.y:2449 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 462: + case 474: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2397 +//line sql.y:2453 { yyVAL.str = QueryExpansionStr } - case 463: + case 475: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2403 +//line sql.y:2459 { yyVAL.str = string(yyDollar[1].bytes) } - case 464: + case 476: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2407 +//line sql.y:2463 { yyVAL.str = string(yyDollar[1].bytes) } - case 465: + case 477: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2413 +//line sql.y:2469 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 466: + case 478: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2417 +//line sql.y:2473 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 467: + case 479: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2421 +//line sql.y:2477 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: string(yyDollar[3].bytes)} } - case 468: + case 480: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2425 +//line sql.y:2481 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 469: + case 481: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2429 +//line sql.y:2485 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 470: + case 482: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2433 +//line sql.y:2489 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 471: + case 483: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2439 +//line sql.y:2495 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 472: + case 484: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2443 +//line sql.y:2499 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 473: + case 485: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2447 +//line sql.y:2503 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 474: + case 486: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2451 +//line sql.y:2507 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 475: + case 487: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2455 +//line sql.y:2511 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 476: + case 488: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2459 +//line sql.y:2515 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 477: + case 489: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2463 +//line sql.y:2519 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 478: + case 490: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2468 +//line sql.y:2524 { yyVAL.expr = nil } - case 479: + case 491: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2472 +//line sql.y:2528 { yyVAL.expr = yyDollar[1].expr } - case 480: + case 492: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2477 +//line sql.y:2533 { yyVAL.str = string("") } - case 481: + case 493: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2481 +//line sql.y:2537 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 482: + case 494: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2487 +//line sql.y:2543 { yyVAL.whens = []*When{yyDollar[1].when} } - case 483: + case 495: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2491 +//line sql.y:2547 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 484: + case 496: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2497 +//line sql.y:2553 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 485: + case 497: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2502 +//line sql.y:2558 { yyVAL.expr = nil } - case 486: + case 498: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2506 +//line sql.y:2562 { yyVAL.expr = yyDollar[2].expr } - case 487: + case 499: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2512 +//line sql.y:2568 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 488: + case 500: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2516 +//line sql.y:2572 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 489: + case 501: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2520 +//line sql.y:2576 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 490: + case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2526 +//line sql.y:2582 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 491: + case 503: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2530 +//line sql.y:2586 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 492: + case 504: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2534 +//line sql.y:2590 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 493: + case 505: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2538 +//line sql.y:2594 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 494: + case 506: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2542 +//line sql.y:2598 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 495: + case 507: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2546 +//line sql.y:2602 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 496: + case 508: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2550 +//line sql.y:2606 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 497: + case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2554 +//line sql.y:2610 { yyVAL.expr = &NullVal{} } - case 498: + case 510: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2558 +//line sql.y:2614 { yyVAL.expr = NewPgEscapeString(yyDollar[1].bytes) } - case 499: + case 511: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2562 +//line sql.y:2618 { yyVAL.expr = NewCastVal(yyDollar[1].expr, yyDollar[2].bytes) } - case 500: + case 512: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2568 +//line sql.y:2624 { yyVAL.bytes = yyDollar[1].bytes } - case 501: + case 513: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2576 +//line sql.y:2632 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -5427,239 +5532,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 502: + case 514: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2585 +//line sql.y:2641 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 503: + case 515: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2589 +//line sql.y:2645 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 504: + case 516: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2594 +//line sql.y:2650 { yyVAL.exprs = nil } - case 505: + case 517: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2598 +//line sql.y:2654 { yyVAL.exprs = yyDollar[3].exprs } - case 506: + case 518: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2603 +//line sql.y:2659 { yyVAL.expr = nil } - case 507: + case 519: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2607 +//line sql.y:2663 { yyVAL.expr = yyDollar[2].expr } - case 508: + case 520: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2612 +//line sql.y:2668 { yyVAL.orderBy = nil } - case 509: + case 521: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2616 +//line sql.y:2672 { yyVAL.orderBy = yyDollar[3].orderBy } - case 510: + case 522: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2622 +//line sql.y:2678 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 511: + case 523: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2626 +//line sql.y:2682 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 512: + case 524: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2632 +//line sql.y:2688 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 513: + case 525: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2637 +//line sql.y:2693 { yyVAL.str = AscScr } - case 514: + case 526: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2641 +//line sql.y:2697 { yyVAL.str = AscScr } - case 515: + case 527: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2645 +//line sql.y:2701 { yyVAL.str = DescScr } - case 516: + case 528: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2650 +//line sql.y:2706 { yyVAL.limit = nil } - case 517: + case 529: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2654 +//line sql.y:2710 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 518: + case 530: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2658 +//line sql.y:2714 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 519: + case 531: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2662 +//line sql.y:2718 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 520: + case 532: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2667 +//line sql.y:2723 { yyVAL.str = "" } - case 521: + case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2671 +//line sql.y:2727 { yyVAL.str = ForUpdateStr } - case 522: + case 534: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2675 +//line sql.y:2731 { yyVAL.str = ShareModeStr } - case 523: + case 535: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2688 +//line sql.y:2744 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 524: + case 536: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2692 +//line sql.y:2748 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 525: + case 537: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2696 +//line sql.y:2752 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 526: + case 538: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2701 +//line sql.y:2757 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 527: + case 539: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2705 +//line sql.y:2761 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 528: + case 540: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2709 +//line sql.y:2765 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 529: + case 541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2716 +//line sql.y:2772 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 530: + case 542: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2720 +//line sql.y:2776 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 531: + case 543: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2724 +//line sql.y:2780 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 532: + case 544: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2728 +//line sql.y:2784 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 533: + case 545: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2733 +//line sql.y:2789 { yyVAL.updateExprs = nil } - case 534: + case 546: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2737 +//line sql.y:2793 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 535: + case 547: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2743 +//line sql.y:2799 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 536: + case 548: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2747 +//line sql.y:2803 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 537: + case 549: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2753 +//line sql.y:2809 { yyVAL.valTuple = yyDollar[1].valTuple } - case 538: + case 550: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2757 +//line sql.y:2813 { yyVAL.valTuple = ValTuple{} } - case 539: + case 551: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2763 +//line sql.y:2819 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 540: + case 552: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2769 +//line sql.y:2825 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -5667,318 +5772,318 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 541: + case 553: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2778 +//line sql.y:2834 { yyVAL.returning = nil } - case 542: + case 554: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2783 +//line sql.y:2839 { yyVAL.returning = Returning{&StarExpr{}} } - case 543: + case 555: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2788 +//line sql.y:2844 { yyVAL.returning = Returning(yyDollar[2].exprs) } - case 544: + case 556: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2795 +//line sql.y:2851 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 545: + case 557: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2799 +//line sql.y:2855 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 546: + case 558: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2805 +//line sql.y:2861 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 547: + case 559: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2811 +//line sql.y:2867 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 548: + case 560: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2815 +//line sql.y:2871 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 549: + case 561: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2821 +//line sql.y:2877 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 550: + case 562: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2825 +//line sql.y:2881 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 551: + case 563: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2829 +//line sql.y:2885 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 553: + case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2836 +//line sql.y:2892 { yyVAL.bytes = []byte("charset") } - case 555: + case 567: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2843 +//line sql.y:2899 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 556: + case 568: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2847 +//line sql.y:2903 { yyVAL.expr = &Default{} } - case 559: + case 571: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2856 +//line sql.y:2912 { yyVAL.byt = 0 } - case 560: + case 572: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2858 +//line sql.y:2914 { yyVAL.byt = 1 } - case 561: + case 573: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2861 +//line sql.y:2917 { yyVAL.empty = struct{}{} } - case 562: + case 574: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2863 +//line sql.y:2919 { yyVAL.empty = struct{}{} } - case 563: + case 575: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2866 +//line sql.y:2922 { yyVAL.str = "" } - case 564: + case 576: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2868 +//line sql.y:2924 { yyVAL.str = IgnoreStr } - case 565: + case 577: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2872 +//line sql.y:2928 { yyVAL.empty = struct{}{} } - case 566: + case 578: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2874 +//line sql.y:2930 { yyVAL.empty = struct{}{} } - case 567: + case 579: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2876 +//line sql.y:2932 { yyVAL.empty = struct{}{} } - case 568: + case 580: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2878 +//line sql.y:2934 { yyVAL.empty = struct{}{} } - case 569: + case 581: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2880 +//line sql.y:2936 { yyVAL.empty = struct{}{} } - case 570: + case 582: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2882 +//line sql.y:2938 { yyVAL.empty = struct{}{} } - case 571: + case 583: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2884 +//line sql.y:2940 { yyVAL.empty = struct{}{} } - case 572: + case 584: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2886 +//line sql.y:2942 { yyVAL.empty = struct{}{} } - case 573: + case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2888 +//line sql.y:2944 { yyVAL.empty = struct{}{} } - case 574: + case 586: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2890 +//line sql.y:2946 { yyVAL.empty = struct{}{} } - case 575: + case 587: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2893 +//line sql.y:2949 { yyVAL.empty = struct{}{} } - case 576: + case 588: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2895 +//line sql.y:2951 { yyVAL.empty = struct{}{} } - case 577: + case 589: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2897 +//line sql.y:2953 { yyVAL.empty = struct{}{} } - case 578: + case 590: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2901 +//line sql.y:2957 { yyVAL.empty = struct{}{} } - case 579: + case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2903 +//line sql.y:2959 { yyVAL.empty = struct{}{} } - case 580: + case 592: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2906 +//line sql.y:2962 { yyVAL.empty = struct{}{} } - case 581: + case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2908 +//line sql.y:2964 { yyVAL.empty = struct{}{} } - case 582: + case 594: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2910 +//line sql.y:2966 { yyVAL.empty = struct{}{} } - case 583: + case 595: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2913 +//line sql.y:2969 { yyVAL.colIdent = ColIdent{} } - case 584: + case 596: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2915 +//line sql.y:2971 { yyVAL.colIdent = yyDollar[2].colIdent } - case 585: + case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2919 +//line sql.y:2975 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 586: + case 598: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2923 +//line sql.y:2979 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 587: + case 599: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2927 +//line sql.y:2983 { yyVAL.colIdent = NewColIdentWithQuotes(string(yyDollar[1].bytes), true) } - case 589: + case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2934 +//line sql.y:2990 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 590: + case 602: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2940 +//line sql.y:2996 { yyVAL.tableIdent = NewTableIdentWithQuotes(yyDollar[1].colIdent.String(), yyDollar[1].colIdent.NeedQuotes()) } - case 592: + case 604: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2947 +//line sql.y:3003 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 783: + case 795: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3163 +//line sql.y:3219 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 784: + case 796: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3172 +//line sql.y:3228 { decNesting(yylex) } - case 785: + case 797: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3177 +//line sql.y:3233 { forceEOF(yylex) } - case 786: + case 798: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3182 +//line sql.y:3238 { forceEOF(yylex) } - case 787: + case 799: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3186 +//line sql.y:3242 { forceEOF(yylex) } - case 788: + case 800: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3190 +//line sql.y:3246 { forceEOF(yylex) } From 60e183a3cccab8f24d732864455637ec30889366 Mon Sep 17 00:00:00 2001 From: storojs72 Date: Fri, 18 Jan 2019 20:00:15 +0200 Subject: [PATCH 04/13] add separate file for partial ast functionality --- sqlparser/ast_methods.go | 1799 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 1799 insertions(+) create mode 100644 sqlparser/ast_methods.go diff --git a/sqlparser/ast_methods.go b/sqlparser/ast_methods.go new file mode 100644 index 000000000..f2cd171a3 --- /dev/null +++ b/sqlparser/ast_methods.go @@ -0,0 +1,1799 @@ +package sqlparser + +import ( + "fmt" + "github.com/cossacklabs/acra/sqlparser/dependency/sqltypes" + "io" + "log" + "strings" +) + +// Parse parses the SQL in full and returns a Statement, which +// is the AST representation of the query. If a DDL statement +// is partially parsed but still contains a syntax error, the +// error is ignored and the DDL is returned anyway. +func Parse(sql string) (Statement, error) { + tokenizer := NewStringTokenizer(sql) + if yyParse(tokenizer) != 0 { + if tokenizer.partialDDL != nil { + log.Printf("ignoring error parsing DDL '%s': %v", sql, tokenizer.LastError) + tokenizer.ParseTree = tokenizer.partialDDL + return tokenizer.ParseTree, nil + } + return nil, tokenizer.LastError + } + return tokenizer.ParseTree, nil +} + +// ParseStrictDDL is the same as Parse except it errors on +// partially parsed DDL statements. +func ParseStrictDDL(sql string) (Statement, error) { + tokenizer := NewStringTokenizer(sql) + if yyParse(tokenizer) != 0 { + return nil, tokenizer.LastError + } + return tokenizer.ParseTree, nil +} + +// ParseNext parses a single SQL statement from the tokenizer +// returning a Statement which is the AST representation of the query. +// The tokenizer will always read up to the end of the statement, allowing for +// the next call to ParseNext to parse any subsequent SQL statements. When +// there are no more statements to parse, a error of io.EOF is returned. +func ParseNext(tokenizer *Tokenizer) (Statement, error) { + if tokenizer.lastChar == ';' { + tokenizer.next() + tokenizer.skipBlank() + } + if tokenizer.lastChar == eofChar { + return nil, io.EOF + } + + tokenizer.reset() + tokenizer.multi = true + if yyParse(tokenizer) != 0 { + if tokenizer.partialDDL != nil { + tokenizer.ParseTree = tokenizer.partialDDL + return tokenizer.ParseTree, nil + } + return nil, tokenizer.LastError + } + return tokenizer.ParseTree, nil +} + +// SplitStatement returns the first sql statement up to either a ; or EOF +// and the remainder from the given buffer +func SplitStatement(blob string) (string, string, error) { + tokenizer := NewStringTokenizer(blob) + tkn := 0 + for { + tkn, _ = tokenizer.Scan() + if tkn == 0 || tkn == ';' || tkn == eofChar { + break + } + } + if tokenizer.LastError != nil { + return "", "", tokenizer.LastError + } + if tkn == ';' { + return blob[:tokenizer.Position-2], blob[tokenizer.Position-1:], nil + } + return blob, "", nil +} + +// SplitStatementToPieces split raw sql statement that may have multi sql pieces to sql pieces +// returns the sql pieces blob contains; or error if sql cannot be parsed +func SplitStatementToPieces(blob string) (pieces []string, err error) { + pieces = make([]string, 0, 16) + tokenizer := NewStringTokenizer(blob) + + tkn := 0 + var stmt string + stmtBegin := 0 + for { + tkn, _ = tokenizer.Scan() + if tkn == ';' { + stmt = blob[stmtBegin : tokenizer.Position-2] + pieces = append(pieces, stmt) + stmtBegin = tokenizer.Position - 1 + + } else if tkn == 0 || tkn == eofChar { + blobTail := tokenizer.Position - 2 + + if stmtBegin < blobTail { + stmt = blob[stmtBegin : blobTail+1] + pieces = append(pieces, stmt) + } + break + } + } + + err = tokenizer.LastError + return +} + +// Format formats the node. +func (node *Select) Format(buf *TrackedBuffer) { + buf.Myprintf("select %v%s%s%s%v from %v%v%v%v%v%v%s", + node.Comments, node.Cache, node.Distinct, node.Hints, node.SelectExprs, + node.From, node.Where, + node.GroupBy, node.Having, node.OrderBy, + node.Limit, node.Lock) +} + +func (node *Select) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Comments, + node.SelectExprs, + node.From, + node.Where, + node.GroupBy, + node.Having, + node.OrderBy, + node.Limit, + ) +} + +// Format formats the node. +func (node *ParenSelect) Format(buf *TrackedBuffer) { + buf.Myprintf("(%v)", node.Select) +} + +func (node *ParenSelect) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Select, + ) +} + +// Format formats the node. +func (node *Union) Format(buf *TrackedBuffer) { + buf.Myprintf("%v %s %v%v%v%s", node.Left, node.Type, node.Right, + node.OrderBy, node.Limit, node.Lock) +} + +func (node *Union) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Left, + node.Right, + ) +} + +// Format formats the node. +func (node *Stream) Format(buf *TrackedBuffer) { + buf.Myprintf("stream %v%v from %v", + node.Comments, node.SelectExpr, node.Table) +} + +func (node *Stream) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Comments, + node.SelectExpr, + node.Table, + ) +} + +// Format formats the node. +func (node *Insert) Format(buf *TrackedBuffer) { + buf.Myprintf("%s %v%sinto %v%v%v %v%v%v", + node.Action, + node.Comments, node.Ignore, + node.Table, node.Partitions, node.Columns, node.Rows, node.OnDup, node.Returning) +} + +func (node *Insert) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Comments, + node.Table, + node.Columns, + node.Rows, + node.OnDup, + ) +} + +// Format formats the node. +func (node *Update) Format(buf *TrackedBuffer) { + buf.Myprintf("update %v%v set %v%v%v%v", + node.Comments, node.TableExprs, + node.Exprs, node.Where, node.OrderBy, node.Limit) +} + +func (node *Update) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Comments, + node.TableExprs, + node.Exprs, + node.Where, + node.OrderBy, + node.Limit, + ) +} + +// Format formats the node. +func (node *Delete) Format(buf *TrackedBuffer) { + buf.Myprintf("delete %v", node.Comments) + if node.Targets != nil { + buf.Myprintf("%v ", node.Targets) + } + buf.Myprintf("from %v%v%v%v%v", node.TableExprs, node.Partitions, node.Where, node.OrderBy, node.Limit) +} + +func (node *Delete) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Comments, + node.Targets, + node.TableExprs, + node.Where, + node.OrderBy, + node.Limit, + ) +} + +// Format formats the node. +func (node *Set) Format(buf *TrackedBuffer) { + if node.Scope == "" { + buf.Myprintf("set %v%v", node.Comments, node.Exprs) + } else { + buf.Myprintf("set %v%s %v", node.Comments, node.Scope, node.Exprs) + } +} + +func (node *Set) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Comments, + node.Exprs, + ) +} + +// Format formats the node. +func (node *DBDDL) Format(buf *TrackedBuffer) { + switch node.Action { + case CreateStr: + buf.WriteString(fmt.Sprintf("%s database %s", node.Action, node.DBName)) + case DropStr: + exists := "" + if node.IfExists { + exists = " if exists" + } + buf.WriteString(fmt.Sprintf("%s database%s %v", node.Action, exists, node.DBName)) + } +} + +// walkSubtree walks the nodes of the subtree. +func (node *DBDDL) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *DDL) Format(buf *TrackedBuffer) { + switch node.Action { + case CreateStr: + if node.TableSpec == nil { + buf.Myprintf("%s table %v", node.Action, node.NewName) + } else { + buf.Myprintf("%s table %v %v", node.Action, node.NewName, node.TableSpec) + } + case DropStr: + exists := "" + if node.IfExists { + exists = " if exists" + } + buf.Myprintf("%s table%s %v", node.Action, exists, node.Table) + case RenameStr: + buf.Myprintf("%s table %v to %v", node.Action, node.Table, node.NewName) + case AlterStr: + if node.PartitionSpec != nil { + buf.Myprintf("%s table %v %v", node.Action, node.Table, node.PartitionSpec) + } else { + buf.Myprintf("%s table %v", node.Action, node.Table) + } + case CreateVindexStr: + buf.Myprintf("%s %v %v", node.Action, node.VindexSpec.Name, node.VindexSpec) + case AddColVindexStr: + buf.Myprintf("alter table %v %s %v (", node.Table, node.Action, node.VindexSpec.Name) + for i, col := range node.VindexCols { + if i != 0 { + buf.Myprintf(", %v", col) + } else { + buf.Myprintf("%v", col) + } + } + buf.Myprintf(")") + if node.VindexSpec.Type.String() != "" { + buf.Myprintf(" %v", node.VindexSpec) + } + case DropColVindexStr: + buf.Myprintf("alter table %v %s %v", node.Table, node.Action, node.VindexSpec.Name) + default: + buf.Myprintf("%s table %v", node.Action, node.Table) + } +} + +func (node *DDL) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Table, + node.NewName, + ) +} + +// Format formats the node. +func (node *PartitionSpec) Format(buf *TrackedBuffer) { + switch node.Action { + case ReorganizeStr: + buf.Myprintf("%s %v into (", node.Action, node.Name) + var prefix string + for _, pd := range node.Definitions { + buf.Myprintf("%s%v", prefix, pd) + prefix = ", " + } + buf.Myprintf(")") + default: + panic("unimplemented") + } +} + +func (node *PartitionSpec) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + if err := Walk(visit, node.Name); err != nil { + return err + } + for _, def := range node.Definitions { + if err := Walk(visit, def); err != nil { + return err + } + } + return nil +} + +// Format formats the node +func (node *PartitionDefinition) Format(buf *TrackedBuffer) { + if !node.Maxvalue { + buf.Myprintf("partition %v values less than (%v)", node.Name, node.Limit) + } else { + buf.Myprintf("partition %v values less than (maxvalue)", node.Name) + } +} + +func (node *PartitionDefinition) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Name, + node.Limit, + ) +} + +// Format formats the node. +func (ts *TableSpec) Format(buf *TrackedBuffer) { + buf.Myprintf("(\n") + for i, col := range ts.Columns { + if i == 0 { + buf.Myprintf("\t%v", col) + } else { + buf.Myprintf(",\n\t%v", col) + } + } + for _, idx := range ts.Indexes { + buf.Myprintf(",\n\t%v", idx) + } + + buf.Myprintf("\n)%s", strings.Replace(ts.Options, ", ", ",\n ", -1)) +} + +func (ts *TableSpec) walkSubtree(visit Visit) error { + if ts == nil { + return nil + } + + for _, n := range ts.Columns { + if err := Walk(visit, n); err != nil { + return err + } + } + + for _, n := range ts.Indexes { + if err := Walk(visit, n); err != nil { + return err + } + } + + return nil +} + +// Format returns a canonical string representation of the type and all relevant options +func (ct *ColumnType) Format(buf *TrackedBuffer) { + buf.Myprintf("%s", ct.Type) + + if ct.Length != nil && ct.Scale != nil { + buf.Myprintf("(%v,%v)", ct.Length, ct.Scale) + + } else if ct.Length != nil { + buf.Myprintf("(%v)", ct.Length) + } + + if ct.EnumValues != nil { + buf.Myprintf("(%s)", strings.Join(ct.EnumValues, ", ")) + } + + opts := make([]string, 0, 16) + if ct.Unsigned { + opts = append(opts, keywordStrings[UNSIGNED]) + } + if ct.Zerofill { + opts = append(opts, keywordStrings[ZEROFILL]) + } + if ct.Charset != "" { + opts = append(opts, keywordStrings[CHARACTER], keywordStrings[SET], ct.Charset) + } + if ct.Collate != "" { + opts = append(opts, keywordStrings[COLLATE], ct.Collate) + } + if ct.NotNull { + opts = append(opts, keywordStrings[NOT], keywordStrings[NULL]) + } + if ct.Default != nil { + opts = append(opts, keywordStrings[DEFAULT], String(ct.Default)) + } + if ct.OnUpdate != nil { + opts = append(opts, keywordStrings[ON], keywordStrings[UPDATE], String(ct.OnUpdate)) + } + if ct.Autoincrement { + opts = append(opts, keywordStrings[AUTO_INCREMENT]) + } + if ct.Comment != nil { + opts = append(opts, keywordStrings[COMMENT_KEYWORD], String(ct.Comment)) + } + if ct.KeyOpt == colKeyPrimary { + opts = append(opts, keywordStrings[PRIMARY], keywordStrings[KEY]) + } + if ct.KeyOpt == colKeyUnique { + opts = append(opts, keywordStrings[UNIQUE]) + } + if ct.KeyOpt == colKeyUniqueKey { + opts = append(opts, keywordStrings[UNIQUE], keywordStrings[KEY]) + } + if ct.KeyOpt == colKeySpatialKey { + opts = append(opts, keywordStrings[SPATIAL], keywordStrings[KEY]) + } + if ct.KeyOpt == colKey { + opts = append(opts, keywordStrings[KEY]) + } + + if len(opts) != 0 { + buf.Myprintf(" %s", strings.Join(opts, " ")) + } +} + +func (ct *ColumnType) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (idx *IndexDefinition) Format(buf *TrackedBuffer) { + buf.Myprintf("%v (", idx.Info) + for i, col := range idx.Columns { + if i != 0 { + buf.Myprintf(", %v", col.Column) + } else { + buf.Myprintf("%v", col.Column) + } + if col.Length != nil { + buf.Myprintf("(%v)", col.Length) + } + } + buf.Myprintf(")") + + for _, opt := range idx.Options { + buf.Myprintf(" %s", opt.Name) + if opt.Using != "" { + buf.Myprintf(" %s", opt.Using) + } else { + buf.Myprintf(" %v", opt.Value) + } + } +} + +func (idx *IndexDefinition) walkSubtree(visit Visit) error { + if idx == nil { + return nil + } + + for _, n := range idx.Columns { + if err := Walk(visit, n.Column); err != nil { + return err + } + } + + return nil +} + +// Format formats the node. +func (ii *IndexInfo) Format(buf *TrackedBuffer) { + if ii.Primary { + buf.Myprintf("%s", ii.Type) + } else { + buf.Myprintf("%s %v", ii.Type, ii.Name) + } +} + +func (ii *IndexInfo) walkSubtree(visit Visit) error { + return Walk(visit, ii.Name) +} + +// Format formats the node. The "CREATE VINDEX" preamble was formatted in +// the containing DDL node Format, so this just prints the type, any +// parameters, and optionally the owner +func (node *VindexSpec) Format(buf *TrackedBuffer) { + buf.Myprintf("using %v", node.Type) + + numParams := len(node.Params) + if numParams != 0 { + buf.Myprintf(" with ") + for i, p := range node.Params { + if i != 0 { + buf.Myprintf(", ") + } + buf.Myprintf("%v", p) + } + } +} + +func (node *VindexSpec) walkSubtree(visit Visit) error { + err := Walk(visit, + node.Name, + ) + + if err != nil { + return err + } + + for _, p := range node.Params { + err := Walk(visit, p) + + if err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node VindexParam) Format(buf *TrackedBuffer) { + buf.Myprintf("%s=%s", node.Key.String(), node.Val) +} + +func (node VindexParam) walkSubtree(visit Visit) error { + return Walk(visit, + node.Key, + ) +} + +// Format formats the node. +func (node *Show) Format(buf *TrackedBuffer) { + if node.Type == "tables" && node.ShowTablesOpt != nil { + opt := node.ShowTablesOpt + if opt.DbName != "" { + if opt.Filter != nil { + buf.Myprintf("show %s%stables from %s %v", opt.Extended, opt.Full, opt.DbName, opt.Filter) + } else { + buf.Myprintf("show %s%stables from %s", opt.Extended, opt.Full, opt.DbName) + } + } else { + if opt.Filter != nil { + buf.Myprintf("show %s%stables %v", opt.Extended, opt.Full, opt.Filter) + } else { + buf.Myprintf("show %s%stables", opt.Extended, opt.Full) + } + } + return + } + if node.Scope == "" { + buf.Myprintf("show %s", node.Type) + } else { + buf.Myprintf("show %s %s", node.Scope, node.Type) + } + if node.HasOnTable() { + buf.Myprintf(" on %v", node.OnTable) + } +} + +func (node *Show) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *ShowFilter) Format(buf *TrackedBuffer) { + if node.Like != "" { + buf.Myprintf("like '%s'", node.Like) + } else { + buf.Myprintf("where %v", node.Filter) + } +} + +func (node *ShowFilter) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *Use) Format(buf *TrackedBuffer) { + if node.DBName.v != "" { + buf.Myprintf("use %v", node.DBName) + } else { + buf.Myprintf("use") + } +} + +func (node *Use) walkSubtree(visit Visit) error { + return Walk(visit, node.DBName) +} + +// Format formats the node. +func (node *Begin) Format(buf *TrackedBuffer) { + buf.WriteString("begin") +} + +func (node *Begin) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *Commit) Format(buf *TrackedBuffer) { + buf.WriteString("commit") +} + +func (node *Commit) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *Rollback) Format(buf *TrackedBuffer) { + buf.WriteString("rollback") +} + +func (node *Rollback) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *OtherRead) Format(buf *TrackedBuffer) { + buf.WriteString("otherread") +} + +func (node *OtherRead) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *OtherAdmin) Format(buf *TrackedBuffer) { + buf.WriteString("otheradmin") +} + +func (node *OtherAdmin) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node +func (node UsingInExecuteList) Format(buf *TrackedBuffer) { + +} + +func (node UsingInExecuteList) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node *Execute) Format(buf *TrackedBuffer) { + if node.Using == nil { + buf.Myprintf("execute %v", node.PreparedStatementName) + } else { + buf.Myprintf("execute %v using ", node.PreparedStatementName) + var prefix string + for _, singleUsing := range node.Using { + buf.Myprintf("%s%v", prefix, singleUsing) + prefix = ", " + } + } + +} + +func (node *Execute) walkSubtree(visit Visit) error { + return Walk(visit, node.Using, node.PreparedStatementName) +} + +// Format formats the node. +func (node *Prepare) Format(buf *TrackedBuffer) { + buf.Myprintf("prepare %v from %v", node.PreparedStatementName, node.From) +} + +func (node *Prepare) walkSubtree(visit Visit) error { + return Walk(visit, node.PreparedStatementName, node.From) +} + +// Format formats the node. +func (node *DeallocatePrepare) Format(buf *TrackedBuffer) { + buf.Myprintf("deallocate prepare %v", node.PreparedStatementName) +} + +func (node *DeallocatePrepare) walkSubtree(visit Visit) error { + return Walk(visit, node.PreparedStatementName) +} + +// Format formats the node. +func (node Comments) Format(buf *TrackedBuffer) { + for _, c := range node { + buf.Myprintf("%s ", c) + } +} + +func (node Comments) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node SelectExprs) Format(buf *TrackedBuffer) { + var prefix string + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } +} + +func (node SelectExprs) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node *StarExpr) Format(buf *TrackedBuffer) { + if !node.TableName.IsEmpty() { + buf.Myprintf("%v.", node.TableName) + } + buf.Myprintf("*") +} + +func (node *StarExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.TableName, + ) +} + +// Format formats the node. +func (node *AliasedExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%v", node.Expr) + if !node.As.IsEmpty() { + buf.Myprintf(" as %v", node.As) + } +} + +func (node *AliasedExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + node.As, + ) +} + +// Format formats the node. +func (node Nextval) Format(buf *TrackedBuffer) { + buf.Myprintf("next %v values", node.Expr) +} + +func (node Nextval) walkSubtree(visit Visit) error { + return Walk(visit, node.Expr) +} + +// Format formats the node. +func (node Columns) Format(buf *TrackedBuffer) { + if node == nil { + return + } + prefix := "(" + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } + buf.WriteString(")") +} + +func (node Columns) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node +func (node Partitions) Format(buf *TrackedBuffer) { + if node == nil { + return + } + prefix := " partition (" + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } + buf.WriteString(")") +} + +func (node Partitions) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node TableExprs) Format(buf *TrackedBuffer) { + var prefix string + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } +} + +func (node TableExprs) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node *AliasedTableExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%v%v", node.Expr, node.Partitions) + if !node.As.IsEmpty() { + buf.Myprintf(" as %v", node.As) + } + if node.Hints != nil { + // Hint node provides the space padding. + buf.Myprintf("%v", node.Hints) + } +} + +func (node *AliasedTableExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + node.As, + node.Hints, + ) +} + +// Format formats the node. +func (node TableNames) Format(buf *TrackedBuffer) { + var prefix string + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } +} + +func (node TableNames) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node TableName) Format(buf *TrackedBuffer) { + if node.IsEmpty() { + return + } + if !node.Qualifier.IsEmpty() { + buf.Myprintf("%v.", node.Qualifier) + } + buf.Myprintf("%v", node.Name) +} + +func (node TableName) walkSubtree(visit Visit) error { + return Walk( + visit, + node.Name, + node.Qualifier, + ) +} + +// Format formats the node. +func (node *ParenTableExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("(%v)", node.Exprs) +} + +func (node *ParenTableExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Exprs, + ) +} + +// Format formats the node. +func (node JoinCondition) Format(buf *TrackedBuffer) { + if node.On != nil { + buf.Myprintf(" on %v", node.On) + } + if node.Using != nil { + buf.Myprintf(" using %v", node.Using) + } +} + +func (node JoinCondition) walkSubtree(visit Visit) error { + return Walk( + visit, + node.On, + node.Using, + ) +} + +// Format formats the node. +func (node *JoinTableExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%v %s %v%v", node.LeftExpr, node.Join, node.RightExpr, node.Condition) +} + +func (node *JoinTableExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.LeftExpr, + node.RightExpr, + node.Condition, + ) +} + +// Format formats the node. +func (node *IndexHints) Format(buf *TrackedBuffer) { + buf.Myprintf(" %sindex ", node.Type) + prefix := "(" + for _, n := range node.Indexes { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } + buf.Myprintf(")") +} + +func (node *IndexHints) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + for _, n := range node.Indexes { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node *Where) Format(buf *TrackedBuffer) { + if node == nil || node.Expr == nil { + return + } + buf.Myprintf(" %s %v", node.Type, node.Expr) +} + +func (node *Where) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + ) +} + +// Format formats the node. +func (node Exprs) Format(buf *TrackedBuffer) { + var prefix string + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } +} + +func (node Exprs) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node *AndExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%v and %v", node.Left, node.Right) +} + +func (node *AndExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Left, + node.Right, + ) +} + +// Format formats the node. +func (node *OrExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%v or %v", node.Left, node.Right) +} + +func (node *OrExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Left, + node.Right, + ) +} + +// Format formats the node. +func (node *NotExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("not %v", node.Expr) +} + +func (node *NotExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + ) +} + +// Format formats the node. +func (node *ParenExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("(%v)", node.Expr) +} + +func (node *ParenExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + ) +} + +// Format formats the node. +func (node *ComparisonExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%v %s %v", node.Left, node.Operator, node.Right) + if node.Escape != nil { + buf.Myprintf(" escape %v", node.Escape) + } +} + +func (node *ComparisonExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Left, + node.Right, + node.Escape, + ) +} + +// Format formats the node. +func (node *RangeCond) Format(buf *TrackedBuffer) { + buf.Myprintf("%v %s %v and %v", node.Left, node.Operator, node.From, node.To) +} + +func (node *RangeCond) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Left, + node.From, + node.To, + ) +} + +// Format formats the node. +func (node *IsExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%v %s", node.Expr, node.Operator) +} + +func (node *IsExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + ) +} + +// Format formats the node. +func (node *ExistsExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("exists %v", node.Subquery) +} + +func (node *ExistsExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Subquery, + ) +} + +// Format formats the node. +func (node *SQLVal) Format(buf *TrackedBuffer) { + switch node.Type { + case StrVal: + sqltypes.MakeTrusted(sqltypes.VarBinary, node.Val).EncodeSQL(buf) + case IntVal, FloatVal, HexNum: + buf.Myprintf("%s", []byte(node.Val)) + case HexVal: + buf.Myprintf("X'%s'", []byte(node.Val)) + case BitVal: + buf.Myprintf("B'%s'", []byte(node.Val)) + case ValArg: + buf.WriteArg(string(node.Val)) + case PgEscapeString: + buf.Myprintf("E'%s'", sqltypes.EncodeBytesSQLWithoutQuotes(node.Val)) + default: + panic("unexpected") + } + if len(node.CastType) > 0 { + buf.Myprintf("%s", node.CastType) + } +} + +func (node *SQLVal) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *NullVal) Format(buf *TrackedBuffer) { + buf.Myprintf("null") +} + +func (node *NullVal) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node BoolVal) Format(buf *TrackedBuffer) { + if node { + buf.Myprintf("true") + } else { + buf.Myprintf("false") + } +} + +func (node BoolVal) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *ColName) Format(buf *TrackedBuffer) { + if !node.Qualifier.IsEmpty() { + buf.Myprintf("%v.", node.Qualifier) + } + buf.Myprintf("%v", node.Name) +} + +func (node *ColName) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Name, + node.Qualifier, + ) +} + +// Format formats the node. +func (node ValTuple) Format(buf *TrackedBuffer) { + buf.Myprintf("(%v)", Exprs(node)) +} + +func (node ValTuple) walkSubtree(visit Visit) error { + return Walk(visit, Exprs(node)) +} + +// Format formats the node. +func (node *Subquery) Format(buf *TrackedBuffer) { + buf.Myprintf("(%v)", node.Select) +} + +func (node *Subquery) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Select, + ) +} + +// Format formats the node. +func (node ListArg) Format(buf *TrackedBuffer) { + buf.WriteArg(string(node)) +} + +func (node ListArg) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *BinaryExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%v %s %v", node.Left, node.Operator, node.Right) +} + +func (node *BinaryExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Left, + node.Right, + ) +} + +// Format formats the node. +func (node *UnaryExpr) Format(buf *TrackedBuffer) { + if _, unary := node.Expr.(*UnaryExpr); unary { + buf.Myprintf("%s %v", node.Operator, node.Expr) + return + } + buf.Myprintf("%s%v", node.Operator, node.Expr) +} + +func (node *UnaryExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + ) +} + +// Format formats the node. +func (node *IntervalExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("interval %v %s", node.Expr, node.Unit) +} + +func (node *IntervalExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + ) +} + +// Format formats the node. +func (node *CollateExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%v collate %s", node.Expr, node.Charset) +} + +func (node *CollateExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + ) +} + +// Format formats the node. +func (node *FuncExpr) Format(buf *TrackedBuffer) { + var distinct string + if node.Distinct { + distinct = "distinct " + } + if !node.Qualifier.IsEmpty() { + buf.Myprintf("%v.", node.Qualifier) + } + // Function names should not be back-quoted even + // if they match a reserved word. So, print the + // name as is. + buf.Myprintf("%s(%s%v)", node.Name.String(), distinct, node.Exprs) +} + +func (node *FuncExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Qualifier, + node.Name, + node.Exprs, + ) +} + +// Format formats the node +func (node *GroupConcatExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("group_concat(%s%v%v%s)", node.Distinct, node.Exprs, node.OrderBy, node.Separator) +} + +func (node *GroupConcatExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Exprs, + node.OrderBy, + ) +} + +// Format formats the node. +func (node *ValuesFuncExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("values(%v)", node.Name) +} + +func (node *ValuesFuncExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Name, + ) +} + +// Format formats the node. +func (node *SubstrExpr) Format(buf *TrackedBuffer) { + + if node.To == nil { + buf.Myprintf("substr(%v, %v)", node.Name, node.From) + } else { + buf.Myprintf("substr(%v, %v, %v)", node.Name, node.From, node.To) + } +} + +func (node *SubstrExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Name, + node.From, + node.To, + ) +} + +// Format formats the node. +func (node *ConvertExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("convert(%v, %v)", node.Expr, node.Type) +} + +func (node *ConvertExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + node.Type, + ) +} + +// Format formats the node. +func (node *ConvertUsingExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("convert(%v using %s)", node.Expr, node.Type) +} + +func (node *ConvertUsingExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + ) +} + +// Format formats the node. +func (node *ConvertType) Format(buf *TrackedBuffer) { + buf.Myprintf("%s", node.Type) + if node.Length != nil { + buf.Myprintf("(%v", node.Length) + if node.Scale != nil { + buf.Myprintf(", %v", node.Scale) + } + buf.Myprintf(")") + } + if node.Charset != "" { + buf.Myprintf("%s %s", node.Operator, node.Charset) + } +} + +func (node *ConvertType) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node +func (node *MatchExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("match(%v) against (%v%s)", node.Columns, node.Expr, node.Option) +} + +func (node *MatchExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Columns, + node.Expr, + ) +} + +// Format formats the node. +func (node *CaseExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("case ") + if node.Expr != nil { + buf.Myprintf("%v ", node.Expr) + } + for _, when := range node.Whens { + buf.Myprintf("%v ", when) + } + if node.Else != nil { + buf.Myprintf("else %v ", node.Else) + } + buf.Myprintf("end") +} + +func (node *CaseExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + if err := Walk(visit, node.Expr); err != nil { + return err + } + for _, n := range node.Whens { + if err := Walk(visit, n); err != nil { + return err + } + } + return Walk(visit, node.Else) +} + +// Format formats the node. +func (node *Default) Format(buf *TrackedBuffer) { + buf.Myprintf("default") + if node.ColName != "" { + buf.Myprintf("(%s)", node.ColName) + } +} + +func (node *Default) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node *When) Format(buf *TrackedBuffer) { + buf.Myprintf("when %v then %v", node.Cond, node.Val) +} + +func (node *When) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Cond, + node.Val, + ) +} + +// Format formats the node. +func (node GroupBy) Format(buf *TrackedBuffer) { + prefix := " group by " + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } +} + +func (node GroupBy) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node OrderBy) Format(buf *TrackedBuffer) { + prefix := " order by " + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } +} + +func (node OrderBy) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node *Order) Format(buf *TrackedBuffer) { + if node, ok := node.Expr.(*NullVal); ok { + buf.Myprintf("%v", node) + return + } + if node, ok := node.Expr.(*FuncExpr); ok { + if node.Name.Lowered() == "rand" { + buf.Myprintf("%v", node) + return + } + } + + buf.Myprintf("%v %s", node.Expr, node.Direction) +} + +func (node *Order) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Expr, + ) +} + +// Format formats the node. +func (node *Limit) Format(buf *TrackedBuffer) { + if node == nil { + return + } + buf.Myprintf(" limit ") + if node.Offset != nil { + buf.Myprintf("%v, ", node.Offset) + } + buf.Myprintf("%v", node.Rowcount) +} + +func (node *Limit) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Offset, + node.Rowcount, + ) +} + +// Format formats the node. +func (node Values) Format(buf *TrackedBuffer) { + prefix := "values " + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } +} + +func (node Values) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node UpdateExprs) Format(buf *TrackedBuffer) { + var prefix string + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } +} + +func (node UpdateExprs) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node *UpdateExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%v = %v", node.Name, node.Expr) +} + +func (node *UpdateExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Name, + node.Expr, + ) +} + +// Format formats the node. +func (node SetExprs) Format(buf *TrackedBuffer) { + var prefix string + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } +} + +func (node SetExprs) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, n); err != nil { + return err + } + } + return nil +} + +// Format formats the node. +func (node *SetExpr) Format(buf *TrackedBuffer) { + // We don't have to backtick set variable names. + if node.Name.EqualString("charset") || node.Name.EqualString("names") { + buf.Myprintf("%s %v", node.Name.String(), node.Expr) + } else { + buf.Myprintf("%s = %v", node.Name.String(), node.Expr) + } +} + +func (node *SetExpr) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk( + visit, + node.Name, + node.Expr, + ) +} + +// Format formats the node. +func (node OnDup) Format(buf *TrackedBuffer) { + if node == nil { + return + } + buf.Myprintf(" on duplicate key update %v", UpdateExprs(node)) +} + +func (node OnDup) walkSubtree(visit Visit) error { + return Walk(visit, UpdateExprs(node)) +} + +// Format formats the node. +func (node Returning) Format(buf *TrackedBuffer) { + if node == nil { + return + } + buf.Myprintf(" returning %v", Exprs(node)) +} + +func (node Returning) walkSubtree(visit Visit) error { + return Walk(visit, Exprs(node)) +} + +// Format formats the node. +func (node ColIdent) Format(buf *TrackedBuffer) { + if node.wrapWithQuotes { + // print as is in quotes + buf.Myprintf(`"%s"`, node.val) + } else { + formatID(buf, node.val, node.Lowered()) + } + +} + +func (node ColIdent) walkSubtree(visit Visit) error { + return nil +} + +// Format formats the node. +func (node TableIdent) Format(buf *TrackedBuffer) { + if node.wrapWithQuotes { + // print as is in quotes + buf.Myprintf(`"%s"`, node.v) + } else { + formatID(buf, node.v, strings.ToLower(node.v)) + } + +} + +func (node TableIdent) walkSubtree(visit Visit) error { + return nil +} From e6d06c8706a4e9bb8aad236a80595edc1bccf95a Mon Sep 17 00:00:00 2001 From: storojs72 Date: Sun, 20 Jan 2019 19:55:09 +0200 Subject: [PATCH 05/13] add partial support of postgresql prepare statement --- sqlparser/ast.go | 4 + sqlparser/ast_methods.go | 15 +- sqlparser/parse_test.go | 3 + sqlparser/sql.go | 4263 +++++++++++++++++++------------------- sqlparser/sql.y | 18 +- 5 files changed, 2175 insertions(+), 2128 deletions(-) diff --git a/sqlparser/ast.go b/sqlparser/ast.go index a9ab42990..5a7b47bf0 100644 --- a/sqlparser/ast.go +++ b/sqlparser/ast.go @@ -292,6 +292,7 @@ type Insert struct { Comments Comments Ignore string Table TableName + Default bool Partitions Partitions Columns Columns Rows InsertRows @@ -739,6 +740,9 @@ type FromInPrepare interface { func (TableIdent) iFromInPrepare() {} func (*SQLVal) iFromInPrepare() {} +// dictates by PostgreSQL +func (*Select) iFromInPrepare() {} +func (*Insert) iFromInPrepare() {} type UsingInExecuteList []TableIdent diff --git a/sqlparser/ast_methods.go b/sqlparser/ast_methods.go index f2cd171a3..59029c249 100644 --- a/sqlparser/ast_methods.go +++ b/sqlparser/ast_methods.go @@ -190,10 +190,17 @@ func (node *Stream) walkSubtree(visit Visit) error { // Format formats the node. func (node *Insert) Format(buf *TrackedBuffer) { - buf.Myprintf("%s %v%sinto %v%v%v %v%v%v", - node.Action, - node.Comments, node.Ignore, - node.Table, node.Partitions, node.Columns, node.Rows, node.OnDup, node.Returning) + if !node.Default { + buf.Myprintf("%s %v%sinto %v%v%v %v%v%v", + node.Action, + node.Comments, node.Ignore, + node.Table, node.Partitions, node.Columns, node.Rows, node.OnDup, node.Returning) + } else { + buf.Myprintf("%s %v%sinto %v default values", + node.Action, + node.Comments, node.Ignore, + node.Table) + } } func (node *Insert) walkSubtree(visit Visit) error { diff --git a/sqlparser/parse_test.go b/sqlparser/parse_test.go index b0938665c..786554548 100644 --- a/sqlparser/parse_test.go +++ b/sqlparser/parse_test.go @@ -1945,6 +1945,9 @@ func TestPreparedStatements(t *testing.T) { `execute stmt1 using @variable`, `execute stmt1 using @variable1, @variable2`, `deallocate prepare stmt1`, + `prepare test_statement as select * from test`, + `prepare test_statement as insert into test default values`, + `prepare test_statement as insert into test(id, data) values(1, DEFAULT)`, } for _, query := range testQueries { diff --git a/sqlparser/sql.go b/sqlparser/sql.go index 9d320263f..0c2ca41bb 100644 --- a/sqlparser/sql.go +++ b/sqlparser/sql.go @@ -612,386 +612,299 @@ var yyExca = [...]int{ 5, 30, -2, 4, -1, 39, - 151, 265, - 152, 265, - -2, 255, + 151, 266, + 152, 266, + -2, 256, -1, 247, - 110, 602, - -2, 499, + 110, 606, + -2, 503, -1, 265, - 53, 599, - 110, 599, - 111, 599, - 112, 599, - -2, 502, + 53, 603, + 110, 603, + 111, 603, + 112, 603, + -2, 506, -1, 316, - 81, 760, - -2, 61, - -1, 317, - 81, 721, + 81, 764, -2, 62, + -1, 317, + 81, 725, + -2, 63, -1, 322, - 81, 705, - -2, 564, + 81, 709, + -2, 568, -1, 324, - 81, 742, - -2, 566, - -1, 586, - 52, 44, - 54, 44, - -2, 46, - -1, 724, - 110, 604, - -2, 601, - -1, 725, - 110, 602, - -2, 600, - -1, 771, - 110, 602, - -2, 499, - -1, 930, + 81, 746, + -2, 570, + -1, 587, + 52, 45, + 54, 45, + -2, 47, + -1, 728, + 110, 608, + -2, 605, + -1, 729, + 110, 606, + -2, 604, + -1, 775, + 110, 606, + -2, 503, + -1, 935, 5, 31, - -2, 404, - -1, 955, + -2, 408, + -1, 960, 5, 30, - -2, 536, - -1, 1182, + -2, 540, + -1, 1188, 5, 31, - -2, 537, - -1, 1228, + -2, 541, + -1, 1234, 5, 30, - -2, 539, - -1, 1290, + -2, 543, + -1, 1296, 5, 31, - -2, 540, + -2, 544, } const yyPrivate = 57344 -const yyLast = 9429 +const yyLast = 9328 var yyAct = [...]int{ - 247, 1281, 871, 534, 1239, 656, 1188, 788, 1088, 249, - 276, 1116, 806, 581, 1089, 579, 828, 865, 1016, 789, - 827, 1085, 974, 321, 750, 226, 837, 922, 1062, 1007, - 596, 1019, 958, 777, 80, 963, 466, 757, 192, 472, - 785, 192, 59, 217, 727, 861, 418, 595, 568, 486, - 277, 53, 192, 478, 315, 824, 250, 533, 3, 583, - 904, 235, 303, 312, 754, 310, 58, 1177, 192, 192, - 320, 851, 1310, 1300, 192, 1308, 423, 1288, 1306, 302, - 888, 872, 1299, 301, 1287, 1080, 1174, 422, 1248, 548, - 218, 219, 220, 221, 887, 443, 1111, 1112, 820, 821, - 464, 1110, 756, 239, 53, 1122, 1123, 1124, 597, 685, - 598, 225, 231, 1127, 1125, 819, 686, 458, 307, 998, - 63, 892, 188, 184, 185, 186, 844, 1200, 1063, 1215, - 852, 886, 1263, 498, 497, 507, 508, 500, 501, 502, - 503, 504, 505, 506, 499, 1163, 1161, 509, 65, 66, - 67, 68, 69, 222, 982, 216, 1307, 981, 1065, 445, - 983, 447, 454, 455, 1305, 1282, 448, 431, 1040, 786, - 807, 809, 1037, 432, 425, 1240, 1246, 182, 1039, 883, - 880, 881, 192, 879, 192, 664, 444, 446, 839, 1242, - 192, 655, 241, 1067, 428, 1071, 192, 1066, 973, 1064, - 320, 320, 320, 320, 1069, 320, 972, 839, 890, 893, - 839, 971, 320, 1068, 195, 181, 419, 182, 420, 183, - 522, 523, 1268, 192, 1185, 1049, 1070, 1072, 502, 503, - 504, 505, 506, 499, 187, 992, 509, 938, 916, 698, - 825, 489, 488, 438, 1131, 808, 885, 509, 695, 1044, - 449, 449, 449, 449, 852, 449, 1241, 499, 485, 1273, - 509, 1141, 449, 245, 734, 961, 484, 483, 884, 483, - 442, 1038, 474, 1036, 1247, 1245, 1126, 898, 732, 733, - 731, 838, 53, 485, 1286, 485, 836, 834, 599, 475, - 835, 1264, 1082, 1027, 778, 1132, 945, 518, 519, 521, - 838, 192, 778, 838, 659, 889, 841, 996, 192, 192, - 192, 842, 701, 702, 320, 913, 914, 915, 891, 845, - 601, 1025, 1276, 935, 480, 525, 1043, 1292, 536, 537, - 538, 539, 540, 541, 542, 543, 544, 424, 547, 549, - 549, 549, 549, 549, 549, 549, 549, 557, 558, 559, - 560, 24, 180, 476, 434, 435, 436, 899, 580, 484, - 483, 716, 718, 719, 1271, 1206, 717, 451, 452, 453, - 1205, 456, 484, 483, 1011, 587, 485, 593, 460, 550, - 551, 552, 553, 554, 555, 556, 1026, 689, 690, 485, - 691, 1031, 1028, 1021, 1022, 1029, 1024, 1023, 507, 508, - 500, 501, 502, 503, 504, 505, 506, 499, 1030, 1010, - 509, 999, 56, 230, 1033, 426, 427, 484, 483, 300, - 469, 473, 320, 730, 1084, 1293, 1274, 1222, 192, 192, - 320, 934, 192, 933, 485, 192, 1203, 490, 1119, 192, - 1149, 320, 320, 320, 320, 320, 320, 320, 320, 751, - 484, 483, 752, 1008, 1118, 320, 320, 1296, 465, 465, - 192, 993, 673, 984, 192, 1232, 1279, 485, 1232, 465, - 535, 874, 449, 1232, 1233, 1197, 1196, 1252, 707, 546, - 449, 753, 192, 670, 450, 1107, 465, 1251, 488, 669, - 725, 449, 449, 449, 449, 449, 449, 449, 449, 671, - 703, 1184, 465, 728, 660, 449, 449, 1138, 1137, 1134, - 1135, 1134, 1133, 724, 928, 465, 1128, 26, 526, 527, - 528, 529, 530, 531, 532, 500, 501, 502, 503, 504, - 505, 506, 499, 761, 658, 509, 653, 720, 705, 565, - 465, 953, 771, 771, 954, 763, 465, 564, 771, 440, - 722, 770, 773, 433, 318, 605, 604, 779, 419, 590, - 224, 960, 959, 192, 56, 771, 192, 192, 192, 192, - 192, 565, 53, 960, 790, 813, 704, 589, 192, 758, - 760, 192, 763, 1086, 1180, 192, 959, 536, 654, 192, - 192, 565, 1140, 320, 765, 1136, 663, 60, 775, 985, - 591, 697, 589, 565, 814, 320, 1052, 674, 675, 676, - 677, 678, 679, 680, 681, 959, 307, 307, 307, 307, - 307, 682, 683, 782, 940, 803, 26, 812, 26, 792, - 793, 580, 795, 810, 762, 764, 928, 696, 765, 307, - 766, 767, 817, 818, 811, 791, 774, 816, 794, 928, - 780, 928, 831, 1227, 484, 483, 192, 937, 900, 320, - 781, 320, 783, 784, 592, 192, 699, 939, 192, 320, - 867, 485, 56, 56, 1210, 56, 713, 714, 846, 657, - 805, 232, 1027, 273, 266, 759, 268, 269, 270, 271, - 853, 854, 855, 267, 272, 863, 864, 866, 1101, 725, - 936, 570, 573, 574, 575, 571, 988, 572, 576, 449, - 1025, 449, 964, 965, 570, 573, 574, 575, 571, 449, - 572, 576, 724, 862, 964, 965, 970, 857, 56, 535, - 856, 71, 768, 769, 253, 869, 463, 1121, 1086, 905, - 906, 1012, 728, 498, 497, 507, 508, 500, 501, 502, - 503, 504, 505, 506, 499, 726, 967, 509, 735, 736, - 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, - 747, 748, 749, 667, 917, 1026, 918, 459, 711, 969, - 1031, 1028, 1021, 1022, 1029, 1024, 1023, 797, 800, 923, - 798, 796, 823, 801, 1304, 799, 1298, 1030, 318, 236, - 237, 901, 306, 1020, 802, 1048, 574, 575, 479, 1303, - 944, 975, 911, 912, 192, 910, 1003, 1278, 603, 467, - 441, 995, 477, 1277, 1225, 875, 989, 877, 320, 977, - 968, 468, 1178, 1211, 876, 896, 956, 957, 666, 578, - 233, 234, 479, 955, 986, 976, 227, 978, 909, 979, - 1257, 228, 1213, 60, 925, 926, 908, 1256, 927, 960, - 481, 462, 990, 991, 307, 1265, 930, 931, 932, 1201, - 1013, 320, 694, 320, 62, 941, 64, 588, 942, 57, - 947, 1, 948, 949, 950, 951, 692, 1009, 688, 902, - 903, 1176, 473, 524, 873, 1015, 320, 882, 1280, 192, - 192, 192, 1238, 1115, 833, 826, 417, 1002, 192, 1004, - 1005, 1006, 1032, 70, 1272, 832, 1244, 320, 1199, 1000, - 1001, 449, 1018, 840, 997, 843, 1120, 1275, 994, 610, - 608, 609, 607, 847, 848, 849, 850, 612, 611, 725, - 606, 203, 313, 470, 577, 600, 449, 1056, 868, 858, - 859, 860, 482, 82, 771, 72, 929, 1094, 975, 1073, - 771, 1087, 724, 790, 1074, 1090, 1061, 1035, 1034, 790, - 878, 946, 1042, 684, 723, 897, 457, 205, 517, 1097, - 1095, 191, 1055, 520, 215, 1081, 320, 907, 320, 1117, - 980, 319, 1093, 700, 471, 223, 919, 920, 921, 1255, - 1212, 1096, 943, 545, 1114, 1091, 1113, 53, 776, 242, - 1109, 191, 191, 192, 1092, 252, 715, 191, 264, 1108, - 261, 1143, 1103, 1104, 1105, 263, 262, 706, 1060, 952, - 491, 251, 243, 305, 1145, 192, 561, 1014, 569, 567, - 566, 1148, 306, 966, 962, 304, 1051, 1173, 1262, 710, - 320, 28, 61, 192, 238, 23, 1129, 1130, 22, 21, - 19, 18, 1041, 1142, 17, 20, 16, 15, 1152, 14, - 32, 13, 12, 11, 10, 1106, 1144, 318, 9, 1147, - 8, 7, 6, 5, 1151, 1159, 4, 229, 25, 829, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1189, 307, 1189, 1189, 1189, 192, 1194, 1179, - 1190, 1191, 1192, 0, 320, 0, 0, 0, 0, 0, - 1193, 0, 1187, 0, 0, 191, 0, 191, 0, 0, - 986, 1172, 0, 191, 1195, 0, 0, 0, 1083, 191, - 320, 320, 320, 0, 0, 0, 308, 0, 0, 0, - 0, 0, 0, 1098, 1099, 0, 1153, 1100, 1209, 1208, - 1102, 0, 0, 1155, 0, 0, 461, 0, 0, 0, - 0, 0, 0, 0, 1164, 1165, 1166, 0, 0, 1169, - 0, 1224, 0, 723, 190, 1230, 1231, 1058, 1059, 0, - 449, 1090, 1181, 1182, 1183, 1226, 1186, 0, 1117, 0, - 1075, 1076, 0, 1078, 1079, 1202, 1237, 1204, 0, 1243, - 0, 1189, 0, 0, 0, 311, 0, 1253, 0, 0, - 421, 0, 0, 0, 0, 0, 0, 729, 0, 1214, - 0, 1091, 0, 1269, 1229, 0, 1266, 1150, 1090, 0, - 0, 1228, 0, 1270, 191, 0, 0, 0, 0, 0, - 0, 191, 585, 191, 0, 0, 0, 0, 1249, 0, - 1250, 1284, 1254, 0, 0, 0, 771, 0, 0, 1291, - 0, 0, 0, 1289, 1221, 790, 0, 1175, 1091, 0, - 53, 0, 0, 1297, 535, 1294, 0, 1267, 0, 0, - 0, 1234, 1235, 1236, 0, 0, 0, 1301, 1302, 0, - 306, 306, 306, 306, 306, 0, 1207, 1170, 465, 0, - 0, 0, 829, 0, 0, 306, 0, 1258, 1259, 1260, - 1261, 1154, 0, 306, 0, 0, 0, 0, 429, 0, - 430, 0, 0, 0, 0, 0, 437, 0, 0, 0, - 0, 0, 439, 0, 0, 498, 497, 507, 508, 500, - 501, 502, 503, 504, 505, 506, 499, 1017, 1309, 509, - 0, 0, 0, 1285, 0, 0, 0, 0, 1290, 0, - 535, 191, 191, 0, 0, 191, 0, 0, 191, 0, - 0, 1295, 672, 1156, 1157, 0, 1158, 0, 0, 1160, - 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1054, 0, 191, 0, 0, 0, 693, 0, 0, - 0, 0, 1313, 1314, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1077, 0, 191, 0, 0, 0, 0, - 0, 1216, 1217, 672, 1218, 1219, 1220, 1198, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 563, 0, 1283, - 535, 0, 0, 0, 0, 0, 586, 0, 0, 0, - 0, 0, 0, 242, 0, 0, 729, 0, 0, 0, - 829, 0, 829, 0, 0, 0, 0, 0, 0, 0, - 0, 242, 242, 0, 0, 772, 772, 242, 0, 0, - 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 242, 242, 242, 242, 0, 191, 0, 772, 191, - 191, 191, 191, 191, 0, 0, 0, 0, 0, 0, - 0, 804, 0, 0, 191, 0, 0, 0, 585, 0, - 0, 0, 191, 191, 1054, 0, 26, 27, 54, 29, - 30, 0, 201, 0, 0, 0, 0, 0, 306, 465, - 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 211, 0, 0, 0, - 0, 0, 0, 1311, 661, 662, 0, 0, 665, 40, - 0, 668, 0, 56, 0, 0, 498, 497, 507, 508, - 500, 501, 502, 503, 504, 505, 506, 499, 829, 191, - 509, 0, 0, 0, 0, 0, 687, 0, 191, 0, - 0, 191, 0, 0, 0, 0, 0, 196, 0, 0, - 0, 0, 0, 198, 0, 1017, 829, 0, 712, 0, - 204, 200, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 672, 33, 34, 36, 35, 38, 0, 0, - 0, 0, 0, 0, 242, 0, 0, 202, 0, 0, - 206, 0, 0, 0, 39, 46, 47, 0, 0, 48, - 49, 37, 497, 507, 508, 500, 501, 502, 503, 504, - 505, 506, 499, 41, 42, 509, 43, 44, 50, 51, - 52, 197, 0, 0, 0, 0, 0, 0, 0, 242, - 1167, 465, 1171, 0, 0, 0, 0, 0, 0, 787, - 0, 0, 0, 0, 0, 0, 0, 1168, 199, 242, - 207, 208, 209, 210, 214, 0, 0, 0, 0, 213, - 212, 0, 0, 0, 0, 0, 815, 0, 498, 497, - 507, 508, 500, 501, 502, 503, 504, 505, 506, 499, - 0, 0, 509, 0, 0, 0, 0, 191, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, - 0, 0, 0, 627, 0, 498, 497, 507, 508, 500, - 501, 502, 503, 504, 505, 506, 499, 306, 0, 509, - 498, 497, 507, 508, 500, 501, 502, 503, 504, 505, - 506, 499, 870, 0, 509, 0, 0, 493, 0, 496, - 0, 894, 0, 0, 895, 510, 511, 512, 513, 514, - 515, 516, 0, 494, 495, 492, 498, 497, 507, 508, - 500, 501, 502, 503, 504, 505, 506, 499, 0, 0, - 509, 0, 1045, 1046, 1047, 0, 0, 0, 0, 0, - 615, 191, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 242, 0, 0, 1057, 0, 0, 0, 0, 0, - 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, - 628, 0, 672, 0, 498, 497, 507, 508, 500, 501, - 502, 503, 504, 505, 506, 499, 0, 772, 509, 0, - 0, 0, 0, 772, 641, 642, 643, 644, 645, 646, - 647, 0, 648, 649, 650, 651, 652, 629, 630, 631, - 632, 613, 614, 0, 0, 616, 0, 617, 618, 619, - 620, 621, 622, 623, 624, 625, 626, 633, 634, 635, - 636, 637, 638, 639, 640, 924, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, - 0, 0, 0, 0, 0, 498, 497, 507, 508, 500, - 501, 502, 503, 504, 505, 506, 499, 0, 191, 509, - 498, 497, 507, 508, 500, 501, 502, 503, 504, 505, - 506, 499, 0, 0, 509, 0, 191, 0, 0, 0, + 247, 1287, 876, 535, 657, 1245, 1094, 829, 249, 793, + 1122, 1095, 811, 1091, 1022, 833, 1194, 534, 3, 226, + 856, 870, 794, 582, 276, 580, 832, 964, 1068, 980, + 754, 927, 1025, 59, 80, 1013, 321, 217, 192, 761, + 842, 192, 781, 731, 467, 597, 969, 473, 758, 866, + 315, 418, 192, 596, 241, 789, 250, 909, 479, 584, + 569, 487, 24, 235, 277, 53, 689, 312, 192, 192, + 320, 225, 58, 1183, 192, 310, 423, 1316, 1306, 1314, + 1294, 1312, 303, 549, 218, 219, 220, 221, 877, 302, + 1305, 1293, 1086, 301, 1180, 422, 1254, 1117, 1118, 1128, + 1129, 1130, 443, 825, 826, 239, 1116, 1133, 1131, 188, + 184, 185, 186, 988, 824, 598, 987, 599, 53, 989, + 686, 458, 1004, 849, 230, 1206, 231, 687, 431, 1221, + 857, 1169, 307, 63, 1167, 222, 232, 760, 54, 450, + 216, 1313, 1311, 201, 465, 1269, 499, 498, 508, 509, + 501, 502, 503, 504, 505, 506, 507, 500, 454, 455, + 510, 65, 66, 67, 68, 69, 445, 211, 447, 1288, + 790, 1046, 791, 432, 1069, 425, 1252, 812, 814, 182, + 665, 448, 192, 181, 192, 182, 692, 693, 844, 694, + 192, 656, 844, 444, 446, 850, 192, 1246, 979, 978, + 320, 320, 320, 320, 1071, 320, 977, 844, 420, 318, + 428, 1248, 320, 245, 195, 183, 419, 1274, 196, 1191, + 998, 187, 1055, 192, 198, 523, 524, 943, 1043, 921, + 702, 204, 200, 490, 1045, 438, 1279, 1137, 830, 1073, + 510, 1077, 489, 1072, 699, 1070, 484, 486, 903, 476, + 1075, 1147, 813, 500, 857, 1088, 510, 967, 202, 1074, + 1050, 206, 486, 475, 449, 449, 449, 449, 600, 449, + 1132, 782, 1076, 1078, 1253, 1251, 449, 442, 1247, 738, + 660, 843, 470, 474, 791, 843, 841, 839, 1138, 424, + 840, 1292, 197, 736, 737, 735, 53, 846, 1033, 491, + 843, 192, 847, 782, 1270, 950, 1002, 1282, 192, 192, + 192, 519, 520, 522, 320, 434, 435, 436, 481, 199, + 602, 207, 208, 209, 210, 214, 1031, 1044, 904, 1042, + 213, 212, 536, 526, 485, 484, 1298, 1049, 1212, 1211, + 1017, 547, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 486, 548, 550, 550, 550, 550, 550, 550, 550, + 550, 558, 559, 560, 561, 1016, 477, 426, 427, 55, + 1005, 1299, 581, 551, 552, 553, 554, 555, 556, 557, + 1280, 594, 451, 452, 453, 588, 456, 720, 722, 723, + 180, 1032, 721, 460, 1228, 1209, 1037, 1034, 1027, 1028, + 1035, 1030, 1029, 508, 509, 501, 502, 503, 504, 505, + 506, 507, 500, 1036, 939, 510, 938, 1155, 1014, 1039, + 56, 1277, 320, 701, 918, 919, 920, 1125, 192, 192, + 320, 734, 192, 485, 484, 192, 1124, 705, 706, 192, + 999, 320, 320, 320, 320, 320, 320, 320, 320, 940, + 486, 755, 990, 318, 756, 320, 320, 300, 879, 700, + 192, 1302, 466, 56, 757, 192, 1238, 1285, 527, 528, + 529, 530, 531, 532, 533, 674, 485, 484, 671, 711, + 485, 484, 670, 192, 485, 484, 449, 1090, 661, 489, + 659, 729, 654, 486, 449, 707, 672, 486, 485, 484, + 440, 486, 1238, 466, 466, 449, 449, 449, 449, 449, + 449, 449, 449, 1238, 1239, 486, 1203, 1202, 732, 449, + 449, 1113, 466, 1190, 466, 690, 690, 728, 1144, 1143, + 695, 1140, 1141, 1258, 765, 1140, 1139, 933, 466, 717, + 718, 709, 591, 775, 775, 566, 466, 1257, 726, 775, + 724, 774, 777, 767, 466, 769, 433, 783, 606, 605, + 1092, 419, 224, 965, 192, 1134, 775, 192, 192, 192, + 192, 192, 966, 60, 795, 1058, 818, 966, 590, 192, + 762, 764, 192, 592, 965, 590, 192, 53, 767, 565, + 192, 192, 536, 1186, 320, 772, 773, 566, 1146, 769, + 253, 1142, 537, 655, 779, 991, 320, 823, 786, 945, + 933, 664, 933, 566, 566, 819, 26, 905, 933, 965, + 26, 708, 675, 676, 677, 678, 679, 680, 681, 682, + 727, 307, 307, 307, 307, 307, 683, 684, 808, 593, + 858, 859, 860, 817, 821, 816, 581, 1233, 815, 822, + 797, 798, 944, 800, 307, 828, 796, 192, 836, 799, + 320, 942, 320, 56, 658, 703, 192, 56, 306, 192, + 320, 1216, 851, 871, 1033, 872, 770, 771, 1107, 766, + 768, 26, 778, 499, 498, 508, 509, 501, 502, 503, + 504, 505, 506, 507, 500, 784, 785, 510, 787, 788, + 868, 869, 1031, 729, 941, 958, 730, 232, 959, 739, + 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, + 750, 751, 752, 753, 449, 810, 449, 994, 56, 928, + 970, 971, 874, 318, 449, 867, 862, 1127, 861, 728, + 571, 574, 575, 576, 572, 834, 573, 577, 71, 464, + 976, 910, 911, 1092, 56, 907, 908, 1018, 474, 973, + 732, 503, 504, 505, 506, 507, 500, 1032, 668, 510, + 459, 715, 1037, 1034, 1027, 1028, 1035, 1030, 1029, 923, + 501, 502, 503, 504, 505, 506, 507, 500, 805, 1036, + 510, 975, 922, 806, 802, 1026, 498, 508, 509, 501, + 502, 503, 504, 505, 506, 507, 500, 960, 801, 510, + 852, 853, 854, 855, 1310, 803, 981, 236, 237, 192, + 804, 1304, 934, 949, 1054, 480, 863, 864, 865, 807, + 1009, 575, 576, 320, 906, 1309, 962, 951, 916, 478, + 915, 880, 727, 882, 983, 982, 974, 984, 992, 521, + 468, 901, 917, 604, 961, 441, 963, 1001, 1284, 881, + 1283, 1231, 469, 995, 1008, 1063, 1010, 1011, 1012, 985, + 1184, 1217, 667, 1006, 1007, 1019, 320, 579, 320, 233, + 234, 996, 997, 307, 480, 499, 498, 508, 509, 501, + 502, 503, 504, 505, 506, 507, 500, 932, 1015, 510, + 462, 320, 930, 931, 192, 192, 192, 227, 306, 1263, + 60, 463, 914, 192, 935, 936, 937, 947, 1038, 228, + 913, 1024, 320, 946, 1262, 1219, 966, 482, 952, 1271, + 953, 954, 955, 956, 1207, 571, 574, 575, 576, 572, + 449, 573, 577, 698, 729, 970, 971, 62, 691, 5, + 924, 925, 926, 64, 589, 57, 1062, 1, 696, 775, + 1182, 525, 1100, 878, 981, 449, 775, 795, 1093, 1080, + 1079, 1061, 834, 1067, 795, 1021, 887, 1286, 1244, 1098, + 728, 1087, 1121, 838, 1096, 831, 417, 70, 1103, 1278, + 837, 1250, 320, 1101, 320, 1123, 1205, 845, 1102, 1003, + 848, 1126, 1281, 1000, 611, 1089, 609, 610, 608, 1120, + 613, 1115, 471, 612, 1135, 1136, 1114, 1023, 1119, 192, + 607, 1104, 1105, 203, 1097, 1106, 53, 1149, 1108, 313, + 578, 601, 873, 483, 82, 72, 1041, 1040, 883, 1048, + 1151, 192, 1109, 1110, 1111, 685, 902, 1154, 457, 205, + 191, 518, 912, 215, 986, 319, 320, 1020, 1099, 192, + 704, 1060, 472, 1148, 223, 1261, 1218, 948, 546, 780, + 252, 719, 264, 261, 263, 262, 1150, 1066, 242, 1153, + 191, 191, 1047, 1083, 1158, 1157, 191, 273, 266, 763, + 268, 269, 270, 271, 733, 1165, 710, 267, 272, 957, + 492, 251, 243, 305, 562, 1156, 570, 1185, 1195, 568, + 1195, 1195, 1195, 192, 1200, 567, 972, 968, 304, 1057, + 320, 1179, 1193, 307, 1268, 1112, 1196, 1197, 1198, 714, + 28, 834, 61, 834, 1201, 992, 1199, 238, 23, 22, + 21, 19, 1064, 1065, 18, 1181, 320, 320, 320, 17, + 20, 1178, 536, 16, 15, 1081, 1082, 14, 1084, 1085, + 1208, 1214, 1210, 1215, 32, 13, 12, 306, 306, 306, + 306, 306, 11, 10, 9, 8, 7, 6, 4, 229, + 25, 2, 306, 0, 1220, 0, 0, 1230, 0, 0, + 306, 1236, 1237, 0, 191, 1060, 191, 0, 1232, 0, + 0, 0, 191, 0, 1123, 0, 1159, 1234, 191, 0, + 449, 1096, 1243, 1161, 1249, 0, 1255, 1195, 1256, 0, + 0, 0, 0, 0, 1170, 1171, 1172, 0, 0, 1175, + 0, 0, 0, 1259, 0, 461, 0, 0, 536, 1275, + 1272, 0, 1187, 1188, 1189, 0, 1192, 0, 0, 0, + 1276, 1097, 0, 1273, 1235, 0, 0, 0, 1096, 834, + 0, 0, 0, 0, 0, 1162, 1163, 1290, 1164, 0, + 0, 1166, 775, 1168, 0, 1297, 0, 1160, 0, 0, + 795, 1295, 1260, 0, 0, 308, 1023, 834, 0, 1303, + 1300, 0, 0, 0, 893, 0, 0, 0, 1097, 0, + 53, 0, 0, 1307, 1308, 0, 0, 0, 892, 0, + 0, 0, 0, 191, 0, 0, 0, 1289, 536, 1204, + 191, 586, 191, 190, 1227, 0, 0, 1213, 0, 0, + 0, 0, 0, 0, 0, 897, 733, 0, 0, 0, + 0, 1240, 1241, 1242, 0, 891, 0, 0, 0, 0, + 0, 0, 0, 0, 311, 0, 0, 0, 0, 421, + 1176, 466, 0, 0, 0, 0, 0, 1264, 1265, 1266, + 1267, 0, 0, 0, 0, 0, 0, 0, 1315, 0, + 0, 0, 0, 0, 0, 0, 0, 1222, 1223, 0, + 1224, 1225, 1226, 888, 885, 886, 0, 884, 499, 498, + 508, 509, 501, 502, 503, 504, 505, 506, 507, 500, + 0, 0, 510, 1291, 0, 0, 0, 0, 1296, 306, + 0, 0, 895, 898, 0, 0, 0, 0, 0, 0, + 0, 1301, 0, 0, 0, 0, 0, 0, 0, 0, + 191, 191, 0, 0, 191, 0, 0, 191, 0, 0, + 0, 673, 0, 0, 0, 0, 0, 0, 0, 0, + 890, 0, 1319, 1320, 0, 0, 0, 429, 0, 430, + 0, 0, 191, 0, 0, 437, 0, 697, 0, 0, + 0, 439, 889, 0, 929, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 0, 26, 27, 54, + 29, 30, 0, 673, 499, 498, 508, 509, 501, 502, + 503, 504, 505, 506, 507, 500, 45, 0, 510, 894, + 0, 31, 0, 0, 0, 0, 0, 0, 0, 1317, + 0, 0, 896, 242, 0, 0, 1177, 0, 0, 0, + 40, 0, 0, 0, 56, 0, 0, 0, 0, 0, + 0, 242, 242, 0, 0, 776, 776, 242, 0, 0, + 0, 776, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 242, 242, 242, 242, 0, 191, 0, 776, 191, + 191, 191, 191, 191, 0, 0, 564, 0, 0, 0, + 0, 809, 0, 0, 191, 587, 0, 0, 586, 0, + 0, 0, 191, 191, 33, 34, 36, 35, 38, 499, + 498, 508, 509, 501, 502, 503, 504, 505, 506, 507, + 500, 0, 0, 510, 0, 39, 46, 47, 0, 0, + 48, 49, 37, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 628, 0, 41, 42, 0, 43, 44, 50, + 51, 52, 0, 0, 0, 0, 0, 0, 0, 306, + 1174, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 0, 0, 0, 0, 494, 0, 497, 0, 191, 0, + 0, 191, 511, 512, 513, 514, 515, 516, 517, 0, + 495, 496, 493, 499, 498, 508, 509, 501, 502, 503, + 504, 505, 506, 507, 500, 0, 0, 510, 0, 0, + 0, 0, 0, 662, 663, 673, 466, 666, 0, 616, + 669, 0, 0, 0, 0, 0, 0, 242, 0, 0, + 55, 0, 0, 499, 498, 508, 509, 501, 502, 503, + 504, 505, 506, 507, 500, 688, 0, 510, 0, 629, + 0, 0, 0, 499, 498, 508, 509, 501, 502, 503, + 504, 505, 506, 507, 500, 0, 0, 510, 716, 0, + 0, 0, 242, 642, 643, 644, 645, 646, 647, 648, + 0, 649, 650, 651, 652, 653, 630, 631, 632, 633, + 614, 615, 242, 0, 617, 0, 618, 619, 620, 621, + 622, 623, 624, 625, 626, 627, 634, 635, 636, 637, + 638, 639, 640, 641, 1173, 466, 499, 498, 508, 509, + 501, 502, 503, 504, 505, 506, 507, 500, 0, 0, + 510, 191, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 792, + 0, 0, 499, 498, 508, 509, 501, 502, 503, 504, + 505, 506, 507, 500, 0, 0, 510, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1051, 1052, 1053, 0, + 0, 0, 0, 0, 0, 191, 0, 0, 0, 132, + 0, 0, 0, 0, 0, 242, 0, 0, 100, 0, + 0, 0, 875, 114, 0, 116, 242, 0, 149, 125, + 0, 899, 0, 0, 900, 0, 673, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 83, 776, 0, 0, 0, 0, 0, 93, 776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 585, 0, 0, 0, 1050, 0, 0, 0, 0, 0, + 0, 0, 0, 499, 498, 508, 509, 501, 502, 503, + 504, 505, 506, 507, 500, 0, 0, 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 191, 0, 193, 0, 0, 0, 0, 138, 0, + 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, + 144, 134, 164, 191, 135, 143, 117, 156, 139, 163, + 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, + 0, 191, 87, 160, 151, 123, 109, 110, 86, 0, + 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, + 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, + 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, + 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, + 0, 172, 173, 174, 175, 586, 0, 0, 129, 92, + 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, + 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 115, 176, 140, 102, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 406, 396, 0, 368, 408, 346, 360, 416, 361, 362, - 389, 332, 376, 132, 358, 0, 349, 327, 355, 328, - 347, 370, 100, 373, 345, 398, 379, 114, 414, 116, - 384, 0, 149, 125, 0, 0, 372, 400, 374, 394, - 367, 390, 337, 383, 409, 359, 387, 410, 0, 0, - 0, 81, 0, 0, 83, 830, 0, 0, 0, 1139, - 0, 93, 0, 386, 405, 357, 388, 326, 385, 0, - 330, 333, 415, 403, 352, 353, 987, 0, 0, 0, - 0, 1146, 0, 371, 375, 391, 365, 0, 0, 0, - 0, 0, 0, 0, 0, 350, 0, 382, 0, 0, - 0, 334, 331, 0, 369, 0, 0, 0, 336, 772, - 351, 392, 0, 325, 395, 401, 366, 193, 404, 364, - 363, 407, 138, 0, 0, 152, 105, 104, 113, 399, - 348, 356, 96, 354, 144, 134, 164, 381, 135, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 329, 0, - 150, 166, 179, 344, 402, 172, 173, 174, 175, 0, - 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 340, 343, 338, 339, 377, - 378, 411, 412, 413, 393, 335, 0, 341, 342, 0, - 397, 380, 84, 0, 115, 176, 140, 102, 167, 406, - 396, 0, 368, 408, 346, 360, 416, 361, 362, 389, - 332, 376, 132, 358, 0, 349, 327, 355, 328, 347, - 370, 100, 373, 345, 398, 379, 114, 414, 116, 384, - 0, 149, 125, 0, 0, 372, 400, 374, 394, 367, - 390, 337, 383, 409, 359, 387, 410, 0, 0, 0, - 81, 0, 0, 83, 830, 0, 0, 0, 0, 0, - 93, 0, 386, 405, 357, 388, 326, 385, 0, 330, - 333, 415, 403, 352, 353, 0, 0, 0, 0, 0, - 0, 0, 371, 375, 391, 365, 0, 0, 0, 0, - 0, 0, 0, 0, 350, 0, 382, 0, 0, 0, - 334, 331, 0, 369, 0, 0, 0, 336, 0, 351, - 392, 0, 325, 395, 401, 366, 193, 404, 364, 363, - 407, 138, 0, 0, 152, 105, 104, 113, 399, 348, - 356, 96, 354, 144, 134, 164, 381, 135, 143, 117, - 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, - 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, - 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, - 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, - 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, - 119, 137, 107, 127, 126, 128, 0, 329, 0, 150, - 166, 179, 344, 402, 172, 173, 174, 175, 0, 0, - 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, - 145, 95, 165, 148, 340, 343, 338, 339, 377, 378, - 411, 412, 413, 393, 335, 0, 341, 342, 0, 397, - 380, 84, 0, 115, 176, 140, 102, 167, 406, 396, - 0, 368, 408, 346, 360, 416, 361, 362, 389, 332, - 376, 132, 358, 0, 349, 327, 355, 328, 347, 370, - 100, 373, 345, 398, 379, 114, 414, 116, 384, 0, - 149, 125, 0, 0, 372, 400, 374, 394, 367, 390, - 337, 383, 409, 359, 387, 410, 56, 0, 0, 81, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, - 0, 386, 405, 357, 388, 326, 385, 0, 330, 333, - 415, 403, 352, 353, 0, 0, 0, 0, 0, 0, - 0, 371, 375, 391, 365, 0, 0, 0, 0, 0, - 0, 0, 0, 350, 0, 382, 0, 0, 0, 334, - 331, 0, 369, 0, 0, 0, 336, 0, 351, 392, - 0, 325, 395, 401, 366, 193, 404, 364, 363, 407, - 138, 0, 0, 152, 105, 104, 113, 399, 348, 356, - 96, 354, 144, 134, 164, 381, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, - 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, - 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, - 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 329, 0, 150, 166, - 179, 344, 402, 172, 173, 174, 175, 0, 0, 0, - 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 340, 343, 338, 339, 377, 378, 411, - 412, 413, 393, 335, 0, 341, 342, 0, 397, 380, - 84, 0, 115, 176, 140, 102, 167, 406, 396, 0, - 368, 408, 346, 360, 416, 361, 362, 389, 332, 376, - 132, 358, 0, 349, 327, 355, 328, 347, 370, 100, - 373, 345, 398, 379, 114, 414, 116, 384, 0, 149, - 125, 0, 0, 372, 400, 374, 394, 367, 390, 337, - 383, 409, 359, 387, 410, 0, 0, 0, 81, 0, - 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, - 386, 405, 357, 388, 326, 385, 0, 330, 333, 415, - 403, 352, 353, 0, 0, 0, 0, 0, 0, 0, - 371, 375, 391, 365, 0, 0, 0, 0, 0, 0, - 1053, 0, 350, 0, 382, 0, 0, 0, 334, 331, - 0, 369, 0, 0, 0, 336, 0, 351, 392, 0, - 325, 395, 401, 366, 193, 404, 364, 363, 407, 138, - 0, 0, 152, 105, 104, 113, 399, 348, 356, 96, - 354, 144, 134, 164, 381, 135, 143, 117, 156, 139, - 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, - 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, - 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, - 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, - 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, - 107, 127, 126, 128, 0, 329, 0, 150, 166, 179, - 344, 402, 172, 173, 174, 175, 0, 0, 0, 129, - 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, - 165, 148, 340, 343, 338, 339, 377, 378, 411, 412, - 413, 393, 335, 0, 341, 342, 0, 397, 380, 84, - 0, 115, 176, 140, 102, 167, 406, 396, 0, 368, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 406, 396, 0, 368, 408, 346, 360, 416, 361, 362, 389, 332, 376, 132, 358, 0, 349, 327, 355, 328, 347, 370, 100, 373, 345, 398, 379, 114, 414, 116, 384, 0, 149, 125, 0, 0, 372, 400, 374, 394, 367, 390, 337, 383, 409, 359, 387, 410, 0, 0, 0, 81, 0, 0, - 83, 0, 0, 0, 0, 0, 0, 93, 0, 386, + 83, 835, 0, 0, 776, 0, 0, 93, 0, 386, 405, 357, 388, 326, 385, 0, 330, 333, 415, 403, - 352, 353, 0, 0, 0, 0, 0, 0, 0, 371, - 375, 391, 365, 0, 0, 0, 0, 0, 0, 721, - 0, 350, 0, 382, 0, 0, 0, 334, 331, 0, + 352, 353, 993, 0, 1145, 0, 0, 0, 0, 371, + 375, 391, 365, 0, 0, 0, 0, 0, 0, 0, + 0, 350, 0, 382, 0, 0, 1152, 334, 331, 0, 369, 0, 0, 0, 336, 0, 351, 392, 0, 325, 395, 401, 366, 193, 404, 364, 363, 407, 138, 0, 0, 152, 105, 104, 113, 399, 348, 356, 96, 354, @@ -1012,7 +925,7 @@ var yyAct = [...]int{ 398, 379, 114, 414, 116, 384, 0, 149, 125, 0, 0, 372, 400, 374, 394, 367, 390, 337, 383, 409, 359, 387, 410, 0, 0, 0, 81, 0, 0, 83, - 0, 0, 0, 0, 0, 0, 93, 0, 386, 405, + 835, 0, 0, 0, 0, 0, 93, 0, 386, 405, 357, 388, 326, 385, 0, 330, 333, 415, 403, 352, 353, 0, 0, 0, 0, 0, 0, 0, 371, 375, 391, 365, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1036,7 +949,7 @@ var yyAct = [...]int{ 349, 327, 355, 328, 347, 370, 100, 373, 345, 398, 379, 114, 414, 116, 384, 0, 149, 125, 0, 0, 372, 400, 374, 394, 367, 390, 337, 383, 409, 359, - 387, 410, 0, 0, 0, 81, 0, 0, 83, 0, + 387, 410, 56, 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 386, 405, 357, 388, 326, 385, 0, 330, 333, 415, 403, 352, 353, 0, 0, 0, 0, 0, 0, 0, 371, 375, 391, @@ -1049,10 +962,10 @@ var yyAct = [...]int{ 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 323, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, 329, 0, 150, 166, 179, 344, 402, 172, - 173, 174, 175, 0, 0, 0, 324, 322, 108, 147, + 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 340, 343, 338, 339, 377, 378, 411, 412, 413, 393, 335, 0, 341, 342, 0, 397, 380, 84, 0, 115, 176, @@ -1065,19 +978,19 @@ var yyAct = [...]int{ 0, 0, 0, 0, 93, 0, 386, 405, 357, 388, 326, 385, 0, 330, 333, 415, 403, 352, 353, 0, 0, 0, 0, 0, 0, 0, 371, 375, 391, 365, - 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, + 0, 0, 0, 0, 0, 0, 1059, 0, 350, 0, 382, 0, 0, 0, 334, 331, 0, 369, 0, 0, 0, 336, 0, 351, 392, 0, 325, 395, 401, 366, 193, 404, 364, 363, 407, 138, 0, 0, 152, 105, 104, 113, 399, 348, 356, 96, 354, 144, 134, 164, 381, 135, 143, 117, 156, 139, 163, 194, 171, 154, - 170, 85, 153, 594, 94, 146, 0, 0, 0, 87, + 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, - 98, 131, 157, 158, 97, 178, 90, 169, 89, 323, + 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, 329, 0, 150, 166, 179, 344, 402, 172, 173, - 174, 175, 0, 0, 0, 324, 322, 108, 147, 111, + 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 340, 343, 338, 339, 377, 378, 411, 412, 413, 393, 335, 0, 341, 342, 0, 397, 380, 84, 0, 115, 176, 140, @@ -1090,54 +1003,130 @@ var yyAct = [...]int{ 0, 0, 0, 93, 0, 386, 405, 357, 388, 326, 385, 0, 330, 333, 415, 403, 352, 353, 0, 0, 0, 0, 0, 0, 0, 371, 375, 391, 365, 0, - 0, 0, 0, 0, 0, 0, 0, 350, 0, 382, + 0, 0, 0, 0, 0, 725, 0, 350, 0, 382, 0, 0, 0, 334, 331, 0, 369, 0, 0, 0, 336, 0, 351, 392, 0, 325, 395, 401, 366, 193, 404, 364, 363, 407, 138, 0, 0, 152, 105, 104, 113, 399, 348, 356, 96, 354, 144, 134, 164, 381, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, - 85, 153, 314, 94, 146, 0, 0, 0, 87, 160, + 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, - 131, 157, 158, 97, 178, 90, 169, 89, 323, 168, + 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, 329, 0, 150, 166, 179, 344, 402, 172, 173, 174, - 175, 0, 0, 0, 324, 322, 317, 316, 111, 118, + 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 340, 343, 338, 339, 377, 378, 411, 412, 413, 393, 335, 0, 341, 342, 0, 397, 380, 84, 0, 115, 176, 140, 102, - 167, 132, 0, 0, 755, 0, 248, 0, 0, 0, - 100, 0, 246, 0, 0, 114, 287, 116, 0, 0, - 149, 125, 0, 0, 0, 0, 278, 279, 0, 0, - 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, - 273, 266, 265, 268, 269, 270, 271, 0, 0, 93, - 267, 272, 274, 275, 0, 0, 244, 259, 0, 286, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, - 257, 240, 0, 0, 0, 298, 0, 258, 0, 0, - 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 296, 0, - 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, - 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, + 167, 406, 396, 0, 368, 408, 346, 360, 416, 361, + 362, 389, 332, 376, 132, 358, 0, 349, 327, 355, + 328, 347, 370, 100, 373, 345, 398, 379, 114, 414, + 116, 384, 0, 149, 125, 0, 0, 372, 400, 374, + 394, 367, 390, 337, 383, 409, 359, 387, 410, 0, + 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 93, 0, 386, 405, 357, 388, 326, 385, + 0, 330, 333, 415, 403, 352, 353, 0, 0, 0, + 0, 0, 0, 0, 371, 375, 391, 365, 0, 0, + 0, 0, 0, 0, 0, 0, 350, 0, 382, 0, + 0, 0, 334, 331, 0, 369, 0, 0, 0, 336, + 0, 351, 392, 0, 325, 395, 401, 366, 193, 404, + 364, 363, 407, 138, 0, 0, 152, 105, 104, 113, + 399, 348, 356, 96, 354, 144, 134, 164, 381, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 329, + 0, 150, 166, 179, 344, 402, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 340, 343, 338, 339, + 377, 378, 411, 412, 413, 393, 335, 0, 341, 342, + 0, 397, 380, 84, 0, 115, 176, 140, 102, 167, + 406, 396, 0, 368, 408, 346, 360, 416, 361, 362, + 389, 332, 376, 132, 358, 0, 349, 327, 355, 328, + 347, 370, 100, 373, 345, 398, 379, 114, 414, 116, + 384, 0, 149, 125, 0, 0, 372, 400, 374, 394, + 367, 390, 337, 383, 409, 359, 387, 410, 0, 0, + 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 93, 0, 386, 405, 357, 388, 326, 385, 0, + 330, 333, 415, 403, 352, 353, 0, 0, 0, 0, + 0, 0, 0, 371, 375, 391, 365, 0, 0, 0, + 0, 0, 0, 0, 0, 350, 0, 382, 0, 0, + 0, 334, 331, 0, 369, 0, 0, 0, 336, 0, + 351, 392, 0, 325, 395, 401, 366, 193, 404, 364, + 363, 407, 138, 0, 0, 152, 105, 104, 113, 399, + 348, 356, 96, 354, 144, 134, 164, 381, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 323, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 329, 0, + 150, 166, 179, 344, 402, 172, 173, 174, 175, 0, + 0, 0, 324, 322, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 340, 343, 338, 339, 377, + 378, 411, 412, 413, 393, 335, 0, 341, 342, 0, + 397, 380, 84, 0, 115, 176, 140, 102, 167, 406, + 396, 0, 368, 408, 346, 360, 416, 361, 362, 389, + 332, 376, 132, 358, 0, 349, 327, 355, 328, 347, + 370, 100, 373, 345, 398, 379, 114, 414, 116, 384, + 0, 149, 125, 0, 0, 372, 400, 374, 394, 367, + 390, 337, 383, 409, 359, 387, 410, 0, 0, 0, + 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 93, 0, 386, 405, 357, 388, 326, 385, 0, 330, + 333, 415, 403, 352, 353, 0, 0, 0, 0, 0, + 0, 0, 371, 375, 391, 365, 0, 0, 0, 0, + 0, 0, 0, 0, 350, 0, 382, 0, 0, 0, + 334, 331, 0, 369, 0, 0, 0, 336, 0, 351, + 392, 0, 325, 395, 401, 366, 193, 404, 364, 363, + 407, 138, 0, 0, 152, 105, 104, 113, 399, 348, + 356, 96, 354, 144, 134, 164, 381, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 595, + 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, + 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, + 97, 178, 90, 169, 89, 323, 168, 130, 155, 161, + 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, + 119, 137, 107, 127, 126, 128, 0, 329, 0, 150, + 166, 179, 344, 402, 172, 173, 174, 175, 0, 0, + 0, 324, 322, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 340, 343, 338, 339, 377, 378, + 411, 412, 413, 393, 335, 0, 341, 342, 0, 397, + 380, 84, 0, 115, 176, 140, 102, 167, 406, 396, + 0, 368, 408, 346, 360, 416, 361, 362, 389, 332, + 376, 132, 358, 0, 349, 327, 355, 328, 347, 370, + 100, 373, 345, 398, 379, 114, 414, 116, 384, 0, + 149, 125, 0, 0, 372, 400, 374, 394, 367, 390, + 337, 383, 409, 359, 387, 410, 0, 0, 0, 81, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, + 0, 386, 405, 357, 388, 326, 385, 0, 330, 333, + 415, 403, 352, 353, 0, 0, 0, 0, 0, 0, + 0, 371, 375, 391, 365, 0, 0, 0, 0, 0, + 0, 0, 0, 350, 0, 382, 0, 0, 0, 334, + 331, 0, 369, 0, 0, 0, 336, 0, 351, 392, + 0, 325, 395, 401, 366, 193, 404, 364, 363, 407, + 138, 0, 0, 152, 105, 104, 113, 399, 348, 356, + 96, 354, 144, 134, 164, 381, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 314, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, + 178, 90, 169, 89, 323, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, - 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, - 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 288, 297, 294, 295, 292, 293, 291, - 290, 289, 299, 280, 281, 282, 283, 285, 0, 284, + 137, 107, 127, 126, 128, 0, 329, 0, 150, 166, + 179, 344, 402, 172, 173, 174, 175, 0, 0, 0, + 324, 322, 317, 316, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 340, 343, 338, 339, 377, 378, 411, + 412, 413, 393, 335, 0, 341, 342, 0, 397, 380, 84, 0, 115, 176, 140, 102, 167, 132, 0, 0, - 0, 0, 248, 0, 0, 0, 100, 0, 246, 0, + 759, 0, 248, 0, 0, 0, 100, 0, 246, 0, 0, 114, 287, 116, 0, 0, 149, 125, 0, 0, 0, 0, 278, 279, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, 273, 266, 265, 268, 269, 270, 271, 0, 0, 93, 267, 272, 274, 275, 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 256, 257, 1223, 0, 0, + 0, 0, 0, 0, 0, 256, 257, 240, 0, 0, 0, 298, 0, 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 296, 0, 138, 0, 0, 152, @@ -1157,11 +1146,11 @@ var yyAct = [...]int{ 0, 0, 100, 0, 246, 0, 0, 114, 287, 116, 0, 0, 149, 125, 0, 0, 0, 0, 278, 279, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 465, 81, 273, 266, 265, 268, 269, 270, 271, 0, + 0, 81, 273, 266, 265, 268, 269, 270, 271, 0, 0, 93, 267, 272, 274, 275, 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 256, 257, 0, 0, 0, 0, 298, 0, 258, + 0, 256, 257, 1229, 0, 0, 0, 298, 0, 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 296, 0, 138, 0, 0, 152, 105, 104, 113, 0, @@ -1180,11 +1169,11 @@ var yyAct = [...]int{ 0, 0, 0, 0, 248, 0, 0, 0, 100, 0, 246, 0, 0, 114, 287, 116, 0, 0, 149, 125, 0, 0, 0, 0, 278, 279, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 0, 81, 273, 266, + 0, 0, 0, 0, 56, 0, 466, 81, 273, 266, 265, 268, 269, 270, 271, 0, 0, 93, 267, 272, 274, 275, 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 256, 257, 240, + 0, 0, 0, 0, 0, 0, 0, 256, 257, 0, 0, 0, 0, 298, 0, 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 296, 0, 138, 0, @@ -1203,12 +1192,12 @@ var yyAct = [...]int{ 115, 176, 140, 102, 167, 132, 0, 0, 0, 0, 248, 0, 0, 0, 100, 0, 246, 0, 0, 114, 287, 116, 0, 0, 149, 125, 0, 0, 0, 0, - 278, 279, 0, 0, 0, 0, 0, 0, 822, 0, + 278, 279, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, 273, 266, 265, 268, 269, 270, 271, 0, 0, 93, 267, 272, 274, 275, 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 256, 257, 0, 0, 0, 0, 298, + 0, 0, 0, 256, 257, 240, 0, 0, 0, 298, 0, 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 296, 0, 138, 0, 0, 152, 105, 104, @@ -1223,31 +1212,31 @@ var yyAct = [...]int{ 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 288, 297, 294, 295, 292, 293, 291, 290, 289, 299, 280, 281, 282, - 283, 285, 26, 284, 84, 0, 115, 176, 140, 102, - 167, 0, 0, 0, 132, 0, 0, 0, 0, 248, - 0, 0, 0, 100, 0, 246, 0, 0, 114, 287, - 116, 0, 0, 149, 125, 0, 0, 0, 0, 278, - 279, 0, 0, 0, 0, 0, 0, 0, 0, 56, - 0, 0, 81, 273, 266, 265, 268, 269, 270, 271, - 0, 0, 93, 267, 272, 274, 275, 0, 0, 244, - 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, + 283, 285, 0, 284, 84, 0, 115, 176, 140, 102, + 167, 132, 0, 0, 0, 0, 248, 0, 0, 0, + 100, 0, 246, 0, 0, 114, 287, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 278, 279, 0, 0, + 0, 0, 0, 0, 827, 0, 56, 0, 0, 81, + 273, 266, 265, 268, 269, 270, 271, 0, 0, 93, + 267, 272, 274, 275, 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 256, 257, 0, 0, 0, 0, 298, 0, - 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 296, 0, 138, 0, 0, 152, 105, 104, 113, - 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, - 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 288, 297, 294, 295, - 292, 293, 291, 290, 289, 299, 280, 281, 282, 283, - 285, 0, 284, 84, 0, 115, 176, 140, 102, 167, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, + 257, 0, 0, 0, 0, 298, 0, 258, 0, 0, + 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 0, 0, 296, 0, + 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, + 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, + 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, + 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, + 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, + 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, + 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, + 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, + 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 288, 297, 294, 295, 292, 293, 291, + 290, 289, 299, 280, 281, 282, 283, 285, 26, 284, + 84, 0, 115, 176, 140, 102, 167, 0, 0, 0, 132, 0, 0, 0, 0, 248, 0, 0, 0, 100, 0, 246, 0, 0, 114, 287, 116, 0, 0, 149, 125, 0, 0, 0, 0, 278, 279, 0, 0, 0, @@ -1270,20 +1259,89 @@ var yyAct = [...]int{ 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 288, 297, 294, 295, 292, 293, 291, 290, + 289, 299, 280, 281, 282, 283, 285, 0, 284, 84, + 0, 115, 176, 140, 102, 167, 132, 0, 0, 0, + 0, 248, 0, 0, 0, 100, 0, 246, 0, 0, + 114, 287, 116, 0, 0, 149, 125, 0, 0, 0, + 0, 278, 279, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 81, 273, 266, 265, 268, 269, + 270, 271, 0, 0, 93, 267, 272, 274, 275, 0, + 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 256, 257, 0, 0, 0, 0, + 298, 0, 258, 0, 0, 254, 255, 260, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 193, 0, 0, 296, 0, 138, 0, 0, 152, 105, + 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, + 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, + 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, + 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, + 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, + 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, + 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, + 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, + 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, + 118, 141, 177, 133, 145, 95, 165, 148, 288, 297, + 294, 295, 292, 293, 291, 290, 289, 299, 280, 281, + 282, 283, 285, 132, 284, 84, 0, 115, 176, 140, + 102, 167, 100, 0, 0, 0, 0, 114, 287, 116, + 0, 0, 149, 125, 0, 0, 0, 0, 278, 279, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 0, 81, 273, 266, 265, 268, 269, 270, 271, 0, + 0, 93, 267, 272, 274, 275, 0, 0, 0, 259, + 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 256, 257, 0, 0, 0, 0, 298, 0, 258, + 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 296, 0, 138, 0, 0, 152, 105, 104, 113, 0, + 0, 0, 96, 0, 144, 134, 164, 1318, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, + 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 288, 297, 294, 295, 292, + 293, 291, 290, 289, 299, 280, 281, 282, 283, 285, + 132, 284, 84, 0, 115, 176, 140, 102, 167, 100, + 0, 0, 0, 0, 114, 287, 116, 0, 0, 149, + 125, 0, 0, 0, 0, 278, 279, 0, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 81, 273, + 266, 265, 268, 269, 270, 271, 0, 0, 93, 267, + 272, 274, 275, 0, 0, 0, 259, 0, 286, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, + 0, 0, 0, 0, 298, 0, 258, 0, 0, 254, + 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 0, 296, 0, 138, + 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, + 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 288, 297, 294, 295, 292, 293, 291, 290, 289, 299, 280, 281, 282, 283, 285, 132, 284, 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, - 0, 114, 287, 116, 0, 0, 149, 125, 0, 0, - 0, 0, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 0, 56, 0, 0, 81, 273, 266, 265, 268, - 269, 270, 271, 0, 0, 93, 267, 272, 274, 275, - 0, 0, 0, 259, 0, 286, 0, 0, 0, 0, + 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 256, 257, 0, 0, 0, - 0, 298, 0, 258, 0, 0, 254, 255, 260, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 193, 0, 0, 296, 0, 138, 0, 0, 152, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 78, + 0, 73, 0, 0, 0, 79, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, - 164, 1312, 135, 143, 117, 156, 139, 163, 194, 171, + 164, 0, 135, 143, 117, 156, 139, 163, 75, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, @@ -1291,173 +1349,174 @@ var yyAct = [...]int{ 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, - 111, 118, 141, 177, 133, 145, 95, 165, 148, 288, - 297, 294, 295, 292, 293, 291, 290, 289, 299, 280, - 281, 282, 283, 285, 132, 284, 84, 0, 115, 176, - 140, 102, 167, 100, 0, 0, 0, 0, 114, 287, - 116, 0, 0, 149, 125, 0, 0, 0, 0, 278, - 279, 0, 0, 0, 0, 0, 0, 0, 0, 56, - 0, 0, 81, 273, 266, 265, 268, 269, 270, 271, - 0, 0, 93, 267, 272, 274, 275, 0, 0, 0, - 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, + 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 0, 115, 176, + 140, 102, 167, 132, 0, 0, 0, 488, 0, 0, + 0, 0, 100, 0, 0, 0, 0, 114, 0, 116, + 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 256, 257, 0, 0, 0, 0, 298, 0, - 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 296, 0, 138, 0, 0, 152, 105, 104, 113, - 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, - 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 288, 297, 294, 295, - 292, 293, 291, 290, 289, 299, 280, 281, 282, 283, - 285, 132, 284, 84, 0, 115, 176, 140, 102, 167, - 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, - 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, + 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 485, 484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 498, 497, 507, 508, 500, - 501, 502, 503, 504, 505, 506, 499, 0, 0, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, - 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, - 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, - 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, - 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, - 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, - 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, - 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, - 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, - 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, + 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, + 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, - 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, - 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 0, 84, 0, 115, 176, 140, 102, 167, 100, + 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, + 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 81, 0, + 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, - 78, 0, 73, 0, 0, 0, 79, 138, 0, 0, - 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, - 134, 164, 0, 135, 143, 117, 156, 139, 163, 75, - 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, - 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, - 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, - 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, - 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, - 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, - 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, - 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, - 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 0, 115, - 176, 140, 102, 167, 132, 0, 0, 0, 487, 0, - 0, 0, 0, 100, 0, 0, 0, 0, 114, 0, - 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 484, 483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 485, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, + 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, + 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, + 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, + 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 83, 712, + 0, 0, 713, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, + 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, + 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, + 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, + 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, + 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, + 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, + 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, + 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 0, 115, 176, + 140, 102, 167, 132, 0, 0, 0, 585, 0, 0, + 0, 0, 100, 0, 0, 0, 0, 114, 0, 116, + 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, - 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, - 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 132, 0, 84, 0, 115, 176, 140, 102, 167, - 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, - 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, + 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, + 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 0, 84, 0, 115, 176, 140, 102, 167, 100, + 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, + 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 81, 0, + 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, - 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, - 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, - 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, - 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, - 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, - 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, - 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, - 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, - 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, - 708, 0, 0, 709, 0, 0, 93, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, + 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, + 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, + 0, 115, 176, 140, 102, 167, 100, 0, 603, 0, + 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 193, 0, 0, 0, 0, 138, 0, 0, - 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, - 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, - 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, - 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, - 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, - 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, - 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, - 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, - 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, - 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 0, 115, - 176, 140, 102, 167, 132, 0, 0, 0, 584, 0, - 0, 0, 0, 100, 0, 0, 0, 0, 114, 0, - 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, + 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, + 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, + 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, + 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, + 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, + 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, + 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, + 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, + 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 0, 115, 176, + 140, 102, 167, 132, 0, 0, 0, 585, 0, 0, + 0, 0, 100, 0, 0, 0, 0, 114, 0, 116, + 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, - 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, - 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, + 0, 0, 96, 0, 144, 134, 164, 0, 583, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, + 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 132, 0, 84, 0, 115, 176, 140, 102, 167, + 0, 132, 84, 0, 115, 176, 140, 102, 167, 563, 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1476,8 +1535,8 @@ var yyAct = [...]int{ 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, - 84, 0, 115, 176, 140, 102, 167, 100, 0, 602, + 0, 309, 0, 0, 0, 0, 0, 0, 132, 0, + 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, @@ -1499,32 +1558,31 @@ var yyAct = [...]int{ 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 0, 115, - 176, 140, 102, 167, 132, 0, 0, 0, 584, 0, - 0, 0, 0, 100, 0, 0, 0, 0, 114, 0, - 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 0, 84, 0, 115, + 176, 140, 102, 167, 100, 0, 0, 0, 0, 114, + 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, - 0, 0, 0, 96, 0, 144, 134, 164, 0, 582, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, - 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 0, 193, + 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, + 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, + 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, + 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, + 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, + 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, + 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, + 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, + 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, + 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, + 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 84, 0, 115, 176, 140, 102, 167, - 562, 100, 0, 0, 0, 0, 114, 0, 116, 0, + 0, 0, 132, 0, 84, 0, 115, 176, 140, 102, + 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, @@ -1545,87 +1603,19 @@ var yyAct = [...]int{ 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 0, 0, 0, 0, 0, 0, 132, - 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, - 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, - 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, - 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, - 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, - 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, - 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, - 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, - 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, - 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, - 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, - 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, - 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, - 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 132, 0, 84, 0, - 115, 176, 140, 102, 167, 100, 0, 0, 0, 0, - 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 81, 0, 0, 83, 0, 0, - 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, - 193, 0, 0, 0, 0, 138, 0, 0, 152, 105, - 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, - 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, - 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, - 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, - 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, - 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, - 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, - 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, - 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, - 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 132, 0, 84, 0, 115, 176, 140, - 102, 167, 100, 0, 0, 0, 0, 114, 0, 116, - 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, - 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, - 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, - 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, - 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 84, 0, 115, 176, 140, 102, 167, + 0, 84, 0, 115, 176, 140, 102, 167, } var yyPact = [...]int{ - 1530, -1000, -189, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1491, -1000, -183, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 838, 869, -1000, -1000, -1000, -1000, - -1000, -1000, 678, 6650, 93, 99, 3, 8948, 94, 1510, - 9175, -1000, 0, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -6, 9175, 504, 622, -1000, -1000, -1000, -1000, -1000, 829, - 835, 675, 820, 760, -1000, 5031, 53, 7803, 8721, 4087, - -1000, 502, 97, 9175, -152, 9175, 49, 49, 49, -1000, + -1000, -1000, -1000, -1000, 895, 942, -1000, -1000, -1000, -1000, + -1000, -1000, 695, 6549, 61, 95, -10, 8847, 94, 111, + 9074, -1000, -15, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -24, 9074, 506, 610, -1000, -1000, -1000, -1000, -1000, 890, + 903, 701, 859, 778, -1000, 5157, 55, 7702, 8620, 4213, + -1000, 505, 87, 9074, -144, 9074, 50, 50, 50, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1636,21 +1626,21 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 74, 9175, -1000, 9175, 48, 497, 48, 48, 48, 9175, - -1000, 133, -1000, -1000, -1000, 9175, 493, 790, 39, 2593, - 2593, 2593, 2593, 11, 2593, -98, 726, -1000, -1000, -1000, - -1000, 2593, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 9175, 850, 684, 404, 800, 5742, 5742, 838, - -1000, 622, -1000, -1000, -1000, 787, -1000, -1000, 259, 849, - -1000, 6886, 131, -1000, 5742, 1734, 619, 619, 619, 109, - 261, -1000, -1000, -1000, 6196, 6196, 6196, 6196, 6196, 6196, - 6196, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5506, 619, 619, - 619, 619, 619, 619, 619, 619, 5742, 619, 619, 619, - 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, - 8494, 517, 660, -1000, -1000, -1000, 817, 7113, 8266, 9175, - 548, -1000, 610, 3838, -113, -1000, -1000, -1000, 207, 8030, - -1000, -1000, -1000, 788, -1000, -1000, -1000, -1000, -1000, -1000, + 90, 9074, -1000, 9074, 48, 500, 48, 48, 48, 9074, + -1000, 125, -1000, -1000, -1000, 9074, 444, 825, 46, 2719, + 2719, 2719, 2719, 7, 2719, -94, 719, -1000, -1000, -1000, + -1000, 2719, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 9074, 889, 697, 449, 831, 5868, 5868, 895, + -1000, 610, -1000, -1000, -1000, 804, -1000, -1000, 253, 916, + -1000, 6785, 123, -1000, 5868, 1601, 410, 410, 410, 114, + 269, -1000, -1000, -1000, 6322, 6322, 6322, 6322, 6322, 6322, + 6322, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5632, 410, 410, + 410, 410, 410, 410, 410, 410, 5868, 410, 410, 410, + 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, + 8393, 559, 699, -1000, -1000, -1000, 855, 7012, 8165, 9074, + 531, -1000, 585, 3964, -106, -1000, -1000, -1000, 187, 7929, + -1000, -1000, -1000, 823, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1659,184 +1649,185 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 501, -1000, 1743, - 480, 2593, 69, 627, 478, 231, 448, 9175, 9175, 2593, - 62, 9175, 815, 722, 9175, 433, 427, -1000, 3340, -1000, - 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, -1000, -1000, - -1000, -1000, -1000, -1000, 2593, 2593, -1000, -100, -1000, 9175, - -1000, -1000, 331, 9175, -1000, -1000, -1000, 863, 157, 583, - 129, 612, -1000, 288, 829, 404, 760, 7340, 736, -1000, - -1000, 9175, -1000, 5742, 5742, 293, -1000, 9175, -1000, 3091, - 170, 6196, 359, 189, 6196, 6196, 6196, 6196, 6196, 6196, - 6196, 6196, 6196, 6196, 6196, 6196, 6196, 6196, 6196, 393, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 425, 4323, - -1000, 622, 626, 626, -1000, -1000, 141, 141, 141, 141, - 141, 141, 6423, 404, 491, 195, 5506, 5031, 5031, 5742, - 5742, 9175, 9175, 5031, 821, 225, 195, 9175, -1000, 404, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5031, 5031, 5031, - 5031, 26, 9175, -1000, 9175, 7803, 7803, 7803, 7803, 7803, - -1000, 750, 746, -1000, 749, 747, 763, 9175, -1000, 485, - 7113, 121, 619, -1000, 9175, -1000, 26, 523, 7803, 9175, - -1000, -1000, 3589, 610, -113, 589, -1000, -107, -126, 5267, - 134, -1000, -1000, -1000, 2344, 160, 238, -80, -1000, -1000, - -1000, 625, -1000, 625, 625, 625, 625, -51, -51, -51, - -51, -1000, -1000, -1000, -1000, -1000, 677, 674, -1000, 625, - 625, 625, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 670, 670, - 670, 644, 644, 683, -1000, 9175, -169, 415, 2593, 811, - 2593, -1000, 65, -1000, 9175, -1000, -1000, 9175, 2593, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 504, -1000, 1612, + 436, 2719, 69, 612, 434, 207, 432, 9074, 9074, 2719, + 57, 9074, 849, 717, 9074, 426, 422, -1000, 3466, -1000, + 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, -1000, -1000, + -1000, -1000, -1000, -1000, 2719, 2719, -1000, -89, -1000, 9074, + -1000, -1000, 130, 130, 9074, -1000, -1000, -1000, 934, 153, + 405, 120, 611, -1000, 413, 890, 449, 778, 7239, 729, + -1000, -1000, 9074, -1000, 5868, 5868, 319, -1000, 9074, -1000, + 3217, 159, 6322, 367, 204, 6322, 6322, 6322, 6322, 6322, + 6322, 6322, 6322, 6322, 6322, 6322, 6322, 6322, 6322, 6322, + 395, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 408, + 4449, -1000, 610, 1030, 1030, -1000, -1000, 134, 134, 134, + 134, 134, 134, 1911, 449, 499, 263, 5632, 5157, 5157, + 5868, 5868, 9074, 9074, 5157, 863, 194, 263, 9074, -1000, + 449, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5157, 5157, + 5157, 5157, 141, 9074, -1000, 9074, 7702, 7702, 7702, 7702, + 7702, -1000, 767, 753, -1000, 774, 747, 788, 9074, -1000, + 491, 7012, 128, 410, -1000, 9074, -1000, 29, 524, 7702, + 9074, -1000, -1000, 3715, 585, -106, 553, -1000, -108, -121, + 5393, 132, -1000, -1000, -1000, 2470, 160, 229, -83, -1000, + -1000, -1000, 619, -1000, 619, 619, 619, 619, -51, -51, + -51, -51, -1000, -1000, -1000, -1000, -1000, 685, 683, -1000, + 619, 619, 619, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 682, + 682, 682, 620, 620, 680, -1000, 9074, -162, 402, 2719, + 836, 2719, -1000, 1279, -1000, 9074, -1000, -1000, 9074, 2719, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 266, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 604, -1000, -1000, 764, 5742, 5742, 3340, 5742, - -1000, -1000, -1000, 800, -1000, 821, 837, -1000, 782, 779, - 5031, -1000, -1000, 170, 197, -1000, -1000, 247, -1000, -1000, - -1000, -1000, 128, 619, -1000, -1000, 1888, -1000, -1000, -1000, - -1000, 359, 6196, 6196, 6196, 651, 1888, 1873, 304, 1579, - 141, 130, 130, 154, 154, 154, 154, 154, 429, 429, - -1000, -1000, -1000, 404, 404, 5031, 597, -1000, 261, -1000, - 261, -1000, -1000, 5742, -1000, 404, 460, 460, 379, 301, - 646, -1000, 127, 613, 460, 5031, 217, -1000, 5742, 404, - -1000, 460, 404, 460, 460, 511, 619, -1000, 561, -1000, - 184, 660, 661, 705, 673, -1000, -1000, -1000, -1000, 738, - -1000, 685, -1000, -1000, -1000, -1000, -1000, 90, 85, 77, - 9175, -1000, 847, 7803, 549, -1000, -1000, 589, -113, -69, - -1000, -1000, -1000, 195, -1000, 407, 545, 2095, -1000, -1000, - -1000, -1000, -1000, 653, 798, 182, 179, 405, -1000, -1000, - 792, -1000, 239, -88, -1000, -1000, 351, -51, -51, -1000, - -1000, 134, 786, 134, 134, 134, 394, 394, -1000, -1000, - -1000, -1000, 349, -1000, -1000, -1000, 314, -1000, 690, 9175, - 2593, -1000, 3340, -1000, -1000, -1000, -1000, -1000, -1000, 654, - 265, 150, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 25, -1000, 2593, -1000, 237, 9175, 9175, - 9175, 767, 195, 195, 115, -1000, -1000, 9175, -1000, -1000, - -1000, -1000, 595, -1000, -1000, -1000, 2842, 5031, -1000, 651, - 1888, 1792, -1000, 6196, 6196, -1000, -1000, 460, 5031, 195, - -1000, -1000, -1000, 21, 393, 21, 6196, 6196, 3340, 6196, - 6196, -162, 582, 212, -1000, 5742, 346, -1000, -1000, -1000, - -1000, -1000, 687, 9175, 619, -1000, 7113, 9175, 838, 9175, - 5742, 5742, -1000, -1000, 5742, 645, -1000, 5742, -1000, -1000, - -1000, 619, 619, 619, 431, -1000, 838, 549, -1000, -1000, - -1000, -122, -131, -1000, -1000, 2344, -1000, 2344, 9175, -1000, - 398, 382, -1000, -1000, 686, 46, -1000, -1000, -1000, 461, - 134, 134, -1000, 188, -1000, -1000, -1000, 457, -1000, 455, - 541, 453, 9175, -1000, -1000, 538, -1000, 180, -1000, -1000, - 9175, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 9175, 9175, -1000, -1000, -1000, -1000, -1000, - 9175, -1000, -1000, 381, 5742, -1000, -1000, -1000, -1000, 3340, - -1000, 847, 7803, -1000, -1000, 404, -1000, 6196, 1888, 1888, - -1000, -1000, 404, 625, 625, -1000, 625, 644, -1000, 625, - -20, 625, -21, 404, 404, 1646, 1698, -1000, 1253, 1683, - 619, -159, -1000, 195, 5742, -187, 805, 532, 530, -1000, - -1000, 4795, 404, 447, 114, 431, 829, -1000, 195, 195, - 195, 9175, 195, 9175, 9175, 9175, 7576, 9175, 829, -1000, - -1000, -1000, -1000, 2095, -1000, 421, -1000, 625, -1000, -1000, - -76, 860, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -51, 377, -51, 310, -1000, 305, 2593, - 3340, 2344, -1000, 621, -1000, -1000, -1000, -1000, 807, -1000, - 195, 839, 537, -1000, 1888, -1000, -1000, 73, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6196, 6196, -1000, - 6196, 6196, 6196, 404, 368, 195, -1000, 4559, 796, -1000, - 619, -1000, -1000, 620, 9175, 9175, -1000, -1000, 419, -1000, - 414, 414, 414, 121, -1000, -1000, 123, 9175, -1000, 148, - -1000, -142, 134, -1000, 134, 432, 422, -1000, -1000, -1000, - 9175, 619, 843, 834, -1000, -1000, 1494, 1494, 1494, 1494, - 41, -1000, -1000, -1000, 528, 856, -1000, 619, -1000, 622, - 112, -1000, 9175, -1000, -1000, -1000, -1000, -1000, 123, -1000, - 308, 178, 367, -1000, 256, 795, -1000, 789, -1000, -1000, - -1000, -1000, -1000, 411, 22, -1000, 5742, 5742, -1000, -1000, - -1000, -1000, 404, 36, -174, 9175, 530, 404, 9175, -1000, - -1000, -1000, 267, -1000, -1000, -1000, 366, -1000, -1000, 627, - 403, -1000, 9175, 195, 528, -1000, 758, -167, -179, 508, - -1000, -1000, -1000, -1000, -169, -1000, 22, 776, -1000, 756, - -1000, -1000, -1000, 19, -172, 10, -176, 619, -180, 5969, - -1000, 1494, 404, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 237, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 563, -1000, -1000, 797, + 5868, 5868, 3466, 5868, -1000, -1000, -1000, 831, -1000, 863, + 901, -1000, 807, 805, 5157, -1000, -1000, 159, 174, -1000, + -1000, 356, -1000, -1000, -1000, -1000, 119, 410, -1000, -1000, + 1724, -1000, -1000, -1000, -1000, 367, 6322, 6322, 6322, 591, + 1724, 1412, 309, 703, 134, 663, 663, 150, 150, 150, + 150, 150, 684, 684, -1000, -1000, -1000, 449, 449, 5157, + 556, -1000, 269, -1000, 269, -1000, -1000, 5868, -1000, 449, + 483, 483, 362, 427, 650, -1000, 117, 598, 483, 5157, + 226, -1000, 5868, 449, -1000, 483, 449, 483, 483, 675, + 803, 410, -1000, 565, -1000, 176, 699, 679, 708, 894, + -1000, -1000, -1000, -1000, 750, -1000, 709, -1000, -1000, -1000, + -1000, -1000, 85, 78, 77, 9074, -1000, 914, 7702, 560, + -1000, -1000, 553, -106, -110, -1000, -1000, -1000, 263, -1000, + 396, 551, 2221, -1000, -1000, -1000, -1000, -1000, 674, 835, + 179, 164, 384, -1000, -1000, 828, -1000, 238, -85, -1000, + -1000, 310, -51, -51, -1000, -1000, 132, 800, 132, 132, + 132, 359, 359, -1000, -1000, -1000, -1000, 305, -1000, -1000, + -1000, 280, -1000, 706, 9074, 2719, -1000, 3466, -1000, -1000, + -1000, -1000, -1000, -1000, 646, 270, 206, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 28, -1000, + 2719, -1000, 248, 9074, 9074, 9074, 786, 263, 263, 112, + -1000, -1000, 9074, -1000, -1000, -1000, -1000, 564, -1000, -1000, + -1000, 2968, 5157, -1000, 591, 1724, 793, -1000, 6322, 6322, + -1000, -1000, 483, 5157, 263, -1000, -1000, -1000, 67, 395, + 67, 6322, 6322, 3466, 6322, 6322, -155, 558, 175, -1000, + 5868, 409, -1000, -1000, -1000, -1000, -1000, 702, 9074, 410, + -1000, 7012, -1000, 9074, 895, 9074, 5868, 5868, -1000, -1000, + 5868, 625, -1000, 5868, -1000, -1000, -1000, 410, 410, 410, + 467, -1000, 895, 560, -1000, -1000, -1000, -117, -130, -1000, + -1000, 2470, -1000, 2470, 9074, -1000, 380, 371, -1000, -1000, + 686, 40, -1000, -1000, -1000, 510, 132, 132, -1000, 181, + -1000, -1000, -1000, 481, -1000, 477, 547, 474, 9074, -1000, + -1000, 544, -1000, 170, -1000, -1000, 9074, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 9074, + 9074, -1000, -1000, -1000, -1000, -1000, 9074, -1000, -1000, 358, + 5868, -1000, -1000, -1000, -1000, 3466, -1000, 914, 7702, -1000, + -1000, 449, -1000, 6322, 1724, 1724, -1000, -1000, 449, 619, + 619, -1000, 619, 620, -1000, 619, -32, 619, -35, 449, + 449, 1760, 1641, -1000, 1306, 1517, 410, -151, -1000, 263, + 5868, -181, 843, 509, 539, -1000, -1000, 4921, 449, 469, + 109, 467, 890, -1000, 263, 263, 263, 9074, 263, 9074, + 9074, 9074, 7475, 9074, 890, -1000, -1000, -1000, -1000, 2221, + -1000, 462, -1000, 619, -1000, -1000, -78, 925, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -51, + 336, -51, 279, -1000, 278, 2719, 3466, 2470, -1000, 618, + -1000, -1000, -1000, -1000, 845, -1000, 263, 912, 543, -1000, + 1724, -1000, -1000, 73, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 6322, 6322, -1000, 6322, 6322, 6322, 449, + 335, 263, -1000, 4685, 833, -1000, 410, -1000, -1000, 614, + 9074, 9074, -1000, -1000, 459, -1000, 448, 448, 448, 128, + -1000, -1000, 145, 9074, -1000, 148, -1000, -134, 132, -1000, + 132, 492, 478, -1000, -1000, -1000, 9074, 410, 910, 893, + -1000, -1000, 1661, 1661, 1661, 1661, 54, -1000, -1000, -1000, + 534, 920, -1000, 410, -1000, 610, 107, -1000, 9074, -1000, + -1000, -1000, -1000, -1000, 145, -1000, 365, 155, 321, -1000, + 241, 832, -1000, 830, -1000, -1000, -1000, -1000, -1000, 412, + 26, -1000, 5868, 5868, -1000, -1000, -1000, -1000, 449, 43, + -171, 9074, 539, 449, 9074, -1000, -1000, -1000, 276, -1000, + -1000, -1000, 312, -1000, -1000, 612, 407, -1000, 9074, 263, + 534, -1000, 783, -159, -174, 530, -1000, -1000, -1000, -1000, + -162, -1000, 26, 802, -1000, 776, -1000, -1000, -1000, -3, + -169, -5, -172, 410, -175, 6095, -1000, 1661, 449, -1000, + -1000, } var yyPgo = [...]int{ - 0, 1090, 57, 351, 1088, 1087, 1086, 1083, 1082, 1081, - 1080, 1078, 1074, 1073, 1072, 1071, 1070, 1069, 1067, 1066, - 1065, 1064, 1061, 1060, 1059, 1058, 1055, 120, 1054, 1052, - 1051, 53, 1049, 61, 1048, 1047, 27, 102, 64, 37, - 192, 1046, 15, 79, 62, 1045, 35, 1044, 1043, 65, - 1040, 48, 1039, 1038, 1146, 1036, 1033, 12, 32, 1032, - 1031, 1030, 1029, 56, 263, 1027, 1026, 1025, 1020, 1018, - 1016, 44, 3, 8, 10, 14, 1015, 734, 9, 1008, - 33, 1003, 1002, 1000, 999, 42, 994, 39, 993, 25, - 36, 992, 6, 40, 22, 21, 7, 63, 47, 991, - 19, 54, 30, 990, 987, 352, 978, 977, 976, 975, - 973, 972, 167, 337, 970, 968, 967, 955, 23, 953, - 0, 484, 49, 952, 948, 945, 943, 60, 59, 13, - 944, 43, 166, 24, 942, 941, 28, 940, 938, 937, - 932, 931, 930, 929, 319, 928, 927, 926, 71, 55, - 925, 924, 45, 17, 923, 918, 916, 29, 46, 915, - 26, 914, 913, 906, 905, 20, 16, 904, 11, 903, - 4, 902, 898, 1, 897, 18, 895, 2, 894, 5, - 31, 893, 891, 888, 886, 881, 879, 50, 100, 877, - 876, 89, + 0, 1181, 17, 62, 1180, 1179, 1178, 948, 1177, 1176, + 1175, 1174, 1173, 1172, 1166, 1165, 1164, 1157, 1154, 1153, + 1150, 1149, 1144, 1141, 1140, 1139, 1138, 133, 1137, 1132, + 1130, 58, 1129, 63, 1124, 1121, 31, 137, 48, 39, + 54, 1119, 25, 89, 82, 1118, 46, 1117, 1116, 75, + 1115, 60, 1109, 1106, 1285, 1104, 1103, 12, 27, 1102, + 1101, 1100, 1099, 56, 213, 1096, 1075, 1074, 1073, 1072, + 1071, 43, 3, 6, 24, 11, 1070, 600, 8, 1069, + 42, 1068, 1067, 1066, 1065, 33, 1062, 47, 1060, 19, + 44, 1058, 16, 55, 29, 13, 9, 67, 53, 1055, + 22, 50, 45, 1054, 1052, 390, 1051, 1049, 1048, 1046, + 1045, 1039, 128, 289, 1038, 1037, 1036, 1035, 36, 1034, + 0, 139, 61, 1033, 1032, 1031, 1012, 57, 59, 23, + 1030, 37, 181, 30, 1029, 1023, 28, 1020, 1013, 1010, + 1008, 1007, 1006, 1004, 195, 1003, 1002, 1001, 20, 7, + 1000, 999, 49, 21, 997, 996, 991, 35, 51, 990, + 40, 989, 987, 986, 985, 26, 15, 983, 10, 982, + 5, 978, 977, 1, 976, 14, 975, 2, 963, 4, + 32, 961, 960, 66, 958, 957, 955, 64, 144, 954, + 953, 83, } var yyR1 = [...]int{ 0, 185, 186, 186, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 6, 3, - 4, 4, 5, 5, 7, 7, 30, 30, 8, 9, - 9, 9, 189, 189, 49, 49, 93, 93, 10, 10, - 10, 10, 98, 98, 102, 102, 102, 103, 103, 103, - 103, 134, 134, 11, 11, 11, 11, 11, 11, 11, - 179, 179, 178, 177, 177, 176, 176, 175, 16, 162, - 163, 163, 163, 158, 137, 137, 137, 137, 140, 140, - 138, 138, 138, 138, 138, 138, 138, 139, 139, 139, - 139, 139, 141, 141, 141, 141, 141, 142, 142, 142, + 4, 4, 5, 5, 7, 7, 7, 30, 30, 8, + 9, 9, 9, 189, 189, 49, 49, 93, 93, 10, + 10, 10, 10, 98, 98, 102, 102, 102, 103, 103, + 103, 103, 134, 134, 11, 11, 11, 11, 11, 11, + 11, 179, 179, 178, 177, 177, 176, 176, 175, 16, + 162, 163, 163, 163, 158, 137, 137, 137, 137, 140, + 140, 138, 138, 138, 138, 138, 138, 138, 139, 139, + 139, 139, 139, 141, 141, 141, 141, 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, - 157, 157, 144, 144, 152, 152, 153, 153, 153, 150, - 150, 151, 151, 154, 154, 154, 145, 145, 145, 145, - 145, 145, 145, 147, 147, 155, 155, 148, 148, 148, - 149, 149, 156, 156, 156, 156, 156, 146, 146, 159, - 159, 171, 171, 170, 170, 170, 161, 161, 167, 167, - 167, 167, 167, 160, 160, 169, 169, 168, 164, 164, - 164, 165, 165, 165, 166, 166, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 174, 172, 172, 173, - 173, 13, 14, 14, 14, 14, 14, 15, 15, 17, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 142, 142, 142, 143, 143, 143, 143, 143, 143, 143, + 143, 157, 157, 144, 144, 152, 152, 153, 153, 153, + 150, 150, 151, 151, 154, 154, 154, 145, 145, 145, + 145, 145, 145, 145, 147, 147, 155, 155, 148, 148, + 148, 149, 149, 156, 156, 156, 156, 156, 146, 146, + 159, 159, 171, 171, 170, 170, 170, 161, 161, 167, + 167, 167, 167, 167, 160, 160, 169, 169, 168, 164, + 164, 164, 165, 165, 165, 166, 166, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 174, 172, 172, + 173, 173, 13, 14, 14, 14, 14, 14, 15, 15, + 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 110, 110, 107, 107, 108, 108, 109, - 109, 109, 111, 111, 111, 135, 135, 135, 19, 19, - 21, 21, 22, 23, 20, 20, 20, 20, 20, 24, - 25, 183, 183, 183, 26, 26, 184, 184, 190, 27, - 28, 28, 29, 29, 29, 33, 33, 33, 31, 31, - 32, 32, 38, 38, 37, 37, 39, 39, 39, 39, - 123, 123, 123, 122, 41, 41, 42, 42, 43, 43, - 44, 44, 44, 56, 56, 92, 92, 94, 94, 45, - 45, 45, 45, 46, 46, 47, 47, 48, 48, 130, - 130, 129, 129, 129, 128, 50, 50, 50, 52, 51, - 51, 51, 51, 53, 53, 55, 55, 54, 54, 57, - 57, 57, 57, 58, 58, 40, 40, 40, 40, 40, - 40, 40, 106, 106, 60, 60, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 70, 70, 70, 70, - 70, 70, 61, 61, 61, 61, 61, 61, 61, 36, - 36, 71, 71, 71, 77, 72, 72, 64, 64, 64, + 18, 18, 18, 18, 110, 110, 107, 107, 108, 108, + 109, 109, 109, 111, 111, 111, 135, 135, 135, 19, + 19, 21, 21, 22, 23, 20, 20, 20, 20, 20, + 24, 25, 25, 183, 183, 183, 183, 183, 26, 26, + 184, 184, 190, 27, 28, 28, 29, 29, 29, 33, + 33, 33, 31, 31, 32, 32, 38, 38, 37, 37, + 39, 39, 39, 39, 123, 123, 123, 122, 41, 41, + 42, 42, 43, 43, 44, 44, 44, 56, 56, 92, + 92, 94, 94, 45, 45, 45, 45, 46, 46, 47, + 47, 48, 48, 130, 130, 129, 129, 129, 128, 50, + 50, 50, 52, 51, 51, 51, 51, 53, 53, 55, + 55, 54, 54, 57, 57, 57, 57, 58, 58, 40, + 40, 40, 40, 40, 40, 40, 106, 106, 60, 60, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 70, 70, 70, 70, 70, 70, 61, 61, 61, 61, + 61, 61, 61, 36, 36, 71, 71, 71, 77, 72, + 72, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 68, 68, - 68, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, - 67, 67, 67, 67, 191, 191, 69, 69, 69, 69, - 34, 34, 34, 34, 34, 133, 133, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - 81, 81, 35, 35, 79, 79, 80, 82, 82, 78, - 78, 78, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 181, 65, 65, 65, 83, 83, 84, 84, - 85, 85, 86, 86, 87, 88, 88, 88, 89, 89, - 89, 89, 90, 90, 90, 62, 62, 62, 62, 62, - 62, 91, 91, 91, 91, 95, 95, 73, 73, 75, - 75, 74, 76, 182, 182, 182, 96, 96, 100, 97, - 97, 101, 101, 101, 99, 99, 99, 125, 125, 104, - 104, 112, 112, 113, 113, 105, 105, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, - 116, 116, 117, 117, 117, 124, 124, 120, 120, 120, - 121, 121, 126, 127, 127, 118, 118, 118, 118, 118, + 64, 64, 68, 68, 68, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 67, 67, 67, 67, 67, 67, 67, 67, 191, 191, + 69, 69, 69, 69, 34, 34, 34, 34, 34, 133, + 133, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 81, 81, 35, 35, 79, 79, + 80, 82, 82, 78, 78, 78, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 181, 65, 65, 65, + 83, 83, 84, 84, 85, 85, 86, 86, 87, 88, + 88, 88, 89, 89, 89, 89, 90, 90, 90, 62, + 62, 62, 62, 62, 62, 91, 91, 91, 91, 95, + 95, 73, 73, 75, 75, 74, 76, 182, 182, 182, + 96, 96, 100, 97, 97, 101, 101, 101, 99, 99, + 99, 125, 125, 104, 104, 112, 112, 113, 113, 105, + 105, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 115, 115, 115, 116, 116, 117, 117, 117, 124, + 124, 120, 120, 120, 121, 121, 126, 127, 127, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, @@ -1845,8 +1836,8 @@ var yyR1 = [...]int{ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, @@ -1855,71 +1846,72 @@ var yyR1 = [...]int{ 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 187, 188, 131, 132, 132, - 132, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 187, + 188, 131, 132, 132, 132, } var yyR2 = [...]int{ 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 6, 7, 5, 10, - 1, 3, 1, 3, 8, 8, 1, 1, 8, 8, - 7, 6, 1, 1, 1, 3, 0, 4, 3, 4, - 5, 4, 1, 3, 3, 2, 2, 2, 2, 2, - 1, 1, 1, 2, 8, 4, 6, 5, 5, 5, - 0, 2, 1, 0, 2, 1, 3, 3, 4, 4, - 1, 3, 3, 8, 3, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 1, 2, 2, 2, 1, 4, 4, 2, - 2, 3, 3, 3, 3, 1, 1, 1, 1, 1, - 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 0, 3, 0, 5, 0, 3, 5, 0, - 1, 0, 1, 0, 1, 2, 0, 2, 2, 2, - 2, 2, 2, 0, 3, 0, 1, 0, 3, 3, - 0, 2, 0, 2, 1, 2, 1, 0, 2, 5, - 4, 1, 2, 2, 3, 2, 0, 1, 2, 3, - 3, 2, 2, 1, 1, 1, 3, 2, 0, 1, - 3, 1, 2, 3, 1, 1, 6, 7, 7, 12, - 7, 7, 7, 4, 5, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 7, 1, 3, 8, - 8, 5, 4, 6, 5, 4, 4, 3, 2, 3, - 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, - 3, 3, 4, 3, 6, 4, 2, 4, 2, 2, - 2, 2, 3, 1, 1, 0, 1, 0, 1, 0, - 2, 2, 0, 2, 2, 0, 1, 1, 2, 1, - 1, 2, 1, 1, 2, 2, 2, 2, 2, 3, - 4, 1, 1, 1, 2, 4, 1, 3, 0, 2, - 0, 2, 1, 2, 2, 0, 1, 1, 0, 1, - 0, 1, 0, 1, 1, 3, 1, 2, 3, 5, - 0, 1, 2, 1, 0, 2, 1, 3, 1, 1, - 1, 3, 3, 3, 7, 1, 3, 1, 3, 4, - 4, 4, 3, 2, 4, 0, 1, 0, 2, 0, - 1, 0, 1, 2, 1, 1, 2, 2, 1, 2, - 3, 2, 3, 2, 2, 2, 1, 1, 3, 0, - 5, 5, 5, 0, 2, 1, 3, 3, 2, 3, - 1, 2, 0, 3, 1, 1, 3, 3, 4, 4, - 5, 3, 4, 5, 6, 2, 1, 2, 1, 2, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, - 2, 1, 1, 1, 3, 1, 3, 1, 1, 1, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, - 2, 2, 2, 3, 1, 1, 1, 1, 4, 5, - 6, 4, 4, 6, 6, 6, 6, 8, 8, 6, - 8, 8, 9, 7, 5, 4, 2, 2, 2, 2, - 2, 2, 2, 2, 0, 2, 4, 4, 4, 4, - 0, 3, 4, 7, 3, 1, 1, 2, 3, 3, - 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, - 0, 1, 0, 2, 1, 2, 4, 0, 2, 1, - 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 2, 2, 0, 3, 0, 2, - 0, 3, 1, 3, 2, 0, 1, 1, 0, 2, - 4, 4, 0, 2, 4, 2, 1, 3, 5, 4, - 6, 1, 3, 3, 5, 0, 5, 1, 3, 1, - 2, 3, 1, 0, 2, 2, 1, 3, 3, 1, - 3, 3, 3, 3, 1, 2, 1, 1, 1, 1, - 1, 0, 2, 0, 3, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, - 1, 1, 0, 1, 1, 0, 2, 1, 1, 1, + 1, 3, 1, 3, 8, 8, 6, 1, 1, 8, + 8, 7, 6, 1, 1, 1, 3, 0, 4, 3, + 4, 5, 4, 1, 3, 3, 2, 2, 2, 2, + 2, 1, 1, 1, 2, 8, 4, 6, 5, 5, + 5, 0, 2, 1, 0, 2, 1, 3, 3, 4, + 4, 1, 3, 3, 8, 3, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 1, 2, 2, 2, 1, 4, 4, + 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, + 1, 6, 6, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 0, 3, 0, 5, 0, 3, 5, + 0, 1, 0, 1, 0, 1, 2, 0, 2, 2, + 2, 2, 2, 2, 0, 3, 0, 1, 0, 3, + 3, 0, 2, 0, 2, 1, 2, 1, 0, 2, + 5, 4, 1, 2, 2, 3, 2, 0, 1, 2, + 3, 3, 2, 2, 1, 1, 1, 3, 2, 0, + 1, 3, 1, 2, 3, 1, 1, 6, 7, 7, + 12, 7, 7, 7, 4, 5, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 7, 1, 3, + 8, 8, 5, 4, 6, 5, 4, 4, 3, 2, + 3, 4, 4, 4, 4, 4, 4, 4, 4, 3, + 3, 3, 3, 4, 3, 6, 4, 2, 4, 2, + 2, 2, 2, 3, 1, 1, 0, 1, 0, 1, + 0, 2, 2, 0, 2, 2, 0, 1, 1, 2, + 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, + 3, 4, 4, 1, 1, 1, 1, 1, 2, 4, + 1, 3, 0, 2, 0, 2, 1, 2, 2, 0, + 1, 1, 0, 1, 0, 1, 0, 1, 1, 3, + 1, 2, 3, 5, 0, 1, 2, 1, 0, 2, + 1, 3, 1, 1, 1, 3, 3, 3, 7, 1, + 3, 1, 3, 4, 4, 4, 3, 2, 4, 0, + 1, 0, 2, 0, 1, 0, 1, 2, 1, 1, + 2, 2, 1, 2, 3, 2, 3, 2, 2, 2, + 1, 1, 3, 0, 5, 5, 5, 0, 2, 1, + 3, 3, 2, 3, 1, 2, 0, 3, 1, 1, + 3, 3, 4, 4, 5, 3, 4, 5, 6, 2, + 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 0, 2, 1, 1, 1, 3, 1, + 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 2, 2, 2, 2, 2, 2, 3, 1, 1, + 1, 1, 4, 5, 6, 4, 4, 6, 6, 6, + 6, 8, 8, 6, 8, 8, 9, 7, 5, 4, + 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, + 4, 4, 4, 4, 0, 3, 4, 7, 3, 1, + 1, 2, 3, 3, 1, 2, 2, 1, 2, 1, + 2, 2, 1, 2, 0, 1, 0, 2, 1, 2, + 4, 0, 2, 1, 3, 5, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, + 0, 3, 0, 2, 0, 3, 1, 3, 2, 0, + 1, 1, 0, 2, 4, 4, 0, 2, 4, 2, + 1, 3, 5, 4, 6, 1, 3, 3, 5, 0, + 5, 1, 3, 1, 2, 3, 1, 0, 2, 2, + 1, 3, 3, 1, 3, 3, 3, 3, 1, 2, + 1, 1, 1, 1, 1, 0, 2, 0, 3, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1939,8 +1931,7 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, - 1, + 1, 0, 0, 1, 1, } var yyChk = [...]int{ @@ -1990,227 +1981,229 @@ var yyChk = [...]int{ -54, -112, 125, 56, -112, -112, -112, -54, 110, -54, 56, 30, 231, 56, 147, 120, 148, 122, -132, -187, -121, -132, -132, -132, 151, 152, -132, -108, 215, 51, - -132, -126, 11, 52, -188, 55, -90, 19, 31, -40, - -126, -86, -87, -40, -85, -2, -27, 35, -31, 21, - 65, 11, -123, 72, 71, 88, -122, 22, -120, 110, - -40, -61, 91, 73, 89, 90, 75, 93, 92, 103, - 96, 97, 98, 99, 100, 101, 102, 94, 95, 106, - 81, 82, 83, 84, 85, 86, 87, -106, -187, -187, - -77, -187, 111, 112, -181, 64, -64, -64, -64, -64, - -64, -64, -64, -2, -72, -40, -187, -187, -187, -187, - -187, -187, -187, -187, -187, -81, -40, -187, -191, -187, - -191, -191, -191, -191, -191, -191, -191, -187, -187, -187, - -187, -55, 26, -54, 30, 54, -50, -52, -51, -53, - 41, 45, 47, 42, 43, 44, 48, -130, 22, -42, - -187, -129, 143, -128, 22, -126, -54, -49, -189, 54, - 11, 52, 54, -97, 155, -98, -102, 221, 223, 81, - -125, -120, 29, 30, 55, 54, -137, -140, -142, -141, - -143, -138, -139, 178, 179, 107, 182, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 30, 137, 174, - 175, 176, 177, 194, 195, 196, 197, 198, 199, 200, - 201, 161, 162, 163, 164, 165, 166, 167, 169, 170, - 171, 172, 173, 56, -132, 122, -179, 52, 56, 73, - 56, -54, -54, -132, 123, -54, 23, 51, -54, 56, - 56, -127, -126, -118, -132, -132, -132, -132, -132, -132, - -132, -132, -132, -132, -110, 209, 216, -54, -183, 56, - 57, 59, -184, -126, 9, 91, 54, 18, 110, 54, - -88, 24, 25, -89, -188, -33, -65, -120, 60, 63, - -32, 42, -54, -40, -40, -70, 68, 73, 69, 70, - -122, 98, -127, -121, -118, -120, -64, -71, -74, -77, - 64, 91, 89, 90, 75, -64, -64, -64, -64, -64, + -132, -126, 11, 22, 52, -188, 55, -90, 19, 31, + -40, -126, -86, -87, -40, -85, -2, -27, 35, -31, + 21, 65, 11, -123, 72, 71, 88, -122, 22, -120, + 110, -40, -61, 91, 73, 89, 90, 75, 93, 92, + 103, 96, 97, 98, 99, 100, 101, 102, 94, 95, + 106, 81, 82, 83, 84, 85, 86, 87, -106, -187, + -187, -77, -187, 111, 112, -181, 64, -64, -64, -64, + -64, -64, -64, -64, -2, -72, -40, -187, -187, -187, + -187, -187, -187, -187, -187, -187, -81, -40, -187, -191, + -187, -191, -191, -191, -191, -191, -191, -191, -187, -187, + -187, -187, -55, 26, -54, 30, 54, -50, -52, -51, + -53, 41, 45, 47, 42, 43, 44, 48, -130, 22, + -42, -187, -129, 143, -128, 22, -126, -54, -49, -189, + 54, 11, 52, 54, -97, 155, -98, -102, 221, 223, + 81, -125, -120, 29, 30, 55, 54, -137, -140, -142, + -141, -143, -138, -139, 178, 179, 107, 182, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 30, 137, + 174, 175, 176, 177, 194, 195, 196, 197, 198, 199, + 200, 201, 161, 162, 163, 164, 165, 166, 167, 169, + 170, 171, 172, 173, 56, -132, 122, -179, 52, 56, + 73, 56, -54, -54, -132, 123, -54, 23, 51, -54, + 56, 56, -127, -126, -118, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -110, 209, 216, -54, -183, + -3, -7, 56, 57, 59, -183, -184, -126, 9, 91, + 54, 18, 110, 54, -88, 24, 25, -89, -188, -33, + -65, -120, 60, 63, -32, 42, -54, -40, -40, -70, + 68, 73, 69, 70, -122, 98, -127, -121, -118, -120, + -64, -71, -74, -77, 64, 91, 89, 90, 75, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, - -133, 56, 59, 56, -38, 21, -37, -39, -63, 59, - -63, -120, -188, 54, -188, -2, -37, -37, -40, -40, - -78, -120, -126, -78, -37, -31, -79, -80, 77, -78, - -188, -37, -38, -37, -37, -93, 143, -54, -96, -100, - -78, -43, -44, -44, -43, -44, 41, 41, 41, 46, - 41, 46, 41, -51, -126, -188, -57, 49, 124, 50, - -187, -128, -93, 52, -42, -54, -101, -98, 54, 222, - 224, 225, 51, -40, -149, 106, -164, -165, -166, -121, - 60, -158, -159, -167, 127, 130, 126, -160, 121, 28, - -154, 68, 73, -150, 206, -144, 53, -144, -144, -144, - -144, -148, 181, -148, -148, -148, 53, 53, -144, -144, - -144, -152, 53, -152, -152, -153, 53, -153, -124, 52, - -54, -177, 250, -178, 56, -132, 23, -132, -114, 118, - 115, 116, -174, 114, 203, 181, 66, 29, 15, 240, - 143, 253, 56, 144, -54, -54, -132, -109, 11, 91, - 54, 37, -40, -40, -127, -87, -90, -104, 19, 11, - 33, 33, -37, 68, 69, 70, 110, -187, -71, -64, - -64, -64, -36, 138, 72, -188, -188, -37, 54, -40, - -188, -188, -188, 54, 52, 22, 54, 11, 110, 54, - 11, -188, -37, -82, -80, 79, -40, -188, -188, -188, - -188, -188, -62, 30, 33, -2, -187, -187, -58, 54, - 12, 81, -47, -46, 51, 52, -48, 51, -46, 41, - 41, 121, 121, 121, -94, -120, -58, -42, -58, -102, - -103, 226, 223, 229, 56, 54, -166, 81, 53, 28, - -160, -160, 56, 56, -145, 29, 68, -151, 207, 60, - -148, -148, -149, 30, -149, -149, -149, -157, 59, -157, - 60, 60, 51, -120, -132, -176, -175, -121, -131, -180, - 149, 128, 129, 132, 131, 56, 121, 28, 127, 130, - 143, 126, -180, 149, -115, -116, 123, 22, 121, 28, - 143, -132, -111, 89, 12, -126, -126, -126, 38, 110, - -54, -41, 11, 98, -121, -38, -36, 72, -64, -64, - -188, -39, -136, 107, 178, 137, 176, 172, 192, 183, - 205, 174, 206, -133, -136, -64, -64, -121, -64, -64, - 247, -85, 80, -40, 78, -95, 51, -96, -73, -75, - -74, -187, -2, -91, -120, -94, -85, -100, -40, -40, - -40, 53, -40, -187, -187, -187, -188, 54, -85, -58, - 223, 227, 228, -165, -166, -169, -168, -120, 56, 56, - -147, 51, 59, 60, 61, 68, 230, 67, 55, -149, - -149, 56, 107, 55, 54, 55, 54, 55, 54, -54, - 54, 81, -131, -120, -131, -120, -54, -131, -120, 59, - -40, -58, -42, -188, -64, -188, -144, -144, -144, -153, - -144, 166, -144, 166, -188, -188, -188, 54, 19, -188, - 54, 19, -187, -35, 245, -40, -182, 254, 27, -95, - 54, -188, -188, -188, 54, 110, -188, -89, -92, -120, - -92, -92, -92, -129, -120, -89, 55, 54, -144, -155, - 203, 9, -148, 59, -148, 60, 60, -132, -175, -166, - 53, 26, -83, 13, -148, 56, -64, -64, -64, -64, - -64, -188, 59, 98, -72, 28, -75, 33, -2, -187, - -120, -120, 54, 55, -188, -188, -188, -57, -171, -170, - 52, 133, 66, -168, -156, 127, 28, 126, 230, -149, - -149, 55, 55, -92, -187, -84, 14, 16, -188, -188, - -188, -188, -34, 91, 250, 9, -73, -2, 110, -120, - -170, 56, -161, 81, 59, -146, 66, 28, 28, 55, - -172, -173, 143, -40, -72, -188, 248, 48, 251, -96, - -188, -120, 60, 59, -179, -188, 54, -120, 38, 249, - 252, -177, -173, 33, 38, 145, 250, 146, 251, -187, - 252, -64, 142, -188, -188, + -64, -64, -64, -64, -133, 56, 59, 56, -38, 21, + -37, -39, -63, 59, -63, -120, -188, 54, -188, -2, + -37, -37, -40, -40, -78, -120, -126, -78, -37, -31, + -79, -80, 77, -78, -188, -37, -38, -37, -37, -93, + 29, 143, -54, -96, -100, -78, -43, -44, -44, -43, + -44, 41, 41, 41, 46, 41, 46, 41, -51, -126, + -188, -57, 49, 124, 50, -187, -128, -93, 52, -42, + -54, -101, -98, 54, 222, 224, 225, 51, -40, -149, + 106, -164, -165, -166, -121, 60, -158, -159, -167, 127, + 130, 126, -160, 121, 28, -154, 68, 73, -150, 206, + -144, 53, -144, -144, -144, -144, -148, 181, -148, -148, + -148, 53, 53, -144, -144, -144, -152, 53, -152, -152, + -153, 53, -153, -124, 52, -54, -177, 250, -178, 56, + -132, 23, -132, -114, 118, 115, 116, -174, 114, 203, + 181, 66, 29, 15, 240, 143, 253, 56, 144, -54, + -54, -132, -109, 11, 91, 54, 37, -40, -40, -127, + -87, -90, -104, 19, 11, 33, 33, -37, 68, 69, + 70, 110, -187, -71, -64, -64, -64, -36, 138, 72, + -188, -188, -37, 54, -40, -188, -188, -188, 54, 52, + 22, 54, 11, 110, 54, 11, -188, -37, -82, -80, + 79, -40, -188, -188, -188, -188, -188, -62, 30, 33, + -2, -187, 33, -187, -58, 54, 12, 81, -47, -46, + 51, 52, -48, 51, -46, 41, 41, 121, 121, 121, + -94, -120, -58, -42, -58, -102, -103, 226, 223, 229, + 56, 54, -166, 81, 53, 28, -160, -160, 56, 56, + -145, 29, 68, -151, 207, 60, -148, -148, -149, 30, + -149, -149, -149, -157, 59, -157, 60, 60, 51, -120, + -132, -176, -175, -121, -131, -180, 149, 128, 129, 132, + 131, 56, 121, 28, 127, 130, 143, 126, -180, 149, + -115, -116, 123, 22, 121, 28, 143, -132, -111, 89, + 12, -126, -126, -126, 38, 110, -54, -41, 11, 98, + -121, -38, -36, 72, -64, -64, -188, -39, -136, 107, + 178, 137, 176, 172, 192, 183, 205, 174, 206, -133, + -136, -64, -64, -121, -64, -64, 247, -85, 80, -40, + 78, -95, 51, -96, -73, -75, -74, -187, -2, -91, + -120, -94, -85, -100, -40, -40, -40, 53, -40, -187, + -187, -187, -188, 54, -85, -58, 223, 227, 228, -165, + -166, -169, -168, -120, 56, 56, -147, 51, 59, 60, + 61, 68, 230, 67, 55, -149, -149, 56, 107, 55, + 54, 55, 54, 55, 54, -54, 54, 81, -131, -120, + -131, -120, -54, -131, -120, 59, -40, -58, -42, -188, + -64, -188, -144, -144, -144, -153, -144, 166, -144, 166, + -188, -188, -188, 54, 19, -188, 54, 19, -187, -35, + 245, -40, -182, 254, 27, -95, 54, -188, -188, -188, + 54, 110, -188, -89, -92, -120, -92, -92, -92, -129, + -120, -89, 55, 54, -144, -155, 203, 9, -148, 59, + -148, 60, 60, -132, -175, -166, 53, 26, -83, 13, + -148, 56, -64, -64, -64, -64, -64, -188, 59, 98, + -72, 28, -75, 33, -2, -187, -120, -120, 54, 55, + -188, -188, -188, -57, -171, -170, 52, 133, 66, -168, + -156, 127, 28, 126, 230, -149, -149, 55, 55, -92, + -187, -84, 14, 16, -188, -188, -188, -188, -34, 91, + 250, 9, -73, -2, 110, -120, -170, 56, -161, 81, + 59, -146, 66, 28, 28, 55, -172, -173, 143, -40, + -72, -188, 248, 48, 251, -96, -188, -120, 60, 59, + -179, -188, 54, -120, 38, 249, 252, -177, -173, 33, + 38, 145, 250, 146, 251, -187, 252, -64, 142, -188, + -188, } var yyDef = [...]int{ 0, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 520, 0, 288, 288, 288, 288, - 288, 288, 0, 592, 575, 0, 0, 0, 0, -2, - 269, 270, 0, 272, 273, 797, 797, 797, 797, 797, - 0, 0, 0, 0, 36, 37, 795, 1, 3, 528, - 0, 0, 292, 295, 290, 0, 575, 0, 0, 0, - 63, 0, 0, 784, 0, 785, 573, 573, 573, 593, - 594, 597, 598, 599, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, - 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, - 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, - 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, - 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, - 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, - 783, 786, 787, 788, 789, 790, 791, 792, 793, 794, - 0, 0, 576, 0, 571, 0, 571, 571, 571, 0, - 228, 357, 602, 784, 785, 0, 0, 0, 0, 798, - 798, 798, 798, 0, 798, 257, 246, 248, 249, 250, - 251, 798, 266, 267, 256, 268, 271, 274, 275, 276, - 277, 278, 0, 0, 284, 30, 532, 0, 0, 520, - 32, 0, 288, 293, 294, 298, 296, 297, 289, 0, - 306, 310, 0, 365, 0, 370, 372, -2, 0, 407, - 408, 409, 410, 411, 0, 0, 0, 0, 0, 0, - 0, 434, 435, 436, 437, -2, 503, 504, 505, 506, - 507, 508, 509, 510, 374, 375, 552, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 490, 0, 464, 464, - 464, 464, 464, 464, 464, 464, 0, 0, 0, 0, - 0, 0, 316, 318, 319, 320, 339, 0, 341, 0, - 0, 44, 48, 0, 775, 559, -2, -2, 0, 0, - 600, 601, -2, 704, -2, 605, 606, 607, 608, 609, - 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, - 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, - 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, - 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, - 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 0, 80, 0, - 0, 798, 0, 70, 0, 0, 0, 0, 0, 798, - 0, 0, 0, 0, 0, 0, 0, 227, 0, 229, - 798, 798, 798, 798, 798, 798, 798, 798, 238, 799, - 800, 239, 240, 241, 798, 798, 243, 0, 258, 0, - 252, 279, 0, 0, 31, 796, 25, 0, 0, 529, - 0, 521, 522, 525, 528, 30, 295, 0, 300, 299, - 291, 0, 307, 0, 0, 0, 311, 0, 313, 0, - 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 22, 23, 24, 524, 0, 292, 292, 292, 292, + 292, 292, 0, 596, 579, 0, 0, 0, 0, -2, + 270, 271, 0, 273, 274, 801, 801, 801, 801, 801, + 0, 0, 0, 0, 37, 38, 799, 1, 3, 532, + 0, 0, 296, 299, 294, 0, 579, 0, 0, 0, + 64, 0, 0, 788, 0, 789, 577, 577, 577, 597, + 598, 601, 602, 603, 701, 702, 703, 704, 705, 706, + 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, + 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, + 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, + 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, + 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, + 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, + 787, 790, 791, 792, 793, 794, 795, 796, 797, 798, + 0, 0, 580, 0, 575, 0, 575, 575, 575, 0, + 229, 361, 606, 788, 789, 0, 0, 0, 0, 802, + 802, 802, 802, 0, 802, 258, 247, 249, 250, 251, + 252, 802, 267, 268, 257, 269, 272, 275, 276, 277, + 278, 279, 0, 0, 288, 30, 536, 0, 0, 524, + 32, 0, 292, 297, 298, 302, 300, 301, 293, 0, + 310, 314, 0, 369, 0, 374, 376, -2, 0, 411, + 412, 413, 414, 415, 0, 0, 0, 0, 0, 0, + 0, 438, 439, 440, 441, -2, 507, 508, 509, 510, + 511, 512, 513, 514, 378, 379, 556, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 494, 0, 468, 468, + 468, 468, 468, 468, 468, 468, 0, 0, 0, 0, + 0, 0, 320, 322, 323, 324, 343, 0, 345, 0, + 0, 45, 49, 0, 779, 563, -2, -2, 0, 0, + 604, 605, -2, 708, -2, 609, 610, 611, 612, 613, + 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, + 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, + 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, + 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, + 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, + 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, + 694, 695, 696, 697, 698, 699, 700, 0, 81, 0, + 0, 802, 0, 71, 0, 0, 0, 0, 0, 802, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 230, + 802, 802, 802, 802, 802, 802, 802, 802, 239, 803, + 804, 240, 241, 242, 802, 802, 244, 0, 259, 0, + 253, 280, 0, 0, 0, 31, 800, 25, 0, 0, + 533, 0, 525, 526, 529, 532, 30, 299, 0, 304, + 303, 295, 0, 311, 0, 0, 0, 315, 0, 317, + 0, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 392, 393, 394, 395, 396, 397, 398, 371, 0, 302, - 385, 0, 0, 0, 511, 512, 427, 428, 429, 430, - 431, 432, 0, 30, 0, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 298, 0, 491, 0, 456, 0, - 457, 458, 459, 460, 461, 462, 463, 0, 302, 0, - 0, 46, 0, 356, 0, 0, 0, 0, 0, 0, - 345, 0, 0, 348, 0, 0, 0, 0, 340, 0, - 0, 359, 748, 342, 0, 344, -2, 0, 0, 0, - 42, 43, 0, 49, 775, 51, 52, 0, 0, 0, - 160, 567, 568, 565, 188, 0, 143, 139, 85, 86, - 87, 132, 89, 132, 132, 132, 132, 157, 157, 157, - 157, 115, 116, 117, 118, 119, 0, 0, 102, 132, - 132, 132, 106, 122, 123, 124, 125, 126, 127, 128, - 129, 90, 91, 92, 93, 94, 95, 96, 134, 134, - 134, 136, 136, 595, 65, 0, 73, 0, 798, 0, - 798, 78, 0, 203, 0, 222, 572, 0, 798, 225, - 226, 358, 603, 604, 230, 231, 232, 233, 234, 235, - 236, 237, 242, 245, 259, 253, 254, 247, 280, 281, - 282, 283, 285, 286, 533, 0, 0, 0, 0, 0, - 524, 526, 527, 532, 33, 298, 0, 513, 0, 0, - 0, 301, 28, 366, 367, 369, 386, 0, 388, 390, - 312, 308, 0, 500, -2, -2, 376, 377, 401, 402, - 403, 0, 0, 0, 0, 399, 381, 0, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 426, 475, 476, 0, 0, 0, 303, 304, 424, 502, - 425, 433, 404, 0, 551, 30, 0, 0, 0, 0, - 0, -2, 0, 0, 0, 0, 497, 494, 0, 0, - 465, 0, 0, 0, 0, 0, 0, 355, 363, 556, - 0, 317, 335, 337, 0, 332, 346, 347, 349, 0, - 351, 0, 353, 354, 321, 322, 323, 0, 0, 0, - 0, 343, 363, 0, 363, 45, 560, 50, 0, 0, - 55, 56, 561, 562, 563, 0, 79, 189, 191, 194, - 195, 81, 82, 0, 0, 0, 0, 0, 183, 184, - 146, 144, 0, 141, 140, 88, 0, 157, 157, 109, - 110, 160, 0, 160, 160, 160, 0, 0, 103, 104, - 105, 97, 0, 98, 99, 100, 0, 101, 0, 0, - 798, 67, 0, 71, 72, 68, 574, 69, 797, 0, - 0, 587, 204, 577, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 0, 221, 798, 224, 262, 0, 0, - 0, 0, 530, 531, 0, 523, 26, 0, 569, 570, - 514, 515, 314, 387, 389, 391, 0, 302, 378, 399, - 382, 0, 379, 0, 0, 373, 438, 0, 0, 406, - -2, 441, 442, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 520, 0, 495, 0, 0, 455, 466, 467, - 468, 469, 545, 0, 0, -2, 0, 0, 520, 0, - 0, 0, 329, 336, 0, 0, 330, 0, 331, 350, - 352, 0, 0, 0, 0, 327, 520, 363, 41, 53, - 54, 0, 0, 60, 161, 0, 192, 0, 0, 178, - 0, 0, 181, 182, 153, 0, 145, 84, 142, 0, - 160, 160, 111, 0, 112, 113, 114, 0, 130, 0, - 0, 0, 0, 596, 66, 74, 75, 0, 196, 797, - 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 797, 0, 0, 797, 588, 589, 590, 591, - 0, 223, 244, 0, 0, 260, 261, 287, 534, 0, - 27, 363, 0, 309, 501, 0, 380, 0, 400, 383, - 439, 305, 0, 132, 132, 480, 132, 136, 483, 132, - 485, 132, 488, 0, 0, 0, 0, 500, 0, 0, - 0, 492, 454, 498, 0, 553, 0, 545, 535, 547, - 549, 0, 30, 0, 541, 0, 528, 557, 364, 558, - 333, 0, 338, 0, 0, 0, 341, 0, 528, 40, - 57, 58, 59, 190, 193, 0, 185, 132, 179, 180, - 155, 0, 147, 148, 149, 150, 151, 152, 133, 107, - 108, 158, 159, 157, 0, 157, 0, 137, 0, 798, - 0, 0, 197, 0, 198, 200, 201, 202, 0, 263, - 264, 516, 315, 440, 384, 443, 477, 157, 481, 482, - 484, 486, 487, 489, 445, 444, 446, 0, 0, 449, - 0, 0, 0, 0, 0, 496, 34, 0, 0, 35, - 0, 550, -2, 0, 0, 0, 47, 38, 0, 325, - 0, 0, 0, 359, 328, 39, 170, 0, 187, 162, - 156, 0, 160, 131, 160, 0, 0, 64, 76, 77, - 0, 0, 518, 0, 478, 479, 0, 0, 0, 0, - 470, 453, 493, 554, 555, 0, 548, 0, -2, 0, - 543, 542, 0, 334, 360, 361, 362, 324, 169, 171, - 0, 176, 0, 186, 167, 0, 164, 166, 154, 120, - 121, 135, 138, 0, 0, 29, 0, 0, 447, 448, - 450, 451, 0, 0, 0, 0, 538, 30, 0, 326, - 172, 173, 0, 177, 175, 83, 0, 163, 165, 70, - 0, 217, 0, 519, 517, 452, 0, 0, 0, 546, - -2, 544, 174, 168, 73, 216, 0, 0, 471, 0, - 474, 199, 218, 0, 472, 0, 0, 0, 0, 0, - 473, 0, 0, 219, 220, + 0, 396, 397, 398, 399, 400, 401, 402, 375, 0, + 306, 389, 0, 0, 0, 515, 516, 431, 432, 433, + 434, 435, 436, 0, 30, 0, 409, 0, 0, 0, + 0, 0, 0, 0, 0, 302, 0, 495, 0, 460, + 0, 461, 462, 463, 464, 465, 466, 467, 0, 306, + 0, 0, 47, 0, 360, 0, 0, 0, 0, 0, + 0, 349, 0, 0, 352, 0, 0, 0, 0, 344, + 0, 0, 363, 752, 346, 0, 348, -2, 0, 0, + 0, 43, 44, 0, 50, 779, 52, 53, 0, 0, + 0, 161, 571, 572, 569, 189, 0, 144, 140, 86, + 87, 88, 133, 90, 133, 133, 133, 133, 158, 158, + 158, 158, 116, 117, 118, 119, 120, 0, 0, 103, + 133, 133, 133, 107, 123, 124, 125, 126, 127, 128, + 129, 130, 91, 92, 93, 94, 95, 96, 97, 135, + 135, 135, 137, 137, 599, 66, 0, 74, 0, 802, + 0, 802, 79, 0, 204, 0, 223, 576, 0, 802, + 226, 227, 362, 607, 608, 231, 232, 233, 234, 235, + 236, 237, 238, 243, 246, 260, 254, 255, 248, 281, + 283, 284, 285, 286, 287, 282, 289, 290, 537, 0, + 0, 0, 0, 0, 528, 530, 531, 536, 33, 302, + 0, 517, 0, 0, 0, 305, 28, 370, 371, 373, + 390, 0, 392, 394, 316, 312, 0, 504, -2, -2, + 380, 381, 405, 406, 407, 0, 0, 0, 0, 403, + 385, 0, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 430, 479, 480, 0, 0, 0, + 307, 308, 428, 506, 429, 437, 408, 0, 555, 30, + 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, + 501, 498, 0, 0, 469, 0, 0, 0, 0, 0, + 0, 0, 359, 367, 560, 0, 321, 339, 341, 0, + 336, 350, 351, 353, 0, 355, 0, 357, 358, 325, + 326, 327, 0, 0, 0, 0, 347, 367, 0, 367, + 46, 564, 51, 0, 0, 56, 57, 565, 566, 567, + 0, 80, 190, 192, 195, 196, 82, 83, 0, 0, + 0, 0, 0, 184, 185, 147, 145, 0, 142, 141, + 89, 0, 158, 158, 110, 111, 161, 0, 161, 161, + 161, 0, 0, 104, 105, 106, 98, 0, 99, 100, + 101, 0, 102, 0, 0, 802, 68, 0, 72, 73, + 69, 578, 70, 801, 0, 0, 591, 205, 581, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 0, 222, + 802, 225, 263, 0, 0, 0, 0, 534, 535, 0, + 527, 26, 0, 573, 574, 518, 519, 318, 391, 393, + 395, 0, 306, 382, 403, 386, 0, 383, 0, 0, + 377, 442, 0, 0, 410, -2, 445, 446, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 524, 0, 499, + 0, 0, 459, 470, 471, 472, 473, 549, 0, 0, + -2, 0, 36, 0, 524, 0, 0, 0, 333, 340, + 0, 0, 334, 0, 335, 354, 356, 0, 0, 0, + 0, 331, 524, 367, 42, 54, 55, 0, 0, 61, + 162, 0, 193, 0, 0, 179, 0, 0, 182, 183, + 154, 0, 146, 85, 143, 0, 161, 161, 112, 0, + 113, 114, 115, 0, 131, 0, 0, 0, 0, 600, + 67, 75, 76, 0, 197, 801, 0, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 801, 0, + 0, 801, 592, 593, 594, 595, 0, 224, 245, 0, + 0, 261, 262, 291, 538, 0, 27, 367, 0, 313, + 505, 0, 384, 0, 404, 387, 443, 309, 0, 133, + 133, 484, 133, 137, 487, 133, 489, 133, 492, 0, + 0, 0, 0, 504, 0, 0, 0, 496, 458, 502, + 0, 557, 0, 549, 539, 551, 553, 0, 30, 0, + 545, 0, 532, 561, 368, 562, 337, 0, 342, 0, + 0, 0, 345, 0, 532, 41, 58, 59, 60, 191, + 194, 0, 186, 133, 180, 181, 156, 0, 148, 149, + 150, 151, 152, 153, 134, 108, 109, 159, 160, 158, + 0, 158, 0, 138, 0, 802, 0, 0, 198, 0, + 199, 201, 202, 203, 0, 264, 265, 520, 319, 444, + 388, 447, 481, 158, 485, 486, 488, 490, 491, 493, + 449, 448, 450, 0, 0, 453, 0, 0, 0, 0, + 0, 500, 34, 0, 0, 35, 0, 554, -2, 0, + 0, 0, 48, 39, 0, 329, 0, 0, 0, 363, + 332, 40, 171, 0, 188, 163, 157, 0, 161, 132, + 161, 0, 0, 65, 77, 78, 0, 0, 522, 0, + 482, 483, 0, 0, 0, 0, 474, 457, 497, 558, + 559, 0, 552, 0, -2, 0, 547, 546, 0, 338, + 364, 365, 366, 328, 170, 172, 0, 177, 0, 187, + 168, 0, 165, 167, 155, 121, 122, 136, 139, 0, + 0, 29, 0, 0, 451, 452, 454, 455, 0, 0, + 0, 0, 542, 30, 0, 330, 173, 174, 0, 178, + 176, 84, 0, 164, 166, 71, 0, 218, 0, 523, + 521, 456, 0, 0, 0, 550, -2, 548, 175, 169, + 74, 217, 0, 0, 475, 0, 478, 200, 219, 0, + 476, 0, 0, 0, 0, 0, 477, 0, 0, 220, + 221, } var yyTok1 = [...]int{ @@ -2704,194 +2697,200 @@ yydefault: yyVAL.statement = &Insert{Action: yyDollar[1].str, Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, Table: yyDollar[4].tableName, Partitions: yyDollar[5].partitions, Columns: cols, Rows: Values{vals}, OnDup: OnDup(yyDollar[8].updateExprs)} } case 36: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:430 + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:428 { - yyVAL.str = InsertStr + yyVAL.statement = &Insert{Action: yyDollar[1].str, Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, Table: yyDollar[4].tableName, Default: true} } case 37: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:434 { - yyVAL.str = ReplaceStr + yyVAL.str = InsertStr } case 38: - yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:440 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:438 { - yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), TableExprs: yyDollar[3].tableExprs, Exprs: yyDollar[5].updateExprs, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} + yyVAL.str = ReplaceStr } case 39: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:446 +//line sql.y:444 { - yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[4].tableName}}, Partitions: yyDollar[5].partitions, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} + yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), TableExprs: yyDollar[3].tableExprs, Exprs: yyDollar[5].updateExprs, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } case 40: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:450 { - yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereStr, yyDollar[7].expr)} + yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[4].tableName}}, Partitions: yyDollar[5].partitions, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } case 41: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:454 { - yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} + yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereStr, yyDollar[7].expr)} } case 42: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:459 + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:458 { + yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} } case 43: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:460 +//line sql.y:463 { } case 44: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:464 { - yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 45: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:468 { - yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) + yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 46: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:473 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:472 { - yyVAL.partitions = nil + yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 47: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:477 { - yyVAL.partitions = yyDollar[3].partitions + yyVAL.partitions = nil } case 48: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:483 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:481 { - yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} + yyVAL.partitions = yyDollar[3].partitions } case 49: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:487 { - yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[4].setExprs} + yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } case 50: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:491 { - yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[5].setExprs} + yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[4].setExprs} } case 51: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:495 { - yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[4].setExprs} + yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[5].setExprs} } case 52: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:501 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:499 { - yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} + yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[4].setExprs} } case 53: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:505 { - yyVAL.setExprs = append(yyVAL.setExprs, yyDollar[3].setExpr) + yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } case 54: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:511 +//line sql.y:509 { - yyVAL.setExpr = yyDollar[3].setExpr + yyVAL.setExprs = append(yyVAL.setExprs, yyDollar[3].setExpr) } case 55: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:515 { - yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_read_only"), Expr: NewIntVal([]byte("0"))} + yyVAL.setExpr = yyDollar[3].setExpr } case 56: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:519 { - yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_read_only"), Expr: NewIntVal([]byte("1"))} + yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_read_only"), Expr: NewIntVal([]byte("0"))} } case 57: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:525 +//line sql.y:523 { - yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("repeatable read"))} + yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_read_only"), Expr: NewIntVal([]byte("1"))} } case 58: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:529 { - yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("read committed"))} + yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("repeatable read"))} } case 59: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:533 { - yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("read uncommitted"))} + yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("read committed"))} } case 60: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:537 { - yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("serializable"))} + yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("read uncommitted"))} } case 61: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:543 +//line sql.y:541 { - yyVAL.str = SessionStr + yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("serializable"))} } case 62: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:547 +//line sql.y:547 + { + yyVAL.str = SessionStr + } + case 63: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:551 { yyVAL.str = GlobalStr } - case 63: + case 64: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:553 +//line sql.y:557 { yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec yyVAL.statement = yyDollar[1].ddl } - case 64: + case 65: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:558 +//line sql.y:562 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName, NewName: yyDollar[7].tableName} } - case 65: + case 66: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:563 +//line sql.y:567 { yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[3].tableName.ToViewName()} } - case 66: + case 67: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:567 +//line sql.y:571 { yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[5].tableName.ToViewName()} } - case 67: + case 68: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:571 +//line sql.y:575 { yyVAL.statement = &DDL{Action: CreateVindexStr, VindexSpec: &VindexSpec{ Name: yyDollar[3].colIdent, @@ -2899,104 +2898,104 @@ yydefault: Params: yyDollar[5].vindexParams, }} } - case 68: + case 69: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:579 +//line sql.y:583 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].bytes)} } - case 69: + case 70: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:583 +//line sql.y:587 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].bytes)} } - case 70: + case 71: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:588 +//line sql.y:592 { yyVAL.colIdent = NewColIdent("") } - case 71: + case 72: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:592 +//line sql.y:596 { yyVAL.colIdent = yyDollar[2].colIdent } - case 72: + case 73: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:598 +//line sql.y:602 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 73: + case 74: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:603 +//line sql.y:607 { var v []VindexParam yyVAL.vindexParams = v } - case 74: + case 75: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:608 +//line sql.y:612 { yyVAL.vindexParams = yyDollar[2].vindexParams } - case 75: + case 76: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:614 +//line sql.y:618 { yyVAL.vindexParams = make([]VindexParam, 0, 4) yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam) } - case 76: + case 77: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:619 +//line sql.y:623 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } - case 77: + case 78: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:625 +//line sql.y:629 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } - case 78: + case 79: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:631 +//line sql.y:635 { yyVAL.ddl = &DDL{Action: CreateStr, NewName: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } - case 79: + case 80: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:638 +//line sql.y:642 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } - case 80: + case 81: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:645 +//line sql.y:649 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } - case 81: + case 82: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:650 +//line sql.y:654 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } - case 82: + case 83: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:654 +//line sql.y:658 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } - case 83: + case 84: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:660 +//line sql.y:664 { yyDollar[2].columnType.NotNull = yyDollar[3].boolVal yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -3006,32 +3005,26 @@ yydefault: yyDollar[2].columnType.Comment = yyDollar[8].optVal yyVAL.columnDefinition = &ColumnDefinition{Name: NewColIdent(string(yyDollar[1].bytes)), Type: yyDollar[2].columnType} } - case 84: + case 85: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:671 +//line sql.y:675 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolVal yyVAL.columnType.Zerofill = yyDollar[3].boolVal } - case 88: + case 89: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:682 +//line sql.y:686 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].optVal } - case 89: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:687 - { - yyVAL.columnType = yyDollar[1].columnType - } case 90: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:693 +//line sql.y:691 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType = yyDollar[1].columnType } case 91: yyDollar = yyS[yypt-1 : yypt+1] @@ -3070,16 +3063,14 @@ yydefault: yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 97: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:723 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:721 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} - yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length - yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 98: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:729 +//line sql.y:727 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -3087,7 +3078,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:735 +//line sql.y:733 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -3095,7 +3086,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:741 +//line sql.y:739 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -3103,23 +3094,25 @@ yydefault: } case 101: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:747 +//line sql.y:745 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 102: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:755 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:751 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length + yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 103: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:759 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 104: yyDollar = yyS[yypt-2 : yypt+1] @@ -3134,16 +3127,16 @@ yydefault: yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } case 106: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:771 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } case 107: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:777 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:775 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 108: yyDollar = yyS[yypt-4 : yypt+1] @@ -3152,10 +3145,10 @@ yydefault: yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 109: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:785 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 110: yyDollar = yyS[yypt-2 : yypt+1] @@ -3164,10 +3157,10 @@ yydefault: yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } case 111: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:793 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } case 112: yyDollar = yyS[yypt-3 : yypt+1] @@ -3188,10 +3181,10 @@ yydefault: yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 115: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:809 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 116: yyDollar = yyS[yypt-1 : yypt+1] @@ -3218,22 +3211,22 @@ yydefault: yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 120: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:829 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 121: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:834 +//line sql.y:833 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 122: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:840 + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:838 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 123: yyDollar = yyS[yypt-1 : yypt+1] @@ -3279,138 +3272,138 @@ yydefault: } case 130: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:874 +//line sql.y:872 + { + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + } + case 131: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:878 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } - case 131: + case 132: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:879 +//line sql.y:883 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } - case 132: + case 133: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:884 +//line sql.y:888 { yyVAL.optVal = nil } - case 133: + case 134: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:888 +//line sql.y:892 { yyVAL.optVal = NewIntVal(yyDollar[2].bytes) } - case 134: + case 135: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:893 +//line sql.y:897 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 135: + case 136: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:897 +//line sql.y:901 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 136: + case 137: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:905 +//line sql.y:909 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 137: + case 138: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:909 +//line sql.y:913 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), } } - case 138: + case 139: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:915 +//line sql.y:919 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 139: + case 140: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:923 +//line sql.y:927 { yyVAL.boolVal = BoolVal(false) } - case 140: + case 141: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:927 +//line sql.y:931 { yyVAL.boolVal = BoolVal(true) } - case 141: + case 142: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:932 +//line sql.y:936 { yyVAL.boolVal = BoolVal(false) } - case 142: + case 143: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:936 +//line sql.y:940 { yyVAL.boolVal = BoolVal(true) } - case 143: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:942 - { - yyVAL.boolVal = BoolVal(false) - } case 144: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:946 { yyVAL.boolVal = BoolVal(false) } case 145: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:950 { - yyVAL.boolVal = BoolVal(true) + yyVAL.boolVal = BoolVal(false) } case 146: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:955 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:954 { - yyVAL.optVal = nil + yyVAL.boolVal = BoolVal(true) } case 147: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:959 { - yyVAL.optVal = NewStrVal(yyDollar[2].bytes) + yyVAL.optVal = nil } case 148: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:963 { - yyVAL.optVal = NewIntVal(yyDollar[2].bytes) + yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } case 149: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:967 { - yyVAL.optVal = NewFloatVal(yyDollar[2].bytes) + yyVAL.optVal = NewIntVal(yyDollar[2].bytes) } case 150: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:971 { - yyVAL.optVal = NewValArg(yyDollar[2].bytes) + yyVAL.optVal = NewFloatVal(yyDollar[2].bytes) } case 151: yyDollar = yyS[yypt-2 : yypt+1] @@ -3422,194 +3415,194 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:979 { - yyVAL.optVal = NewBitVal(yyDollar[2].bytes) + yyVAL.optVal = NewValArg(yyDollar[2].bytes) } case 153: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:983 + { + yyVAL.optVal = NewBitVal(yyDollar[2].bytes) + } + case 154: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:984 +//line sql.y:988 { yyVAL.optVal = nil } - case 154: + case 155: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:988 +//line sql.y:992 { yyVAL.optVal = NewValArg(yyDollar[3].bytes) } - case 155: + case 156: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:993 +//line sql.y:997 { yyVAL.boolVal = BoolVal(false) } - case 156: + case 157: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:997 +//line sql.y:1001 { yyVAL.boolVal = BoolVal(true) } - case 157: + case 158: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1002 +//line sql.y:1006 { yyVAL.str = "" } - case 158: + case 159: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1006 +//line sql.y:1010 { yyVAL.str = string(yyDollar[3].bytes) } - case 159: + case 160: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1010 +//line sql.y:1014 { yyVAL.str = string(yyDollar[3].bytes) } - case 160: + case 161: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1015 +//line sql.y:1019 { yyVAL.str = "" } - case 161: + case 162: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1019 +//line sql.y:1023 { yyVAL.str = string(yyDollar[2].bytes) } - case 162: + case 163: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1024 +//line sql.y:1028 { yyVAL.colKeyOpt = colKeyNone } - case 163: + case 164: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1028 +//line sql.y:1032 { yyVAL.colKeyOpt = colKeyPrimary } - case 164: + case 165: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1032 +//line sql.y:1036 { yyVAL.colKeyOpt = colKey } - case 165: + case 166: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1036 +//line sql.y:1040 { yyVAL.colKeyOpt = colKeyUniqueKey } - case 166: + case 167: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1040 +//line sql.y:1044 { yyVAL.colKeyOpt = colKeyUnique } - case 167: + case 168: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1045 +//line sql.y:1049 { yyVAL.optVal = nil } - case 168: + case 169: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1049 +//line sql.y:1053 { yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } - case 169: + case 170: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1055 +//line sql.y:1059 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } - case 170: + case 171: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1059 +//line sql.y:1063 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} } - case 171: + case 172: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1065 +//line sql.y:1069 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 172: + case 173: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1069 +//line sql.y:1073 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } - case 173: + case 174: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1075 +//line sql.y:1079 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].bytes)} } - case 174: + case 175: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1079 +//line sql.y:1083 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntVal(yyDollar[3].bytes)} } - case 175: + case 176: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1084 +//line sql.y:1088 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrVal(yyDollar[2].bytes)} } - case 176: + case 177: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1090 +//line sql.y:1094 { yyVAL.str = "" } - case 177: + case 178: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1094 +//line sql.y:1098 { yyVAL.str = string(yyDollar[1].bytes) } - case 178: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1100 - { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} - } case 179: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1104 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Spatial: true, Unique: false} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } case 180: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1108 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Unique: true} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Spatial: true, Unique: false} } case 181: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1112 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: true} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Unique: true} } case 182: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1116 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: false} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: true} } case 183: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1122 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1120 { - yyVAL.str = string(yyDollar[1].bytes) + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: false} } case 184: yyDollar = yyS[yypt-1 : yypt+1] @@ -3619,61 +3612,67 @@ yydefault: } case 185: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1132 +//line sql.y:1130 { - yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} + yyVAL.str = string(yyDollar[1].bytes) } case 186: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1136 { - yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) + yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } case 187: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1140 + { + yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) + } + case 188: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1142 +//line sql.y:1146 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].optVal} } - case 188: + case 189: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1147 +//line sql.y:1151 { yyVAL.str = "" } - case 189: + case 190: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1151 +//line sql.y:1155 { yyVAL.str = " " + string(yyDollar[1].str) } - case 190: + case 191: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1155 +//line sql.y:1159 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } - case 191: + case 192: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1163 +//line sql.y:1167 { yyVAL.str = yyDollar[1].str } - case 192: + case 193: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1167 +//line sql.y:1171 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } - case 193: + case 194: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1171 +//line sql.y:1175 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } - case 194: + case 195: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1177 +//line sql.y:1181 { if yyDollar[1].colIdent.NeedQuotes() { yyVAL.str = "'" + yyDollar[1].colIdent.String() + "'" @@ -3682,20 +3681,14 @@ yydefault: } } - case 195: + case 196: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1186 +//line sql.y:1190 { yyVAL.str = string(yyDollar[1].bytes) } - case 196: - yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1192 - { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} - } case 197: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:1196 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} @@ -3707,8 +3700,14 @@ yydefault: yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } case 199: - yyDollar = yyS[yypt-12 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:1204 + { + yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} + } + case 200: + yyDollar = yyS[yypt-12 : yypt+1] +//line sql.y:1208 { yyVAL.statement = &DDL{ Action: AddColVindexStr, @@ -3721,9 +3720,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 200: + case 201: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1217 +//line sql.y:1221 { yyVAL.statement = &DDL{ Action: DropColVindexStr, @@ -3733,71 +3732,71 @@ yydefault: }, } } - case 201: + case 202: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1227 +//line sql.y:1231 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableName, NewName: yyDollar[7].tableName} } - case 202: + case 203: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1232 +//line sql.y:1236 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 203: + case 204: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1237 +//line sql.y:1241 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName(), NewName: yyDollar[3].tableName.ToViewName()} } - case 204: + case 205: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1241 +//line sql.y:1245 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } - case 216: + case 217: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1260 +//line sql.y:1264 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeStr, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } - case 217: + case 218: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1266 +//line sql.y:1270 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 218: + case 219: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1270 +//line sql.y:1274 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 219: + case 220: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1276 +//line sql.y:1280 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 220: + case 221: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1280 +//line sql.y:1284 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 221: + case 222: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1286 +//line sql.y:1290 { yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[3].tableName, NewName: yyDollar[5].tableName} } - case 222: + case 223: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1292 +//line sql.y:1296 { var exists bool if yyDollar[3].byt != 0 { @@ -3805,16 +3804,16 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName, IfExists: exists} } - case 223: + case 224: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1300 +//line sql.y:1304 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName, NewName: yyDollar[5].tableName} } - case 224: + case 225: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1305 +//line sql.y:1309 { var exists bool if yyDollar[3].byt != 0 { @@ -3822,42 +3821,36 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName.ToViewName(), IfExists: exists} } - case 225: + case 226: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1313 +//line sql.y:1317 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 226: + case 227: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1317 +//line sql.y:1321 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 227: + case 228: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1323 +//line sql.y:1327 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[3].tableName} } - case 228: + case 229: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1327 +//line sql.y:1331 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[2].tableName} } - case 229: + case 230: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1332 +//line sql.y:1336 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName} } - case 230: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1338 - { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} - } case 231: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1342 @@ -3872,7 +3865,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1351 +//line sql.y:1350 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } @@ -3901,10 +3894,10 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 238: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1371 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 239: yyDollar = yyS[yypt-3 : yypt+1] @@ -3925,20 +3918,26 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 242: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1387 { - yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 243: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1391 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } case 244: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1395 + { + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + } + case 245: + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:1399 { // this is ugly, but I couldn't find a better way for now if yyDollar[4].str == "processlist" { @@ -3948,29 +3947,23 @@ yydefault: yyVAL.statement = &Show{Type: yyDollar[4].str, ShowTablesOpt: showTablesOpt} } } - case 245: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1405 - { - yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} - } case 246: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1409 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } case 247: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1413 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), OnTable: yyDollar[4].tableName} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 248: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1417 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), OnTable: yyDollar[4].tableName} } case 249: yyDollar = yyS[yypt-2 : yypt+1] @@ -3991,16 +3984,16 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 252: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1439 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1433 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 253: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1445 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1443 { - yyVAL.str = string(yyDollar[1].bytes) + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 254: yyDollar = yyS[yypt-1 : yypt+1] @@ -4009,40 +4002,40 @@ yydefault: yyVAL.str = string(yyDollar[1].bytes) } case 255: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1455 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1453 { - yyVAL.str = "" + yyVAL.str = string(yyDollar[1].bytes) } case 256: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1459 { - yyVAL.str = "extended " + yyVAL.str = "" } case 257: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1465 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1463 { - yyVAL.str = "" + yyVAL.str = "extended " } case 258: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1469 { - yyVAL.str = "full " + yyVAL.str = "" } case 259: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1475 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1473 { - yyVAL.str = "" + yyVAL.str = "full " } case 260: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1479 { - yyVAL.str = yyDollar[2].tableIdent.v + yyVAL.str = "" } case 261: yyDollar = yyS[yypt-2 : yypt+1] @@ -4051,82 +4044,82 @@ yydefault: yyVAL.str = yyDollar[2].tableIdent.v } case 262: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1489 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1487 { - yyVAL.showFilter = nil + yyVAL.str = yyDollar[2].tableIdent.v } case 263: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1493 { - yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} + yyVAL.showFilter = nil } case 264: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1497 { - yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} + yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 265: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1503 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1501 { - yyVAL.str = "" + yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } case 266: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1507 { - yyVAL.str = SessionStr + yyVAL.str = "" } case 267: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1511 { - yyVAL.str = GlobalStr + yyVAL.str = SessionStr } case 268: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1517 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1515 { - yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} + yyVAL.str = GlobalStr } case 269: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1521 { - yyVAL.statement = &Use{DBName: TableIdent{v: ""}} + yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } case 270: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1527 +//line sql.y:1525 { - yyVAL.statement = &Begin{} + yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } case 271: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1531 { yyVAL.statement = &Begin{} } case 272: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1537 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1535 { - yyVAL.statement = &Commit{} + yyVAL.statement = &Begin{} } case 273: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1543 +//line sql.y:1541 { - yyVAL.statement = &Rollback{} + yyVAL.statement = &Commit{} } case 274: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1549 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1547 { - yyVAL.statement = &OtherRead{} + yyVAL.statement = &Rollback{} } case 275: yyDollar = yyS[yypt-2 : yypt+1] @@ -4144,7 +4137,7 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1561 { - yyVAL.statement = &OtherAdmin{} + yyVAL.statement = &OtherRead{} } case 278: yyDollar = yyS[yypt-2 : yypt+1] @@ -4153,435 +4146,459 @@ yydefault: yyVAL.statement = &OtherAdmin{} } case 279: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1569 + { + yyVAL.statement = &OtherAdmin{} + } + case 280: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1571 +//line sql.y:1575 { yyVAL.statement = &DeallocatePrepare{PreparedStatementName: yyDollar[3].tableIdent} } - case 280: + case 281: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1577 +//line sql.y:1581 { yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, From: yyDollar[4].fromInPrepare} } - case 281: + case 282: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:1585 + { + yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, From: yyDollar[4].fromInPrepare} + } + case 283: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1591 + { + yyVAL.fromInPrepare = yyDollar[1].selStmt.(*Select) + } + case 284: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1595 + { + yyVAL.fromInPrepare = yyDollar[1].statement.(*Insert) + } + case 285: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1583 +//line sql.y:1599 { yyVAL.fromInPrepare = NewTableIdent(string(yyDollar[1].bytes)) } - case 282: + case 286: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1587 +//line sql.y:1603 { yyVAL.fromInPrepare = NewPgEscapeString(yyDollar[1].bytes) } - case 283: + case 287: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1591 +//line sql.y:1607 { yyVAL.fromInPrepare = NewStrVal(yyDollar[1].bytes) } - case 284: + case 288: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1597 +//line sql.y:1613 { yyVAL.statement = &Execute{PreparedStatementName: NewTableIdent(string(yyDollar[2].bytes))} } - case 285: + case 289: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1601 +//line sql.y:1617 { yyVAL.statement = &Execute{PreparedStatementName: NewTableIdent(string(yyDollar[2].bytes)), Using: yyDollar[4].usingInExecuteList} } - case 286: + case 290: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1607 +//line sql.y:1623 { yyVAL.usingInExecuteList = UsingInExecuteList{yyDollar[1].tableIdent} } - case 287: + case 291: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1611 +//line sql.y:1627 { yyVAL.usingInExecuteList = append(yyDollar[1].usingInExecuteList, yyDollar[3].tableIdent) } - case 288: + case 292: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1616 +//line sql.y:1632 { setAllowComments(yylex, true) } - case 289: + case 293: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1620 +//line sql.y:1636 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 290: + case 294: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1626 +//line sql.y:1642 { yyVAL.bytes2 = nil } - case 291: + case 295: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1630 +//line sql.y:1646 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 292: + case 296: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1636 +//line sql.y:1652 { yyVAL.str = UnionStr } - case 293: + case 297: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1640 +//line sql.y:1656 { yyVAL.str = UnionAllStr } - case 294: + case 298: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1644 +//line sql.y:1660 { yyVAL.str = UnionDistinctStr } - case 295: + case 299: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1649 +//line sql.y:1665 { yyVAL.str = "" } - case 296: + case 300: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1653 +//line sql.y:1669 { yyVAL.str = SQLNoCacheStr } - case 297: + case 301: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1657 +//line sql.y:1673 { yyVAL.str = SQLCacheStr } - case 298: + case 302: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1662 +//line sql.y:1678 { yyVAL.str = "" } - case 299: + case 303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1666 +//line sql.y:1682 { yyVAL.str = DistinctStr } - case 300: + case 304: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1671 +//line sql.y:1687 { yyVAL.str = "" } - case 301: + case 305: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1675 +//line sql.y:1691 { yyVAL.str = StraightJoinHint } - case 302: + case 306: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1680 +//line sql.y:1696 { yyVAL.selectExprs = nil } - case 303: + case 307: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1684 +//line sql.y:1700 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 304: + case 308: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1690 +//line sql.y:1706 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 305: + case 309: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1694 +//line sql.y:1710 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 306: + case 310: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1700 +//line sql.y:1716 { yyVAL.selectExpr = &StarExpr{} } - case 307: + case 311: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1704 +//line sql.y:1720 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 308: + case 312: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1708 +//line sql.y:1724 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 309: + case 313: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1712 +//line sql.y:1728 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 310: + case 314: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1717 +//line sql.y:1733 { yyVAL.colIdent = ColIdent{} } - case 311: + case 315: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1721 +//line sql.y:1737 { yyVAL.colIdent = yyDollar[1].colIdent } - case 312: + case 316: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1725 +//line sql.y:1741 { yyVAL.colIdent = yyDollar[2].colIdent } - case 314: + case 318: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1733 +//line sql.y:1749 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 315: + case 319: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1737 +//line sql.y:1753 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 316: + case 320: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1743 +//line sql.y:1759 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 317: + case 321: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1747 +//line sql.y:1763 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 320: + case 324: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1757 +//line sql.y:1773 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 321: + case 325: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1761 +//line sql.y:1777 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 322: + case 326: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1765 +//line sql.y:1781 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 323: + case 327: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1771 +//line sql.y:1787 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 324: + case 328: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1775 +//line sql.y:1791 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 325: + case 329: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1781 +//line sql.y:1797 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 326: + case 330: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1785 +//line sql.y:1801 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 327: + case 331: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1791 +//line sql.y:1807 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 328: + case 332: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1795 +//line sql.y:1811 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 329: + case 333: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1808 +//line sql.y:1824 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 330: + case 334: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1812 +//line sql.y:1828 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 331: + case 335: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1816 +//line sql.y:1832 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 332: + case 336: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1820 +//line sql.y:1836 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 333: + case 337: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1826 +//line sql.y:1842 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 334: + case 338: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1828 +//line sql.y:1844 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 335: + case 339: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1832 +//line sql.y:1848 { yyVAL.joinCondition = JoinCondition{} } - case 336: + case 340: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1834 +//line sql.y:1850 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 337: + case 341: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1838 +//line sql.y:1854 { yyVAL.joinCondition = JoinCondition{} } - case 338: + case 342: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1840 +//line sql.y:1856 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 339: + case 343: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1843 +//line sql.y:1859 { yyVAL.empty = struct{}{} } - case 340: + case 344: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1845 +//line sql.y:1861 { yyVAL.empty = struct{}{} } - case 341: + case 345: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1848 +//line sql.y:1864 { yyVAL.tableIdent = NewTableIdent("") } - case 342: + case 346: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1852 +//line sql.y:1868 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 343: + case 347: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1856 +//line sql.y:1872 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 345: + case 349: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1866 +//line sql.y:1882 { yyVAL.str = JoinStr } - case 346: + case 350: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1870 +//line sql.y:1886 { yyVAL.str = JoinStr } - case 347: + case 351: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1874 +//line sql.y:1890 { yyVAL.str = JoinStr } - case 348: + case 352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1880 +//line sql.y:1896 { yyVAL.str = StraightJoinStr } - case 349: + case 353: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1886 +//line sql.y:1902 { yyVAL.str = LeftJoinStr } - case 350: + case 354: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1890 +//line sql.y:1906 { yyVAL.str = LeftJoinStr } - case 351: + case 355: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1894 +//line sql.y:1910 { yyVAL.str = RightJoinStr } - case 352: + case 356: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1898 +//line sql.y:1914 { yyVAL.str = RightJoinStr } - case 353: + case 357: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1904 +//line sql.y:1920 { yyVAL.str = NaturalJoinStr } - case 354: + case 358: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1908 +//line sql.y:1924 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -4589,453 +4606,453 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 355: + case 359: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1918 +//line sql.y:1934 { yyVAL.tableName = yyDollar[2].tableName } - case 356: + case 360: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1922 +//line sql.y:1938 { yyVAL.tableName = yyDollar[1].tableName } - case 357: + case 361: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1928 +//line sql.y:1944 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 358: + case 362: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1932 +//line sql.y:1948 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 359: + case 363: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1937 +//line sql.y:1953 { yyVAL.indexHints = nil } - case 360: + case 364: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1941 +//line sql.y:1957 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 361: + case 365: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1945 +//line sql.y:1961 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 362: + case 366: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1949 +//line sql.y:1965 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 363: + case 367: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1954 +//line sql.y:1970 { yyVAL.expr = nil } - case 364: + case 368: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1958 +//line sql.y:1974 { yyVAL.expr = yyDollar[2].expr } - case 365: + case 369: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1964 +//line sql.y:1980 { yyVAL.expr = yyDollar[1].expr } - case 366: + case 370: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1968 +//line sql.y:1984 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 367: + case 371: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1972 +//line sql.y:1988 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 368: + case 372: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1976 +//line sql.y:1992 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 369: + case 373: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1980 +//line sql.y:1996 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 370: + case 374: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1984 +//line sql.y:2000 { yyVAL.expr = yyDollar[1].expr } - case 371: + case 375: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1988 +//line sql.y:2004 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 372: + case 376: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1994 +//line sql.y:2010 { yyVAL.str = "" } - case 373: + case 377: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1998 +//line sql.y:2014 { yyVAL.str = string(yyDollar[2].bytes) } - case 374: + case 378: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2004 +//line sql.y:2020 { yyVAL.boolVal = BoolVal(true) } - case 375: + case 379: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2008 +//line sql.y:2024 { yyVAL.boolVal = BoolVal(false) } - case 376: + case 380: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2014 +//line sql.y:2030 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 377: + case 381: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2018 +//line sql.y:2034 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 378: + case 382: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2022 +//line sql.y:2038 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 379: + case 383: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2026 +//line sql.y:2042 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 380: + case 384: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2030 +//line sql.y:2046 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 381: + case 385: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2034 +//line sql.y:2050 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 382: + case 386: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2038 +//line sql.y:2054 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 383: + case 387: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2042 +//line sql.y:2058 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 384: + case 388: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2046 +//line sql.y:2062 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 385: + case 389: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2050 +//line sql.y:2066 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 386: + case 390: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2056 +//line sql.y:2072 { yyVAL.str = IsNullStr } - case 387: + case 391: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2060 +//line sql.y:2076 { yyVAL.str = IsNotNullStr } - case 388: + case 392: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2064 +//line sql.y:2080 { yyVAL.str = IsTrueStr } - case 389: + case 393: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2068 +//line sql.y:2084 { yyVAL.str = IsNotTrueStr } - case 390: + case 394: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2072 +//line sql.y:2088 { yyVAL.str = IsFalseStr } - case 391: + case 395: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2076 +//line sql.y:2092 { yyVAL.str = IsNotFalseStr } - case 392: + case 396: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2082 +//line sql.y:2098 { yyVAL.str = EqualStr } - case 393: + case 397: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2086 +//line sql.y:2102 { yyVAL.str = LessThanStr } - case 394: + case 398: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2090 +//line sql.y:2106 { yyVAL.str = GreaterThanStr } - case 395: + case 399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2094 +//line sql.y:2110 { yyVAL.str = LessEqualStr } - case 396: + case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2098 +//line sql.y:2114 { yyVAL.str = GreaterEqualStr } - case 397: + case 401: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2102 +//line sql.y:2118 { yyVAL.str = NotEqualStr } - case 398: + case 402: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2106 +//line sql.y:2122 { yyVAL.str = NullSafeEqualStr } - case 399: + case 403: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2111 +//line sql.y:2127 { yyVAL.expr = nil } - case 400: + case 404: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2115 +//line sql.y:2131 { yyVAL.expr = yyDollar[2].expr } - case 401: + case 405: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2121 +//line sql.y:2137 { yyVAL.colTuple = yyDollar[1].valTuple } - case 402: + case 406: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2125 +//line sql.y:2141 { yyVAL.colTuple = yyDollar[1].subquery } - case 403: + case 407: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2129 +//line sql.y:2145 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 404: + case 408: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2135 +//line sql.y:2151 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 405: + case 409: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2141 +//line sql.y:2157 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 406: + case 410: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2145 +//line sql.y:2161 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 407: + case 411: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2152 +//line sql.y:2168 { yyVAL.expr = yyDollar[1].colName } - case 408: + case 412: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2157 +//line sql.y:2173 { yyVAL.expr = yyDollar[1].expr } - case 409: + case 413: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2161 +//line sql.y:2177 { yyVAL.expr = yyDollar[1].boolVal } - case 410: + case 414: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2165 +//line sql.y:2181 { yyVAL.expr = yyDollar[1].expr } - case 411: + case 415: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2169 +//line sql.y:2185 { yyVAL.expr = yyDollar[1].subquery } - case 412: + case 416: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2173 +//line sql.y:2189 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } - case 413: + case 417: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2177 +//line sql.y:2193 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } - case 414: + case 418: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2181 +//line sql.y:2197 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } - case 415: + case 419: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2185 +//line sql.y:2201 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } - case 416: + case 420: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2189 +//line sql.y:2205 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } - case 417: + case 421: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2193 +//line sql.y:2209 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } - case 418: + case 422: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2197 +//line sql.y:2213 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } - case 419: + case 423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2201 +//line sql.y:2217 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } - case 420: + case 424: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2205 +//line sql.y:2221 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 421: + case 425: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2209 +//line sql.y:2225 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 422: + case 426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2213 +//line sql.y:2229 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } - case 423: + case 427: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2217 +//line sql.y:2233 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } - case 424: + case 428: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2221 +//line sql.y:2237 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 425: + case 429: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2225 +//line sql.y:2241 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 426: + case 430: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2229 +//line sql.y:2245 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 427: + case 431: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2233 +//line sql.y:2249 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } - case 428: + case 432: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2237 +//line sql.y:2253 { yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } - case 429: + case 433: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2241 +//line sql.y:2257 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -5043,9 +5060,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 430: + case 434: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2249 +//line sql.y:2265 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -5059,21 +5076,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 431: + case 435: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2263 +//line sql.y:2279 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 432: + case 436: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2267 +//line sql.y:2283 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 433: + case 437: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2271 +//line sql.y:2287 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -5081,449 +5098,449 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 438: + case 442: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2289 +//line sql.y:2305 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 439: + case 443: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2293 +//line sql.y:2309 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 440: + case 444: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2297 +//line sql.y:2313 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 441: + case 445: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2307 +//line sql.y:2323 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 442: + case 446: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2311 +//line sql.y:2327 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 443: + case 447: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2315 +//line sql.y:2331 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 444: + case 448: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2319 +//line sql.y:2335 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 445: + case 449: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2323 +//line sql.y:2339 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 446: + case 450: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2327 +//line sql.y:2343 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 447: + case 451: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2331 +//line sql.y:2347 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 448: + case 452: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2335 +//line sql.y:2351 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 449: + case 453: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2339 +//line sql.y:2355 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 450: + case 454: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2343 +//line sql.y:2359 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 451: + case 455: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2347 +//line sql.y:2363 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 452: + case 456: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2351 +//line sql.y:2367 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 453: + case 457: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2355 +//line sql.y:2371 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } - case 454: + case 458: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2359 +//line sql.y:2375 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 455: + case 459: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2363 +//line sql.y:2379 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 456: + case 460: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2373 +//line sql.y:2389 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 457: + case 461: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2377 +//line sql.y:2393 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 458: + case 462: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2381 +//line sql.y:2397 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 459: + case 463: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2385 +//line sql.y:2401 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 460: + case 464: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2390 +//line sql.y:2406 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 461: + case 465: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2395 +//line sql.y:2411 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 462: + case 466: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2400 +//line sql.y:2416 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 463: + case 467: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2405 +//line sql.y:2421 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 466: + case 470: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2419 +//line sql.y:2435 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 467: + case 471: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2423 +//line sql.y:2439 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 468: + case 472: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2427 +//line sql.y:2443 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 469: + case 473: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2431 +//line sql.y:2447 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 470: + case 474: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2437 +//line sql.y:2453 { yyVAL.str = "" } - case 471: + case 475: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2441 +//line sql.y:2457 { yyVAL.str = BooleanModeStr } - case 472: + case 476: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2445 +//line sql.y:2461 { yyVAL.str = NaturalLanguageModeStr } - case 473: + case 477: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2449 +//line sql.y:2465 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 474: + case 478: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2453 +//line sql.y:2469 { yyVAL.str = QueryExpansionStr } - case 475: + case 479: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2459 +//line sql.y:2475 { yyVAL.str = string(yyDollar[1].bytes) } - case 476: + case 480: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2463 +//line sql.y:2479 { yyVAL.str = string(yyDollar[1].bytes) } - case 477: + case 481: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2469 +//line sql.y:2485 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 478: + case 482: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2473 +//line sql.y:2489 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 479: + case 483: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2477 +//line sql.y:2493 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: string(yyDollar[3].bytes)} } - case 480: + case 484: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2481 +//line sql.y:2497 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 481: + case 485: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2485 +//line sql.y:2501 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 482: + case 486: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2489 +//line sql.y:2505 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 483: + case 487: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2495 +//line sql.y:2511 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 484: + case 488: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2499 +//line sql.y:2515 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 485: + case 489: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2503 +//line sql.y:2519 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 486: + case 490: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2507 +//line sql.y:2523 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 487: + case 491: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2511 +//line sql.y:2527 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 488: + case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2515 +//line sql.y:2531 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 489: + case 493: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2519 +//line sql.y:2535 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 490: + case 494: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2524 +//line sql.y:2540 { yyVAL.expr = nil } - case 491: + case 495: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2528 +//line sql.y:2544 { yyVAL.expr = yyDollar[1].expr } - case 492: + case 496: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2533 +//line sql.y:2549 { yyVAL.str = string("") } - case 493: + case 497: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2537 +//line sql.y:2553 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 494: + case 498: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2543 +//line sql.y:2559 { yyVAL.whens = []*When{yyDollar[1].when} } - case 495: + case 499: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2547 +//line sql.y:2563 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 496: + case 500: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2553 +//line sql.y:2569 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 497: + case 501: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2558 +//line sql.y:2574 { yyVAL.expr = nil } - case 498: + case 502: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2562 +//line sql.y:2578 { yyVAL.expr = yyDollar[2].expr } - case 499: + case 503: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2568 +//line sql.y:2584 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 500: + case 504: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2572 +//line sql.y:2588 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 501: + case 505: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2576 +//line sql.y:2592 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 502: + case 506: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2582 +//line sql.y:2598 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 503: + case 507: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2586 +//line sql.y:2602 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 504: + case 508: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2590 +//line sql.y:2606 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 505: + case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2594 +//line sql.y:2610 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 506: + case 510: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2598 +//line sql.y:2614 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 507: + case 511: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2602 +//line sql.y:2618 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 508: + case 512: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2606 +//line sql.y:2622 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 509: + case 513: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2610 +//line sql.y:2626 { yyVAL.expr = &NullVal{} } - case 510: + case 514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2614 +//line sql.y:2630 { yyVAL.expr = NewPgEscapeString(yyDollar[1].bytes) } - case 511: + case 515: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2618 +//line sql.y:2634 { yyVAL.expr = NewCastVal(yyDollar[1].expr, yyDollar[2].bytes) } - case 512: + case 516: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2624 +//line sql.y:2640 { yyVAL.bytes = yyDollar[1].bytes } - case 513: + case 517: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2632 +//line sql.y:2648 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -5532,239 +5549,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 514: + case 518: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2641 +//line sql.y:2657 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 515: + case 519: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2645 +//line sql.y:2661 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 516: + case 520: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2650 +//line sql.y:2666 { yyVAL.exprs = nil } - case 517: + case 521: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2654 +//line sql.y:2670 { yyVAL.exprs = yyDollar[3].exprs } - case 518: + case 522: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2659 +//line sql.y:2675 { yyVAL.expr = nil } - case 519: + case 523: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2663 +//line sql.y:2679 { yyVAL.expr = yyDollar[2].expr } - case 520: + case 524: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2668 +//line sql.y:2684 { yyVAL.orderBy = nil } - case 521: + case 525: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2672 +//line sql.y:2688 { yyVAL.orderBy = yyDollar[3].orderBy } - case 522: + case 526: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2678 +//line sql.y:2694 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 523: + case 527: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2682 +//line sql.y:2698 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 524: + case 528: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2688 +//line sql.y:2704 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 525: + case 529: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2693 +//line sql.y:2709 { yyVAL.str = AscScr } - case 526: + case 530: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2697 +//line sql.y:2713 { yyVAL.str = AscScr } - case 527: + case 531: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2701 +//line sql.y:2717 { yyVAL.str = DescScr } - case 528: + case 532: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2706 +//line sql.y:2722 { yyVAL.limit = nil } - case 529: + case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2710 +//line sql.y:2726 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 530: + case 534: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2714 +//line sql.y:2730 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 531: + case 535: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2718 +//line sql.y:2734 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 532: + case 536: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2723 +//line sql.y:2739 { yyVAL.str = "" } - case 533: + case 537: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2727 +//line sql.y:2743 { yyVAL.str = ForUpdateStr } - case 534: + case 538: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2731 +//line sql.y:2747 { yyVAL.str = ShareModeStr } - case 535: + case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2744 +//line sql.y:2760 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 536: + case 540: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2748 +//line sql.y:2764 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 537: + case 541: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2752 +//line sql.y:2768 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 538: + case 542: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2757 +//line sql.y:2773 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 539: + case 543: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2761 +//line sql.y:2777 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 540: + case 544: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2765 +//line sql.y:2781 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 541: + case 545: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2772 +//line sql.y:2788 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 542: + case 546: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2776 +//line sql.y:2792 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 543: + case 547: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2780 +//line sql.y:2796 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 544: + case 548: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2784 +//line sql.y:2800 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 545: + case 549: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2789 +//line sql.y:2805 { yyVAL.updateExprs = nil } - case 546: + case 550: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2793 +//line sql.y:2809 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 547: + case 551: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2799 +//line sql.y:2815 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 548: + case 552: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2803 +//line sql.y:2819 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 549: + case 553: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2809 +//line sql.y:2825 { yyVAL.valTuple = yyDollar[1].valTuple } - case 550: + case 554: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2813 +//line sql.y:2829 { yyVAL.valTuple = ValTuple{} } - case 551: + case 555: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2819 +//line sql.y:2835 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 552: + case 556: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2825 +//line sql.y:2841 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -5772,318 +5789,318 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 553: + case 557: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2834 +//line sql.y:2850 { yyVAL.returning = nil } - case 554: + case 558: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2839 +//line sql.y:2855 { yyVAL.returning = Returning{&StarExpr{}} } - case 555: + case 559: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2844 +//line sql.y:2860 { yyVAL.returning = Returning(yyDollar[2].exprs) } - case 556: + case 560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2851 +//line sql.y:2867 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 557: + case 561: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2855 +//line sql.y:2871 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 558: + case 562: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2861 +//line sql.y:2877 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 559: + case 563: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2867 +//line sql.y:2883 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 560: + case 564: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2871 +//line sql.y:2887 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 561: + case 565: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2877 +//line sql.y:2893 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 562: + case 566: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2881 +//line sql.y:2897 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 563: + case 567: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2885 +//line sql.y:2901 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 565: + case 569: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2892 +//line sql.y:2908 { yyVAL.bytes = []byte("charset") } - case 567: + case 571: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2899 +//line sql.y:2915 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 568: + case 572: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2903 +//line sql.y:2919 { yyVAL.expr = &Default{} } - case 571: + case 575: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2912 +//line sql.y:2928 { yyVAL.byt = 0 } - case 572: + case 576: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2914 +//line sql.y:2930 { yyVAL.byt = 1 } - case 573: + case 577: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2917 +//line sql.y:2933 { yyVAL.empty = struct{}{} } - case 574: + case 578: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2919 +//line sql.y:2935 { yyVAL.empty = struct{}{} } - case 575: + case 579: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2922 +//line sql.y:2938 { yyVAL.str = "" } - case 576: + case 580: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2924 +//line sql.y:2940 { yyVAL.str = IgnoreStr } - case 577: + case 581: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2928 +//line sql.y:2944 { yyVAL.empty = struct{}{} } - case 578: + case 582: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2930 +//line sql.y:2946 { yyVAL.empty = struct{}{} } - case 579: + case 583: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2932 +//line sql.y:2948 { yyVAL.empty = struct{}{} } - case 580: + case 584: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2934 +//line sql.y:2950 { yyVAL.empty = struct{}{} } - case 581: + case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2936 +//line sql.y:2952 { yyVAL.empty = struct{}{} } - case 582: + case 586: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2938 +//line sql.y:2954 { yyVAL.empty = struct{}{} } - case 583: + case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2940 +//line sql.y:2956 { yyVAL.empty = struct{}{} } - case 584: + case 588: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2942 +//line sql.y:2958 { yyVAL.empty = struct{}{} } - case 585: + case 589: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2944 +//line sql.y:2960 { yyVAL.empty = struct{}{} } - case 586: + case 590: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2946 +//line sql.y:2962 { yyVAL.empty = struct{}{} } - case 587: + case 591: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2949 +//line sql.y:2965 { yyVAL.empty = struct{}{} } - case 588: + case 592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2951 +//line sql.y:2967 { yyVAL.empty = struct{}{} } - case 589: + case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2953 +//line sql.y:2969 { yyVAL.empty = struct{}{} } - case 590: + case 594: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2957 +//line sql.y:2973 { yyVAL.empty = struct{}{} } - case 591: + case 595: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2959 +//line sql.y:2975 { yyVAL.empty = struct{}{} } - case 592: + case 596: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2962 +//line sql.y:2978 { yyVAL.empty = struct{}{} } - case 593: + case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2964 +//line sql.y:2980 { yyVAL.empty = struct{}{} } - case 594: + case 598: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2966 +//line sql.y:2982 { yyVAL.empty = struct{}{} } - case 595: + case 599: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2969 +//line sql.y:2985 { yyVAL.colIdent = ColIdent{} } - case 596: + case 600: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2971 +//line sql.y:2987 { yyVAL.colIdent = yyDollar[2].colIdent } - case 597: + case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2975 +//line sql.y:2991 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 598: + case 602: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2979 +//line sql.y:2995 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 599: + case 603: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2983 +//line sql.y:2999 { yyVAL.colIdent = NewColIdentWithQuotes(string(yyDollar[1].bytes), true) } - case 601: + case 605: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2990 +//line sql.y:3006 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 602: + case 606: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2996 +//line sql.y:3012 { yyVAL.tableIdent = NewTableIdentWithQuotes(yyDollar[1].colIdent.String(), yyDollar[1].colIdent.NeedQuotes()) } - case 604: + case 608: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3003 +//line sql.y:3019 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 795: + case 799: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3219 +//line sql.y:3235 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 796: + case 800: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3228 +//line sql.y:3244 { decNesting(yylex) } - case 797: + case 801: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3233 +//line sql.y:3249 { forceEOF(yylex) } - case 798: + case 802: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3238 +//line sql.y:3254 { forceEOF(yylex) } - case 799: + case 803: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3242 +//line sql.y:3258 { forceEOF(yylex) } - case 800: + case 804: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3246 +//line sql.y:3262 { forceEOF(yylex) } diff --git a/sqlparser/sql.y b/sqlparser/sql.y index 21b9a0ed4..0fe61cb4c 100644 --- a/sqlparser/sql.y +++ b/sqlparser/sql.y @@ -424,6 +424,10 @@ insert_statement: } $$ = &Insert{Action: $1, Comments: Comments($2), Ignore: $3, Table: $4, Partitions: $5, Columns: cols, Rows: Values{vals}, OnDup: OnDup($8)} } +| insert_or_replace comment_opt ignore_opt into_table_name DEFAULT VALUES + { + $$ = &Insert{Action: $1, Comments: Comments($2), Ignore: $3, Table: $4, Default: true} + } insert_or_replace: INSERT @@ -1577,9 +1581,21 @@ prepare_statement: { $$ = &Prepare{PreparedStatementName: $2, From: $4} } +| PREPARE table_id AS from_in_prepare + { + $$ = &Prepare{PreparedStatementName: $2, From: $4} + } from_in_prepare: - ID + base_select + { + $$ = $1.(*Select) + } +| insert_statement + { + $$ = $1.(*Insert) + } +| ID { $$ = NewTableIdent(string($1)) } From 08ced15130e7638929df4ae03e09fa33835e2723 Mon Sep 17 00:00:00 2001 From: storojs72 Date: Sun, 20 Jan 2019 19:58:09 +0200 Subject: [PATCH 06/13] Update integration tests of censor --- .../acra-censor_blacklist.yaml | 2 +- .../acra-censor_whitelist.yaml | 7 +- tests/test.py | 96 ++++++------------- 3 files changed, 37 insertions(+), 68 deletions(-) diff --git a/tests/acra-censor_configs/acra-censor_blacklist.yaml b/tests/acra-censor_configs/acra-censor_blacklist.yaml index 718d3ac41..42a855dbb 100644 --- a/tests/acra-censor_configs/acra-censor_blacklist.yaml +++ b/tests/acra-censor_configs/acra-censor_blacklist.yaml @@ -32,7 +32,7 @@ handlers: - SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1 - handler: deny queries: - - select data_raw from test + - select * from test tables: - acrarollback_output patterns: diff --git a/tests/acra-censor_configs/acra-censor_whitelist.yaml b/tests/acra-censor_configs/acra-censor_whitelist.yaml index 757d669aa..0a0adfb55 100644 --- a/tests/acra-censor_configs/acra-censor_whitelist.yaml +++ b/tests/acra-censor_configs/acra-censor_whitelist.yaml @@ -32,8 +32,11 @@ handlers: - SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1 - handler: allow queries: - tables: - - test + - prepare test_statement from 'select * from acrarollback_output' + - prepare test_statement from 'insert into test(id, data) values(1, DEFAULT)' + - prepare test_statement as select * from acrarollback_output + - prepare test_statement as insert into test(id, data) values(1, DEFAULT) + - execute test_statement patterns: - select * from acra_rollback_output where someValue = %%VALUE%% - handler: denyall \ No newline at end of file diff --git a/tests/test.py b/tests/test.py index 60885d87d..019e75b46 100644 --- a/tests/test.py +++ b/tests/test.py @@ -1113,7 +1113,6 @@ def fork_acra(self, popen_kwargs: dict=None, **acra_kwargs: dict): class CensorBlacklistTest(BaseCensorTest): CENSOR_CONFIG_FILE = 'tests/acra-censor_configs/acra-censor_blacklist.yaml' def testBlacklist(self): - connection_args = ConnectionArgs(host=get_db_host(), port=self.CONNECTOR_PORT_1, user=DB_USER, password=DB_USER_PASSWORD, dbname=DB_NAME, ssl_ca='tests/server.crt', @@ -1122,53 +1121,31 @@ def testBlacklist(self): if TEST_MYSQL: expectedException = (pymysql.err.OperationalError, mysql.connector.errors.DatabaseError) + expectedExceptionInPreparedStatement = mysql.connector.errors.DatabaseError executors = [PyMysqlExecutor(connection_args), MysqlExecutor(connection_args)] if TEST_POSTGRESQL: expectedException = (psycopg2.ProgrammingError, asyncpg.exceptions.SyntaxOrAccessError) + expectedExceptionInPreparedStatement = asyncpg.exceptions.SyntaxOrAccessError executors = [Psycopg2Executor(connection_args), AsyncpgExecutor(connection_args)] - for executor in executors: - #test block 1 (by query) - with self.assertRaises(expectedException): - result = executor.execute( - "select data_raw from test") - #test block 1 (by query in prepared statement) - #with self.assertRaises(expectedException): - # result = executor.execute_prepared_statement( - # "select data_raw from test") - - #test block 2 (by table) - with self.assertRaises(expectedException): - result = executor.execute("select * from acrarollback_output") - - #test block 2 (by table in prepared statement) - #with self.assertRaises(expectedException): - # result = executor.execute_prepared_statement( - # "select * from acrarollback_output") - - #test block 3 (by pattern) - with self.assertRaises(expectedException): - result = executor.execute( - "select data from test where id='1'") - - #test block 3 (by pattern in prepared statement) - #with self.assertRaises(expectedException): - # result = executor.execute_prepared_statement( - # "select data from test where id='1'") - - #test block 4 (by pattern) - with self.assertRaises(expectedException): - result = executor.execute( - "insert into someTable (a, b, c) values ('x', 'y', 'z')") - - #test block 4 (by pattern in prepared statement) - #with self.assertRaises(expectedException): - # result = executor.execute_prepared_statement( - # "insert into someTable (a, b, c) values ('x', 'y', 'z')") + testQueries = ["select * from test", # should be denied by query + "select * from acrarollback_output", # should be denied by table + "select data from test where id=1", # should be denied by pattern + "insert into test(id, data) values(1, DEFAULT)"] # should be denied by pattern + for executor in executors: + for testQuery in testQueries: + with self.assertRaises(expectedException): + executor.execute(testQuery) + try: + executor.execute_prepared_statement(testQuery) + except psycopg2.ProgrammingError as e: + self.assertTrue(str(e) == "no results to fetch") + except expectedExceptionInPreparedStatement: + return class CensorWhitelistTest(BaseCensorTest): @@ -1182,41 +1159,30 @@ def testWhitelist(self): if TEST_MYSQL: expectedException = (pymysql.err.OperationalError, mysql.connector.errors.DatabaseError) + expectedExceptionInPreparedStatement = mysql.connector.errors.DatabaseError executors = [PyMysqlExecutor(connection_args), MysqlExecutor(connection_args)] if TEST_POSTGRESQL: expectedException = (psycopg2.ProgrammingError, asyncpg.exceptions.SyntaxOrAccessError) + expectedExceptionInPreparedStatement = asyncpg.exceptions.SyntaxOrAccessError executors = [Psycopg2Executor(connection_args), AsyncpgExecutor(connection_args)] + # all those queries should be denied because no matching allow rules specified + testQueries = ["select * from acrarollback_output", + "insert into test(id, data) values(1, DEFAULT)"] + for executor in executors: - #test block 1 - with self.assertRaises(expectedException): - result = executor.execute( - "select * from acrarollback_output") - #test block 1 with prepared statement - with self.assertRaises(expectedException): - result = executor.execute_prepared_statement( - "select * from acrarollback_output") - - #test block 2 - with self.assertRaises(expectedException): - result = executor.execute( - "select * from noTestTable where someValue = 100") - #test block 2 with prepared statement - with self.assertRaises(expectedException): - result = executor.execute_prepared_statement( - "select * from noTestTable where someValue = 100") - - #test block 3 - with self.assertRaises(expectedException): - result = executor.execute( - "insert into someTable (a, b, c) values ('x', 'y', 'z')") - #test block 3 with prepared statement - with self.assertRaises(expectedException): - result = executor.execute_prepared_statement( - "insert into someTable (a, b, c) values ('x', 'y', 'z')") + for testQuery in testQueries: + with self.assertRaises(expectedException): + executor.execute(testQuery) + try: + executor.execute_prepared_statement(testQuery) + except psycopg2.ProgrammingError as e: + self.assertTrue(str(e) == "no results to fetch") + except expectedExceptionInPreparedStatement: + return class ZoneHexFormatTest(BaseTestCase): From d602bf812c78cf79788073fe7fac58f7c0446063 Mon Sep 17 00:00:00 2001 From: storojs72 Date: Sun, 20 Jan 2019 20:01:44 +0200 Subject: [PATCH 07/13] gofmt --- sqlparser/ast.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sqlparser/ast.go b/sqlparser/ast.go index 5a7b47bf0..6c644c947 100644 --- a/sqlparser/ast.go +++ b/sqlparser/ast.go @@ -740,9 +740,10 @@ type FromInPrepare interface { func (TableIdent) iFromInPrepare() {} func (*SQLVal) iFromInPrepare() {} + // dictates by PostgreSQL -func (*Select) iFromInPrepare() {} -func (*Insert) iFromInPrepare() {} +func (*Select) iFromInPrepare() {} +func (*Insert) iFromInPrepare() {} type UsingInExecuteList []TableIdent From 426cf087302f9c3e73e09fbdc327d4051a05daf3 Mon Sep 17 00:00:00 2001 From: storojs72 Date: Mon, 21 Jan 2019 17:33:19 +0200 Subject: [PATCH 08/13] extend current grammar to support postgresql-specific queries --- sqlparser/sql.go | 4245 +++++++++++++++++++++++----------------------- sqlparser/sql.y | 12 + 2 files changed, 2154 insertions(+), 2103 deletions(-) diff --git a/sqlparser/sql.go b/sqlparser/sql.go index 0c2ca41bb..412c692ce 100644 --- a/sqlparser/sql.go +++ b/sqlparser/sql.go @@ -612,574 +612,758 @@ var yyExca = [...]int{ 5, 30, -2, 4, -1, 39, - 151, 266, - 152, 266, - -2, 256, - -1, 247, - 110, 606, - -2, 503, - -1, 265, - 53, 603, - 110, 603, - 111, 603, - 112, 603, + 151, 268, + 152, 268, + -2, 258, + -1, 248, + 110, 609, -2, 506, - -1, 316, - 81, 764, - -2, 62, + -1, 266, + 53, 606, + 110, 606, + 111, 606, + 112, 606, + -2, 509, -1, 317, - 81, 725, + 81, 767, + -2, 62, + -1, 318, + 81, 728, -2, 63, - -1, 322, - 81, 709, - -2, 568, - -1, 324, - 81, 746, - -2, 570, - -1, 587, + -1, 323, + 81, 712, + -2, 571, + -1, 325, + 81, 749, + -2, 573, + -1, 589, 52, 45, 54, 45, -2, 47, - -1, 728, - 110, 608, - -2, 605, - -1, 729, - 110, 606, - -2, 604, - -1, 775, - 110, 606, - -2, 503, - -1, 935, - 5, 31, - -2, 408, - -1, 960, - 5, 30, - -2, 540, - -1, 1188, + -1, 731, + 110, 611, + -2, 608, + -1, 732, + 110, 609, + -2, 607, + -1, 778, + 110, 609, + -2, 506, + -1, 938, 5, 31, - -2, 541, - -1, 1234, + -2, 410, + -1, 963, 5, 30, -2, 543, - -1, 1296, + -1, 1194, 5, 31, -2, 544, + -1, 1241, + 5, 30, + -2, 546, + -1, 1304, + 5, 31, + -2, 547, } const yyPrivate = 57344 -const yyLast = 9328 +const yyLast = 9540 var yyAct = [...]int{ - 247, 1287, 876, 535, 657, 1245, 1094, 829, 249, 793, - 1122, 1095, 811, 1091, 1022, 833, 1194, 534, 3, 226, - 856, 870, 794, 582, 276, 580, 832, 964, 1068, 980, - 754, 927, 1025, 59, 80, 1013, 321, 217, 192, 761, - 842, 192, 781, 731, 467, 597, 969, 473, 758, 866, - 315, 418, 192, 596, 241, 789, 250, 909, 479, 584, - 569, 487, 24, 235, 277, 53, 689, 312, 192, 192, - 320, 225, 58, 1183, 192, 310, 423, 1316, 1306, 1314, - 1294, 1312, 303, 549, 218, 219, 220, 221, 877, 302, - 1305, 1293, 1086, 301, 1180, 422, 1254, 1117, 1118, 1128, - 1129, 1130, 443, 825, 826, 239, 1116, 1133, 1131, 188, - 184, 185, 186, 988, 824, 598, 987, 599, 53, 989, - 686, 458, 1004, 849, 230, 1206, 231, 687, 431, 1221, - 857, 1169, 307, 63, 1167, 222, 232, 760, 54, 450, - 216, 1313, 1311, 201, 465, 1269, 499, 498, 508, 509, - 501, 502, 503, 504, 505, 506, 507, 500, 454, 455, - 510, 65, 66, 67, 68, 69, 445, 211, 447, 1288, - 790, 1046, 791, 432, 1069, 425, 1252, 812, 814, 182, - 665, 448, 192, 181, 192, 182, 692, 693, 844, 694, - 192, 656, 844, 444, 446, 850, 192, 1246, 979, 978, - 320, 320, 320, 320, 1071, 320, 977, 844, 420, 318, - 428, 1248, 320, 245, 195, 183, 419, 1274, 196, 1191, - 998, 187, 1055, 192, 198, 523, 524, 943, 1043, 921, - 702, 204, 200, 490, 1045, 438, 1279, 1137, 830, 1073, - 510, 1077, 489, 1072, 699, 1070, 484, 486, 903, 476, - 1075, 1147, 813, 500, 857, 1088, 510, 967, 202, 1074, - 1050, 206, 486, 475, 449, 449, 449, 449, 600, 449, - 1132, 782, 1076, 1078, 1253, 1251, 449, 442, 1247, 738, - 660, 843, 470, 474, 791, 843, 841, 839, 1138, 424, - 840, 1292, 197, 736, 737, 735, 53, 846, 1033, 491, - 843, 192, 847, 782, 1270, 950, 1002, 1282, 192, 192, - 192, 519, 520, 522, 320, 434, 435, 436, 481, 199, - 602, 207, 208, 209, 210, 214, 1031, 1044, 904, 1042, - 213, 212, 536, 526, 485, 484, 1298, 1049, 1212, 1211, - 1017, 547, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 486, 548, 550, 550, 550, 550, 550, 550, 550, - 550, 558, 559, 560, 561, 1016, 477, 426, 427, 55, - 1005, 1299, 581, 551, 552, 553, 554, 555, 556, 557, - 1280, 594, 451, 452, 453, 588, 456, 720, 722, 723, - 180, 1032, 721, 460, 1228, 1209, 1037, 1034, 1027, 1028, - 1035, 1030, 1029, 508, 509, 501, 502, 503, 504, 505, - 506, 507, 500, 1036, 939, 510, 938, 1155, 1014, 1039, - 56, 1277, 320, 701, 918, 919, 920, 1125, 192, 192, - 320, 734, 192, 485, 484, 192, 1124, 705, 706, 192, - 999, 320, 320, 320, 320, 320, 320, 320, 320, 940, - 486, 755, 990, 318, 756, 320, 320, 300, 879, 700, - 192, 1302, 466, 56, 757, 192, 1238, 1285, 527, 528, - 529, 530, 531, 532, 533, 674, 485, 484, 671, 711, - 485, 484, 670, 192, 485, 484, 449, 1090, 661, 489, - 659, 729, 654, 486, 449, 707, 672, 486, 485, 484, - 440, 486, 1238, 466, 466, 449, 449, 449, 449, 449, - 449, 449, 449, 1238, 1239, 486, 1203, 1202, 732, 449, - 449, 1113, 466, 1190, 466, 690, 690, 728, 1144, 1143, - 695, 1140, 1141, 1258, 765, 1140, 1139, 933, 466, 717, - 718, 709, 591, 775, 775, 566, 466, 1257, 726, 775, - 724, 774, 777, 767, 466, 769, 433, 783, 606, 605, - 1092, 419, 224, 965, 192, 1134, 775, 192, 192, 192, - 192, 192, 966, 60, 795, 1058, 818, 966, 590, 192, - 762, 764, 192, 592, 965, 590, 192, 53, 767, 565, - 192, 192, 536, 1186, 320, 772, 773, 566, 1146, 769, - 253, 1142, 537, 655, 779, 991, 320, 823, 786, 945, - 933, 664, 933, 566, 566, 819, 26, 905, 933, 965, - 26, 708, 675, 676, 677, 678, 679, 680, 681, 682, - 727, 307, 307, 307, 307, 307, 683, 684, 808, 593, - 858, 859, 860, 817, 821, 816, 581, 1233, 815, 822, - 797, 798, 944, 800, 307, 828, 796, 192, 836, 799, - 320, 942, 320, 56, 658, 703, 192, 56, 306, 192, - 320, 1216, 851, 871, 1033, 872, 770, 771, 1107, 766, - 768, 26, 778, 499, 498, 508, 509, 501, 502, 503, - 504, 505, 506, 507, 500, 784, 785, 510, 787, 788, - 868, 869, 1031, 729, 941, 958, 730, 232, 959, 739, - 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, - 750, 751, 752, 753, 449, 810, 449, 994, 56, 928, - 970, 971, 874, 318, 449, 867, 862, 1127, 861, 728, - 571, 574, 575, 576, 572, 834, 573, 577, 71, 464, - 976, 910, 911, 1092, 56, 907, 908, 1018, 474, 973, - 732, 503, 504, 505, 506, 507, 500, 1032, 668, 510, - 459, 715, 1037, 1034, 1027, 1028, 1035, 1030, 1029, 923, - 501, 502, 503, 504, 505, 506, 507, 500, 805, 1036, - 510, 975, 922, 806, 802, 1026, 498, 508, 509, 501, - 502, 503, 504, 505, 506, 507, 500, 960, 801, 510, - 852, 853, 854, 855, 1310, 803, 981, 236, 237, 192, - 804, 1304, 934, 949, 1054, 480, 863, 864, 865, 807, - 1009, 575, 576, 320, 906, 1309, 962, 951, 916, 478, - 915, 880, 727, 882, 983, 982, 974, 984, 992, 521, - 468, 901, 917, 604, 961, 441, 963, 1001, 1284, 881, - 1283, 1231, 469, 995, 1008, 1063, 1010, 1011, 1012, 985, - 1184, 1217, 667, 1006, 1007, 1019, 320, 579, 320, 233, - 234, 996, 997, 307, 480, 499, 498, 508, 509, 501, - 502, 503, 504, 505, 506, 507, 500, 932, 1015, 510, - 462, 320, 930, 931, 192, 192, 192, 227, 306, 1263, - 60, 463, 914, 192, 935, 936, 937, 947, 1038, 228, - 913, 1024, 320, 946, 1262, 1219, 966, 482, 952, 1271, - 953, 954, 955, 956, 1207, 571, 574, 575, 576, 572, - 449, 573, 577, 698, 729, 970, 971, 62, 691, 5, - 924, 925, 926, 64, 589, 57, 1062, 1, 696, 775, - 1182, 525, 1100, 878, 981, 449, 775, 795, 1093, 1080, - 1079, 1061, 834, 1067, 795, 1021, 887, 1286, 1244, 1098, - 728, 1087, 1121, 838, 1096, 831, 417, 70, 1103, 1278, - 837, 1250, 320, 1101, 320, 1123, 1205, 845, 1102, 1003, - 848, 1126, 1281, 1000, 611, 1089, 609, 610, 608, 1120, - 613, 1115, 471, 612, 1135, 1136, 1114, 1023, 1119, 192, - 607, 1104, 1105, 203, 1097, 1106, 53, 1149, 1108, 313, - 578, 601, 873, 483, 82, 72, 1041, 1040, 883, 1048, - 1151, 192, 1109, 1110, 1111, 685, 902, 1154, 457, 205, - 191, 518, 912, 215, 986, 319, 320, 1020, 1099, 192, - 704, 1060, 472, 1148, 223, 1261, 1218, 948, 546, 780, - 252, 719, 264, 261, 263, 262, 1150, 1066, 242, 1153, - 191, 191, 1047, 1083, 1158, 1157, 191, 273, 266, 763, - 268, 269, 270, 271, 733, 1165, 710, 267, 272, 957, - 492, 251, 243, 305, 562, 1156, 570, 1185, 1195, 568, - 1195, 1195, 1195, 192, 1200, 567, 972, 968, 304, 1057, - 320, 1179, 1193, 307, 1268, 1112, 1196, 1197, 1198, 714, - 28, 834, 61, 834, 1201, 992, 1199, 238, 23, 22, - 21, 19, 1064, 1065, 18, 1181, 320, 320, 320, 17, - 20, 1178, 536, 16, 15, 1081, 1082, 14, 1084, 1085, - 1208, 1214, 1210, 1215, 32, 13, 12, 306, 306, 306, - 306, 306, 11, 10, 9, 8, 7, 6, 4, 229, - 25, 2, 306, 0, 1220, 0, 0, 1230, 0, 0, - 306, 1236, 1237, 0, 191, 1060, 191, 0, 1232, 0, - 0, 0, 191, 0, 1123, 0, 1159, 1234, 191, 0, - 449, 1096, 1243, 1161, 1249, 0, 1255, 1195, 1256, 0, - 0, 0, 0, 0, 1170, 1171, 1172, 0, 0, 1175, - 0, 0, 0, 1259, 0, 461, 0, 0, 536, 1275, - 1272, 0, 1187, 1188, 1189, 0, 1192, 0, 0, 0, - 1276, 1097, 0, 1273, 1235, 0, 0, 0, 1096, 834, - 0, 0, 0, 0, 0, 1162, 1163, 1290, 1164, 0, - 0, 1166, 775, 1168, 0, 1297, 0, 1160, 0, 0, - 795, 1295, 1260, 0, 0, 308, 1023, 834, 0, 1303, - 1300, 0, 0, 0, 893, 0, 0, 0, 1097, 0, - 53, 0, 0, 1307, 1308, 0, 0, 0, 892, 0, - 0, 0, 0, 191, 0, 0, 0, 1289, 536, 1204, - 191, 586, 191, 190, 1227, 0, 0, 1213, 0, 0, - 0, 0, 0, 0, 0, 897, 733, 0, 0, 0, - 0, 1240, 1241, 1242, 0, 891, 0, 0, 0, 0, - 0, 0, 0, 0, 311, 0, 0, 0, 0, 421, - 1176, 466, 0, 0, 0, 0, 0, 1264, 1265, 1266, - 1267, 0, 0, 0, 0, 0, 0, 0, 1315, 0, - 0, 0, 0, 0, 0, 0, 0, 1222, 1223, 0, - 1224, 1225, 1226, 888, 885, 886, 0, 884, 499, 498, - 508, 509, 501, 502, 503, 504, 505, 506, 507, 500, - 0, 0, 510, 1291, 0, 0, 0, 0, 1296, 306, - 0, 0, 895, 898, 0, 0, 0, 0, 0, 0, - 0, 1301, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 191, 0, 0, 191, 0, 0, 191, 0, 0, - 0, 673, 0, 0, 0, 0, 0, 0, 0, 0, - 890, 0, 1319, 1320, 0, 0, 0, 429, 0, 430, - 0, 0, 191, 0, 0, 437, 0, 697, 0, 0, - 0, 439, 889, 0, 929, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 0, 26, 27, 54, - 29, 30, 0, 673, 499, 498, 508, 509, 501, 502, - 503, 504, 505, 506, 507, 500, 45, 0, 510, 894, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 1317, - 0, 0, 896, 242, 0, 0, 1177, 0, 0, 0, - 40, 0, 0, 0, 56, 0, 0, 0, 0, 0, - 0, 242, 242, 0, 0, 776, 776, 242, 0, 0, - 0, 776, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 242, 242, 242, 242, 0, 191, 0, 776, 191, - 191, 191, 191, 191, 0, 0, 564, 0, 0, 0, - 0, 809, 0, 0, 191, 587, 0, 0, 586, 0, - 0, 0, 191, 191, 33, 34, 36, 35, 38, 499, - 498, 508, 509, 501, 502, 503, 504, 505, 506, 507, - 500, 0, 0, 510, 0, 39, 46, 47, 0, 0, - 48, 49, 37, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 628, 0, 41, 42, 0, 43, 44, 50, - 51, 52, 0, 0, 0, 0, 0, 0, 0, 306, - 1174, 0, 0, 0, 0, 0, 0, 0, 0, 191, - 0, 0, 0, 0, 494, 0, 497, 0, 191, 0, - 0, 191, 511, 512, 513, 514, 515, 516, 517, 0, - 495, 496, 493, 499, 498, 508, 509, 501, 502, 503, - 504, 505, 506, 507, 500, 0, 0, 510, 0, 0, - 0, 0, 0, 662, 663, 673, 466, 666, 0, 616, - 669, 0, 0, 0, 0, 0, 0, 242, 0, 0, - 55, 0, 0, 499, 498, 508, 509, 501, 502, 503, - 504, 505, 506, 507, 500, 688, 0, 510, 0, 629, - 0, 0, 0, 499, 498, 508, 509, 501, 502, 503, - 504, 505, 506, 507, 500, 0, 0, 510, 716, 0, - 0, 0, 242, 642, 643, 644, 645, 646, 647, 648, - 0, 649, 650, 651, 652, 653, 630, 631, 632, 633, - 614, 615, 242, 0, 617, 0, 618, 619, 620, 621, - 622, 623, 624, 625, 626, 627, 634, 635, 636, 637, - 638, 639, 640, 641, 1173, 466, 499, 498, 508, 509, - 501, 502, 503, 504, 505, 506, 507, 500, 0, 0, - 510, 191, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 792, - 0, 0, 499, 498, 508, 509, 501, 502, 503, 504, - 505, 506, 507, 500, 0, 0, 510, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 820, 0, 0, 0, + 248, 1295, 879, 537, 659, 1252, 1099, 277, 1127, 859, + 814, 1200, 836, 1100, 1026, 584, 967, 873, 835, 797, + 582, 1096, 227, 757, 796, 536, 3, 983, 930, 761, + 1029, 845, 1017, 784, 80, 242, 599, 832, 192, 469, + 59, 192, 972, 218, 734, 419, 322, 475, 1072, 869, + 764, 598, 192, 250, 316, 792, 586, 571, 481, 251, + 236, 489, 912, 24, 692, 313, 311, 551, 192, 192, + 321, 303, 58, 1189, 192, 1324, 424, 1314, 1322, 226, + 1302, 1320, 304, 880, 1313, 1301, 1091, 1186, 302, 423, + 219, 220, 221, 222, 896, 1261, 1122, 1123, 467, 1121, + 26, 27, 54, 29, 30, 828, 829, 254, 895, 63, + 827, 233, 991, 54, 687, 990, 240, 458, 992, 45, + 600, 460, 601, 444, 31, 231, 188, 184, 185, 186, + 1008, 852, 1212, 860, 1227, 900, 1174, 65, 66, 67, + 68, 69, 1172, 40, 223, 894, 217, 56, 1277, 501, + 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, + 502, 695, 696, 512, 697, 1133, 1134, 1135, 1321, 689, + 1319, 449, 793, 1138, 1136, 307, 690, 455, 456, 432, + 1259, 853, 192, 1296, 192, 1050, 794, 446, 433, 448, + 192, 847, 1253, 891, 888, 889, 192, 887, 426, 182, + 321, 321, 321, 321, 667, 321, 1255, 33, 34, 36, + 35, 38, 658, 321, 445, 447, 201, 815, 817, 420, + 847, 1047, 898, 901, 192, 982, 1142, 1049, 39, 46, + 47, 981, 980, 48, 49, 37, 429, 181, 187, 182, + 212, 421, 847, 491, 195, 183, 1282, 41, 42, 1197, + 43, 44, 50, 51, 52, 525, 526, 1059, 478, 860, + 893, 946, 906, 924, 472, 476, 705, 492, 439, 502, + 1002, 477, 512, 1254, 702, 833, 1054, 1143, 1260, 1258, + 512, 493, 892, 488, 846, 1300, 794, 486, 943, 844, + 842, 196, 816, 843, 1287, 785, 1093, 198, 443, 487, + 486, 1152, 192, 488, 204, 200, 1095, 1278, 970, 192, + 192, 192, 741, 846, 538, 321, 488, 602, 662, 897, + 1048, 604, 1046, 549, 487, 486, 739, 740, 738, 1006, + 425, 202, 899, 55, 207, 846, 1137, 487, 486, 205, + 1290, 488, 907, 479, 55, 503, 504, 505, 506, 507, + 508, 509, 502, 1053, 488, 512, 483, 523, 553, 554, + 555, 556, 557, 558, 559, 197, 435, 436, 437, 785, + 849, 953, 452, 453, 454, 850, 457, 590, 528, 1306, + 596, 942, 1228, 941, 462, 505, 506, 507, 508, 509, + 502, 180, 199, 512, 208, 209, 210, 211, 215, 56, + 487, 486, 1218, 214, 213, 708, 709, 1073, 427, 428, + 737, 1037, 1217, 723, 725, 726, 307, 488, 724, 921, + 922, 923, 758, 321, 1021, 759, 1285, 1020, 1009, 192, + 192, 321, 993, 192, 1307, 994, 192, 1075, 1288, 1035, + 192, 1235, 321, 321, 321, 321, 321, 321, 321, 321, + 1215, 1160, 487, 486, 704, 1018, 321, 321, 301, 1310, + 468, 468, 192, 1245, 1293, 1245, 468, 192, 1130, 488, + 1245, 1246, 1077, 246, 1081, 1129, 1076, 1003, 1074, 1083, + 882, 714, 760, 1079, 673, 192, 676, 1209, 1208, 1265, + 703, 491, 1078, 732, 672, 278, 53, 1118, 468, 1264, + 710, 663, 674, 735, 1036, 1080, 1082, 487, 486, 1041, + 1038, 1031, 1032, 1039, 1034, 1033, 1196, 468, 1149, 1148, + 1145, 1146, 720, 721, 488, 661, 1040, 656, 693, 693, + 698, 441, 1043, 1145, 1144, 26, 768, 936, 468, 731, + 712, 568, 468, 770, 468, 778, 778, 608, 607, 53, + 434, 778, 727, 420, 451, 729, 225, 232, 1097, 961, + 1139, 968, 962, 308, 593, 772, 192, 968, 778, 192, + 192, 192, 192, 192, 821, 538, 592, 711, 775, 776, + 969, 192, 56, 26, 192, 765, 767, 60, 192, 770, + 1192, 789, 192, 192, 657, 26, 321, 969, 777, 780, + 568, 567, 666, 736, 786, 594, 782, 592, 321, 772, + 1240, 1151, 822, 677, 678, 679, 680, 681, 682, 683, + 684, 798, 568, 1062, 319, 568, 936, 685, 686, 1147, + 56, 861, 862, 863, 995, 769, 771, 811, 831, 968, + 799, 826, 56, 802, 819, 820, 948, 945, 936, 825, + 824, 787, 800, 801, 839, 803, 908, 595, 706, 192, + 233, 56, 321, 1222, 321, 660, 936, 854, 192, 874, + 877, 192, 321, 875, 1112, 998, 307, 307, 307, 307, + 307, 813, 274, 267, 766, 269, 270, 271, 272, 947, + 944, 307, 268, 273, 870, 450, 450, 450, 450, 307, + 450, 865, 871, 872, 973, 974, 732, 56, 450, 501, + 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, + 502, 1182, 468, 512, 864, 71, 466, 1132, 53, 529, + 530, 531, 532, 533, 534, 535, 1097, 1022, 976, 910, + 911, 670, 476, 521, 522, 524, 735, 461, 808, 979, + 914, 806, 731, 809, 913, 931, 807, 718, 978, 501, + 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, + 502, 805, 804, 512, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 926, 550, 552, 552, 552, 552, 552, + 552, 552, 552, 560, 561, 562, 563, 1318, 855, 856, + 857, 858, 237, 238, 583, 909, 937, 763, 810, 1312, + 577, 578, 1058, 1317, 866, 867, 868, 952, 963, 984, + 482, 954, 192, 573, 576, 577, 578, 574, 965, 575, + 579, 919, 470, 883, 480, 885, 321, 985, 918, 987, + 1013, 606, 986, 904, 471, 977, 736, 442, 996, 510, + 511, 503, 504, 505, 506, 507, 508, 509, 502, 933, + 934, 512, 1005, 988, 1292, 1010, 1011, 1291, 1238, 319, + 999, 938, 939, 940, 1190, 1000, 1001, 1223, 1023, 321, + 949, 321, 884, 669, 464, 955, 581, 956, 957, 958, + 959, 234, 235, 482, 917, 465, 228, 1012, 1019, 1014, + 1015, 1016, 916, 1270, 321, 229, 60, 192, 192, 192, + 1269, 1225, 969, 484, 1279, 1213, 192, 701, 450, 1042, + 62, 694, 5, 64, 591, 321, 450, 57, 1, 307, + 1028, 699, 1188, 527, 881, 1025, 890, 450, 450, 450, + 450, 450, 450, 450, 450, 1294, 1251, 732, 1126, 841, + 834, 450, 450, 418, 70, 1065, 1066, 1286, 840, 1257, + 1211, 848, 778, 1007, 851, 1105, 1084, 984, 733, 778, + 1101, 742, 743, 744, 745, 746, 747, 748, 749, 750, + 751, 752, 753, 754, 755, 756, 1098, 1071, 1108, 1094, + 1103, 1092, 1085, 731, 1106, 1131, 321, 1289, 321, 1128, + 1004, 613, 611, 1120, 612, 1109, 1110, 610, 1107, 1111, + 1125, 615, 1113, 614, 1124, 798, 609, 203, 314, 580, + 53, 603, 798, 192, 876, 485, 1119, 82, 72, 1045, + 1044, 1154, 886, 1052, 1070, 539, 688, 905, 459, 206, + 520, 915, 989, 320, 1156, 192, 1104, 730, 1140, 1141, + 1024, 1159, 707, 474, 1268, 473, 1224, 951, 548, 783, + 321, 253, 722, 192, 308, 308, 308, 308, 308, 265, + 262, 264, 263, 1153, 713, 1051, 960, 494, 1162, 583, + 252, 818, 1117, 1163, 244, 306, 1155, 308, 564, 1158, + 1161, 572, 570, 191, 569, 1170, 216, 975, 573, 576, + 577, 578, 574, 971, 575, 579, 305, 224, 973, 974, + 1061, 1185, 1276, 1201, 717, 1201, 1201, 1201, 192, 1206, + 1191, 243, 28, 191, 191, 321, 1202, 1203, 1204, 191, + 1199, 1187, 61, 1205, 239, 23, 22, 996, 538, 21, + 19, 18, 1207, 17, 20, 16, 15, 14, 32, 13, + 319, 321, 321, 321, 1214, 12, 1216, 450, 11, 450, + 10, 9, 837, 8, 1164, 1221, 1220, 450, 7, 6, + 307, 1166, 4, 230, 25, 2, 0, 0, 1226, 0, + 0, 0, 0, 1176, 1177, 1178, 0, 0, 1181, 0, + 0, 0, 0, 1237, 0, 0, 0, 1243, 1244, 0, + 1101, 1193, 1194, 1195, 0, 1198, 1239, 0, 0, 0, + 1128, 0, 0, 927, 928, 929, 1250, 0, 1256, 0, + 0, 1241, 0, 1201, 0, 538, 925, 0, 0, 0, + 0, 0, 0, 0, 1266, 0, 0, 191, 0, 191, + 0, 0, 0, 0, 0, 191, 1283, 1280, 1101, 0, + 0, 191, 1262, 0, 1263, 1167, 1168, 1284, 1169, 0, + 730, 1171, 0, 1173, 0, 0, 0, 0, 1281, 309, + 0, 0, 0, 0, 1298, 0, 0, 0, 0, 463, + 778, 0, 0, 1305, 1234, 0, 0, 0, 964, 0, + 966, 0, 0, 0, 0, 0, 0, 1311, 1308, 0, + 0, 1247, 1248, 1249, 1303, 1297, 538, 190, 0, 0, + 1210, 1315, 1316, 0, 0, 0, 0, 308, 0, 0, + 0, 0, 1219, 0, 0, 0, 0, 1271, 1272, 1273, + 1274, 1275, 0, 798, 0, 0, 0, 0, 312, 0, + 0, 1037, 0, 422, 0, 0, 0, 0, 773, 774, + 0, 0, 0, 0, 781, 0, 0, 191, 0, 0, + 0, 0, 0, 0, 191, 588, 191, 0, 788, 1035, + 790, 791, 0, 0, 450, 1299, 0, 0, 0, 0, + 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 837, 0, 0, 1309, 0, 0, 0, 0, 0, 450, + 0, 0, 0, 0, 0, 1068, 1069, 500, 510, 511, + 503, 504, 505, 506, 507, 508, 509, 502, 1086, 1087, + 512, 1089, 1090, 0, 1327, 1328, 0, 0, 0, 0, + 0, 0, 0, 0, 1036, 1027, 0, 0, 0, 1041, + 1038, 1031, 1032, 1039, 1034, 1033, 0, 0, 0, 0, + 0, 430, 0, 431, 0, 1183, 1040, 0, 1102, 438, + 53, 0, 1030, 0, 0, 440, 1179, 468, 0, 0, + 0, 0, 0, 0, 0, 0, 1114, 1115, 1116, 1064, + 0, 0, 0, 0, 191, 191, 0, 0, 191, 0, + 0, 191, 0, 0, 0, 675, 0, 0, 0, 0, + 0, 1088, 0, 0, 501, 500, 510, 511, 503, 504, + 505, 506, 507, 508, 509, 502, 0, 191, 512, 0, + 0, 0, 700, 0, 0, 920, 0, 0, 501, 500, + 510, 511, 503, 504, 505, 506, 507, 508, 509, 502, + 191, 1165, 512, 0, 0, 0, 0, 0, 675, 0, + 837, 0, 837, 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 935, 566, 0, 0, 0, 0, 0, 0, 243, 1175, + 589, 0, 0, 0, 0, 0, 0, 1184, 0, 0, + 950, 0, 0, 0, 0, 0, 243, 243, 0, 0, + 779, 779, 243, 0, 0, 0, 779, 0, 0, 0, + 0, 0, 0, 0, 1064, 0, 243, 243, 243, 243, + 0, 191, 468, 779, 191, 191, 191, 191, 191, 0, + 0, 0, 0, 0, 0, 0, 812, 0, 0, 191, + 0, 0, 0, 588, 630, 0, 450, 191, 191, 0, + 0, 0, 0, 1229, 1230, 0, 1231, 1232, 1233, 501, + 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, + 502, 0, 0, 512, 0, 0, 0, 0, 0, 837, + 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, + 0, 1242, 0, 0, 0, 0, 0, 0, 664, 665, + 0, 0, 668, 0, 0, 671, 1027, 837, 0, 0, + 0, 0, 0, 0, 191, 0, 0, 0, 0, 1267, + 0, 618, 0, 191, 0, 0, 191, 0, 0, 0, + 0, 691, 0, 0, 0, 0, 1102, 0, 53, 501, + 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, + 502, 631, 0, 512, 719, 0, 0, 0, 0, 0, + 0, 675, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 243, 0, 644, 645, 646, 647, 648, + 649, 650, 0, 651, 652, 653, 654, 655, 632, 633, + 634, 635, 616, 617, 0, 0, 619, 1325, 620, 621, + 622, 623, 624, 625, 626, 627, 628, 629, 636, 637, + 638, 639, 640, 641, 642, 643, 1180, 1323, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 496, 0, 499, 0, 795, 0, 0, 243, 513, + 514, 515, 516, 517, 518, 519, 0, 497, 498, 495, + 501, 500, 510, 511, 503, 504, 505, 506, 507, 508, + 509, 502, 823, 0, 512, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, + 0, 0, 0, 0, 1067, 0, 0, 0, 0, 501, + 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, + 502, 0, 0, 512, 501, 500, 510, 511, 503, 504, + 505, 506, 507, 508, 509, 502, 0, 0, 512, 0, + 0, 932, 0, 0, 0, 0, 0, 0, 878, 0, + 0, 0, 0, 0, 0, 0, 0, 902, 0, 0, + 903, 501, 500, 510, 511, 503, 504, 505, 506, 507, + 508, 509, 502, 0, 0, 512, 0, 0, 0, 0, + 0, 0, 1055, 1056, 1057, 0, 0, 0, 0, 0, + 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 675, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 779, 0, 0, + 0, 0, 0, 0, 779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1051, 1052, 1053, 0, - 0, 0, 0, 0, 0, 191, 0, 0, 0, 132, - 0, 0, 0, 0, 0, 242, 0, 0, 100, 0, - 0, 0, 875, 114, 0, 116, 242, 0, 149, 125, - 0, 899, 0, 0, 900, 0, 673, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, - 83, 776, 0, 0, 0, 0, 0, 93, 776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 499, 498, 508, 509, 501, 502, 503, - 504, 505, 506, 507, 500, 0, 0, 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 0, 193, 0, 0, 0, 0, 138, 0, - 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, - 144, 134, 164, 191, 135, 143, 117, 156, 139, 163, - 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, - 0, 191, 87, 160, 151, 123, 109, 110, 86, 0, - 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, - 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, - 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, - 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, - 0, 172, 173, 174, 175, 586, 0, 0, 129, 92, - 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, - 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, - 115, 176, 140, 102, 167, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 406, 396, 0, 368, - 408, 346, 360, 416, 361, 362, 389, 332, 376, 132, - 358, 0, 349, 327, 355, 328, 347, 370, 100, 373, - 345, 398, 379, 114, 414, 116, 384, 0, 149, 125, - 0, 0, 372, 400, 374, 394, 367, 390, 337, 383, - 409, 359, 387, 410, 0, 0, 0, 81, 0, 0, - 83, 835, 0, 0, 776, 0, 0, 93, 0, 386, - 405, 357, 388, 326, 385, 0, 330, 333, 415, 403, - 352, 353, 993, 0, 1145, 0, 0, 0, 0, 371, - 375, 391, 365, 0, 0, 0, 0, 0, 0, 0, - 0, 350, 0, 382, 0, 0, 1152, 334, 331, 0, - 369, 0, 0, 0, 336, 0, 351, 392, 0, 325, - 395, 401, 366, 193, 404, 364, 363, 407, 138, 0, - 0, 152, 105, 104, 113, 399, 348, 356, 96, 354, - 144, 134, 164, 381, 135, 143, 117, 156, 139, 163, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1060, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 407, 397, 0, 369, 409, 347, 361, 417, 362, + 363, 390, 333, 377, 132, 359, 0, 350, 328, 356, + 329, 348, 371, 100, 374, 346, 399, 380, 114, 415, + 116, 385, 0, 149, 125, 0, 0, 373, 401, 375, + 395, 368, 391, 338, 384, 410, 360, 388, 411, 0, + 0, 0, 81, 0, 0, 83, 838, 0, 0, 0, + 0, 0, 93, 0, 387, 406, 358, 389, 327, 386, + 0, 331, 334, 416, 404, 353, 354, 997, 0, 0, + 0, 0, 1150, 0, 372, 376, 392, 366, 0, 0, + 0, 0, 0, 0, 0, 0, 351, 0, 383, 0, + 0, 0, 335, 332, 1157, 370, 0, 0, 0, 337, + 0, 352, 393, 0, 326, 396, 402, 367, 193, 405, + 365, 364, 408, 138, 0, 779, 152, 105, 104, 113, + 400, 349, 357, 96, 355, 144, 134, 164, 382, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 330, + 0, 150, 166, 179, 345, 403, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 341, 344, 339, 340, + 378, 379, 412, 413, 414, 394, 336, 0, 342, 343, + 0, 398, 381, 84, 0, 115, 176, 140, 102, 167, + 407, 397, 0, 369, 409, 347, 361, 417, 362, 363, + 390, 333, 377, 132, 359, 0, 350, 328, 356, 329, + 348, 371, 100, 374, 346, 399, 380, 114, 415, 116, + 385, 0, 149, 125, 0, 0, 373, 401, 375, 395, + 368, 391, 338, 384, 410, 360, 388, 411, 0, 0, + 0, 81, 0, 0, 83, 838, 0, 0, 0, 0, + 0, 93, 0, 387, 406, 358, 389, 327, 386, 0, + 331, 334, 416, 404, 353, 354, 0, 0, 0, 0, + 0, 0, 0, 372, 376, 392, 366, 0, 0, 0, + 0, 0, 0, 0, 0, 351, 0, 383, 0, 0, + 0, 335, 332, 0, 370, 0, 0, 0, 337, 0, + 352, 393, 0, 326, 396, 402, 367, 193, 405, 365, + 364, 408, 138, 0, 0, 152, 105, 104, 113, 400, + 349, 357, 96, 355, 144, 134, 164, 382, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 330, 0, + 150, 166, 179, 345, 403, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 341, 344, 339, 340, 378, + 379, 412, 413, 414, 394, 336, 0, 342, 343, 0, + 398, 381, 84, 0, 115, 176, 140, 102, 167, 407, + 397, 0, 369, 409, 347, 361, 417, 362, 363, 390, + 333, 377, 132, 359, 0, 350, 328, 356, 329, 348, + 371, 100, 374, 346, 399, 380, 114, 415, 116, 385, + 0, 149, 125, 0, 0, 373, 401, 375, 395, 368, + 391, 338, 384, 410, 360, 388, 411, 56, 0, 0, + 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 93, 0, 387, 406, 358, 389, 327, 386, 0, 331, + 334, 416, 404, 353, 354, 0, 0, 0, 0, 0, + 0, 0, 372, 376, 392, 366, 0, 0, 0, 0, + 0, 0, 0, 0, 351, 0, 383, 0, 0, 0, + 335, 332, 0, 370, 0, 0, 0, 337, 0, 352, + 393, 0, 326, 396, 402, 367, 193, 405, 365, 364, + 408, 138, 0, 0, 152, 105, 104, 113, 400, 349, + 357, 96, 355, 144, 134, 164, 382, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, + 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, + 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, + 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, + 119, 137, 107, 127, 126, 128, 0, 330, 0, 150, + 166, 179, 345, 403, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 341, 344, 339, 340, 378, 379, + 412, 413, 414, 394, 336, 0, 342, 343, 0, 398, + 381, 84, 0, 115, 176, 140, 102, 167, 407, 397, + 0, 369, 409, 347, 361, 417, 362, 363, 390, 333, + 377, 132, 359, 0, 350, 328, 356, 329, 348, 371, + 100, 374, 346, 399, 380, 114, 415, 116, 385, 0, + 149, 125, 0, 0, 373, 401, 375, 395, 368, 391, + 338, 384, 410, 360, 388, 411, 0, 0, 0, 81, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, + 0, 387, 406, 358, 389, 327, 386, 0, 331, 334, + 416, 404, 353, 354, 0, 0, 0, 0, 0, 0, + 0, 372, 376, 392, 366, 0, 0, 0, 0, 0, + 0, 1063, 0, 351, 0, 383, 0, 0, 0, 335, + 332, 0, 370, 0, 0, 0, 337, 0, 352, 393, + 0, 326, 396, 402, 367, 193, 405, 365, 364, 408, + 138, 0, 0, 152, 105, 104, 113, 400, 349, 357, + 96, 355, 144, 134, 164, 382, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, + 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, + 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, + 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, + 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, + 137, 107, 127, 126, 128, 0, 330, 0, 150, 166, + 179, 345, 403, 172, 173, 174, 175, 0, 0, 0, + 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 341, 344, 339, 340, 378, 379, 412, + 413, 414, 394, 336, 0, 342, 343, 0, 398, 381, + 84, 0, 115, 176, 140, 102, 167, 407, 397, 0, + 369, 409, 347, 361, 417, 362, 363, 390, 333, 377, + 132, 359, 0, 350, 328, 356, 329, 348, 371, 100, + 374, 346, 399, 380, 114, 415, 116, 385, 0, 149, + 125, 0, 0, 373, 401, 375, 395, 368, 391, 338, + 384, 410, 360, 388, 411, 0, 0, 0, 81, 0, + 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, + 387, 406, 358, 389, 327, 386, 0, 331, 334, 416, + 404, 353, 354, 0, 0, 0, 0, 0, 0, 0, + 372, 376, 392, 366, 0, 0, 0, 0, 0, 0, + 728, 0, 351, 0, 383, 0, 0, 0, 335, 332, + 0, 370, 0, 0, 0, 337, 0, 352, 393, 0, + 326, 396, 402, 367, 193, 405, 365, 364, 408, 138, + 0, 0, 152, 105, 104, 113, 400, 349, 357, 96, + 355, 144, 134, 164, 382, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 330, 0, 150, 166, 179, + 345, 403, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 341, 344, 339, 340, 378, 379, 412, 413, + 414, 394, 336, 0, 342, 343, 0, 398, 381, 84, + 0, 115, 176, 140, 102, 167, 407, 397, 0, 369, + 409, 347, 361, 417, 362, 363, 390, 333, 377, 132, + 359, 0, 350, 328, 356, 329, 348, 371, 100, 374, + 346, 399, 380, 114, 415, 116, 385, 0, 149, 125, + 0, 0, 373, 401, 375, 395, 368, 391, 338, 384, + 410, 360, 388, 411, 0, 0, 0, 81, 0, 0, + 83, 0, 0, 0, 0, 0, 0, 93, 0, 387, + 406, 358, 389, 327, 386, 0, 331, 334, 416, 404, + 353, 354, 0, 0, 0, 0, 0, 0, 0, 372, + 376, 392, 366, 0, 0, 0, 0, 0, 0, 0, + 0, 351, 0, 383, 0, 0, 0, 335, 332, 0, + 370, 0, 0, 0, 337, 0, 352, 393, 0, 326, + 396, 402, 367, 193, 405, 365, 364, 408, 138, 0, + 0, 152, 105, 104, 113, 400, 349, 357, 96, 355, + 144, 134, 164, 382, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, - 127, 126, 128, 0, 329, 0, 150, 166, 179, 344, - 402, 172, 173, 174, 175, 0, 0, 0, 129, 92, + 127, 126, 128, 0, 330, 0, 150, 166, 179, 345, + 403, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, - 148, 340, 343, 338, 339, 377, 378, 411, 412, 413, - 393, 335, 0, 341, 342, 0, 397, 380, 84, 0, - 115, 176, 140, 102, 167, 406, 396, 0, 368, 408, - 346, 360, 416, 361, 362, 389, 332, 376, 132, 358, - 0, 349, 327, 355, 328, 347, 370, 100, 373, 345, - 398, 379, 114, 414, 116, 384, 0, 149, 125, 0, - 0, 372, 400, 374, 394, 367, 390, 337, 383, 409, - 359, 387, 410, 0, 0, 0, 81, 0, 0, 83, - 835, 0, 0, 0, 0, 0, 93, 0, 386, 405, - 357, 388, 326, 385, 0, 330, 333, 415, 403, 352, - 353, 0, 0, 0, 0, 0, 0, 0, 371, 375, - 391, 365, 0, 0, 0, 0, 0, 0, 0, 0, - 350, 0, 382, 0, 0, 0, 334, 331, 0, 369, - 0, 0, 0, 336, 0, 351, 392, 0, 325, 395, - 401, 366, 193, 404, 364, 363, 407, 138, 0, 0, - 152, 105, 104, 113, 399, 348, 356, 96, 354, 144, - 134, 164, 381, 135, 143, 117, 156, 139, 163, 194, + 148, 341, 344, 339, 340, 378, 379, 412, 413, 414, + 394, 336, 0, 342, 343, 0, 398, 381, 84, 0, + 115, 176, 140, 102, 167, 407, 397, 0, 369, 409, + 347, 361, 417, 362, 363, 390, 333, 377, 132, 359, + 0, 350, 328, 356, 329, 348, 371, 100, 374, 346, + 399, 380, 114, 415, 116, 385, 0, 149, 125, 0, + 0, 373, 401, 375, 395, 368, 391, 338, 384, 410, + 360, 388, 411, 0, 0, 0, 81, 0, 0, 83, + 0, 0, 0, 0, 0, 0, 93, 0, 387, 406, + 358, 389, 327, 386, 0, 331, 334, 416, 404, 353, + 354, 0, 0, 0, 0, 0, 0, 0, 372, 376, + 392, 366, 0, 0, 0, 0, 0, 0, 0, 0, + 351, 0, 383, 0, 0, 0, 335, 332, 0, 370, + 0, 0, 0, 337, 0, 352, 393, 0, 326, 396, + 402, 367, 193, 405, 365, 364, 408, 138, 0, 0, + 152, 105, 104, 113, 400, 349, 357, 96, 355, 144, + 134, 164, 382, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, - 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 89, 324, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, - 126, 128, 0, 329, 0, 150, 166, 179, 344, 402, - 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 126, 128, 0, 330, 0, 150, 166, 179, 345, 403, + 172, 173, 174, 175, 0, 0, 0, 325, 323, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, - 340, 343, 338, 339, 377, 378, 411, 412, 413, 393, - 335, 0, 341, 342, 0, 397, 380, 84, 0, 115, - 176, 140, 102, 167, 406, 396, 0, 368, 408, 346, - 360, 416, 361, 362, 389, 332, 376, 132, 358, 0, - 349, 327, 355, 328, 347, 370, 100, 373, 345, 398, - 379, 114, 414, 116, 384, 0, 149, 125, 0, 0, - 372, 400, 374, 394, 367, 390, 337, 383, 409, 359, - 387, 410, 56, 0, 0, 81, 0, 0, 83, 0, - 0, 0, 0, 0, 0, 93, 0, 386, 405, 357, - 388, 326, 385, 0, 330, 333, 415, 403, 352, 353, - 0, 0, 0, 0, 0, 0, 0, 371, 375, 391, - 365, 0, 0, 0, 0, 0, 0, 0, 0, 350, - 0, 382, 0, 0, 0, 334, 331, 0, 369, 0, - 0, 0, 336, 0, 351, 392, 0, 325, 395, 401, - 366, 193, 404, 364, 363, 407, 138, 0, 0, 152, - 105, 104, 113, 399, 348, 356, 96, 354, 144, 134, - 164, 381, 135, 143, 117, 156, 139, 163, 194, 171, - 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, + 341, 344, 339, 340, 378, 379, 412, 413, 414, 394, + 336, 0, 342, 343, 0, 398, 381, 84, 0, 115, + 176, 140, 102, 167, 407, 397, 0, 369, 409, 347, + 361, 417, 362, 363, 390, 333, 377, 132, 359, 0, + 350, 328, 356, 329, 348, 371, 100, 374, 346, 399, + 380, 114, 415, 116, 385, 0, 149, 125, 0, 0, + 373, 401, 375, 395, 368, 391, 338, 384, 410, 360, + 388, 411, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 387, 406, 358, + 389, 327, 386, 0, 331, 334, 416, 404, 353, 354, + 0, 0, 0, 0, 0, 0, 0, 372, 376, 392, + 366, 0, 0, 0, 0, 0, 0, 0, 0, 351, + 0, 383, 0, 0, 0, 335, 332, 0, 370, 0, + 0, 0, 337, 0, 352, 393, 0, 326, 396, 402, + 367, 193, 405, 365, 364, 408, 138, 0, 0, 152, + 105, 104, 113, 400, 349, 357, 96, 355, 144, 134, + 164, 382, 135, 143, 117, 156, 139, 163, 194, 171, + 154, 170, 85, 153, 597, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 324, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, - 128, 0, 329, 0, 150, 166, 179, 344, 402, 172, - 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, - 111, 118, 141, 177, 133, 145, 95, 165, 148, 340, - 343, 338, 339, 377, 378, 411, 412, 413, 393, 335, - 0, 341, 342, 0, 397, 380, 84, 0, 115, 176, - 140, 102, 167, 406, 396, 0, 368, 408, 346, 360, - 416, 361, 362, 389, 332, 376, 132, 358, 0, 349, - 327, 355, 328, 347, 370, 100, 373, 345, 398, 379, - 114, 414, 116, 384, 0, 149, 125, 0, 0, 372, - 400, 374, 394, 367, 390, 337, 383, 409, 359, 387, - 410, 0, 0, 0, 81, 0, 0, 83, 0, 0, - 0, 0, 0, 0, 93, 0, 386, 405, 357, 388, - 326, 385, 0, 330, 333, 415, 403, 352, 353, 0, - 0, 0, 0, 0, 0, 0, 371, 375, 391, 365, - 0, 0, 0, 0, 0, 0, 1059, 0, 350, 0, - 382, 0, 0, 0, 334, 331, 0, 369, 0, 0, - 0, 336, 0, 351, 392, 0, 325, 395, 401, 366, - 193, 404, 364, 363, 407, 138, 0, 0, 152, 105, - 104, 113, 399, 348, 356, 96, 354, 144, 134, 164, - 381, 135, 143, 117, 156, 139, 163, 194, 171, 154, + 128, 0, 330, 0, 150, 166, 179, 345, 403, 172, + 173, 174, 175, 0, 0, 0, 325, 323, 108, 147, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 341, + 344, 339, 340, 378, 379, 412, 413, 414, 394, 336, + 0, 342, 343, 0, 398, 381, 84, 0, 115, 176, + 140, 102, 167, 407, 397, 0, 369, 409, 347, 361, + 417, 362, 363, 390, 333, 377, 132, 359, 0, 350, + 328, 356, 329, 348, 371, 100, 374, 346, 399, 380, + 114, 415, 116, 385, 0, 149, 125, 0, 0, 373, + 401, 375, 395, 368, 391, 338, 384, 410, 360, 388, + 411, 0, 0, 0, 81, 0, 0, 83, 0, 0, + 0, 0, 0, 0, 93, 0, 387, 406, 358, 389, + 327, 386, 0, 331, 334, 416, 404, 353, 354, 0, + 0, 0, 0, 0, 0, 0, 372, 376, 392, 366, + 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, + 383, 0, 0, 0, 335, 332, 0, 370, 0, 0, + 0, 337, 0, 352, 393, 0, 326, 396, 402, 367, + 193, 405, 365, 364, 408, 138, 0, 0, 152, 105, + 104, 113, 400, 349, 357, 96, 355, 144, 134, 164, + 382, 135, 143, 117, 156, 139, 163, 194, 171, 154, + 170, 85, 153, 315, 94, 146, 0, 0, 0, 87, + 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, + 98, 131, 157, 158, 97, 178, 90, 169, 89, 324, + 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, + 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, + 0, 330, 0, 150, 166, 179, 345, 403, 172, 173, + 174, 175, 0, 0, 0, 325, 323, 318, 317, 111, + 118, 141, 177, 133, 145, 95, 165, 148, 341, 344, + 339, 340, 378, 379, 412, 413, 414, 394, 336, 0, + 342, 343, 0, 398, 381, 84, 0, 115, 176, 140, + 102, 167, 132, 0, 0, 762, 0, 249, 0, 0, + 0, 100, 0, 247, 0, 0, 114, 288, 116, 0, + 0, 149, 125, 0, 0, 0, 0, 279, 280, 0, + 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, + 81, 274, 267, 266, 269, 270, 271, 272, 0, 0, + 93, 268, 273, 275, 276, 0, 0, 245, 260, 0, + 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 257, 258, 241, 0, 0, 0, 299, 0, 259, 0, + 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 0, 297, + 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, + 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, + 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, + 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, + 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, + 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, + 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 289, 298, 295, 296, 293, 294, + 292, 291, 290, 300, 281, 282, 283, 284, 286, 0, + 285, 84, 0, 115, 176, 140, 102, 167, 132, 0, + 0, 0, 0, 249, 0, 0, 0, 100, 0, 247, + 0, 0, 114, 288, 116, 0, 0, 149, 125, 0, + 0, 0, 0, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 81, 274, 267, 266, + 269, 270, 271, 272, 0, 0, 93, 268, 273, 275, + 276, 0, 0, 245, 260, 0, 287, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 258, 1236, 0, + 0, 0, 299, 0, 259, 0, 0, 255, 256, 261, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 193, 0, 0, 297, 0, 138, 0, 0, + 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, + 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 289, 298, 295, 296, 293, 294, 292, 291, 290, 300, + 281, 282, 283, 284, 286, 0, 285, 84, 0, 115, + 176, 140, 102, 167, 132, 0, 0, 0, 0, 249, + 0, 0, 0, 100, 0, 247, 0, 0, 114, 288, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 279, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 468, 81, 274, 267, 266, 269, 270, 271, 272, + 0, 0, 93, 268, 273, 275, 276, 0, 0, 245, + 260, 0, 287, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 257, 258, 0, 0, 0, 0, 299, 0, + 259, 0, 0, 255, 256, 261, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 297, 0, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 289, 298, 295, 296, + 293, 294, 292, 291, 290, 300, 281, 282, 283, 284, + 286, 0, 285, 84, 0, 115, 176, 140, 102, 167, + 132, 0, 0, 0, 0, 249, 0, 0, 0, 100, + 0, 247, 0, 0, 114, 288, 116, 0, 0, 149, + 125, 0, 0, 0, 0, 279, 280, 0, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 81, 274, + 267, 266, 269, 270, 271, 272, 0, 0, 93, 268, + 273, 275, 276, 0, 0, 245, 260, 0, 287, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 258, + 241, 0, 0, 0, 299, 0, 259, 0, 0, 255, + 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 0, 297, 0, 138, + 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, + 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 289, 298, 295, 296, 293, 294, 292, 291, + 290, 300, 281, 282, 283, 284, 286, 0, 285, 84, + 0, 115, 176, 140, 102, 167, 132, 0, 0, 0, + 0, 249, 0, 0, 0, 100, 0, 247, 0, 0, + 114, 288, 116, 0, 0, 149, 125, 0, 0, 0, + 0, 279, 280, 0, 0, 0, 0, 0, 0, 830, + 0, 56, 0, 0, 81, 274, 267, 266, 269, 270, + 271, 272, 0, 0, 93, 268, 273, 275, 276, 0, + 0, 245, 260, 0, 287, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, + 299, 0, 259, 0, 0, 255, 256, 261, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 193, 0, 0, 297, 0, 138, 0, 0, 152, 105, + 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, + 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, - 0, 329, 0, 150, 166, 179, 344, 402, 172, 173, + 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, - 118, 141, 177, 133, 145, 95, 165, 148, 340, 343, - 338, 339, 377, 378, 411, 412, 413, 393, 335, 0, - 341, 342, 0, 397, 380, 84, 0, 115, 176, 140, - 102, 167, 406, 396, 0, 368, 408, 346, 360, 416, - 361, 362, 389, 332, 376, 132, 358, 0, 349, 327, - 355, 328, 347, 370, 100, 373, 345, 398, 379, 114, - 414, 116, 384, 0, 149, 125, 0, 0, 372, 400, - 374, 394, 367, 390, 337, 383, 409, 359, 387, 410, - 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 93, 0, 386, 405, 357, 388, 326, - 385, 0, 330, 333, 415, 403, 352, 353, 0, 0, - 0, 0, 0, 0, 0, 371, 375, 391, 365, 0, - 0, 0, 0, 0, 0, 725, 0, 350, 0, 382, - 0, 0, 0, 334, 331, 0, 369, 0, 0, 0, - 336, 0, 351, 392, 0, 325, 395, 401, 366, 193, - 404, 364, 363, 407, 138, 0, 0, 152, 105, 104, - 113, 399, 348, 356, 96, 354, 144, 134, 164, 381, + 118, 141, 177, 133, 145, 95, 165, 148, 289, 298, + 295, 296, 293, 294, 292, 291, 290, 300, 281, 282, + 283, 284, 286, 26, 285, 84, 0, 115, 176, 140, + 102, 167, 0, 0, 0, 132, 0, 0, 0, 0, + 249, 0, 0, 0, 100, 0, 247, 0, 0, 114, + 288, 116, 0, 0, 149, 125, 0, 0, 0, 0, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 0, 0, 81, 274, 267, 266, 269, 270, 271, + 272, 0, 0, 93, 268, 273, 275, 276, 0, 0, + 245, 260, 0, 287, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 257, 258, 0, 0, 0, 0, 299, + 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 0, 297, 0, 138, 0, 0, 152, 105, 104, + 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, - 329, 0, 150, 166, 179, 344, 402, 172, 173, 174, + 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, - 141, 177, 133, 145, 95, 165, 148, 340, 343, 338, - 339, 377, 378, 411, 412, 413, 393, 335, 0, 341, - 342, 0, 397, 380, 84, 0, 115, 176, 140, 102, - 167, 406, 396, 0, 368, 408, 346, 360, 416, 361, - 362, 389, 332, 376, 132, 358, 0, 349, 327, 355, - 328, 347, 370, 100, 373, 345, 398, 379, 114, 414, - 116, 384, 0, 149, 125, 0, 0, 372, 400, 374, - 394, 367, 390, 337, 383, 409, 359, 387, 410, 0, - 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 93, 0, 386, 405, 357, 388, 326, 385, - 0, 330, 333, 415, 403, 352, 353, 0, 0, 0, - 0, 0, 0, 0, 371, 375, 391, 365, 0, 0, - 0, 0, 0, 0, 0, 0, 350, 0, 382, 0, - 0, 0, 334, 331, 0, 369, 0, 0, 0, 336, - 0, 351, 392, 0, 325, 395, 401, 366, 193, 404, - 364, 363, 407, 138, 0, 0, 152, 105, 104, 113, - 399, 348, 356, 96, 354, 144, 134, 164, 381, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 329, - 0, 150, 166, 179, 344, 402, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 340, 343, 338, 339, - 377, 378, 411, 412, 413, 393, 335, 0, 341, 342, - 0, 397, 380, 84, 0, 115, 176, 140, 102, 167, - 406, 396, 0, 368, 408, 346, 360, 416, 361, 362, - 389, 332, 376, 132, 358, 0, 349, 327, 355, 328, - 347, 370, 100, 373, 345, 398, 379, 114, 414, 116, - 384, 0, 149, 125, 0, 0, 372, 400, 374, 394, - 367, 390, 337, 383, 409, 359, 387, 410, 0, 0, - 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, - 0, 93, 0, 386, 405, 357, 388, 326, 385, 0, - 330, 333, 415, 403, 352, 353, 0, 0, 0, 0, - 0, 0, 0, 371, 375, 391, 365, 0, 0, 0, - 0, 0, 0, 0, 0, 350, 0, 382, 0, 0, - 0, 334, 331, 0, 369, 0, 0, 0, 336, 0, - 351, 392, 0, 325, 395, 401, 366, 193, 404, 364, - 363, 407, 138, 0, 0, 152, 105, 104, 113, 399, - 348, 356, 96, 354, 144, 134, 164, 381, 135, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 323, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 329, 0, - 150, 166, 179, 344, 402, 172, 173, 174, 175, 0, - 0, 0, 324, 322, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 340, 343, 338, 339, 377, - 378, 411, 412, 413, 393, 335, 0, 341, 342, 0, - 397, 380, 84, 0, 115, 176, 140, 102, 167, 406, - 396, 0, 368, 408, 346, 360, 416, 361, 362, 389, - 332, 376, 132, 358, 0, 349, 327, 355, 328, 347, - 370, 100, 373, 345, 398, 379, 114, 414, 116, 384, - 0, 149, 125, 0, 0, 372, 400, 374, 394, 367, - 390, 337, 383, 409, 359, 387, 410, 0, 0, 0, + 141, 177, 133, 145, 95, 165, 148, 289, 298, 295, + 296, 293, 294, 292, 291, 290, 300, 281, 282, 283, + 284, 286, 0, 285, 84, 0, 115, 176, 140, 102, + 167, 132, 0, 0, 0, 0, 249, 0, 0, 0, + 100, 0, 247, 0, 0, 114, 288, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 279, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, + 274, 267, 266, 269, 270, 271, 272, 0, 0, 93, + 268, 273, 275, 276, 0, 0, 245, 260, 0, 287, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, + 258, 0, 0, 0, 0, 299, 0, 259, 0, 0, + 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 0, 0, 297, 0, + 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, + 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, + 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, + 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, + 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, + 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, + 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, + 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, + 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 289, 298, 295, 296, 293, 294, 292, + 291, 290, 300, 281, 282, 283, 284, 286, 132, 285, + 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, + 0, 0, 114, 288, 116, 0, 0, 149, 125, 0, + 0, 0, 0, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 81, 274, 267, 266, + 269, 270, 271, 272, 0, 0, 93, 268, 273, 275, + 276, 0, 0, 0, 260, 0, 287, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 258, 0, 0, + 0, 0, 299, 0, 259, 0, 0, 255, 256, 261, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 193, 0, 0, 297, 0, 138, 0, 0, + 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, + 134, 164, 1326, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 289, 298, 295, 296, 293, 294, 292, 291, 290, 300, + 281, 282, 283, 284, 286, 132, 285, 84, 0, 115, + 176, 140, 102, 167, 100, 0, 0, 0, 0, 114, + 288, 116, 0, 0, 149, 125, 0, 0, 0, 0, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 0, 0, 81, 274, 267, 266, 269, 270, 271, + 272, 0, 0, 93, 268, 273, 275, 276, 0, 0, + 0, 260, 0, 287, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 257, 258, 0, 0, 0, 0, 299, + 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 0, 297, 0, 138, 0, 0, 152, 105, 104, + 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, + 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, + 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, + 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, + 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, + 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, + 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, + 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, + 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, + 141, 177, 133, 145, 95, 165, 148, 289, 298, 295, + 296, 293, 294, 292, 291, 290, 300, 281, 282, 283, + 284, 286, 132, 285, 84, 0, 115, 176, 140, 102, + 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, + 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 93, 0, 386, 405, 357, 388, 326, 385, 0, 330, - 333, 415, 403, 352, 353, 0, 0, 0, 0, 0, - 0, 0, 371, 375, 391, 365, 0, 0, 0, 0, - 0, 0, 0, 0, 350, 0, 382, 0, 0, 0, - 334, 331, 0, 369, 0, 0, 0, 336, 0, 351, - 392, 0, 325, 395, 401, 366, 193, 404, 364, 363, - 407, 138, 0, 0, 152, 105, 104, 113, 399, 348, - 356, 96, 354, 144, 134, 164, 381, 135, 143, 117, - 156, 139, 163, 194, 171, 154, 170, 85, 153, 595, + 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 501, 500, 510, 511, + 503, 504, 505, 506, 507, 508, 509, 502, 0, 0, + 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, + 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, + 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, - 97, 178, 90, 169, 89, 323, 168, 130, 155, 161, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, - 119, 137, 107, 127, 126, 128, 0, 329, 0, 150, - 166, 179, 344, 402, 172, 173, 174, 175, 0, 0, - 0, 324, 322, 108, 147, 111, 118, 141, 177, 133, - 145, 95, 165, 148, 340, 343, 338, 339, 377, 378, - 411, 412, 413, 393, 335, 0, 341, 342, 0, 397, - 380, 84, 0, 115, 176, 140, 102, 167, 406, 396, - 0, 368, 408, 346, 360, 416, 361, 362, 389, 332, - 376, 132, 358, 0, 349, 327, 355, 328, 347, 370, - 100, 373, 345, 398, 379, 114, 414, 116, 384, 0, - 149, 125, 0, 0, 372, 400, 374, 394, 367, 390, - 337, 383, 409, 359, 387, 410, 0, 0, 0, 81, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, - 0, 386, 405, 357, 388, 326, 385, 0, 330, 333, - 415, 403, 352, 353, 0, 0, 0, 0, 0, 0, - 0, 371, 375, 391, 365, 0, 0, 0, 0, 0, - 0, 0, 0, 350, 0, 382, 0, 0, 0, 334, - 331, 0, 369, 0, 0, 0, 336, 0, 351, 392, - 0, 325, 395, 401, 366, 193, 404, 364, 363, 407, - 138, 0, 0, 152, 105, 104, 113, 399, 348, 356, - 96, 354, 144, 134, 164, 381, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 314, 94, - 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, - 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 323, 168, 130, 155, 161, 124, - 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 329, 0, 150, 166, - 179, 344, 402, 172, 173, 174, 175, 0, 0, 0, - 324, 322, 317, 316, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 340, 343, 338, 339, 377, 378, 411, - 412, 413, 393, 335, 0, 341, 342, 0, 397, 380, - 84, 0, 115, 176, 140, 102, 167, 132, 0, 0, - 759, 0, 248, 0, 0, 0, 100, 0, 246, 0, - 0, 114, 287, 116, 0, 0, 149, 125, 0, 0, - 0, 0, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 0, 56, 0, 0, 81, 273, 266, 265, 268, - 269, 270, 271, 0, 0, 93, 267, 272, 274, 275, - 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, + 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, + 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, + 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, + 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 256, 257, 240, 0, 0, - 0, 298, 0, 258, 0, 0, 254, 255, 260, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 193, 0, 0, 296, 0, 138, 0, 0, 152, - 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, - 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, - 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, - 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, - 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, - 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, - 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, - 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, - 111, 118, 141, 177, 133, 145, 95, 165, 148, 288, - 297, 294, 295, 292, 293, 291, 290, 289, 299, 280, - 281, 282, 283, 285, 0, 284, 84, 0, 115, 176, - 140, 102, 167, 132, 0, 0, 0, 0, 248, 0, - 0, 0, 100, 0, 246, 0, 0, 114, 287, 116, - 0, 0, 149, 125, 0, 0, 0, 0, 278, 279, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 0, 81, 273, 266, 265, 268, 269, 270, 271, 0, - 0, 93, 267, 272, 274, 275, 0, 0, 244, 259, - 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 256, 257, 1229, 0, 0, 0, 298, 0, 258, - 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 296, 0, 138, 0, 0, 152, 105, 104, 113, 0, - 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, - 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, - 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 288, 297, 294, 295, 292, - 293, 291, 290, 289, 299, 280, 281, 282, 283, 285, - 0, 284, 84, 0, 115, 176, 140, 102, 167, 132, - 0, 0, 0, 0, 248, 0, 0, 0, 100, 0, - 246, 0, 0, 114, 287, 116, 0, 0, 149, 125, - 0, 0, 0, 0, 278, 279, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 466, 81, 273, 266, - 265, 268, 269, 270, 271, 0, 0, 93, 267, 272, - 274, 275, 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 256, 257, 0, - 0, 0, 0, 298, 0, 258, 0, 0, 254, 255, - 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 296, 0, 138, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 78, 0, 73, 0, 0, 0, 79, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, - 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, + 75, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, @@ -1187,20 +1371,20 @@ var yyAct = [...]int{ 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, - 148, 288, 297, 294, 295, 292, 293, 291, 290, 289, - 299, 280, 281, 282, 283, 285, 0, 284, 84, 0, - 115, 176, 140, 102, 167, 132, 0, 0, 0, 0, - 248, 0, 0, 0, 100, 0, 246, 0, 0, 114, - 287, 116, 0, 0, 149, 125, 0, 0, 0, 0, - 278, 279, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 0, 0, 81, 273, 266, 265, 268, 269, 270, - 271, 0, 0, 93, 267, 272, 274, 275, 0, 0, - 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, + 148, 0, 76, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 115, 176, 140, 102, 167, 132, 0, 0, 0, 490, + 0, 0, 0, 0, 100, 0, 0, 0, 0, 114, + 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 487, 486, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 488, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 256, 257, 240, 0, 0, 0, 298, - 0, 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, - 0, 0, 296, 0, 138, 0, 0, 152, 105, 104, + 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, @@ -1210,219 +1394,148 @@ var yyAct = [...]int{ 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, - 141, 177, 133, 145, 95, 165, 148, 288, 297, 294, - 295, 292, 293, 291, 290, 289, 299, 280, 281, 282, - 283, 285, 0, 284, 84, 0, 115, 176, 140, 102, - 167, 132, 0, 0, 0, 0, 248, 0, 0, 0, - 100, 0, 246, 0, 0, 114, 287, 116, 0, 0, - 149, 125, 0, 0, 0, 0, 278, 279, 0, 0, - 0, 0, 0, 0, 827, 0, 56, 0, 0, 81, - 273, 266, 265, 268, 269, 270, 271, 0, 0, 93, - 267, 272, 274, 275, 0, 0, 244, 259, 0, 286, + 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 132, 0, 84, 0, 115, 176, 140, 102, + 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, + 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, + 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, - 257, 0, 0, 0, 0, 298, 0, 258, 0, 0, - 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 296, 0, - 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, - 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, - 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, - 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, - 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, - 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, - 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 288, 297, 294, 295, 292, 293, 291, - 290, 289, 299, 280, 281, 282, 283, 285, 26, 284, - 84, 0, 115, 176, 140, 102, 167, 0, 0, 0, - 132, 0, 0, 0, 0, 248, 0, 0, 0, 100, - 0, 246, 0, 0, 114, 287, 116, 0, 0, 149, - 125, 0, 0, 0, 0, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 81, 273, - 266, 265, 268, 269, 270, 271, 0, 0, 93, 267, - 272, 274, 275, 0, 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, - 0, 0, 0, 0, 298, 0, 258, 0, 0, 254, - 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 193, 0, 0, 296, 0, 138, - 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, - 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, - 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, - 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, - 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, - 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, - 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, - 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, - 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, - 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, - 165, 148, 288, 297, 294, 295, 292, 293, 291, 290, - 289, 299, 280, 281, 282, 283, 285, 0, 284, 84, - 0, 115, 176, 140, 102, 167, 132, 0, 0, 0, - 0, 248, 0, 0, 0, 100, 0, 246, 0, 0, - 114, 287, 116, 0, 0, 149, 125, 0, 0, 0, - 0, 278, 279, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 0, 0, 81, 273, 266, 265, 268, 269, - 270, 271, 0, 0, 93, 267, 272, 274, 275, 0, - 0, 244, 259, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 256, 257, 0, 0, 0, 0, - 298, 0, 258, 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 193, 0, 0, 296, 0, 138, 0, 0, 152, 105, - 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, - 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, - 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, - 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, - 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, - 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, - 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, - 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, - 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, - 118, 141, 177, 133, 145, 95, 165, 148, 288, 297, - 294, 295, 292, 293, 291, 290, 289, 299, 280, 281, - 282, 283, 285, 132, 284, 84, 0, 115, 176, 140, - 102, 167, 100, 0, 0, 0, 0, 114, 287, 116, - 0, 0, 149, 125, 0, 0, 0, 0, 278, 279, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 0, 81, 273, 266, 265, 268, 269, 270, 271, 0, - 0, 93, 267, 272, 274, 275, 0, 0, 0, 259, - 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, + 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, + 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, + 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, + 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, + 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, + 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, + 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, + 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, + 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 256, 257, 0, 0, 0, 0, 298, 0, 258, - 0, 0, 254, 255, 260, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 296, 0, 138, 0, 0, 152, 105, 104, 113, 0, - 0, 0, 96, 0, 144, 134, 164, 1318, 135, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, - 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, - 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 288, 297, 294, 295, 292, - 293, 291, 290, 289, 299, 280, 281, 282, 283, 285, - 132, 284, 84, 0, 115, 176, 140, 102, 167, 100, - 0, 0, 0, 0, 114, 287, 116, 0, 0, 149, - 125, 0, 0, 0, 0, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 81, 273, - 266, 265, 268, 269, 270, 271, 0, 0, 93, 267, - 272, 274, 275, 0, 0, 0, 259, 0, 286, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 83, 715, 0, 0, 716, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, - 0, 0, 0, 0, 298, 0, 258, 0, 0, 254, - 255, 260, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 193, 0, 0, 296, 0, 138, - 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, - 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, - 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, - 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, - 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, - 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, - 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, - 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, - 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, - 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, - 165, 148, 288, 297, 294, 295, 292, 293, 291, 290, - 289, 299, 280, 281, 282, 283, 285, 132, 284, 84, - 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, - 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, - 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 78, - 0, 73, 0, 0, 0, 79, 138, 0, 0, 152, - 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, - 164, 0, 135, 143, 117, 156, 139, 163, 75, 171, - 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, - 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, - 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, - 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, - 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, - 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, - 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, - 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 0, 115, 176, - 140, 102, 167, 132, 0, 0, 0, 488, 0, 0, - 0, 0, 100, 0, 0, 0, 0, 114, 0, 116, - 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, + 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, + 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, + 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, + 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, + 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, + 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, + 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, + 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, + 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, + 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, + 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 115, 176, 140, 102, 167, 132, 0, 0, 0, 587, + 0, 0, 0, 0, 100, 0, 0, 0, 0, 114, + 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, - 0, 93, 0, 0, 0, 0, 485, 484, 0, 0, + 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, - 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, - 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, - 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 132, 0, 84, 0, 115, 176, 140, 102, 167, 100, - 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 81, 0, - 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, + 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, + 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, + 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, + 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, + 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, + 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, + 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, + 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, + 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, + 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 132, 0, 84, 0, 115, 176, 140, 102, + 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, + 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, + 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, + 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, + 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, + 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, + 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, + 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, + 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, + 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, + 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, + 605, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, - 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, - 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, - 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, - 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, - 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, - 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, - 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, - 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, - 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, - 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, - 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, - 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, - 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 81, 0, 0, 83, 712, - 0, 0, 713, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, + 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, + 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, + 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, + 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, + 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, + 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, + 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, + 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, + 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, + 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, + 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 115, 176, 140, 102, 167, 132, 0, 0, 0, 587, + 0, 0, 0, 0, 100, 0, 0, 0, 0, 114, + 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, - 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, - 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, - 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, - 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, - 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, - 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, - 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, - 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, - 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, + 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, + 585, 143, 117, 156, 139, 163, 194, 171, 154, 170, + 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, + 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, + 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, + 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, + 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, + 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, + 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, + 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 0, 115, 176, - 140, 102, 167, 132, 0, 0, 0, 585, 0, 0, - 0, 0, 100, 0, 0, 0, 0, 114, 0, 116, + 0, 0, 0, 132, 84, 0, 115, 176, 140, 102, + 167, 565, 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, @@ -1443,11 +1556,11 @@ var yyAct = [...]int{ 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 310, 0, 0, 0, 0, 0, 0, 132, 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 81, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1467,7 +1580,7 @@ var yyAct = [...]int{ 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, - 0, 115, 176, 140, 102, 167, 100, 0, 603, 0, + 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, @@ -1476,7 +1589,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, @@ -1489,133 +1602,42 @@ var yyAct = [...]int{ 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 0, 115, 176, - 140, 102, 167, 132, 0, 0, 0, 585, 0, 0, - 0, 0, 100, 0, 0, 0, 0, 114, 0, 116, - 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, - 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, - 0, 0, 96, 0, 144, 134, 164, 0, 583, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, - 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, - 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 132, 84, 0, 115, 176, 140, 102, 167, 563, - 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, - 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, - 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, - 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, - 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, - 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, - 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, - 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, - 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 0, 0, 0, 0, 0, 0, 132, 0, - 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, - 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, - 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 193, 0, 0, 0, 0, 138, 0, 0, - 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, - 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, - 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, - 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, - 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, - 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, - 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, - 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, - 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, - 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 132, 0, 84, 0, 115, - 176, 140, 102, 167, 100, 0, 0, 0, 0, 114, - 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 189, 0, 193, - 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, - 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, - 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, - 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, - 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, - 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, - 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, - 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, - 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, - 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, - 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 0, 84, 0, 115, 176, 140, 102, - 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, - 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 132, 0, 84, 0, 115, 176, + 140, 102, 167, 100, 0, 0, 0, 0, 114, 0, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, - 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, - 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, - 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, - 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, - 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, - 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, - 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, - 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, - 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, - 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, - 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 84, 0, 115, 176, 140, 102, 167, + 0, 0, 0, 84, 0, 115, 176, 140, 102, 167, } var yyPact = [...]int{ - 1491, -1000, -183, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 94, -1000, -183, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 891, 915, -1000, -1000, -1000, -1000, + -1000, -1000, 672, 6761, 115, 125, 7, 9059, 124, 184, + 9286, -1000, -9, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -15, 9286, 500, 589, -1000, -1000, -1000, -1000, -1000, 879, + 889, 654, 871, 763, -1000, 5142, 75, 7914, 8832, 4198, + -1000, 497, 120, 9286, -150, 9286, 73, 73, 73, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 895, 942, -1000, -1000, -1000, -1000, - -1000, -1000, 695, 6549, 61, 95, -10, 8847, 94, 111, - 9074, -1000, -15, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -24, 9074, 506, 610, -1000, -1000, -1000, -1000, -1000, 890, - 903, 701, 859, 778, -1000, 5157, 55, 7702, 8620, 4213, - -1000, 505, 87, 9074, -144, 9074, 50, 50, 50, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1625,22 +1647,22 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 116, 9286, -1000, 9286, 63, 494, 63, 63, 63, 9286, + -1000, 158, -1000, -1000, -1000, 9286, 475, 817, 67, 2704, + 2704, 2704, 2704, 26, 2704, -104, -94, 696, -1000, -1000, + -1000, -1000, 2704, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 9286, 873, 674, 406, 813, 5853, 5853, + 891, -1000, 589, -1000, -1000, -1000, 799, -1000, -1000, 291, + 902, -1000, 6997, 157, -1000, 5853, 1758, 608, 608, 608, + 144, 314, -1000, -1000, -1000, 6307, 6307, 6307, 6307, 6307, + 6307, 6307, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5617, 608, + 608, 608, 608, 608, 608, 608, 608, 5853, 608, 608, + 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, + 608, 8605, 571, 782, -1000, -1000, -1000, 864, 7224, 8377, + 9286, 553, -1000, 603, 3949, -101, -1000, -1000, -1000, 236, + 8141, -1000, -1000, -1000, 811, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 90, 9074, -1000, 9074, 48, 500, 48, 48, 48, 9074, - -1000, 125, -1000, -1000, -1000, 9074, 444, 825, 46, 2719, - 2719, 2719, 2719, 7, 2719, -94, 719, -1000, -1000, -1000, - -1000, 2719, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 9074, 889, 697, 449, 831, 5868, 5868, 895, - -1000, 610, -1000, -1000, -1000, 804, -1000, -1000, 253, 916, - -1000, 6785, 123, -1000, 5868, 1601, 410, 410, 410, 114, - 269, -1000, -1000, -1000, 6322, 6322, 6322, 6322, 6322, 6322, - 6322, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5632, 410, 410, - 410, 410, 410, 410, 410, 410, 5868, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, - 8393, 559, 699, -1000, -1000, -1000, 855, 7012, 8165, 9074, - 531, -1000, 585, 3964, -106, -1000, -1000, -1000, 187, 7929, - -1000, -1000, -1000, 823, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1648,122 +1670,121 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 493, -1000, + 1614, 471, 2704, 90, 613, 469, 245, 445, 9286, 9286, + 2704, 81, 9286, 860, 690, 9286, 438, 428, -1000, 3451, + -1000, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, -1000, + -1000, -1000, -1000, -1000, -1000, 2704, 2704, -1000, -108, -40, + -1000, 9286, -1000, -1000, 105, 105, 9286, -1000, -1000, -1000, + 908, 183, 436, 156, 604, -1000, 381, 879, 406, 763, + 7451, 715, -1000, -1000, 9286, -1000, 5853, 5853, 345, -1000, + 9286, -1000, 3202, 195, 6307, 346, 237, 6307, 6307, 6307, + 6307, 6307, 6307, 6307, 6307, 6307, 6307, 6307, 6307, 6307, + 6307, 6307, 366, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 426, 4434, -1000, 589, 625, 625, -1000, -1000, 174, + 174, 174, 174, 174, 174, 6534, 406, 489, 253, 5617, + 5142, 5142, 5853, 5853, 9286, 9286, 5142, 872, 218, 253, + 9286, -1000, 406, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 5142, 5142, 5142, 5142, 143, 9286, -1000, 9286, 7914, 7914, + 7914, 7914, 7914, -1000, 731, 730, -1000, 710, 707, 767, + 9286, -1000, 487, 7224, 168, 608, -1000, 9286, -1000, 43, + 522, 7914, 9286, -1000, -1000, 3700, 603, -101, 587, -1000, + -112, -119, 5378, 169, -1000, -1000, -1000, 2455, 163, 302, + -75, -1000, -1000, -1000, 614, -1000, 614, 614, 614, 614, + -48, -48, -48, -48, -1000, -1000, -1000, -1000, -1000, 671, + 648, -1000, 614, 614, 614, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 504, -1000, 1612, - 436, 2719, 69, 612, 434, 207, 432, 9074, 9074, 2719, - 57, 9074, 849, 717, 9074, 426, 422, -1000, 3466, -1000, - 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, -1000, -1000, - -1000, -1000, -1000, -1000, 2719, 2719, -1000, -89, -1000, 9074, - -1000, -1000, 130, 130, 9074, -1000, -1000, -1000, 934, 153, - 405, 120, 611, -1000, 413, 890, 449, 778, 7239, 729, - -1000, -1000, 9074, -1000, 5868, 5868, 319, -1000, 9074, -1000, - 3217, 159, 6322, 367, 204, 6322, 6322, 6322, 6322, 6322, - 6322, 6322, 6322, 6322, 6322, 6322, 6322, 6322, 6322, 6322, - 395, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 408, - 4449, -1000, 610, 1030, 1030, -1000, -1000, 134, 134, 134, - 134, 134, 134, 1911, 449, 499, 263, 5632, 5157, 5157, - 5868, 5868, 9074, 9074, 5157, 863, 194, 263, 9074, -1000, - 449, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5157, 5157, - 5157, 5157, 141, 9074, -1000, 9074, 7702, 7702, 7702, 7702, - 7702, -1000, 767, 753, -1000, 774, 747, 788, 9074, -1000, - 491, 7012, 128, 410, -1000, 9074, -1000, 29, 524, 7702, - 9074, -1000, -1000, 3715, 585, -106, 553, -1000, -108, -121, - 5393, 132, -1000, -1000, -1000, 2470, 160, 229, -83, -1000, - -1000, -1000, 619, -1000, 619, 619, 619, 619, -51, -51, - -51, -51, -1000, -1000, -1000, -1000, -1000, 685, 683, -1000, - 619, 619, 619, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 682, - 682, 682, 620, 620, 680, -1000, 9074, -162, 402, 2719, - 836, 2719, -1000, 1279, -1000, 9074, -1000, -1000, 9074, 2719, + -1000, 641, 641, 641, 616, 616, 618, -1000, 9286, -167, + 424, 2704, 859, 2704, -1000, 79, -1000, 9286, -1000, -1000, + 9286, 2704, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 251, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 602, + -1000, -1000, 768, 5853, 5853, 3451, 5853, -1000, -1000, -1000, + 813, -1000, 872, 883, -1000, 805, 798, 5142, -1000, -1000, + 195, 215, -1000, -1000, 351, -1000, -1000, -1000, -1000, 153, + 608, -1000, -1000, 1647, -1000, -1000, -1000, -1000, 346, 6307, + 6307, 6307, 617, 1647, 1849, 755, 1314, 174, 287, 287, + 166, 166, 166, 166, 166, 249, 249, -1000, -1000, -1000, + 406, 406, 5142, 594, -1000, 314, -1000, 314, -1000, -1000, + 5853, -1000, 406, 483, 483, 329, 266, 636, -1000, 151, + 635, 483, 5142, 292, -1000, 5853, 406, -1000, 483, 406, + 483, 483, 529, 795, 608, -1000, 585, -1000, 227, 782, + 653, 687, 1057, -1000, -1000, -1000, -1000, 717, -1000, 708, + -1000, -1000, -1000, -1000, -1000, 111, 110, 104, 9286, -1000, + 900, 7914, 568, -1000, -1000, 587, -101, -111, -1000, -1000, + -1000, 253, -1000, 376, 580, 2206, -1000, -1000, -1000, -1000, + -1000, 622, 842, 192, 214, 421, -1000, -1000, 833, -1000, + 261, -77, -1000, -1000, 368, -48, -48, -1000, -1000, 169, + 810, 169, 169, 169, 396, 396, -1000, -1000, -1000, -1000, + 367, -1000, -1000, -1000, 364, -1000, 686, 9286, 2704, -1000, + 3451, -1000, -1000, -1000, -1000, -1000, -1000, 1313, 383, 199, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 237, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 563, -1000, -1000, 797, - 5868, 5868, 3466, 5868, -1000, -1000, -1000, 831, -1000, 863, - 901, -1000, 807, 805, 5157, -1000, -1000, 159, 174, -1000, - -1000, 356, -1000, -1000, -1000, -1000, 119, 410, -1000, -1000, - 1724, -1000, -1000, -1000, -1000, 367, 6322, 6322, 6322, 591, - 1724, 1412, 309, 703, 134, 663, 663, 150, 150, 150, - 150, 150, 684, 684, -1000, -1000, -1000, 449, 449, 5157, - 556, -1000, 269, -1000, 269, -1000, -1000, 5868, -1000, 449, - 483, 483, 362, 427, 650, -1000, 117, 598, 483, 5157, - 226, -1000, 5868, 449, -1000, 483, 449, 483, 483, 675, - 803, 410, -1000, 565, -1000, 176, 699, 679, 708, 894, - -1000, -1000, -1000, -1000, 750, -1000, 709, -1000, -1000, -1000, - -1000, -1000, 85, 78, 77, 9074, -1000, 914, 7702, 560, - -1000, -1000, 553, -106, -110, -1000, -1000, -1000, 263, -1000, - 396, 551, 2221, -1000, -1000, -1000, -1000, -1000, 674, 835, - 179, 164, 384, -1000, -1000, 828, -1000, 238, -85, -1000, - -1000, 310, -51, -51, -1000, -1000, 132, 800, 132, 132, - 132, 359, 359, -1000, -1000, -1000, -1000, 305, -1000, -1000, - -1000, 280, -1000, 706, 9074, 2719, -1000, 3466, -1000, -1000, - -1000, -1000, -1000, -1000, 646, 270, 206, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 28, -1000, - 2719, -1000, 248, 9074, 9074, 9074, 786, 263, 263, 112, - -1000, -1000, 9074, -1000, -1000, -1000, -1000, 564, -1000, -1000, - -1000, 2968, 5157, -1000, 591, 1724, 793, -1000, 6322, 6322, - -1000, -1000, 483, 5157, 263, -1000, -1000, -1000, 67, 395, - 67, 6322, 6322, 3466, 6322, 6322, -155, 558, 175, -1000, - 5868, 409, -1000, -1000, -1000, -1000, -1000, 702, 9074, 410, - -1000, 7012, -1000, 9074, 895, 9074, 5868, 5868, -1000, -1000, - 5868, 625, -1000, 5868, -1000, -1000, -1000, 410, 410, 410, - 467, -1000, 895, 560, -1000, -1000, -1000, -117, -130, -1000, - -1000, 2470, -1000, 2470, 9074, -1000, 380, 371, -1000, -1000, - 686, 40, -1000, -1000, -1000, 510, 132, 132, -1000, 181, - -1000, -1000, -1000, 481, -1000, 477, 547, 474, 9074, -1000, - -1000, 544, -1000, 170, -1000, -1000, 9074, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 9074, - 9074, -1000, -1000, -1000, -1000, -1000, 9074, -1000, -1000, 358, - 5868, -1000, -1000, -1000, -1000, 3466, -1000, 914, 7702, -1000, - -1000, 449, -1000, 6322, 1724, 1724, -1000, -1000, 449, 619, - 619, -1000, 619, 620, -1000, 619, -32, 619, -35, 449, - 449, 1760, 1641, -1000, 1306, 1517, 410, -151, -1000, 263, - 5868, -181, 843, 509, 539, -1000, -1000, 4921, 449, 469, - 109, 467, 890, -1000, 263, 263, 263, 9074, 263, 9074, - 9074, 9074, 7475, 9074, 890, -1000, -1000, -1000, -1000, 2221, - -1000, 462, -1000, 619, -1000, -1000, -78, 925, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -51, - 336, -51, 279, -1000, 278, 2719, 3466, 2470, -1000, 618, - -1000, -1000, -1000, -1000, 845, -1000, 263, 912, 543, -1000, - 1724, -1000, -1000, 73, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 6322, 6322, -1000, 6322, 6322, 6322, 449, - 335, 263, -1000, 4685, 833, -1000, 410, -1000, -1000, 614, - 9074, 9074, -1000, -1000, 459, -1000, 448, 448, 448, 128, - -1000, -1000, 145, 9074, -1000, 148, -1000, -134, 132, -1000, - 132, 492, 478, -1000, -1000, -1000, 9074, 410, 910, 893, - -1000, -1000, 1661, 1661, 1661, 1661, 54, -1000, -1000, -1000, - 534, 920, -1000, 410, -1000, 610, 107, -1000, 9074, -1000, - -1000, -1000, -1000, -1000, 145, -1000, 365, 155, 321, -1000, - 241, 832, -1000, 830, -1000, -1000, -1000, -1000, -1000, 412, - 26, -1000, 5868, 5868, -1000, -1000, -1000, -1000, 449, 43, - -171, 9074, 539, 449, 9074, -1000, -1000, -1000, 276, -1000, - -1000, -1000, 312, -1000, -1000, 612, 407, -1000, 9074, 263, - 534, -1000, 783, -159, -174, 530, -1000, -1000, -1000, -1000, - -162, -1000, 26, 802, -1000, 776, -1000, -1000, -1000, -3, - -169, -5, -172, 410, -175, 6095, -1000, 1661, 449, -1000, - -1000, + -1000, 42, -1000, 2704, -1000, 264, 9286, 9286, 9286, 774, + 253, 253, 147, -1000, -1000, 9286, -1000, -1000, -1000, -1000, + 612, -1000, -1000, -1000, 2953, 5142, -1000, 617, 1647, 1812, + -1000, 6307, 6307, -1000, -1000, 483, 5142, 253, -1000, -1000, + -1000, 300, 366, 300, 6307, 6307, 3451, 6307, 6307, -161, + 572, 216, -1000, 5853, 228, -1000, -1000, -1000, -1000, -1000, + 685, 9286, 608, -1000, 7224, -1000, 9286, 891, 9286, 5853, + 5853, -1000, -1000, 5853, 621, -1000, 5853, -1000, -1000, -1000, + 608, 608, 608, 443, -1000, 891, 568, -1000, -1000, -1000, + -124, -131, -1000, -1000, -1000, 2455, -1000, 2455, 9286, -1000, + 419, 412, -1000, -1000, 676, 106, -1000, -1000, -1000, 505, + 169, 169, -1000, 170, -1000, -1000, -1000, 479, -1000, 466, + 575, 464, 9286, -1000, -1000, 557, -1000, 220, -1000, -1000, + 9286, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 9286, 9286, -1000, -1000, -1000, -1000, -1000, + 9286, -1000, -1000, 392, 5853, -1000, -1000, -1000, -1000, 3451, + -1000, 900, 7914, -1000, -1000, 406, -1000, 6307, 1647, 1647, + -1000, -1000, 406, 614, 614, -1000, 614, 616, -1000, 614, + -24, 614, -30, 608, 406, 406, 1412, 1797, -1000, 667, + 1436, 608, -158, -1000, 253, 5853, -181, 847, 507, 536, + -1000, -1000, 4906, 406, 462, 139, 443, 879, -1000, 253, + 253, 253, 9286, 253, 9286, 9286, 9286, 7687, 9286, 879, + -1000, -1000, -1000, -1000, 2206, -1000, 433, -1000, 614, -1000, + -1000, -71, 906, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -48, 391, -48, 352, -1000, 342, + 2704, 3451, 2455, -1000, 610, -1000, -1000, -1000, -1000, 851, + -1000, 253, 898, 546, -1000, 1647, -1000, -1000, 78, -1000, + -1000, -1000, -1000, -1000, -1000, 322, -1000, -1000, -1000, 6307, + 6307, -1000, 6307, 6307, 6307, 406, 382, 253, -1000, 4670, + 840, -1000, 608, -1000, -1000, 577, 9286, 9286, -1000, -1000, + 416, -1000, 411, 411, 411, 168, -1000, -1000, 140, 9286, + -1000, 152, -1000, -135, 169, -1000, 169, 444, 434, -1000, + -1000, -1000, 9286, 608, 896, 887, -1000, -1000, 406, 1567, + 1567, 1567, 1567, 57, -1000, -1000, -1000, 535, 905, -1000, + 608, -1000, 589, 136, -1000, 9286, -1000, -1000, -1000, -1000, + -1000, 140, -1000, 370, 213, 379, -1000, 274, 839, -1000, + 836, -1000, -1000, -1000, -1000, -1000, 409, 40, -1000, 5853, + 5853, -1000, -1000, -1000, -1000, -1000, 406, 37, -171, 9286, + 536, 406, 9286, -1000, -1000, -1000, 319, -1000, -1000, -1000, + 375, -1000, -1000, 613, 405, -1000, 9286, 253, 535, -1000, + 771, -165, -175, 513, -1000, -1000, -1000, -1000, -167, -1000, + 40, 780, -1000, 759, -1000, -1000, -1000, 25, -169, 22, + -173, 608, -177, 6080, -1000, 1567, 406, -1000, -1000, } var yyPgo = [...]int{ - 0, 1181, 17, 62, 1180, 1179, 1178, 948, 1177, 1176, - 1175, 1174, 1173, 1172, 1166, 1165, 1164, 1157, 1154, 1153, - 1150, 1149, 1144, 1141, 1140, 1139, 1138, 133, 1137, 1132, - 1130, 58, 1129, 63, 1124, 1121, 31, 137, 48, 39, - 54, 1119, 25, 89, 82, 1118, 46, 1117, 1116, 75, - 1115, 60, 1109, 1106, 1285, 1104, 1103, 12, 27, 1102, - 1101, 1100, 1099, 56, 213, 1096, 1075, 1074, 1073, 1072, - 1071, 43, 3, 6, 24, 11, 1070, 600, 8, 1069, - 42, 1068, 1067, 1066, 1065, 33, 1062, 47, 1060, 19, - 44, 1058, 16, 55, 29, 13, 9, 67, 53, 1055, - 22, 50, 45, 1054, 1052, 390, 1051, 1049, 1048, 1046, - 1045, 1039, 128, 289, 1038, 1037, 1036, 1035, 36, 1034, - 0, 139, 61, 1033, 1032, 1031, 1012, 57, 59, 23, - 1030, 37, 181, 30, 1029, 1023, 28, 1020, 1013, 1010, - 1008, 1007, 1006, 1004, 195, 1003, 1002, 1001, 20, 7, - 1000, 999, 49, 21, 997, 996, 991, 35, 51, 990, - 40, 989, 987, 986, 985, 26, 15, 983, 10, 982, - 5, 978, 977, 1, 976, 14, 975, 2, 963, 4, - 32, 961, 960, 66, 958, 957, 955, 64, 144, 954, - 953, 83, + 0, 1175, 25, 63, 1174, 1173, 1172, 921, 1169, 1168, + 1163, 1161, 1160, 1158, 1155, 1149, 1148, 1147, 1146, 1145, + 1144, 1143, 1141, 1140, 1139, 1136, 1135, 109, 1134, 1132, + 1122, 58, 1114, 60, 1112, 1111, 28, 807, 29, 50, + 35, 1110, 20, 71, 82, 1106, 42, 1103, 1097, 66, + 1094, 57, 1092, 1091, 1269, 1088, 1085, 10, 16, 1084, + 1080, 1077, 1076, 59, 473, 1074, 1072, 1071, 1070, 1069, + 1062, 44, 3, 6, 7, 13, 1061, 107, 53, 1059, + 33, 1058, 1057, 1056, 1054, 40, 1053, 47, 1052, 22, + 39, 1046, 11, 55, 27, 21, 24, 65, 51, 1043, + 19, 54, 36, 1042, 1041, 391, 1040, 1039, 1038, 1037, + 1036, 1033, 179, 330, 1032, 1030, 1029, 1028, 46, 1027, + 0, 554, 61, 1025, 1024, 1021, 1055, 62, 56, 15, + 1019, 43, 171, 23, 1018, 1017, 48, 1016, 1013, 1011, + 1007, 1004, 1002, 1001, 181, 1000, 997, 995, 9, 37, + 964, 963, 49, 17, 961, 960, 959, 32, 45, 958, + 31, 957, 954, 953, 950, 18, 12, 949, 8, 948, + 5, 946, 945, 1, 936, 14, 935, 2, 934, 4, + 30, 933, 932, 64, 931, 928, 927, 495, 98, 924, + 923, 67, } var yyR1 = [...]int{ @@ -1783,51 +1804,52 @@ var yyR1 = [...]int{ 143, 157, 157, 144, 144, 152, 152, 153, 153, 153, 150, 150, 151, 151, 154, 154, 154, 145, 145, 145, 145, 145, 145, 145, 147, 147, 155, 155, 148, 148, - 148, 149, 149, 156, 156, 156, 156, 156, 146, 146, - 159, 159, 171, 171, 170, 170, 170, 161, 161, 167, - 167, 167, 167, 167, 160, 160, 169, 169, 168, 164, - 164, 164, 165, 165, 165, 166, 166, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 174, 172, 172, - 173, 173, 13, 14, 14, 14, 14, 14, 15, 15, - 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 148, 149, 149, 149, 156, 156, 156, 156, 156, 146, + 146, 159, 159, 171, 171, 170, 170, 170, 161, 161, + 167, 167, 167, 167, 167, 160, 160, 169, 169, 168, + 164, 164, 164, 165, 165, 165, 166, 166, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 174, 172, + 172, 173, 173, 13, 14, 14, 14, 14, 14, 15, + 15, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 110, 110, 107, 107, 108, 108, - 109, 109, 109, 111, 111, 111, 135, 135, 135, 19, - 19, 21, 21, 22, 23, 20, 20, 20, 20, 20, - 24, 25, 25, 183, 183, 183, 183, 183, 26, 26, - 184, 184, 190, 27, 28, 28, 29, 29, 29, 33, - 33, 33, 31, 31, 32, 32, 38, 38, 37, 37, - 39, 39, 39, 39, 123, 123, 123, 122, 41, 41, - 42, 42, 43, 43, 44, 44, 44, 56, 56, 92, - 92, 94, 94, 45, 45, 45, 45, 46, 46, 47, - 47, 48, 48, 130, 130, 129, 129, 129, 128, 50, - 50, 50, 52, 51, 51, 51, 51, 53, 53, 55, - 55, 54, 54, 57, 57, 57, 57, 58, 58, 40, - 40, 40, 40, 40, 40, 40, 106, 106, 60, 60, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 70, 70, 70, 70, 70, 70, 61, 61, 61, 61, - 61, 61, 61, 36, 36, 71, 71, 71, 77, 72, - 72, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 18, 18, 18, 18, 18, 18, 110, 110, 107, 107, + 108, 108, 109, 109, 109, 111, 111, 111, 135, 135, + 135, 19, 19, 21, 21, 22, 23, 20, 20, 20, + 20, 20, 24, 25, 25, 183, 183, 183, 183, 183, + 26, 26, 184, 184, 190, 27, 28, 28, 29, 29, + 29, 33, 33, 33, 31, 31, 32, 32, 38, 38, + 37, 37, 39, 39, 39, 39, 123, 123, 123, 122, + 41, 41, 42, 42, 43, 43, 44, 44, 44, 56, + 56, 92, 92, 94, 94, 45, 45, 45, 45, 46, + 46, 47, 47, 48, 48, 130, 130, 129, 129, 129, + 128, 50, 50, 50, 52, 51, 51, 51, 51, 53, + 53, 55, 55, 54, 54, 57, 57, 57, 57, 58, + 58, 40, 40, 40, 40, 40, 40, 40, 106, 106, + 60, 60, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 70, 70, 70, 70, 70, 70, 61, 61, + 61, 61, 61, 61, 61, 36, 36, 71, 71, 71, + 77, 72, 72, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 68, 68, 68, 66, 66, 66, 66, 66, + 64, 64, 64, 64, 68, 68, 68, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 67, 67, 67, 67, 67, 67, 67, 67, 191, 191, - 69, 69, 69, 69, 34, 34, 34, 34, 34, 133, - 133, 136, 136, 136, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 81, 81, 35, 35, 79, 79, - 80, 82, 82, 78, 78, 78, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 181, 65, 65, 65, - 83, 83, 84, 84, 85, 85, 86, 86, 87, 88, - 88, 88, 89, 89, 89, 89, 90, 90, 90, 62, - 62, 62, 62, 62, 62, 91, 91, 91, 91, 95, - 95, 73, 73, 75, 75, 74, 76, 182, 182, 182, - 96, 96, 100, 97, 97, 101, 101, 101, 99, 99, - 99, 125, 125, 104, 104, 112, 112, 113, 113, 105, - 105, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 115, 115, 115, 116, 116, 117, 117, 117, 124, - 124, 120, 120, 120, 121, 121, 126, 127, 127, 118, + 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, + 191, 191, 69, 69, 69, 69, 34, 34, 34, 34, + 34, 133, 133, 136, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 81, 81, 35, + 35, 79, 79, 80, 82, 82, 78, 78, 78, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 181, + 65, 65, 65, 83, 83, 84, 84, 85, 85, 86, + 86, 87, 88, 88, 88, 89, 89, 89, 89, 90, + 90, 90, 62, 62, 62, 62, 62, 62, 91, 91, + 91, 91, 95, 95, 73, 73, 75, 75, 74, 76, + 182, 182, 182, 96, 96, 100, 97, 97, 101, 101, + 101, 99, 99, 99, 125, 125, 104, 104, 112, 112, + 113, 113, 105, 105, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 115, 115, 115, 116, 116, 117, + 117, 117, 124, 124, 120, 120, 120, 121, 121, 126, + 127, 127, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, @@ -1836,8 +1858,8 @@ var yyR1 = [...]int{ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, @@ -1846,8 +1868,7 @@ var yyR1 = [...]int{ 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 187, - 188, 131, 132, 132, 132, + 119, 119, 187, 188, 131, 132, 132, 132, } var yyR2 = [...]int{ @@ -1867,51 +1888,52 @@ var yyR2 = [...]int{ 1, 1, 3, 0, 3, 0, 5, 0, 3, 5, 0, 1, 0, 1, 0, 1, 2, 0, 2, 2, 2, 2, 2, 2, 0, 3, 0, 1, 0, 3, - 3, 0, 2, 0, 2, 1, 2, 1, 0, 2, - 5, 4, 1, 2, 2, 3, 2, 0, 1, 2, - 3, 3, 2, 2, 1, 1, 1, 3, 2, 0, - 1, 3, 1, 2, 3, 1, 1, 6, 7, 7, - 12, 7, 7, 7, 4, 5, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 7, 1, 3, - 8, 8, 5, 4, 6, 5, 4, 4, 3, 2, - 3, 4, 4, 4, 4, 4, 4, 4, 4, 3, - 3, 3, 3, 4, 3, 6, 4, 2, 4, 2, - 2, 2, 2, 3, 1, 1, 0, 1, 0, 1, - 0, 2, 2, 0, 2, 2, 0, 1, 1, 2, - 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, - 3, 4, 4, 1, 1, 1, 1, 1, 2, 4, - 1, 3, 0, 2, 0, 2, 1, 2, 2, 0, - 1, 1, 0, 1, 0, 1, 0, 1, 1, 3, - 1, 2, 3, 5, 0, 1, 2, 1, 0, 2, - 1, 3, 1, 1, 1, 3, 3, 3, 7, 1, - 3, 1, 3, 4, 4, 4, 3, 2, 4, 0, - 1, 0, 2, 0, 1, 0, 1, 2, 1, 1, - 2, 2, 1, 2, 3, 2, 3, 2, 2, 2, - 1, 1, 3, 0, 5, 5, 5, 0, 2, 1, - 3, 3, 2, 3, 1, 2, 0, 3, 1, 1, - 3, 3, 4, 4, 5, 3, 4, 5, 6, 2, - 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 0, 2, 1, 1, 1, 3, 1, - 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 3, 0, 2, 2, 0, 2, 1, 2, 1, 0, + 2, 5, 4, 1, 2, 2, 3, 2, 0, 1, + 2, 3, 3, 2, 2, 1, 1, 1, 3, 2, + 0, 1, 3, 1, 2, 3, 1, 1, 6, 7, + 7, 12, 7, 7, 7, 4, 5, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, + 3, 8, 8, 5, 4, 6, 5, 4, 4, 3, + 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, + 3, 3, 3, 3, 4, 3, 4, 6, 4, 2, + 4, 2, 2, 2, 2, 3, 1, 1, 0, 1, + 0, 1, 0, 2, 2, 0, 2, 2, 0, 1, + 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, + 2, 2, 3, 4, 4, 1, 1, 1, 1, 1, + 2, 4, 1, 3, 0, 2, 0, 2, 1, 2, + 2, 0, 1, 1, 0, 1, 0, 1, 0, 1, + 1, 3, 1, 2, 3, 5, 0, 1, 2, 1, + 0, 2, 1, 3, 1, 1, 1, 3, 3, 3, + 7, 1, 3, 1, 3, 4, 4, 4, 3, 2, + 4, 0, 1, 0, 2, 0, 1, 0, 1, 2, + 1, 1, 2, 2, 1, 2, 3, 2, 3, 2, + 2, 2, 1, 1, 3, 0, 5, 5, 5, 0, + 2, 1, 3, 3, 2, 3, 1, 2, 0, 3, + 1, 1, 3, 3, 4, 4, 5, 3, 4, 5, + 6, 2, 1, 2, 1, 2, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, + 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 2, 2, 3, 1, 1, - 1, 1, 4, 5, 6, 4, 4, 6, 6, 6, - 6, 8, 8, 6, 8, 8, 9, 7, 5, 4, - 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, - 4, 4, 4, 4, 0, 3, 4, 7, 3, 1, - 1, 2, 3, 3, 1, 2, 2, 1, 2, 1, - 2, 2, 1, 2, 0, 1, 0, 2, 1, 2, - 4, 0, 2, 1, 3, 5, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, - 0, 3, 0, 2, 0, 3, 1, 3, 2, 0, - 1, 1, 0, 2, 4, 4, 0, 2, 4, 2, - 1, 3, 5, 4, 6, 1, 3, 3, 5, 0, - 5, 1, 3, 1, 2, 3, 1, 0, 2, 2, - 1, 3, 3, 1, 3, 3, 3, 3, 1, 2, - 1, 1, 1, 1, 1, 0, 2, 0, 3, 0, + 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, + 1, 1, 1, 1, 4, 5, 6, 4, 4, 6, + 6, 6, 6, 8, 8, 6, 8, 8, 9, 7, + 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 2, 4, 4, 4, 4, 0, 3, 4, 7, + 3, 1, 1, 2, 3, 3, 1, 2, 2, 1, + 2, 1, 2, 2, 1, 2, 4, 0, 1, 0, + 2, 1, 2, 4, 0, 2, 1, 3, 5, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 2, 2, 0, 3, 0, 2, 0, 3, 1, + 3, 2, 0, 1, 1, 0, 2, 4, 4, 0, + 2, 4, 2, 1, 3, 5, 4, 6, 1, 3, + 3, 5, 0, 5, 1, 3, 1, 2, 3, 1, + 0, 2, 2, 1, 3, 3, 1, 3, 3, 3, + 3, 1, 2, 1, 1, 1, 1, 1, 0, 2, + 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, + 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1930,8 +1952,7 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 0, 1, 1, + 1, 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ @@ -1955,255 +1976,255 @@ var yyChk = [...]int{ 152, 150, 210, 211, 212, 213, 250, 224, 177, 207, -105, 122, 124, 120, 120, 121, 122, 231, 119, 120, -54, -126, -120, 122, 149, 120, 107, 181, 113, 208, - 121, 32, 147, -135, 120, -107, 150, 210, 211, 212, - 213, 56, 220, 219, 214, -126, 155, -131, -131, -131, - -131, -131, 159, -126, 56, -2, -89, 17, 16, -5, - -3, -187, 6, 20, 21, -33, 39, 40, -28, -39, - 98, -40, -126, -59, 73, -64, 29, -120, 23, -78, - -63, -60, -76, -77, 107, 108, 96, 97, 104, 74, - 109, -68, -66, -67, -69, 59, 58, 67, 60, 61, - 62, 63, 68, 57, 69, 70, -74, -187, 43, 44, - 240, 241, 242, 243, 246, 244, 76, 33, 230, 238, - 237, 236, 234, 235, 232, 233, 125, 231, 102, 239, - -105, -42, -43, -44, -45, -56, -77, -187, -54, 11, - -49, -54, -97, -134, 155, -101, 220, 219, -121, -99, - -120, -118, 218, 181, 217, 118, 72, 22, 24, 203, - 75, 107, 16, 76, 106, 240, 113, 47, 232, 233, - 230, 242, 243, 231, 208, 29, 10, 25, 135, 21, - 100, 115, 79, 80, 138, 23, 136, 70, 19, 50, - 11, 13, 14, 125, 124, 91, 121, 45, 8, 109, - 26, 88, 41, 28, 43, 89, 17, 234, 235, 31, - 246, 142, 102, 48, 35, 73, 68, 51, 71, 15, - 46, 90, 116, 239, 44, 119, 6, 245, 30, 134, - 42, 120, 209, 78, 123, 69, 5, 126, 9, 49, - 52, 236, 237, 238, 33, 77, 12, -163, -158, 56, - 121, -54, 239, -120, -113, 125, -113, -113, 120, -54, - -54, -112, 125, 56, -112, -112, -112, -54, 110, -54, - 56, 30, 231, 56, 147, 120, 148, 122, -132, -187, - -121, -132, -132, -132, 151, 152, -132, -108, 215, 51, - -132, -126, 11, 22, 52, -188, 55, -90, 19, 31, - -40, -126, -86, -87, -40, -85, -2, -27, 35, -31, - 21, 65, 11, -123, 72, 71, 88, -122, 22, -120, - 110, -40, -61, 91, 73, 89, 90, 75, 93, 92, - 103, 96, 97, 98, 99, 100, 101, 102, 94, 95, - 106, 81, 82, 83, 84, 85, 86, 87, -106, -187, - -187, -77, -187, 111, 112, -181, 64, -64, -64, -64, - -64, -64, -64, -64, -2, -72, -40, -187, -187, -187, - -187, -187, -187, -187, -187, -187, -81, -40, -187, -191, - -187, -191, -191, -191, -191, -191, -191, -191, -187, -187, - -187, -187, -55, 26, -54, 30, 54, -50, -52, -51, - -53, 41, 45, 47, 42, 43, 44, 48, -130, 22, - -42, -187, -129, 143, -128, 22, -126, -54, -49, -189, - 54, 11, 52, 54, -97, 155, -98, -102, 221, 223, - 81, -125, -120, 29, 30, 55, 54, -137, -140, -142, - -141, -143, -138, -139, 178, 179, 107, 182, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 30, 137, - 174, 175, 176, 177, 194, 195, 196, 197, 198, 199, - 200, 201, 161, 162, 163, 164, 165, 166, 167, 169, - 170, 171, 172, 173, 56, -132, 122, -179, 52, 56, - 73, 56, -54, -54, -132, 123, -54, 23, 51, -54, - 56, 56, -127, -126, -118, -132, -132, -132, -132, -132, - -132, -132, -132, -132, -132, -110, 209, 216, -54, -183, - -3, -7, 56, 57, 59, -183, -184, -126, 9, 91, - 54, 18, 110, 54, -88, 24, 25, -89, -188, -33, - -65, -120, 60, 63, -32, 42, -54, -40, -40, -70, - 68, 73, 69, 70, -122, 98, -127, -121, -118, -120, - -64, -71, -74, -77, 64, 91, 89, 90, 75, -64, - -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, - -64, -64, -64, -64, -133, 56, 59, 56, -38, 21, - -37, -39, -63, 59, -63, -120, -188, 54, -188, -2, - -37, -37, -40, -40, -78, -120, -126, -78, -37, -31, - -79, -80, 77, -78, -188, -37, -38, -37, -37, -93, - 29, 143, -54, -96, -100, -78, -43, -44, -44, -43, - -44, 41, 41, 41, 46, 41, 46, 41, -51, -126, - -188, -57, 49, 124, 50, -187, -128, -93, 52, -42, - -54, -101, -98, 54, 222, 224, 225, 51, -40, -149, - 106, -164, -165, -166, -121, 60, -158, -159, -167, 127, - 130, 126, -160, 121, 28, -154, 68, 73, -150, 206, - -144, 53, -144, -144, -144, -144, -148, 181, -148, -148, - -148, 53, 53, -144, -144, -144, -152, 53, -152, -152, - -153, 53, -153, -124, 52, -54, -177, 250, -178, 56, - -132, 23, -132, -114, 118, 115, 116, -174, 114, 203, - 181, 66, 29, 15, 240, 143, 253, 56, 144, -54, - -54, -132, -109, 11, 91, 54, 37, -40, -40, -127, - -87, -90, -104, 19, 11, 33, 33, -37, 68, 69, - 70, 110, -187, -71, -64, -64, -64, -36, 138, 72, - -188, -188, -37, 54, -40, -188, -188, -188, 54, 52, - 22, 54, 11, 110, 54, 11, -188, -37, -82, -80, - 79, -40, -188, -188, -188, -188, -188, -62, 30, 33, - -2, -187, 33, -187, -58, 54, 12, 81, -47, -46, - 51, 52, -48, 51, -46, 41, 41, 121, 121, 121, - -94, -120, -58, -42, -58, -102, -103, 226, 223, 229, - 56, 54, -166, 81, 53, 28, -160, -160, 56, 56, - -145, 29, 68, -151, 207, 60, -148, -148, -149, 30, - -149, -149, -149, -157, 59, -157, 60, 60, 51, -120, - -132, -176, -175, -121, -131, -180, 149, 128, 129, 132, - 131, 56, 121, 28, 127, 130, 143, 126, -180, 149, - -115, -116, 123, 22, 121, 28, 143, -132, -111, 89, - 12, -126, -126, -126, 38, 110, -54, -41, 11, 98, - -121, -38, -36, 72, -64, -64, -188, -39, -136, 107, - 178, 137, 176, 172, 192, 183, 205, 174, 206, -133, - -136, -64, -64, -121, -64, -64, 247, -85, 80, -40, - 78, -95, 51, -96, -73, -75, -74, -187, -2, -91, - -120, -94, -85, -100, -40, -40, -40, 53, -40, -187, - -187, -187, -188, 54, -85, -58, 223, 227, 228, -165, - -166, -169, -168, -120, 56, 56, -147, 51, 59, 60, - 61, 68, 230, 67, 55, -149, -149, 56, 107, 55, - 54, 55, 54, 55, 54, -54, 54, 81, -131, -120, - -131, -120, -54, -131, -120, 59, -40, -58, -42, -188, - -64, -188, -144, -144, -144, -153, -144, 166, -144, 166, - -188, -188, -188, 54, 19, -188, 54, 19, -187, -35, - 245, -40, -182, 254, 27, -95, 54, -188, -188, -188, - 54, 110, -188, -89, -92, -120, -92, -92, -92, -129, - -120, -89, 55, 54, -144, -155, 203, 9, -148, 59, - -148, 60, 60, -132, -175, -166, 53, 26, -83, 13, - -148, 56, -64, -64, -64, -64, -64, -188, 59, 98, - -72, 28, -75, 33, -2, -187, -120, -120, 54, 55, - -188, -188, -188, -57, -171, -170, 52, 133, 66, -168, - -156, 127, 28, 126, 230, -149, -149, 55, 55, -92, - -187, -84, 14, 16, -188, -188, -188, -188, -34, 91, - 250, 9, -73, -2, 110, -120, -170, 56, -161, 81, - 59, -146, 66, 28, 28, 55, -172, -173, 143, -40, - -72, -188, 248, 48, 251, -96, -188, -120, 60, 59, - -179, -188, 54, -120, 38, 249, 252, -177, -173, 33, - 38, 145, 250, 146, 251, -187, 252, -64, 142, -188, - -188, + 121, 32, 147, -135, 120, 155, -107, 150, 210, 211, + 212, 213, 56, 220, 219, 214, -126, 155, -131, -131, + -131, -131, -131, 159, -126, 56, -2, -89, 17, 16, + -5, -3, -187, 6, 20, 21, -33, 39, 40, -28, + -39, 98, -40, -126, -59, 73, -64, 29, -120, 23, + -78, -63, -60, -76, -77, 107, 108, 96, 97, 104, + 74, 109, -68, -66, -67, -69, 59, 58, 67, 60, + 61, 62, 63, 68, 57, 69, 70, -74, -187, 43, + 44, 240, 241, 242, 243, 246, 244, 76, 33, 230, + 238, 237, 236, 234, 235, 232, 233, 125, 231, 102, + 239, -105, -42, -43, -44, -45, -56, -77, -187, -54, + 11, -49, -54, -97, -134, 155, -101, 220, 219, -121, + -99, -120, -118, 218, 181, 217, 118, 72, 22, 24, + 203, 75, 107, 16, 76, 106, 240, 113, 47, 232, + 233, 230, 242, 243, 231, 208, 29, 10, 25, 135, + 21, 100, 115, 79, 80, 138, 23, 136, 70, 19, + 50, 11, 13, 14, 125, 124, 91, 121, 45, 8, + 109, 26, 88, 41, 28, 43, 89, 17, 234, 235, + 31, 246, 142, 102, 48, 35, 73, 68, 51, 71, + 15, 46, 90, 116, 239, 44, 119, 6, 245, 30, + 134, 42, 120, 209, 78, 123, 69, 5, 126, 9, + 49, 52, 236, 237, 238, 33, 77, 12, -163, -158, + 56, 121, -54, 239, -120, -113, 125, -113, -113, 120, + -54, -54, -112, 125, 56, -112, -112, -112, -54, 110, + -54, 56, 30, 231, 56, 147, 120, 148, 122, -132, + -187, -121, -132, -132, -132, 151, 152, -132, 221, -108, + 215, 51, -132, -126, 11, 22, 52, -188, 55, -90, + 19, 31, -40, -126, -86, -87, -40, -85, -2, -27, + 35, -31, 21, 65, 11, -123, 72, 71, 88, -122, + 22, -120, 110, -40, -61, 91, 73, 89, 90, 75, + 93, 92, 103, 96, 97, 98, 99, 100, 101, 102, + 94, 95, 106, 81, 82, 83, 84, 85, 86, 87, + -106, -187, -187, -77, -187, 111, 112, -181, 64, -64, + -64, -64, -64, -64, -64, -64, -2, -72, -40, -187, + -187, -187, -187, -187, -187, -187, -187, -187, -81, -40, + -187, -191, -187, -191, -191, -191, -191, -191, -191, -191, + -187, -187, -187, -187, -55, 26, -54, 30, 54, -50, + -52, -51, -53, 41, 45, 47, 42, 43, 44, 48, + -130, 22, -42, -187, -129, 143, -128, 22, -126, -54, + -49, -189, 54, 11, 52, 54, -97, 155, -98, -102, + 221, 223, 81, -125, -120, 29, 30, 55, 54, -137, + -140, -142, -141, -143, -138, -139, 178, 179, 107, 182, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 30, 137, 174, 175, 176, 177, 194, 195, 196, 197, + 198, 199, 200, 201, 161, 162, 163, 164, 165, 166, + 167, 169, 170, 171, 172, 173, 56, -132, 122, -179, + 52, 56, 73, 56, -54, -54, -132, 123, -54, 23, + 51, -54, 56, 56, -127, -126, -118, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, 222, -110, 209, + 216, -54, -183, -3, -7, 56, 57, 59, -183, -184, + -126, 9, 91, 54, 18, 110, 54, -88, 24, 25, + -89, -188, -33, -65, -120, 60, 63, -32, 42, -54, + -40, -40, -70, 68, 73, 69, 70, -122, 98, -127, + -121, -118, -120, -64, -71, -74, -77, 64, 91, 89, + 90, 75, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -133, 56, 59, + 56, -38, 21, -37, -39, -63, 59, -63, -120, -188, + 54, -188, -2, -37, -37, -40, -40, -78, -120, -126, + -78, -37, -31, -79, -80, 77, -78, -188, -37, -38, + -37, -37, -93, 29, 143, -54, -96, -100, -78, -43, + -44, -44, -43, -44, 41, 41, 41, 46, 41, 46, + 41, -51, -126, -188, -57, 49, 124, 50, -187, -128, + -93, 52, -42, -54, -101, -98, 54, 222, 224, 225, + 51, -40, -149, 106, -164, -165, -166, -121, 60, -158, + -159, -167, 127, 130, 126, -160, 121, 28, -154, 68, + 73, -150, 206, -144, 53, -144, -144, -144, -144, -148, + 181, -148, -148, -148, 53, 53, -144, -144, -144, -152, + 53, -152, -152, -153, 53, -153, -124, 52, -54, -177, + 250, -178, 56, -132, 23, -132, -114, 118, 115, 116, + -174, 114, 203, 181, 66, 29, 15, 240, 143, 253, + 56, 144, -54, -54, -132, -109, 11, 91, 54, 37, + -40, -40, -127, -87, -90, -104, 19, 11, 33, 33, + -37, 68, 69, 70, 110, -187, -71, -64, -64, -64, + -36, 138, 72, -188, -188, -37, 54, -40, -188, -188, + -188, 54, 52, 22, 54, 11, 110, 54, 11, -188, + -37, -82, -80, 79, -40, -188, -188, -188, -188, -188, + -62, 30, 33, -2, -187, 33, -187, -58, 54, 12, + 81, -47, -46, 51, 52, -48, 51, -46, 41, 41, + 121, 121, 121, -94, -120, -58, -42, -58, -102, -103, + 226, 223, 229, 56, 59, 54, -166, 81, 53, 28, + -160, -160, 56, 56, -145, 29, 68, -151, 207, 60, + -148, -148, -149, 30, -149, -149, -149, -157, 59, -157, + 60, 60, 51, -120, -132, -176, -175, -121, -131, -180, + 149, 128, 129, 132, 131, 56, 121, 28, 127, 130, + 143, 126, -180, 149, -115, -116, 123, 22, 121, 28, + 143, -132, -111, 89, 12, -126, -126, -126, 38, 110, + -54, -41, 11, 98, -121, -38, -36, 72, -64, -64, + -188, -39, -136, 107, 178, 137, 176, 172, 192, 183, + 205, 174, 206, 179, -133, -136, -64, -64, -121, -64, + -64, 247, -85, 80, -40, 78, -95, 51, -96, -73, + -75, -74, -187, -2, -91, -120, -94, -85, -100, -40, + -40, -40, 53, -40, -187, -187, -187, -188, 54, -85, + -58, 223, 227, 228, -165, -166, -169, -168, -120, 56, + 56, -147, 51, 59, 60, 61, 68, 230, 67, 55, + -149, -149, 56, 107, 55, 54, 55, 54, 55, 54, + -54, 54, 81, -131, -120, -131, -120, -54, -131, -120, + 59, -40, -58, -42, -188, -64, -188, -144, -144, -144, + -153, -144, 166, -144, 166, -187, -188, -188, -188, 54, + 19, -188, 54, 19, -187, -35, 245, -40, -182, 254, + 27, -95, 54, -188, -188, -188, 54, 110, -188, -89, + -92, -120, -92, -92, -92, -129, -120, -89, 55, 54, + -144, -155, 203, 9, -148, 59, -148, 60, 60, -132, + -175, -166, 53, 26, -83, 13, -148, 56, 60, -64, + -64, -64, -64, -64, -188, 59, 98, -72, 28, -75, + 33, -2, -187, -120, -120, 54, 55, -188, -188, -188, + -57, -171, -170, 52, 133, 66, -168, -156, 127, 28, + 126, 230, -149, -149, 55, 55, -92, -187, -84, 14, + 16, -188, -188, -188, -188, -188, -34, 91, 250, 9, + -73, -2, 110, -120, -170, 56, -161, 81, 59, -146, + 66, 28, 28, 55, -172, -173, 143, -40, -72, -188, + 248, 48, 251, -96, -188, -120, 60, 59, -179, -188, + 54, -120, 38, 249, 252, -177, -173, 33, 38, 145, + 250, 146, 251, -187, 252, -64, 142, -188, -188, } var yyDef = [...]int{ 0, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 524, 0, 292, 292, 292, 292, - 292, 292, 0, 596, 579, 0, 0, 0, 0, -2, - 270, 271, 0, 273, 274, 801, 801, 801, 801, 801, - 0, 0, 0, 0, 37, 38, 799, 1, 3, 532, - 0, 0, 296, 299, 294, 0, 579, 0, 0, 0, - 64, 0, 0, 788, 0, 789, 577, 577, 577, 597, - 598, 601, 602, 603, 701, 702, 703, 704, 705, 706, - 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, - 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, - 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, - 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 0, 0, 580, 0, 575, 0, 575, 575, 575, 0, - 229, 361, 606, 788, 789, 0, 0, 0, 0, 802, - 802, 802, 802, 0, 802, 258, 247, 249, 250, 251, - 252, 802, 267, 268, 257, 269, 272, 275, 276, 277, - 278, 279, 0, 0, 288, 30, 536, 0, 0, 524, - 32, 0, 292, 297, 298, 302, 300, 301, 293, 0, - 310, 314, 0, 369, 0, 374, 376, -2, 0, 411, - 412, 413, 414, 415, 0, 0, 0, 0, 0, 0, - 0, 438, 439, 440, 441, -2, 507, 508, 509, 510, - 511, 512, 513, 514, 378, 379, 556, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 494, 0, 468, 468, - 468, 468, 468, 468, 468, 468, 0, 0, 0, 0, - 0, 0, 320, 322, 323, 324, 343, 0, 345, 0, - 0, 45, 49, 0, 779, 563, -2, -2, 0, 0, - 604, 605, -2, 708, -2, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, - 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, - 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, - 694, 695, 696, 697, 698, 699, 700, 0, 81, 0, - 0, 802, 0, 71, 0, 0, 0, 0, 0, 802, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 230, - 802, 802, 802, 802, 802, 802, 802, 802, 239, 803, - 804, 240, 241, 242, 802, 802, 244, 0, 259, 0, - 253, 280, 0, 0, 0, 31, 800, 25, 0, 0, - 533, 0, 525, 526, 529, 532, 30, 299, 0, 304, - 303, 295, 0, 311, 0, 0, 0, 315, 0, 317, - 0, 372, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 22, 23, 24, 527, 0, 294, 294, 294, 294, + 294, 294, 0, 599, 582, 0, 0, 0, 0, -2, + 272, 273, 0, 275, 276, 804, 804, 804, 804, 804, + 0, 0, 0, 0, 37, 38, 802, 1, 3, 535, + 0, 0, 298, 301, 296, 0, 582, 0, 0, 0, + 64, 0, 0, 791, 0, 792, 580, 580, 580, 600, + 601, 604, 605, 606, 704, 705, 706, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, + 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, + 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, + 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, + 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, + 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, + 790, 793, 794, 795, 796, 797, 798, 799, 800, 801, + 0, 0, 583, 0, 578, 0, 578, 578, 578, 0, + 230, 363, 609, 791, 792, 0, 0, 0, 0, 805, + 805, 805, 805, 0, 805, 0, 260, 249, 251, 252, + 253, 254, 805, 269, 270, 259, 271, 274, 277, 278, + 279, 280, 281, 0, 0, 290, 30, 539, 0, 0, + 527, 32, 0, 294, 299, 300, 304, 302, 303, 295, + 0, 312, 316, 0, 371, 0, 376, 378, -2, 0, + 413, 414, 415, 416, 417, 0, 0, 0, 0, 0, + 0, 0, 440, 441, 442, 443, -2, 510, 511, 512, + 513, 514, 515, 516, 517, 380, 381, 559, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 497, 0, 470, + 470, 470, 470, 470, 470, 470, 470, 0, 0, 0, + 0, 0, 0, 322, 324, 325, 326, 345, 0, 347, + 0, 0, 45, 49, 0, 782, 566, -2, -2, 0, + 0, 607, 608, -2, 711, -2, 612, 613, 614, 615, + 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, + 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, + 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, + 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, + 696, 697, 698, 699, 700, 701, 702, 703, 0, 81, + 0, 0, 805, 0, 71, 0, 0, 0, 0, 0, + 805, 0, 0, 0, 0, 0, 0, 0, 229, 0, + 231, 805, 805, 805, 805, 805, 805, 805, 805, 240, + 806, 807, 241, 242, 243, 805, 805, 245, 0, 0, + 261, 0, 255, 282, 0, 0, 0, 31, 803, 25, + 0, 0, 536, 0, 528, 529, 532, 535, 30, 301, + 0, 306, 305, 297, 0, 313, 0, 0, 0, 317, + 0, 319, 0, 374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 396, 397, 398, 399, 400, 401, 402, 375, 0, - 306, 389, 0, 0, 0, 515, 516, 431, 432, 433, - 434, 435, 436, 0, 30, 0, 409, 0, 0, 0, - 0, 0, 0, 0, 0, 302, 0, 495, 0, 460, - 0, 461, 462, 463, 464, 465, 466, 467, 0, 306, - 0, 0, 47, 0, 360, 0, 0, 0, 0, 0, - 0, 349, 0, 0, 352, 0, 0, 0, 0, 344, - 0, 0, 363, 752, 346, 0, 348, -2, 0, 0, - 0, 43, 44, 0, 50, 779, 52, 53, 0, 0, - 0, 161, 571, 572, 569, 189, 0, 144, 140, 86, - 87, 88, 133, 90, 133, 133, 133, 133, 158, 158, - 158, 158, 116, 117, 118, 119, 120, 0, 0, 103, - 133, 133, 133, 107, 123, 124, 125, 126, 127, 128, - 129, 130, 91, 92, 93, 94, 95, 96, 97, 135, - 135, 135, 137, 137, 599, 66, 0, 74, 0, 802, - 0, 802, 79, 0, 204, 0, 223, 576, 0, 802, - 226, 227, 362, 607, 608, 231, 232, 233, 234, 235, - 236, 237, 238, 243, 246, 260, 254, 255, 248, 281, - 283, 284, 285, 286, 287, 282, 289, 290, 537, 0, - 0, 0, 0, 0, 528, 530, 531, 536, 33, 302, - 0, 517, 0, 0, 0, 305, 28, 370, 371, 373, - 390, 0, 392, 394, 316, 312, 0, 504, -2, -2, - 380, 381, 405, 406, 407, 0, 0, 0, 0, 403, - 385, 0, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 430, 479, 480, 0, 0, 0, - 307, 308, 428, 506, 429, 437, 408, 0, 555, 30, - 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, - 501, 498, 0, 0, 469, 0, 0, 0, 0, 0, - 0, 0, 359, 367, 560, 0, 321, 339, 341, 0, - 336, 350, 351, 353, 0, 355, 0, 357, 358, 325, - 326, 327, 0, 0, 0, 0, 347, 367, 0, 367, - 46, 564, 51, 0, 0, 56, 57, 565, 566, 567, - 0, 80, 190, 192, 195, 196, 82, 83, 0, 0, - 0, 0, 0, 184, 185, 147, 145, 0, 142, 141, - 89, 0, 158, 158, 110, 111, 161, 0, 161, 161, - 161, 0, 0, 104, 105, 106, 98, 0, 99, 100, - 101, 0, 102, 0, 0, 802, 68, 0, 72, 73, - 69, 578, 70, 801, 0, 0, 591, 205, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 0, 222, - 802, 225, 263, 0, 0, 0, 0, 534, 535, 0, - 527, 26, 0, 573, 574, 518, 519, 318, 391, 393, - 395, 0, 306, 382, 403, 386, 0, 383, 0, 0, - 377, 442, 0, 0, 410, -2, 445, 446, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 524, 0, 499, - 0, 0, 459, 470, 471, 472, 473, 549, 0, 0, - -2, 0, 36, 0, 524, 0, 0, 0, 333, 340, - 0, 0, 334, 0, 335, 354, 356, 0, 0, 0, - 0, 331, 524, 367, 42, 54, 55, 0, 0, 61, - 162, 0, 193, 0, 0, 179, 0, 0, 182, 183, - 154, 0, 146, 85, 143, 0, 161, 161, 112, 0, - 113, 114, 115, 0, 131, 0, 0, 0, 0, 600, - 67, 75, 76, 0, 197, 801, 0, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 801, 0, - 0, 801, 592, 593, 594, 595, 0, 224, 245, 0, - 0, 261, 262, 291, 538, 0, 27, 367, 0, 313, - 505, 0, 384, 0, 404, 387, 443, 309, 0, 133, - 133, 484, 133, 137, 487, 133, 489, 133, 492, 0, - 0, 0, 0, 504, 0, 0, 0, 496, 458, 502, - 0, 557, 0, 549, 539, 551, 553, 0, 30, 0, - 545, 0, 532, 561, 368, 562, 337, 0, 342, 0, - 0, 0, 345, 0, 532, 41, 58, 59, 60, 191, - 194, 0, 186, 133, 180, 181, 156, 0, 148, 149, - 150, 151, 152, 153, 134, 108, 109, 159, 160, 158, - 0, 158, 0, 138, 0, 802, 0, 0, 198, 0, - 199, 201, 202, 203, 0, 264, 265, 520, 319, 444, - 388, 447, 481, 158, 485, 486, 488, 490, 491, 493, - 449, 448, 450, 0, 0, 453, 0, 0, 0, 0, - 0, 500, 34, 0, 0, 35, 0, 554, -2, 0, - 0, 0, 48, 39, 0, 329, 0, 0, 0, 363, - 332, 40, 171, 0, 188, 163, 157, 0, 161, 132, - 161, 0, 0, 65, 77, 78, 0, 0, 522, 0, - 482, 483, 0, 0, 0, 0, 474, 457, 497, 558, - 559, 0, 552, 0, -2, 0, 547, 546, 0, 338, - 364, 365, 366, 328, 170, 172, 0, 177, 0, 187, - 168, 0, 165, 167, 155, 121, 122, 136, 139, 0, - 0, 29, 0, 0, 451, 452, 454, 455, 0, 0, - 0, 0, 542, 30, 0, 330, 173, 174, 0, 178, - 176, 84, 0, 164, 166, 71, 0, 218, 0, 523, - 521, 456, 0, 0, 0, 550, -2, 548, 175, 169, - 74, 217, 0, 0, 475, 0, 478, 200, 219, 0, - 476, 0, 0, 0, 0, 0, 477, 0, 0, 220, - 221, + 0, 0, 0, 398, 399, 400, 401, 402, 403, 404, + 377, 0, 308, 391, 0, 0, 0, 518, 519, 433, + 434, 435, 436, 437, 438, 0, 30, 0, 411, 0, + 0, 0, 0, 0, 0, 0, 0, 304, 0, 498, + 0, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 0, 308, 0, 0, 47, 0, 362, 0, 0, 0, + 0, 0, 0, 351, 0, 0, 354, 0, 0, 0, + 0, 346, 0, 0, 365, 755, 348, 0, 350, -2, + 0, 0, 0, 43, 44, 0, 50, 782, 52, 53, + 0, 0, 0, 161, 574, 575, 572, 190, 0, 144, + 140, 86, 87, 88, 133, 90, 133, 133, 133, 133, + 158, 158, 158, 158, 116, 117, 118, 119, 120, 0, + 0, 103, 133, 133, 133, 107, 123, 124, 125, 126, + 127, 128, 129, 130, 91, 92, 93, 94, 95, 96, + 97, 135, 135, 135, 137, 137, 602, 66, 0, 74, + 0, 805, 0, 805, 79, 0, 205, 0, 224, 579, + 0, 805, 227, 228, 364, 610, 611, 232, 233, 234, + 235, 236, 237, 238, 239, 244, 248, 246, 262, 256, + 257, 250, 283, 285, 286, 287, 288, 289, 284, 291, + 292, 540, 0, 0, 0, 0, 0, 531, 533, 534, + 539, 33, 304, 0, 520, 0, 0, 0, 307, 28, + 372, 373, 375, 392, 0, 394, 396, 318, 314, 0, + 507, -2, -2, 382, 383, 407, 408, 409, 0, 0, + 0, 0, 405, 387, 0, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 432, 481, 482, + 0, 0, 0, 309, 310, 430, 509, 431, 439, 410, + 0, 558, 30, 0, 0, 0, 0, 0, -2, 0, + 0, 0, 0, 504, 501, 0, 0, 471, 0, 0, + 0, 0, 0, 0, 0, 361, 369, 563, 0, 323, + 341, 343, 0, 338, 352, 353, 355, 0, 357, 0, + 359, 360, 327, 328, 329, 0, 0, 0, 0, 349, + 369, 0, 369, 46, 567, 51, 0, 0, 56, 57, + 568, 569, 570, 0, 80, 191, 193, 196, 197, 82, + 83, 0, 0, 0, 0, 0, 185, 186, 147, 145, + 0, 142, 141, 89, 0, 158, 158, 110, 111, 161, + 0, 161, 161, 161, 0, 0, 104, 105, 106, 98, + 0, 99, 100, 101, 0, 102, 0, 0, 805, 68, + 0, 72, 73, 69, 581, 70, 804, 0, 0, 594, + 206, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 0, 223, 805, 226, 265, 0, 0, 0, 0, + 537, 538, 0, 530, 26, 0, 576, 577, 521, 522, + 320, 393, 395, 397, 0, 308, 384, 405, 388, 0, + 385, 0, 0, 379, 444, 0, 0, 412, -2, 447, + 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 527, 0, 502, 0, 0, 461, 472, 473, 474, 475, + 552, 0, 0, -2, 0, 36, 0, 527, 0, 0, + 0, 335, 342, 0, 0, 336, 0, 337, 356, 358, + 0, 0, 0, 0, 333, 527, 369, 42, 54, 55, + 0, 0, 61, 162, 163, 0, 194, 0, 0, 180, + 0, 0, 183, 184, 154, 0, 146, 85, 143, 0, + 161, 161, 112, 0, 113, 114, 115, 0, 131, 0, + 0, 0, 0, 603, 67, 75, 76, 0, 198, 804, + 0, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 804, 0, 0, 804, 595, 596, 597, 598, + 0, 225, 247, 0, 0, 263, 264, 293, 541, 0, + 27, 369, 0, 315, 508, 0, 386, 0, 406, 389, + 445, 311, 0, 133, 133, 486, 133, 137, 489, 133, + 491, 133, 494, 0, 0, 0, 0, 0, 507, 0, + 0, 0, 499, 460, 505, 0, 560, 0, 552, 542, + 554, 556, 0, 30, 0, 548, 0, 535, 564, 370, + 565, 339, 0, 344, 0, 0, 0, 347, 0, 535, + 41, 58, 59, 60, 192, 195, 0, 187, 133, 181, + 182, 156, 0, 148, 149, 150, 151, 152, 153, 134, + 108, 109, 159, 160, 158, 0, 158, 0, 138, 0, + 805, 0, 0, 199, 0, 200, 202, 203, 204, 0, + 266, 267, 523, 321, 446, 390, 449, 483, 158, 487, + 488, 490, 492, 493, 495, 0, 451, 450, 452, 0, + 0, 455, 0, 0, 0, 0, 0, 503, 34, 0, + 0, 35, 0, 557, -2, 0, 0, 0, 48, 39, + 0, 331, 0, 0, 0, 365, 334, 40, 172, 0, + 189, 164, 157, 0, 161, 132, 161, 0, 0, 65, + 77, 78, 0, 0, 525, 0, 484, 485, 0, 0, + 0, 0, 0, 476, 459, 500, 561, 562, 0, 555, + 0, -2, 0, 550, 549, 0, 340, 366, 367, 368, + 330, 171, 173, 0, 178, 0, 188, 169, 0, 166, + 168, 155, 121, 122, 136, 139, 0, 0, 29, 0, + 0, 496, 453, 454, 456, 457, 0, 0, 0, 0, + 545, 30, 0, 332, 174, 175, 0, 179, 177, 84, + 0, 165, 167, 71, 0, 219, 0, 526, 524, 458, + 0, 0, 0, 553, -2, 551, 176, 170, 74, 218, + 0, 0, 477, 0, 480, 201, 220, 0, 478, 0, + 0, 0, 0, 0, 479, 0, 0, 221, 222, } var yyTok1 = [...]int{ @@ -3478,137 +3499,137 @@ yydefault: yyVAL.str = string(yyDollar[2].bytes) } case 163: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1027 + { + yyVAL.str = string(yyDollar[2].bytes) + } + case 164: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1028 +//line sql.y:1032 { yyVAL.colKeyOpt = colKeyNone } - case 164: + case 165: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1032 +//line sql.y:1036 { yyVAL.colKeyOpt = colKeyPrimary } - case 165: + case 166: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1036 +//line sql.y:1040 { yyVAL.colKeyOpt = colKey } - case 166: + case 167: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1040 +//line sql.y:1044 { yyVAL.colKeyOpt = colKeyUniqueKey } - case 167: + case 168: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1044 +//line sql.y:1048 { yyVAL.colKeyOpt = colKeyUnique } - case 168: + case 169: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1049 +//line sql.y:1053 { yyVAL.optVal = nil } - case 169: + case 170: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1053 +//line sql.y:1057 { yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } - case 170: + case 171: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1059 +//line sql.y:1063 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } - case 171: + case 172: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1063 +//line sql.y:1067 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} } - case 172: + case 173: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1069 +//line sql.y:1073 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 173: + case 174: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1073 +//line sql.y:1077 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } - case 174: + case 175: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1079 +//line sql.y:1083 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].bytes)} } - case 175: + case 176: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1083 +//line sql.y:1087 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntVal(yyDollar[3].bytes)} } - case 176: + case 177: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1088 +//line sql.y:1092 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrVal(yyDollar[2].bytes)} } - case 177: + case 178: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1094 +//line sql.y:1098 { yyVAL.str = "" } - case 178: + case 179: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1098 +//line sql.y:1102 { yyVAL.str = string(yyDollar[1].bytes) } - case 179: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1104 - { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} - } case 180: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1108 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Spatial: true, Unique: false} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } case 181: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1112 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Unique: true} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Spatial: true, Unique: false} } case 182: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1116 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: true} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Unique: true} } case 183: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1120 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: false} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: true} } case 184: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1126 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1124 { - yyVAL.str = string(yyDollar[1].bytes) + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: false} } case 185: yyDollar = yyS[yypt-1 : yypt+1] @@ -3618,61 +3639,67 @@ yydefault: } case 186: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1136 +//line sql.y:1134 { - yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} + yyVAL.str = string(yyDollar[1].bytes) } case 187: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1140 { - yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) + yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } case 188: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1144 + { + yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) + } + case 189: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1146 +//line sql.y:1150 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].optVal} } - case 189: + case 190: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1151 +//line sql.y:1155 { yyVAL.str = "" } - case 190: + case 191: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1155 +//line sql.y:1159 { yyVAL.str = " " + string(yyDollar[1].str) } - case 191: + case 192: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1159 +//line sql.y:1163 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } - case 192: + case 193: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1167 +//line sql.y:1171 { yyVAL.str = yyDollar[1].str } - case 193: + case 194: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1171 +//line sql.y:1175 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } - case 194: + case 195: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1175 +//line sql.y:1179 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } - case 195: + case 196: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1181 +//line sql.y:1185 { if yyDollar[1].colIdent.NeedQuotes() { yyVAL.str = "'" + yyDollar[1].colIdent.String() + "'" @@ -3681,20 +3708,14 @@ yydefault: } } - case 196: + case 197: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1190 +//line sql.y:1194 { yyVAL.str = string(yyDollar[1].bytes) } - case 197: - yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1196 - { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} - } case 198: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:1200 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} @@ -3706,8 +3727,14 @@ yydefault: yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } case 200: - yyDollar = yyS[yypt-12 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:1208 + { + yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} + } + case 201: + yyDollar = yyS[yypt-12 : yypt+1] +//line sql.y:1212 { yyVAL.statement = &DDL{ Action: AddColVindexStr, @@ -3720,9 +3747,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 201: + case 202: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1221 +//line sql.y:1225 { yyVAL.statement = &DDL{ Action: DropColVindexStr, @@ -3732,71 +3759,71 @@ yydefault: }, } } - case 202: + case 203: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1231 +//line sql.y:1235 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableName, NewName: yyDollar[7].tableName} } - case 203: + case 204: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1236 +//line sql.y:1240 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 204: + case 205: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1241 +//line sql.y:1245 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName(), NewName: yyDollar[3].tableName.ToViewName()} } - case 205: + case 206: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1245 +//line sql.y:1249 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } - case 217: + case 218: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1264 +//line sql.y:1268 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeStr, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } - case 218: + case 219: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1270 +//line sql.y:1274 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 219: + case 220: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1274 +//line sql.y:1278 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 220: + case 221: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1280 +//line sql.y:1284 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 221: + case 222: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1284 +//line sql.y:1288 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 222: + case 223: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1290 +//line sql.y:1294 { yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[3].tableName, NewName: yyDollar[5].tableName} } - case 223: + case 224: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1296 +//line sql.y:1300 { var exists bool if yyDollar[3].byt != 0 { @@ -3804,16 +3831,16 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName, IfExists: exists} } - case 224: + case 225: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1304 +//line sql.y:1308 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName, NewName: yyDollar[5].tableName} } - case 225: + case 226: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1309 +//line sql.y:1313 { var exists bool if yyDollar[3].byt != 0 { @@ -3821,42 +3848,36 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName.ToViewName(), IfExists: exists} } - case 226: + case 227: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1317 +//line sql.y:1321 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 227: + case 228: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1321 +//line sql.y:1325 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 228: + case 229: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1327 +//line sql.y:1331 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[3].tableName} } - case 229: + case 230: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1331 +//line sql.y:1335 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[2].tableName} } - case 230: + case 231: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1336 +//line sql.y:1340 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName} } - case 231: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1342 - { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} - } case 232: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1346 @@ -3871,7 +3892,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1355 +//line sql.y:1354 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } @@ -3900,10 +3921,10 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 239: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1375 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 240: yyDollar = yyS[yypt-3 : yypt+1] @@ -3924,46 +3945,46 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 243: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1391 { - yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 244: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1395 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } case 245: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1399 { - // this is ugly, but I couldn't find a better way for now - if yyDollar[4].str == "processlist" { - yyVAL.statement = &Show{Type: yyDollar[4].str} - } else { - showTablesOpt := &ShowTablesOpt{Extended: yyDollar[2].str, Full: yyDollar[3].str, DbName: yyDollar[5].str, Filter: yyDollar[6].showFilter} - yyVAL.statement = &Show{Type: yyDollar[4].str, ShowTablesOpt: showTablesOpt} - } + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 246: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1409 +//line sql.y:1403 { - yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 247: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1413 + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:1407 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + // this is ugly, but I couldn't find a better way for now + if yyDollar[4].str == "processlist" { + yyVAL.statement = &Show{Type: yyDollar[4].str} + } else { + showTablesOpt := &ShowTablesOpt{Extended: yyDollar[2].str, Full: yyDollar[3].str, DbName: yyDollar[5].str, Filter: yyDollar[6].showFilter} + yyVAL.statement = &Show{Type: yyDollar[4].str, ShowTablesOpt: showTablesOpt} + } } case 248: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1417 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), OnTable: yyDollar[4].tableName} + yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } case 249: yyDollar = yyS[yypt-2 : yypt+1] @@ -3972,10 +3993,10 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 250: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1425 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), OnTable: yyDollar[4].tableName} } case 251: yyDollar = yyS[yypt-2 : yypt+1] @@ -3990,615 +4011,627 @@ yydefault: yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 253: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1443 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1437 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 254: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1441 + { + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + } + case 255: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1451 + { + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + } + case 256: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1449 +//line sql.y:1457 { yyVAL.str = string(yyDollar[1].bytes) } - case 255: + case 257: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1453 +//line sql.y:1461 { yyVAL.str = string(yyDollar[1].bytes) } - case 256: + case 258: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1459 +//line sql.y:1467 { yyVAL.str = "" } - case 257: + case 259: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1463 +//line sql.y:1471 { yyVAL.str = "extended " } - case 258: + case 260: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1469 +//line sql.y:1477 { yyVAL.str = "" } - case 259: + case 261: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1473 +//line sql.y:1481 { yyVAL.str = "full " } - case 260: + case 262: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1479 +//line sql.y:1487 { yyVAL.str = "" } - case 261: + case 263: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1483 +//line sql.y:1491 { yyVAL.str = yyDollar[2].tableIdent.v } - case 262: + case 264: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1487 +//line sql.y:1495 { yyVAL.str = yyDollar[2].tableIdent.v } - case 263: + case 265: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1493 +//line sql.y:1501 { yyVAL.showFilter = nil } - case 264: + case 266: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1497 +//line sql.y:1505 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 265: + case 267: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1501 +//line sql.y:1509 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 266: + case 268: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1507 +//line sql.y:1515 { yyVAL.str = "" } - case 267: + case 269: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1511 +//line sql.y:1519 { yyVAL.str = SessionStr } - case 268: + case 270: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1515 +//line sql.y:1523 { yyVAL.str = GlobalStr } - case 269: + case 271: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1521 +//line sql.y:1529 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 270: + case 272: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1525 +//line sql.y:1533 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 271: + case 273: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1531 +//line sql.y:1539 { yyVAL.statement = &Begin{} } - case 272: + case 274: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1535 +//line sql.y:1543 { yyVAL.statement = &Begin{} } - case 273: + case 275: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1541 +//line sql.y:1549 { yyVAL.statement = &Commit{} } - case 274: + case 276: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1547 +//line sql.y:1555 { yyVAL.statement = &Rollback{} } - case 275: + case 277: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1553 +//line sql.y:1561 { yyVAL.statement = &OtherRead{} } - case 276: + case 278: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1557 +//line sql.y:1565 { yyVAL.statement = &OtherRead{} } - case 277: + case 279: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1561 +//line sql.y:1569 { yyVAL.statement = &OtherRead{} } - case 278: + case 280: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1565 +//line sql.y:1573 { yyVAL.statement = &OtherAdmin{} } - case 279: + case 281: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1569 +//line sql.y:1577 { yyVAL.statement = &OtherAdmin{} } - case 280: + case 282: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1575 +//line sql.y:1583 { yyVAL.statement = &DeallocatePrepare{PreparedStatementName: yyDollar[3].tableIdent} } - case 281: + case 283: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1581 +//line sql.y:1589 { yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, From: yyDollar[4].fromInPrepare} } - case 282: + case 284: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1585 +//line sql.y:1593 { yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, From: yyDollar[4].fromInPrepare} } - case 283: + case 285: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1591 +//line sql.y:1599 { yyVAL.fromInPrepare = yyDollar[1].selStmt.(*Select) } - case 284: + case 286: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1595 +//line sql.y:1603 { yyVAL.fromInPrepare = yyDollar[1].statement.(*Insert) } - case 285: + case 287: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1599 +//line sql.y:1607 { yyVAL.fromInPrepare = NewTableIdent(string(yyDollar[1].bytes)) } - case 286: + case 288: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1603 +//line sql.y:1611 { yyVAL.fromInPrepare = NewPgEscapeString(yyDollar[1].bytes) } - case 287: + case 289: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1607 +//line sql.y:1615 { yyVAL.fromInPrepare = NewStrVal(yyDollar[1].bytes) } - case 288: + case 290: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1613 +//line sql.y:1621 { yyVAL.statement = &Execute{PreparedStatementName: NewTableIdent(string(yyDollar[2].bytes))} } - case 289: + case 291: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1617 +//line sql.y:1625 { yyVAL.statement = &Execute{PreparedStatementName: NewTableIdent(string(yyDollar[2].bytes)), Using: yyDollar[4].usingInExecuteList} } - case 290: + case 292: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1623 +//line sql.y:1631 { yyVAL.usingInExecuteList = UsingInExecuteList{yyDollar[1].tableIdent} } - case 291: + case 293: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1627 +//line sql.y:1635 { yyVAL.usingInExecuteList = append(yyDollar[1].usingInExecuteList, yyDollar[3].tableIdent) } - case 292: + case 294: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1632 +//line sql.y:1640 { setAllowComments(yylex, true) } - case 293: + case 295: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1636 +//line sql.y:1644 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 294: + case 296: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1642 +//line sql.y:1650 { yyVAL.bytes2 = nil } - case 295: + case 297: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1646 +//line sql.y:1654 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 296: + case 298: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1652 +//line sql.y:1660 { yyVAL.str = UnionStr } - case 297: + case 299: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1656 +//line sql.y:1664 { yyVAL.str = UnionAllStr } - case 298: + case 300: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1660 +//line sql.y:1668 { yyVAL.str = UnionDistinctStr } - case 299: + case 301: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1665 +//line sql.y:1673 { yyVAL.str = "" } - case 300: + case 302: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1669 +//line sql.y:1677 { yyVAL.str = SQLNoCacheStr } - case 301: + case 303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1673 +//line sql.y:1681 { yyVAL.str = SQLCacheStr } - case 302: + case 304: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1678 +//line sql.y:1686 { yyVAL.str = "" } - case 303: + case 305: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1682 +//line sql.y:1690 { yyVAL.str = DistinctStr } - case 304: + case 306: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1687 +//line sql.y:1695 { yyVAL.str = "" } - case 305: + case 307: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1691 +//line sql.y:1699 { yyVAL.str = StraightJoinHint } - case 306: + case 308: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1696 +//line sql.y:1704 { yyVAL.selectExprs = nil } - case 307: + case 309: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1700 +//line sql.y:1708 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 308: + case 310: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1706 +//line sql.y:1714 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 309: + case 311: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1710 +//line sql.y:1718 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 310: + case 312: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1716 +//line sql.y:1724 { yyVAL.selectExpr = &StarExpr{} } - case 311: + case 313: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1720 +//line sql.y:1728 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 312: + case 314: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1724 +//line sql.y:1732 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 313: + case 315: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1728 +//line sql.y:1736 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 314: + case 316: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1733 +//line sql.y:1741 { yyVAL.colIdent = ColIdent{} } - case 315: + case 317: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1737 +//line sql.y:1745 { yyVAL.colIdent = yyDollar[1].colIdent } - case 316: + case 318: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1741 +//line sql.y:1749 { yyVAL.colIdent = yyDollar[2].colIdent } - case 318: + case 320: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1749 +//line sql.y:1757 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 319: + case 321: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1753 +//line sql.y:1761 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 320: + case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1759 +//line sql.y:1767 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 321: + case 323: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1763 +//line sql.y:1771 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 324: + case 326: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1773 +//line sql.y:1781 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 325: + case 327: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1777 +//line sql.y:1785 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 326: + case 328: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1781 +//line sql.y:1789 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 327: + case 329: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1787 +//line sql.y:1795 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 328: + case 330: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1791 +//line sql.y:1799 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 329: + case 331: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1797 +//line sql.y:1805 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 330: + case 332: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1801 +//line sql.y:1809 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 331: + case 333: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1807 +//line sql.y:1815 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 332: + case 334: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1811 +//line sql.y:1819 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 333: + case 335: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1824 +//line sql.y:1832 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 334: + case 336: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1828 +//line sql.y:1836 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 335: + case 337: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1832 +//line sql.y:1840 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 336: + case 338: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1836 +//line sql.y:1844 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 337: + case 339: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1842 +//line sql.y:1850 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 338: + case 340: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1844 +//line sql.y:1852 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 339: + case 341: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1848 +//line sql.y:1856 { yyVAL.joinCondition = JoinCondition{} } - case 340: + case 342: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1850 +//line sql.y:1858 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 341: + case 343: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1854 +//line sql.y:1862 { yyVAL.joinCondition = JoinCondition{} } - case 342: + case 344: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1856 +//line sql.y:1864 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 343: + case 345: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1859 +//line sql.y:1867 { yyVAL.empty = struct{}{} } - case 344: + case 346: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1861 +//line sql.y:1869 { yyVAL.empty = struct{}{} } - case 345: + case 347: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1864 +//line sql.y:1872 { yyVAL.tableIdent = NewTableIdent("") } - case 346: + case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1868 +//line sql.y:1876 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 347: + case 349: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1872 +//line sql.y:1880 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 349: + case 351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1882 +//line sql.y:1890 { yyVAL.str = JoinStr } - case 350: + case 352: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1886 +//line sql.y:1894 { yyVAL.str = JoinStr } - case 351: + case 353: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1890 +//line sql.y:1898 { yyVAL.str = JoinStr } - case 352: + case 354: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1896 +//line sql.y:1904 { yyVAL.str = StraightJoinStr } - case 353: + case 355: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1902 +//line sql.y:1910 { yyVAL.str = LeftJoinStr } - case 354: + case 356: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1906 +//line sql.y:1914 { yyVAL.str = LeftJoinStr } - case 355: + case 357: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1910 +//line sql.y:1918 { yyVAL.str = RightJoinStr } - case 356: + case 358: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1914 +//line sql.y:1922 { yyVAL.str = RightJoinStr } - case 357: + case 359: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1920 +//line sql.y:1928 { yyVAL.str = NaturalJoinStr } - case 358: + case 360: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1924 +//line sql.y:1932 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -4606,335 +4639,323 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 359: + case 361: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1934 +//line sql.y:1942 { yyVAL.tableName = yyDollar[2].tableName } - case 360: + case 362: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1938 +//line sql.y:1946 { yyVAL.tableName = yyDollar[1].tableName } - case 361: + case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1944 +//line sql.y:1952 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 362: + case 364: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1948 +//line sql.y:1956 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 363: + case 365: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1953 +//line sql.y:1961 { yyVAL.indexHints = nil } - case 364: + case 366: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1957 +//line sql.y:1965 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 365: + case 367: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1961 +//line sql.y:1969 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 366: + case 368: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1965 +//line sql.y:1973 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 367: + case 369: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1970 +//line sql.y:1978 { yyVAL.expr = nil } - case 368: + case 370: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1974 +//line sql.y:1982 { yyVAL.expr = yyDollar[2].expr } - case 369: + case 371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1980 +//line sql.y:1988 { yyVAL.expr = yyDollar[1].expr } - case 370: + case 372: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1984 +//line sql.y:1992 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 371: + case 373: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1988 +//line sql.y:1996 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 372: + case 374: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1992 +//line sql.y:2000 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 373: + case 375: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1996 +//line sql.y:2004 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 374: + case 376: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2000 +//line sql.y:2008 { yyVAL.expr = yyDollar[1].expr } - case 375: + case 377: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2004 +//line sql.y:2012 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 376: + case 378: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2010 +//line sql.y:2018 { yyVAL.str = "" } - case 377: + case 379: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2014 +//line sql.y:2022 { yyVAL.str = string(yyDollar[2].bytes) } - case 378: + case 380: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2020 +//line sql.y:2028 { yyVAL.boolVal = BoolVal(true) } - case 379: + case 381: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2024 +//line sql.y:2032 { yyVAL.boolVal = BoolVal(false) } - case 380: + case 382: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2030 +//line sql.y:2038 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 381: + case 383: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2034 +//line sql.y:2042 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 382: + case 384: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2038 +//line sql.y:2046 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 383: + case 385: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2042 +//line sql.y:2050 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 384: + case 386: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2046 +//line sql.y:2054 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 385: + case 387: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2050 +//line sql.y:2058 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 386: + case 388: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2054 +//line sql.y:2062 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 387: + case 389: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2058 +//line sql.y:2066 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 388: + case 390: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2062 +//line sql.y:2070 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 389: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2066 - { - yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} - } - case 390: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2072 - { - yyVAL.str = IsNullStr - } case 391: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2076 +//line sql.y:2074 { - yyVAL.str = IsNotNullStr + yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } case 392: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2080 { - yyVAL.str = IsTrueStr + yyVAL.str = IsNullStr } case 393: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2084 { - yyVAL.str = IsNotTrueStr + yyVAL.str = IsNotNullStr } case 394: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2088 { - yyVAL.str = IsFalseStr + yyVAL.str = IsTrueStr } case 395: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2092 { - yyVAL.str = IsNotFalseStr + yyVAL.str = IsNotTrueStr } case 396: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2098 +//line sql.y:2096 { - yyVAL.str = EqualStr + yyVAL.str = IsFalseStr } case 397: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2102 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2100 { - yyVAL.str = LessThanStr + yyVAL.str = IsNotFalseStr } case 398: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2106 { - yyVAL.str = GreaterThanStr + yyVAL.str = EqualStr } case 399: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2110 { - yyVAL.str = LessEqualStr + yyVAL.str = LessThanStr } case 400: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2114 { - yyVAL.str = GreaterEqualStr + yyVAL.str = GreaterThanStr } case 401: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2118 { - yyVAL.str = NotEqualStr + yyVAL.str = LessEqualStr } case 402: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2122 +//line sql.y:2122 + { + yyVAL.str = GreaterEqualStr + } + case 403: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2126 + { + yyVAL.str = NotEqualStr + } + case 404: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2130 { yyVAL.str = NullSafeEqualStr } - case 403: + case 405: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2127 +//line sql.y:2135 { yyVAL.expr = nil } - case 404: + case 406: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2131 +//line sql.y:2139 { yyVAL.expr = yyDollar[2].expr } - case 405: + case 407: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2137 +//line sql.y:2145 { yyVAL.colTuple = yyDollar[1].valTuple } - case 406: + case 408: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2141 +//line sql.y:2149 { yyVAL.colTuple = yyDollar[1].subquery } - case 407: + case 409: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2145 +//line sql.y:2153 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 408: + case 410: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2151 +//line sql.y:2159 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 409: + case 411: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2157 +//line sql.y:2165 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 410: + case 412: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2161 +//line sql.y:2169 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 411: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2168 - { - yyVAL.expr = yyDollar[1].colName - } - case 412: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2173 - { - yyVAL.expr = yyDollar[1].expr - } case 413: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2177 +//line sql.y:2176 { - yyVAL.expr = yyDollar[1].boolVal + yyVAL.expr = yyDollar[1].colName } case 414: yyDollar = yyS[yypt-1 : yypt+1] @@ -4946,113 +4967,125 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2185 { - yyVAL.expr = yyDollar[1].subquery + yyVAL.expr = yyDollar[1].boolVal } case 416: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2189 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} + yyVAL.expr = yyDollar[1].expr } case 417: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2193 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} + yyVAL.expr = yyDollar[1].subquery } case 418: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2197 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } case 419: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2201 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } case 420: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2205 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } case 421: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2209 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } case 422: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2213 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } case 423: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2217 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } case 424: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2221 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } case 425: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2225 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } case 426: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2229 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } case 427: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2233 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } case 428: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2237 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } case 429: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2241 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } case 430: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2245 { - yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 431: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2249 { - yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 432: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2253 { - yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} + yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 433: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2257 + { + yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} + } + case 434: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2261 + { + yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} + } + case 435: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2265 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -5060,9 +5093,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 434: + case 436: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2265 +//line sql.y:2273 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -5076,21 +5109,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 435: + case 437: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2279 +//line sql.y:2287 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 436: + case 438: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2283 +//line sql.y:2291 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 437: + case 439: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2287 +//line sql.y:2295 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -5098,449 +5131,455 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 442: + case 444: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2305 +//line sql.y:2313 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 443: + case 445: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2309 +//line sql.y:2317 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 444: + case 446: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2313 +//line sql.y:2321 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 445: + case 447: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2323 +//line sql.y:2331 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 446: + case 448: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2327 +//line sql.y:2335 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 447: + case 449: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2331 +//line sql.y:2339 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 448: + case 450: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2335 +//line sql.y:2343 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 449: + case 451: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2339 +//line sql.y:2347 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 450: + case 452: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2343 +//line sql.y:2351 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 451: + case 453: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2347 +//line sql.y:2355 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 452: + case 454: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2351 +//line sql.y:2359 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 453: + case 455: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2355 +//line sql.y:2363 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 454: + case 456: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2359 +//line sql.y:2367 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 455: + case 457: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2363 +//line sql.y:2371 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 456: + case 458: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2367 +//line sql.y:2375 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 457: + case 459: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2371 +//line sql.y:2379 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } - case 458: + case 460: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2375 +//line sql.y:2383 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 459: + case 461: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2379 +//line sql.y:2387 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 460: + case 462: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2389 +//line sql.y:2397 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 461: + case 463: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2393 +//line sql.y:2401 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 462: + case 464: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2397 +//line sql.y:2405 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 463: + case 465: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2401 +//line sql.y:2409 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 464: + case 466: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2406 +//line sql.y:2414 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 465: + case 467: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2411 +//line sql.y:2419 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 466: + case 468: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2416 +//line sql.y:2424 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 467: + case 469: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2421 +//line sql.y:2429 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 470: + case 472: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2435 +//line sql.y:2443 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 471: + case 473: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2439 +//line sql.y:2447 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 472: + case 474: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2443 +//line sql.y:2451 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 473: + case 475: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2447 +//line sql.y:2455 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 474: + case 476: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2453 +//line sql.y:2461 { yyVAL.str = "" } - case 475: + case 477: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2457 +//line sql.y:2465 { yyVAL.str = BooleanModeStr } - case 476: + case 478: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2461 +//line sql.y:2469 { yyVAL.str = NaturalLanguageModeStr } - case 477: + case 479: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2465 +//line sql.y:2473 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 478: + case 480: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2469 +//line sql.y:2477 { yyVAL.str = QueryExpansionStr } - case 479: + case 481: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2475 +//line sql.y:2483 { yyVAL.str = string(yyDollar[1].bytes) } - case 480: + case 482: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2479 +//line sql.y:2487 { yyVAL.str = string(yyDollar[1].bytes) } - case 481: + case 483: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2485 +//line sql.y:2493 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 482: + case 484: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2489 +//line sql.y:2497 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 483: + case 485: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2493 +//line sql.y:2501 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: string(yyDollar[3].bytes)} } - case 484: + case 486: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2497 +//line sql.y:2505 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 485: + case 487: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2501 +//line sql.y:2509 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 486: + case 488: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2505 +//line sql.y:2513 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 487: + case 489: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2511 +//line sql.y:2519 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 488: + case 490: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2515 +//line sql.y:2523 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 489: + case 491: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2519 +//line sql.y:2527 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 490: + case 492: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2523 +//line sql.y:2531 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 491: + case 493: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2527 +//line sql.y:2535 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 492: + case 494: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2531 +//line sql.y:2539 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 493: + case 495: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2535 +//line sql.y:2543 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 494: + case 496: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2547 + { + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + } + case 497: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2540 +//line sql.y:2552 { yyVAL.expr = nil } - case 495: + case 498: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2544 +//line sql.y:2556 { yyVAL.expr = yyDollar[1].expr } - case 496: + case 499: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2549 +//line sql.y:2561 { yyVAL.str = string("") } - case 497: + case 500: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2553 +//line sql.y:2565 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 498: + case 501: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2559 +//line sql.y:2571 { yyVAL.whens = []*When{yyDollar[1].when} } - case 499: + case 502: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2563 +//line sql.y:2575 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 500: + case 503: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2569 +//line sql.y:2581 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 501: + case 504: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2574 +//line sql.y:2586 { yyVAL.expr = nil } - case 502: + case 505: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2578 +//line sql.y:2590 { yyVAL.expr = yyDollar[2].expr } - case 503: + case 506: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2584 +//line sql.y:2596 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 504: + case 507: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2588 +//line sql.y:2600 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 505: + case 508: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2592 +//line sql.y:2604 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 506: + case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2598 +//line sql.y:2610 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 507: + case 510: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2602 +//line sql.y:2614 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 508: + case 511: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2606 +//line sql.y:2618 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 509: + case 512: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2610 +//line sql.y:2622 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 510: + case 513: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2614 +//line sql.y:2626 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 511: + case 514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2618 +//line sql.y:2630 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 512: + case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2622 +//line sql.y:2634 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 513: + case 516: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2626 +//line sql.y:2638 { yyVAL.expr = &NullVal{} } - case 514: + case 517: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2630 +//line sql.y:2642 { yyVAL.expr = NewPgEscapeString(yyDollar[1].bytes) } - case 515: + case 518: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2634 +//line sql.y:2646 { yyVAL.expr = NewCastVal(yyDollar[1].expr, yyDollar[2].bytes) } - case 516: + case 519: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2640 +//line sql.y:2652 { yyVAL.bytes = yyDollar[1].bytes } - case 517: + case 520: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2648 +//line sql.y:2660 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -5549,239 +5588,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 518: + case 521: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2657 +//line sql.y:2669 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 519: + case 522: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2661 +//line sql.y:2673 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 520: + case 523: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2666 +//line sql.y:2678 { yyVAL.exprs = nil } - case 521: + case 524: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2670 +//line sql.y:2682 { yyVAL.exprs = yyDollar[3].exprs } - case 522: + case 525: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2675 +//line sql.y:2687 { yyVAL.expr = nil } - case 523: + case 526: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2679 +//line sql.y:2691 { yyVAL.expr = yyDollar[2].expr } - case 524: + case 527: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2684 +//line sql.y:2696 { yyVAL.orderBy = nil } - case 525: + case 528: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2688 +//line sql.y:2700 { yyVAL.orderBy = yyDollar[3].orderBy } - case 526: + case 529: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2694 +//line sql.y:2706 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 527: + case 530: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2698 +//line sql.y:2710 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 528: + case 531: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2704 +//line sql.y:2716 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 529: + case 532: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2709 +//line sql.y:2721 { yyVAL.str = AscScr } - case 530: + case 533: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2713 +//line sql.y:2725 { yyVAL.str = AscScr } - case 531: + case 534: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2717 +//line sql.y:2729 { yyVAL.str = DescScr } - case 532: + case 535: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2722 +//line sql.y:2734 { yyVAL.limit = nil } - case 533: + case 536: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2726 +//line sql.y:2738 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 534: + case 537: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2730 +//line sql.y:2742 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 535: + case 538: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2734 +//line sql.y:2746 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 536: + case 539: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2739 +//line sql.y:2751 { yyVAL.str = "" } - case 537: + case 540: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2743 +//line sql.y:2755 { yyVAL.str = ForUpdateStr } - case 538: + case 541: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2747 +//line sql.y:2759 { yyVAL.str = ShareModeStr } - case 539: + case 542: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2760 +//line sql.y:2772 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 540: + case 543: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2764 +//line sql.y:2776 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 541: + case 544: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2768 +//line sql.y:2780 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 542: + case 545: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2773 +//line sql.y:2785 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 543: + case 546: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2777 +//line sql.y:2789 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 544: + case 547: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2781 +//line sql.y:2793 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 545: + case 548: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2788 +//line sql.y:2800 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 546: + case 549: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2792 +//line sql.y:2804 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 547: + case 550: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2796 +//line sql.y:2808 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 548: + case 551: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2800 +//line sql.y:2812 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 549: + case 552: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2805 +//line sql.y:2817 { yyVAL.updateExprs = nil } - case 550: + case 553: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2809 +//line sql.y:2821 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 551: + case 554: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2815 +//line sql.y:2827 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 552: + case 555: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2819 +//line sql.y:2831 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 553: + case 556: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2825 +//line sql.y:2837 { yyVAL.valTuple = yyDollar[1].valTuple } - case 554: + case 557: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2829 +//line sql.y:2841 { yyVAL.valTuple = ValTuple{} } - case 555: + case 558: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2835 +//line sql.y:2847 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 556: + case 559: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2841 +//line sql.y:2853 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -5789,318 +5828,318 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 557: + case 560: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2850 +//line sql.y:2862 { yyVAL.returning = nil } - case 558: + case 561: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2855 +//line sql.y:2867 { yyVAL.returning = Returning{&StarExpr{}} } - case 559: + case 562: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2860 +//line sql.y:2872 { yyVAL.returning = Returning(yyDollar[2].exprs) } - case 560: + case 563: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2867 +//line sql.y:2879 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 561: + case 564: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2871 +//line sql.y:2883 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 562: + case 565: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2877 +//line sql.y:2889 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 563: + case 566: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2883 +//line sql.y:2895 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 564: + case 567: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2887 +//line sql.y:2899 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 565: + case 568: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2893 +//line sql.y:2905 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 566: + case 569: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2897 +//line sql.y:2909 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 567: + case 570: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2901 +//line sql.y:2913 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 569: + case 572: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2908 +//line sql.y:2920 { yyVAL.bytes = []byte("charset") } - case 571: + case 574: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2915 +//line sql.y:2927 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 572: + case 575: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2919 +//line sql.y:2931 { yyVAL.expr = &Default{} } - case 575: + case 578: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2928 +//line sql.y:2940 { yyVAL.byt = 0 } - case 576: + case 579: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2930 +//line sql.y:2942 { yyVAL.byt = 1 } - case 577: + case 580: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2933 +//line sql.y:2945 { yyVAL.empty = struct{}{} } - case 578: + case 581: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2935 +//line sql.y:2947 { yyVAL.empty = struct{}{} } - case 579: + case 582: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2938 +//line sql.y:2950 { yyVAL.str = "" } - case 580: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2940 - { - yyVAL.str = IgnoreStr - } - case 581: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2944 - { - yyVAL.empty = struct{}{} - } - case 582: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2946 - { - yyVAL.empty = struct{}{} - } case 583: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2948 +//line sql.y:2952 { - yyVAL.empty = struct{}{} + yyVAL.str = IgnoreStr } case 584: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2950 +//line sql.y:2956 { yyVAL.empty = struct{}{} } case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2952 +//line sql.y:2958 { yyVAL.empty = struct{}{} } case 586: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2954 +//line sql.y:2960 { yyVAL.empty = struct{}{} } case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2956 +//line sql.y:2962 { yyVAL.empty = struct{}{} } case 588: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2958 +//line sql.y:2964 { yyVAL.empty = struct{}{} } case 589: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2960 +//line sql.y:2966 { yyVAL.empty = struct{}{} } case 590: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2962 +//line sql.y:2968 { yyVAL.empty = struct{}{} } case 591: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2965 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2970 { yyVAL.empty = struct{}{} } case 592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2967 +//line sql.y:2972 { yyVAL.empty = struct{}{} } case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2969 +//line sql.y:2974 { yyVAL.empty = struct{}{} } case 594: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2973 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:2977 { yyVAL.empty = struct{}{} } case 595: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2975 +//line sql.y:2979 { yyVAL.empty = struct{}{} } case 596: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2978 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2981 { yyVAL.empty = struct{}{} } case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2980 +//line sql.y:2985 { yyVAL.empty = struct{}{} } case 598: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2982 +//line sql.y:2987 { yyVAL.empty = struct{}{} } case 599: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2985 +//line sql.y:2990 { - yyVAL.colIdent = ColIdent{} + yyVAL.empty = struct{}{} } case 600: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2992 + { + yyVAL.empty = struct{}{} + } + case 601: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2994 + { + yyVAL.empty = struct{}{} + } + case 602: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:2997 + { + yyVAL.colIdent = ColIdent{} + } + case 603: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2987 +//line sql.y:2999 { yyVAL.colIdent = yyDollar[2].colIdent } - case 601: + case 604: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2991 +//line sql.y:3003 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 602: + case 605: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2995 +//line sql.y:3007 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 603: + case 606: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2999 +//line sql.y:3011 { yyVAL.colIdent = NewColIdentWithQuotes(string(yyDollar[1].bytes), true) } - case 605: + case 608: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3006 +//line sql.y:3018 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 606: + case 609: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3012 +//line sql.y:3024 { yyVAL.tableIdent = NewTableIdentWithQuotes(yyDollar[1].colIdent.String(), yyDollar[1].colIdent.NeedQuotes()) } - case 608: + case 611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3019 +//line sql.y:3031 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 799: + case 802: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3235 +//line sql.y:3247 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 800: + case 803: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3244 +//line sql.y:3256 { decNesting(yylex) } - case 801: + case 804: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3249 +//line sql.y:3261 { forceEOF(yylex) } - case 802: + case 805: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3254 +//line sql.y:3266 { forceEOF(yylex) } - case 803: + case 806: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3258 +//line sql.y:3270 { forceEOF(yylex) } - case 804: + case 807: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3262 +//line sql.y:3274 { forceEOF(yylex) } diff --git a/sqlparser/sql.y b/sqlparser/sql.y index 0fe61cb4c..7ce420c2e 100644 --- a/sqlparser/sql.y +++ b/sqlparser/sql.y @@ -1023,6 +1023,10 @@ collate_opt: { $$ = string($2) } +| COLLATE STRING + { + $$ = string($2) + } column_key_opt: { @@ -1395,6 +1399,10 @@ show_statement: { $$ = &Show{Type: string($2)} } +| SHOW TRANSACTION ISOLATION LEVEL + { + $$ = &Show{Type: string($2)} + } | SHOW extended_opt full_opt tables_or_processlist from_database_opt like_or_where_opt { // this is ugly, but I couldn't find a better way for now @@ -2535,6 +2543,10 @@ convert_type: { $$ = &ConvertType{Type: string($1)} } +| VARCHAR openb INTEGRAL closeb + { + $$ = &ConvertType{Type: string($1)} + } expression_opt: { From 31a1e4e1a1e25a3b1ec59638e70ccd7a8c3160dc Mon Sep 17 00:00:00 2001 From: storojs72 Date: Mon, 21 Jan 2019 17:34:41 +0200 Subject: [PATCH 09/13] update censor's configurations for integration tests --- .../acra-censor_blacklist.yaml | 30 ------------------- .../acra-censor_whitelist.yaml | 1 - 2 files changed, 31 deletions(-) diff --git a/tests/acra-censor_configs/acra-censor_blacklist.yaml b/tests/acra-censor_configs/acra-censor_blacklist.yaml index 42a855dbb..b86e5e43a 100644 --- a/tests/acra-censor_configs/acra-censor_blacklist.yaml +++ b/tests/acra-censor_configs/acra-censor_blacklist.yaml @@ -1,35 +1,5 @@ ignore_parse_error: true handlers: - - handler: query_ignore - queries: - #mysql - - ROLLBACK - - SHOW VARIABLES LIKE 'sql_mode' - - SELECT VERSION() - - SELECT DATABASE() - - SELECT @@transaction_isolation - - show transaction isolation level - - show collation where `Charset` = 'utf8' and `Collation` = 'utf8_bin' - - SELECT CAST('test plain returns' AS CHAR(60)) AS anon_1 - - SELECT CAST('test unicode returns' AS CHAR(60)) AS anon_1 - - SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin AS anon_1 - - SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_bin AS anon_1 - - select 1 - - SET AUTOCOMMIT = 0 - - SET NAMES 'ascii' COLLATE 'ascii_general_ci' - - SET @@session.autocommit = OFF - #postgres - - BEGIN - - "SELECT t.oid, typarray\nFROM pg_type t JOIN pg_namespace ns\n ON typnamespace = ns.oid\nWHERE typname = 'hstore';\n" - - ROLLBACK - - "UPDATE pg_settings SET setting = 'hex' WHERE name = 'bytea_output'" - - COMMIT - - select version() - - select current_schema() - - show transaction isolation level - - show standard_conforming_strings - - SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1 - - SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1 - handler: deny queries: - select * from test diff --git a/tests/acra-censor_configs/acra-censor_whitelist.yaml b/tests/acra-censor_configs/acra-censor_whitelist.yaml index 0a0adfb55..7ab43398c 100644 --- a/tests/acra-censor_configs/acra-censor_whitelist.yaml +++ b/tests/acra-censor_configs/acra-censor_whitelist.yaml @@ -13,7 +13,6 @@ handlers: - SELECT CAST('test unicode returns' AS CHAR(60)) AS anon_1 - SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin AS anon_1 - SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_bin AS anon_1 - - select 1 - select 1; - SET AUTOCOMMIT = 0 - SET NAMES 'ascii' COLLATE 'ascii_general_ci' From be56e7a37936bb29da81b6786d59b32860fdca0b Mon Sep 17 00:00:00 2001 From: storojs72 Date: Mon, 21 Jan 2019 19:17:26 +0200 Subject: [PATCH 10/13] Requested changes --- sqlparser/ast.go | 41 +- sqlparser/ast_methods.go | 4 +- sqlparser/parse_test.go | 13 +- sqlparser/sql.go | 3590 +++++++++++++++++++------------------- sqlparser/sql.y | 37 +- 5 files changed, 1873 insertions(+), 1812 deletions(-) diff --git a/sqlparser/ast.go b/sqlparser/ast.go index 6c644c947..21f6f55a7 100644 --- a/sqlparser/ast.go +++ b/sqlparser/ast.go @@ -732,18 +732,39 @@ type OtherRead struct{} // the full AST for the statement. type OtherAdmin struct{} -// FromInPrepare represents FROM statement in Prepare -type FromInPrepare interface { - iFromInPrepare() +// PreparedQuery represents FROM statement in Prepare +type PreparedQuery interface { + iPreparedQuery() SQLNode } -func (TableIdent) iFromInPrepare() {} -func (*SQLVal) iFromInPrepare() {} +func (TableIdent) iPreparedQuery() {} +func (*Select) iPreparedQuery() {} +func (*Insert) iPreparedQuery() {} +func (*Delete) iPreparedQuery() {} +func (*Update) iPreparedQuery() {} + + +func NewPreparedQueryFromString(query string) (PreparedQuery, error){ + statement, err := Parse(query) + if err != nil { + return nil, err + } + switch statement.(type) { + case *Select: + return statement.(*Select), nil + case *Insert: + return statement.(*Insert), nil + case *Delete: + return statement.(*Delete), nil + case *Update: + return statement.(*Update), nil + default: + return nil, nil + } + return nil, nil +} -// dictates by PostgreSQL -func (*Select) iFromInPrepare() {} -func (*Insert) iFromInPrepare() {} type UsingInExecuteList []TableIdent @@ -755,8 +776,8 @@ type Execute struct { // Prepare prepares statement for future execution type Prepare struct { - PreparedStatementName TableIdent - From FromInPrepare + PreparedStatementName TableIdent + PreparedStatementQuery PreparedQuery } // DeallocatePrepare deallocates memory that stores compiled prepared statement diff --git a/sqlparser/ast_methods.go b/sqlparser/ast_methods.go index 59029c249..7be9c5639 100644 --- a/sqlparser/ast_methods.go +++ b/sqlparser/ast_methods.go @@ -753,11 +753,11 @@ func (node *Execute) walkSubtree(visit Visit) error { // Format formats the node. func (node *Prepare) Format(buf *TrackedBuffer) { - buf.Myprintf("prepare %v from %v", node.PreparedStatementName, node.From) + buf.Myprintf("prepare %v from %v", node.PreparedStatementName, node.PreparedStatementQuery) } func (node *Prepare) walkSubtree(visit Visit) error { - return Walk(visit, node.PreparedStatementName, node.From) + return Walk(visit, node.PreparedStatementName, node.PreparedStatementQuery) } // Format formats the node. diff --git a/sqlparser/parse_test.go b/sqlparser/parse_test.go index 786554548..aa886e1b9 100644 --- a/sqlparser/parse_test.go +++ b/sqlparser/parse_test.go @@ -1940,7 +1940,6 @@ func TestPreparedStatements(t *testing.T) { testQueries := []string{ `prepare stmt1 from 'select 1'`, `prepare stmt1 from @variable`, - `prepare stmt1 from E'pg_escape_string'`, `execute stmt1`, `execute stmt1 using @variable`, `execute stmt1 using @variable1, @variable2`, @@ -1948,6 +1947,18 @@ func TestPreparedStatements(t *testing.T) { `prepare test_statement as select * from test`, `prepare test_statement as insert into test default values`, `prepare test_statement as insert into test(id, data) values(1, DEFAULT)`, + `prepare test_statement as delete from somelog where user = 'jcole' order by timestamp_column limit 1`, + `prepare test_statement as update t1 set col1 = col1 + 1`, + `prepare test_statement from 'select * from test'`, + `prepare test_statement from 'insert into test default values'`, + `prepare test_statement from 'insert into test(id, data) values(1, DEFAULT)'`, + `prepare test_statement from 'delete from somelog where user = "jcole" order by timestamp_column limit 1'`, + `prepare test_statement from 'update t1 set col1 = col1 + 1'`, + `prepare test_statement from "select * from test"`, + `prepare test_statement from "insert into test default values"`, + `prepare test_statement from "insert into test(id, data) values(1, DEFAULT)"`, + `prepare test_statement from "delete from somelog where user = 'jcole' order by timestamp_column limit 1"`, + `prepare test_statement from "update t1 set col1 = col1 + 1"`, } for _, query := range testQueries { diff --git a/sqlparser/sql.go b/sqlparser/sql.go index 412c692ce..122ad090e 100644 --- a/sqlparser/sql.go +++ b/sqlparser/sql.go @@ -102,7 +102,7 @@ type yySymType struct { vindexParam VindexParam vindexParams []VindexParam showFilter *ShowFilter - fromInPrepare FromInPrepare + preparedQuery PreparedQuery } const LEX_ERROR = 57346 @@ -616,421 +616,297 @@ var yyExca = [...]int{ 152, 268, -2, 258, -1, 248, - 110, 609, - -2, 506, + 110, 610, + -2, 507, -1, 266, - 53, 606, - 110, 606, - 111, 606, - 112, 606, - -2, 509, + 53, 607, + 110, 607, + 111, 607, + 112, 607, + -2, 510, -1, 317, - 81, 767, + 81, 768, -2, 62, -1, 318, - 81, 728, + 81, 729, -2, 63, -1, 323, - 81, 712, - -2, 571, + 81, 713, + -2, 572, -1, 325, - 81, 749, - -2, 573, + 81, 750, + -2, 574, -1, 589, 52, 45, 54, 45, -2, 47, - -1, 731, - 110, 611, - -2, 608, -1, 732, - 110, 609, - -2, 607, - -1, 778, - 110, 609, - -2, 506, - -1, 938, + 110, 612, + -2, 609, + -1, 733, + 110, 610, + -2, 608, + -1, 779, + 110, 610, + -2, 507, + -1, 939, 5, 31, - -2, 410, - -1, 963, + -2, 411, + -1, 964, 5, 30, - -2, 543, - -1, 1194, - 5, 31, -2, 544, - -1, 1241, - 5, 30, - -2, 546, - -1, 1304, + -1, 1195, 5, 31, + -2, 545, + -1, 1242, + 5, 30, -2, 547, + -1, 1305, + 5, 31, + -2, 548, } const yyPrivate = 57344 -const yyLast = 9540 +const yyLast = 9545 var yyAct = [...]int{ - 248, 1295, 879, 537, 659, 1252, 1099, 277, 1127, 859, - 814, 1200, 836, 1100, 1026, 584, 967, 873, 835, 797, - 582, 1096, 227, 757, 796, 536, 3, 983, 930, 761, - 1029, 845, 1017, 784, 80, 242, 599, 832, 192, 469, - 59, 192, 972, 218, 734, 419, 322, 475, 1072, 869, - 764, 598, 192, 250, 316, 792, 586, 571, 481, 251, - 236, 489, 912, 24, 692, 313, 311, 551, 192, 192, - 321, 303, 58, 1189, 192, 1324, 424, 1314, 1322, 226, - 1302, 1320, 304, 880, 1313, 1301, 1091, 1186, 302, 423, - 219, 220, 221, 222, 896, 1261, 1122, 1123, 467, 1121, - 26, 27, 54, 29, 30, 828, 829, 254, 895, 63, - 827, 233, 991, 54, 687, 990, 240, 458, 992, 45, - 600, 460, 601, 444, 31, 231, 188, 184, 185, 186, - 1008, 852, 1212, 860, 1227, 900, 1174, 65, 66, 67, - 68, 69, 1172, 40, 223, 894, 217, 56, 1277, 501, - 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, - 502, 695, 696, 512, 697, 1133, 1134, 1135, 1321, 689, - 1319, 449, 793, 1138, 1136, 307, 690, 455, 456, 432, - 1259, 853, 192, 1296, 192, 1050, 794, 446, 433, 448, - 192, 847, 1253, 891, 888, 889, 192, 887, 426, 182, - 321, 321, 321, 321, 667, 321, 1255, 33, 34, 36, - 35, 38, 658, 321, 445, 447, 201, 815, 817, 420, - 847, 1047, 898, 901, 192, 982, 1142, 1049, 39, 46, - 47, 981, 980, 48, 49, 37, 429, 181, 187, 182, - 212, 421, 847, 491, 195, 183, 1282, 41, 42, 1197, - 43, 44, 50, 51, 52, 525, 526, 1059, 478, 860, - 893, 946, 906, 924, 472, 476, 705, 492, 439, 502, - 1002, 477, 512, 1254, 702, 833, 1054, 1143, 1260, 1258, - 512, 493, 892, 488, 846, 1300, 794, 486, 943, 844, - 842, 196, 816, 843, 1287, 785, 1093, 198, 443, 487, - 486, 1152, 192, 488, 204, 200, 1095, 1278, 970, 192, - 192, 192, 741, 846, 538, 321, 488, 602, 662, 897, - 1048, 604, 1046, 549, 487, 486, 739, 740, 738, 1006, - 425, 202, 899, 55, 207, 846, 1137, 487, 486, 205, - 1290, 488, 907, 479, 55, 503, 504, 505, 506, 507, - 508, 509, 502, 1053, 488, 512, 483, 523, 553, 554, - 555, 556, 557, 558, 559, 197, 435, 436, 437, 785, - 849, 953, 452, 453, 454, 850, 457, 590, 528, 1306, - 596, 942, 1228, 941, 462, 505, 506, 507, 508, 509, - 502, 180, 199, 512, 208, 209, 210, 211, 215, 56, - 487, 486, 1218, 214, 213, 708, 709, 1073, 427, 428, - 737, 1037, 1217, 723, 725, 726, 307, 488, 724, 921, - 922, 923, 758, 321, 1021, 759, 1285, 1020, 1009, 192, - 192, 321, 993, 192, 1307, 994, 192, 1075, 1288, 1035, - 192, 1235, 321, 321, 321, 321, 321, 321, 321, 321, - 1215, 1160, 487, 486, 704, 1018, 321, 321, 301, 1310, - 468, 468, 192, 1245, 1293, 1245, 468, 192, 1130, 488, - 1245, 1246, 1077, 246, 1081, 1129, 1076, 1003, 1074, 1083, - 882, 714, 760, 1079, 673, 192, 676, 1209, 1208, 1265, - 703, 491, 1078, 732, 672, 278, 53, 1118, 468, 1264, - 710, 663, 674, 735, 1036, 1080, 1082, 487, 486, 1041, - 1038, 1031, 1032, 1039, 1034, 1033, 1196, 468, 1149, 1148, - 1145, 1146, 720, 721, 488, 661, 1040, 656, 693, 693, - 698, 441, 1043, 1145, 1144, 26, 768, 936, 468, 731, - 712, 568, 468, 770, 468, 778, 778, 608, 607, 53, - 434, 778, 727, 420, 451, 729, 225, 232, 1097, 961, - 1139, 968, 962, 308, 593, 772, 192, 968, 778, 192, - 192, 192, 192, 192, 821, 538, 592, 711, 775, 776, - 969, 192, 56, 26, 192, 765, 767, 60, 192, 770, - 1192, 789, 192, 192, 657, 26, 321, 969, 777, 780, - 568, 567, 666, 736, 786, 594, 782, 592, 321, 772, - 1240, 1151, 822, 677, 678, 679, 680, 681, 682, 683, - 684, 798, 568, 1062, 319, 568, 936, 685, 686, 1147, - 56, 861, 862, 863, 995, 769, 771, 811, 831, 968, - 799, 826, 56, 802, 819, 820, 948, 945, 936, 825, - 824, 787, 800, 801, 839, 803, 908, 595, 706, 192, - 233, 56, 321, 1222, 321, 660, 936, 854, 192, 874, - 877, 192, 321, 875, 1112, 998, 307, 307, 307, 307, - 307, 813, 274, 267, 766, 269, 270, 271, 272, 947, - 944, 307, 268, 273, 870, 450, 450, 450, 450, 307, - 450, 865, 871, 872, 973, 974, 732, 56, 450, 501, - 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, - 502, 1182, 468, 512, 864, 71, 466, 1132, 53, 529, - 530, 531, 532, 533, 534, 535, 1097, 1022, 976, 910, - 911, 670, 476, 521, 522, 524, 735, 461, 808, 979, - 914, 806, 731, 809, 913, 931, 807, 718, 978, 501, - 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, - 502, 805, 804, 512, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 926, 550, 552, 552, 552, 552, 552, - 552, 552, 552, 560, 561, 562, 563, 1318, 855, 856, - 857, 858, 237, 238, 583, 909, 937, 763, 810, 1312, - 577, 578, 1058, 1317, 866, 867, 868, 952, 963, 984, - 482, 954, 192, 573, 576, 577, 578, 574, 965, 575, - 579, 919, 470, 883, 480, 885, 321, 985, 918, 987, - 1013, 606, 986, 904, 471, 977, 736, 442, 996, 510, - 511, 503, 504, 505, 506, 507, 508, 509, 502, 933, - 934, 512, 1005, 988, 1292, 1010, 1011, 1291, 1238, 319, - 999, 938, 939, 940, 1190, 1000, 1001, 1223, 1023, 321, - 949, 321, 884, 669, 464, 955, 581, 956, 957, 958, - 959, 234, 235, 482, 917, 465, 228, 1012, 1019, 1014, - 1015, 1016, 916, 1270, 321, 229, 60, 192, 192, 192, - 1269, 1225, 969, 484, 1279, 1213, 192, 701, 450, 1042, - 62, 694, 5, 64, 591, 321, 450, 57, 1, 307, - 1028, 699, 1188, 527, 881, 1025, 890, 450, 450, 450, - 450, 450, 450, 450, 450, 1294, 1251, 732, 1126, 841, - 834, 450, 450, 418, 70, 1065, 1066, 1286, 840, 1257, - 1211, 848, 778, 1007, 851, 1105, 1084, 984, 733, 778, - 1101, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 1098, 1071, 1108, 1094, - 1103, 1092, 1085, 731, 1106, 1131, 321, 1289, 321, 1128, - 1004, 613, 611, 1120, 612, 1109, 1110, 610, 1107, 1111, - 1125, 615, 1113, 614, 1124, 798, 609, 203, 314, 580, - 53, 603, 798, 192, 876, 485, 1119, 82, 72, 1045, - 1044, 1154, 886, 1052, 1070, 539, 688, 905, 459, 206, - 520, 915, 989, 320, 1156, 192, 1104, 730, 1140, 1141, - 1024, 1159, 707, 474, 1268, 473, 1224, 951, 548, 783, - 321, 253, 722, 192, 308, 308, 308, 308, 308, 265, - 262, 264, 263, 1153, 713, 1051, 960, 494, 1162, 583, - 252, 818, 1117, 1163, 244, 306, 1155, 308, 564, 1158, - 1161, 572, 570, 191, 569, 1170, 216, 975, 573, 576, - 577, 578, 574, 971, 575, 579, 305, 224, 973, 974, - 1061, 1185, 1276, 1201, 717, 1201, 1201, 1201, 192, 1206, - 1191, 243, 28, 191, 191, 321, 1202, 1203, 1204, 191, - 1199, 1187, 61, 1205, 239, 23, 22, 996, 538, 21, - 19, 18, 1207, 17, 20, 16, 15, 14, 32, 13, - 319, 321, 321, 321, 1214, 12, 1216, 450, 11, 450, - 10, 9, 837, 8, 1164, 1221, 1220, 450, 7, 6, - 307, 1166, 4, 230, 25, 2, 0, 0, 1226, 0, - 0, 0, 0, 1176, 1177, 1178, 0, 0, 1181, 0, - 0, 0, 0, 1237, 0, 0, 0, 1243, 1244, 0, - 1101, 1193, 1194, 1195, 0, 1198, 1239, 0, 0, 0, - 1128, 0, 0, 927, 928, 929, 1250, 0, 1256, 0, - 0, 1241, 0, 1201, 0, 538, 925, 0, 0, 0, - 0, 0, 0, 0, 1266, 0, 0, 191, 0, 191, - 0, 0, 0, 0, 0, 191, 1283, 1280, 1101, 0, - 0, 191, 1262, 0, 1263, 1167, 1168, 1284, 1169, 0, - 730, 1171, 0, 1173, 0, 0, 0, 0, 1281, 309, - 0, 0, 0, 0, 1298, 0, 0, 0, 0, 463, - 778, 0, 0, 1305, 1234, 0, 0, 0, 964, 0, - 966, 0, 0, 0, 0, 0, 0, 1311, 1308, 0, - 0, 1247, 1248, 1249, 1303, 1297, 538, 190, 0, 0, - 1210, 1315, 1316, 0, 0, 0, 0, 308, 0, 0, - 0, 0, 1219, 0, 0, 0, 0, 1271, 1272, 1273, - 1274, 1275, 0, 798, 0, 0, 0, 0, 312, 0, - 0, 1037, 0, 422, 0, 0, 0, 0, 773, 774, - 0, 0, 0, 0, 781, 0, 0, 191, 0, 0, - 0, 0, 0, 0, 191, 588, 191, 0, 788, 1035, - 790, 791, 0, 0, 450, 1299, 0, 0, 0, 0, - 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 837, 0, 0, 1309, 0, 0, 0, 0, 0, 450, - 0, 0, 0, 0, 0, 1068, 1069, 500, 510, 511, - 503, 504, 505, 506, 507, 508, 509, 502, 1086, 1087, - 512, 1089, 1090, 0, 1327, 1328, 0, 0, 0, 0, - 0, 0, 0, 0, 1036, 1027, 0, 0, 0, 1041, - 1038, 1031, 1032, 1039, 1034, 1033, 0, 0, 0, 0, - 0, 430, 0, 431, 0, 1183, 1040, 0, 1102, 438, - 53, 0, 1030, 0, 0, 440, 1179, 468, 0, 0, - 0, 0, 0, 0, 0, 0, 1114, 1115, 1116, 1064, - 0, 0, 0, 0, 191, 191, 0, 0, 191, 0, - 0, 191, 0, 0, 0, 675, 0, 0, 0, 0, - 0, 1088, 0, 0, 501, 500, 510, 511, 503, 504, - 505, 506, 507, 508, 509, 502, 0, 191, 512, 0, - 0, 0, 700, 0, 0, 920, 0, 0, 501, 500, + 248, 1296, 880, 537, 659, 1253, 1100, 833, 797, 1128, + 837, 874, 1027, 1201, 815, 1101, 584, 836, 758, 322, + 798, 536, 3, 227, 1097, 277, 984, 860, 968, 931, + 1030, 599, 846, 762, 80, 1018, 59, 582, 192, 785, + 218, 192, 973, 469, 735, 475, 1073, 419, 598, 793, + 571, 870, 192, 586, 913, 250, 316, 765, 489, 481, + 251, 304, 236, 24, 303, 692, 313, 311, 192, 192, + 321, 58, 1190, 1325, 192, 226, 424, 1315, 897, 1323, + 1303, 1321, 881, 1314, 1302, 1092, 1187, 219, 220, 221, + 222, 423, 896, 1262, 551, 1123, 1124, 829, 830, 233, + 467, 54, 29, 30, 1122, 302, 1278, 501, 500, 510, + 511, 503, 504, 505, 506, 507, 508, 509, 502, 901, + 600, 512, 601, 240, 992, 231, 63, 991, 828, 895, + 993, 444, 687, 458, 242, 188, 184, 185, 186, 764, + 689, 460, 26, 27, 54, 29, 30, 690, 1009, 697, + 853, 1213, 698, 432, 65, 66, 67, 68, 69, 861, + 1228, 45, 1175, 1074, 1173, 223, 31, 1134, 1135, 1136, + 1322, 449, 217, 455, 456, 1139, 1137, 892, 889, 890, + 1320, 888, 192, 794, 192, 40, 1297, 1051, 795, 56, + 192, 433, 426, 1076, 182, 446, 192, 448, 816, 818, + 321, 321, 321, 321, 667, 321, 899, 902, 181, 1260, + 182, 848, 848, 321, 658, 983, 982, 1254, 981, 421, + 429, 195, 445, 447, 192, 183, 1283, 848, 1078, 1198, + 1082, 1256, 1077, 1060, 1075, 1084, 525, 526, 947, 1080, + 1003, 925, 706, 491, 894, 492, 834, 187, 1079, 33, + 34, 36, 35, 38, 478, 420, 439, 512, 703, 907, + 488, 1081, 1083, 1143, 486, 1279, 893, 477, 1048, 1055, + 39, 46, 47, 817, 1050, 48, 49, 37, 502, 854, + 488, 512, 1288, 1153, 1301, 861, 971, 602, 1094, 41, + 42, 786, 43, 44, 50, 51, 52, 795, 1255, 1038, + 487, 486, 192, 898, 847, 847, 443, 1261, 1259, 192, + 192, 192, 662, 1291, 1144, 321, 900, 488, 850, 742, + 847, 604, 786, 851, 954, 845, 843, 1036, 425, 844, + 1007, 483, 55, 740, 741, 739, 56, 201, 1138, 908, + 435, 436, 437, 922, 923, 924, 1054, 738, 501, 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, 502, - 191, 1165, 512, 0, 0, 0, 0, 0, 675, 0, - 837, 0, 837, 0, 0, 0, 0, 0, 308, 0, + 479, 212, 512, 472, 476, 180, 528, 1049, 1307, 1047, + 1229, 1219, 452, 453, 454, 55, 457, 1218, 590, 759, + 493, 596, 760, 1308, 462, 553, 554, 555, 556, 557, + 558, 559, 1037, 1289, 932, 1022, 451, 1042, 1039, 1032, + 1033, 1040, 1035, 1034, 487, 486, 427, 428, 1021, 1010, + 1236, 1096, 196, 538, 1041, 943, 994, 942, 198, 995, + 1044, 488, 549, 321, 1216, 204, 200, 1161, 1019, 192, + 192, 321, 301, 192, 487, 486, 192, 1311, 468, 468, + 192, 1286, 321, 321, 321, 321, 321, 321, 321, 321, + 1131, 488, 202, 1246, 1294, 207, 321, 321, 1130, 676, + 205, 1004, 192, 1246, 468, 1266, 319, 192, 505, 506, + 507, 508, 509, 502, 246, 1265, 512, 1246, 1247, 709, + 710, 715, 1210, 1209, 705, 192, 197, 724, 726, 727, + 944, 491, 725, 733, 674, 883, 278, 53, 1119, 468, + 1140, 711, 510, 511, 503, 504, 505, 506, 507, 508, + 509, 502, 732, 199, 512, 208, 209, 210, 211, 215, + 704, 736, 56, 761, 214, 213, 487, 486, 693, 693, + 673, 699, 1197, 468, 1150, 1149, 769, 487, 486, 487, + 486, 672, 713, 488, 663, 779, 779, 730, 661, 728, + 53, 779, 1146, 1147, 488, 656, 488, 441, 232, 1146, + 1145, 773, 937, 468, 308, 434, 192, 420, 779, 192, + 192, 192, 192, 192, 568, 468, 1223, 254, 225, 712, + 969, 192, 771, 468, 192, 60, 766, 768, 192, 608, + 607, 771, 192, 192, 657, 790, 321, 822, 970, 592, + 778, 781, 666, 1193, 1063, 773, 787, 783, 321, 1098, + 26, 949, 969, 677, 678, 679, 680, 681, 682, 683, + 684, 721, 722, 799, 937, 568, 1152, 685, 686, 823, + 812, 801, 802, 800, 804, 1148, 803, 770, 772, 821, + 568, 820, 26, 26, 593, 307, 826, 937, 996, 862, + 863, 864, 825, 788, 948, 567, 840, 56, 855, 192, + 827, 937, 321, 909, 321, 946, 962, 876, 192, 963, + 1241, 192, 321, 595, 538, 1183, 468, 776, 777, 568, + 774, 775, 707, 814, 875, 594, 782, 592, 1113, 56, + 56, 999, 233, 974, 975, 660, 450, 450, 450, 450, + 789, 450, 791, 792, 872, 873, 970, 733, 945, 450, + 1038, 319, 871, 501, 500, 510, 511, 503, 504, 505, + 506, 507, 508, 509, 502, 866, 732, 512, 865, 53, + 529, 530, 531, 532, 533, 534, 535, 832, 1036, 56, + 71, 878, 466, 1133, 521, 522, 524, 1098, 969, 1023, + 977, 670, 461, 914, 719, 915, 503, 504, 505, 506, + 507, 508, 509, 502, 980, 736, 512, 573, 576, 577, + 578, 574, 979, 575, 579, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 927, 550, 552, 552, 552, 552, + 552, 552, 552, 552, 560, 561, 562, 563, 806, 809, + 805, 807, 1319, 1037, 810, 583, 808, 1313, 1042, 1039, + 1032, 1033, 1040, 1035, 1034, 964, 811, 1059, 577, 578, + 985, 237, 238, 192, 953, 1041, 910, 523, 1318, 966, + 482, 1031, 920, 884, 919, 886, 470, 321, 1014, 911, + 912, 606, 476, 905, 480, 442, 978, 997, 471, 1006, + 986, 1293, 988, 1292, 1239, 1000, 1191, 1224, 921, 989, + 987, 885, 934, 935, 669, 581, 234, 235, 1013, 482, + 1015, 1016, 1017, 918, 939, 940, 941, 1001, 1002, 1024, + 321, 917, 321, 950, 1011, 1012, 307, 228, 956, 731, + 957, 958, 959, 960, 1271, 229, 856, 857, 858, 859, + 464, 60, 1020, 936, 1270, 321, 938, 1226, 192, 192, + 192, 465, 867, 868, 869, 970, 484, 192, 1280, 450, + 1043, 955, 1214, 951, 702, 62, 321, 450, 1029, 695, + 7, 696, 6, 694, 5, 64, 591, 57, 450, 450, + 450, 450, 450, 450, 450, 450, 1, 700, 733, 1189, + 527, 882, 450, 450, 1026, 891, 1295, 1252, 1067, 1127, + 1066, 842, 1085, 779, 835, 418, 1106, 732, 985, 734, + 779, 1099, 743, 744, 745, 746, 747, 748, 749, 750, + 751, 752, 753, 754, 755, 756, 757, 1104, 1093, 1102, + 1109, 1086, 319, 70, 1107, 1072, 1287, 321, 841, 321, + 1129, 1258, 1212, 849, 838, 1108, 1008, 852, 1132, 1126, + 1290, 1005, 613, 611, 1125, 612, 1121, 610, 799, 1141, + 1142, 53, 615, 1120, 192, 799, 614, 609, 203, 314, + 580, 603, 1155, 877, 485, 82, 539, 1071, 274, 267, + 767, 269, 270, 271, 272, 1157, 192, 72, 268, 273, + 1046, 1025, 1160, 1045, 887, 1053, 688, 906, 459, 473, + 206, 321, 520, 916, 192, 308, 308, 308, 308, 308, + 990, 1154, 320, 737, 1105, 708, 1052, 474, 1269, 1225, + 583, 952, 819, 548, 1156, 1118, 784, 1159, 308, 1095, + 1171, 1163, 253, 723, 265, 262, 264, 191, 263, 714, + 216, 1164, 961, 731, 494, 1110, 1111, 252, 244, 1112, + 306, 224, 1114, 564, 1202, 572, 1202, 1202, 1202, 192, + 1207, 570, 569, 976, 1192, 243, 321, 191, 191, 1203, + 1204, 1205, 1200, 191, 972, 1206, 997, 305, 1062, 1186, + 1277, 718, 28, 61, 1208, 239, 307, 307, 307, 307, + 307, 23, 321, 321, 321, 22, 21, 19, 450, 18, + 450, 307, 17, 20, 1222, 1221, 16, 1165, 450, 307, + 15, 14, 32, 1215, 1167, 1217, 13, 12, 11, 10, + 9, 8, 4, 230, 25, 2, 1177, 1178, 1179, 0, + 1162, 1182, 0, 0, 1238, 0, 0, 1227, 1244, 1245, + 0, 0, 0, 0, 1194, 1195, 1196, 0, 1199, 1240, + 0, 1129, 0, 0, 0, 928, 929, 930, 1242, 1102, + 1257, 1251, 0, 1263, 1202, 1264, 0, 0, 926, 0, + 0, 1188, 0, 838, 0, 0, 0, 1267, 538, 0, + 0, 191, 0, 191, 0, 0, 0, 1284, 1281, 191, + 573, 576, 577, 578, 574, 191, 575, 579, 1285, 0, + 974, 975, 0, 0, 0, 1282, 0, 1102, 0, 309, + 0, 0, 0, 0, 0, 1299, 0, 0, 1028, 0, + 0, 779, 0, 463, 1306, 0, 0, 1235, 0, 1304, + 965, 0, 967, 0, 0, 0, 0, 0, 1312, 1309, + 0, 0, 0, 0, 1248, 1249, 1250, 190, 0, 0, + 0, 0, 1316, 1317, 0, 0, 0, 737, 0, 308, + 0, 0, 1065, 1220, 0, 538, 0, 0, 0, 0, + 1272, 1273, 1274, 1275, 1276, 0, 799, 0, 312, 0, + 0, 0, 0, 422, 1089, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1168, 1169, 0, 1170, 0, 0, + 1172, 191, 1174, 0, 0, 0, 0, 0, 191, 588, + 191, 0, 0, 0, 0, 0, 450, 0, 1300, 0, + 0, 0, 0, 1305, 0, 0, 0, 0, 0, 0, + 0, 1180, 468, 838, 0, 838, 1310, 0, 0, 0, + 307, 450, 0, 0, 0, 1298, 538, 1069, 1070, 1211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 935, 566, 0, 0, 0, 0, 0, 0, 243, 1175, - 589, 0, 0, 0, 0, 0, 0, 1184, 0, 0, - 950, 0, 0, 0, 0, 0, 243, 243, 0, 0, - 779, 779, 243, 0, 0, 0, 779, 0, 0, 0, - 0, 0, 0, 0, 1064, 0, 243, 243, 243, 243, - 0, 191, 468, 779, 191, 191, 191, 191, 191, 0, - 0, 0, 0, 0, 0, 0, 812, 0, 0, 191, - 0, 0, 0, 588, 630, 0, 450, 191, 191, 0, - 0, 0, 0, 1229, 1230, 0, 1231, 1232, 1233, 501, - 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, - 502, 0, 0, 512, 0, 0, 0, 0, 0, 837, - 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, - 0, 1242, 0, 0, 0, 0, 0, 0, 664, 665, - 0, 0, 668, 0, 0, 671, 1027, 837, 0, 0, - 0, 0, 0, 0, 191, 0, 0, 0, 0, 1267, - 0, 618, 0, 191, 0, 0, 191, 0, 0, 0, - 0, 691, 0, 0, 0, 0, 1102, 0, 53, 501, + 1087, 1088, 0, 1090, 1091, 0, 0, 1328, 1329, 501, 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, - 502, 631, 0, 512, 719, 0, 0, 0, 0, 0, - 0, 675, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 243, 0, 644, 645, 646, 647, 648, - 649, 650, 0, 651, 652, 653, 654, 655, 632, 633, - 634, 635, 616, 617, 0, 0, 619, 1325, 620, 621, - 622, 623, 624, 625, 626, 627, 628, 629, 636, 637, - 638, 639, 640, 641, 642, 643, 1180, 1323, 243, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 496, 0, 499, 0, 795, 0, 0, 243, 513, - 514, 515, 516, 517, 518, 519, 0, 497, 498, 495, + 502, 0, 0, 512, 0, 0, 0, 0, 0, 0, + 0, 430, 0, 431, 1184, 0, 0, 1065, 0, 438, + 1103, 0, 53, 468, 0, 440, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1115, 1116, + 1117, 0, 0, 0, 0, 0, 0, 0, 191, 191, + 0, 0, 191, 0, 0, 191, 0, 0, 0, 675, 501, 500, 510, 511, 503, 504, 505, 506, 507, 508, - 509, 502, 823, 0, 512, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, - 0, 0, 0, 0, 1067, 0, 0, 0, 0, 501, - 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, - 502, 0, 0, 512, 501, 500, 510, 511, 503, 504, - 505, 506, 507, 508, 509, 502, 0, 0, 512, 0, - 0, 932, 0, 0, 0, 0, 0, 0, 878, 0, - 0, 0, 0, 0, 0, 0, 0, 902, 0, 0, - 903, 501, 500, 510, 511, 503, 504, 505, 506, 507, - 508, 509, 502, 0, 0, 512, 0, 0, 0, 0, - 0, 0, 1055, 1056, 1057, 0, 0, 0, 0, 0, - 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 675, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 779, 0, 0, - 0, 0, 0, 0, 779, 0, 0, 0, 0, 0, + 509, 502, 0, 0, 512, 0, 0, 0, 0, 0, + 0, 191, 838, 0, 0, 0, 701, 501, 500, 510, + 511, 503, 504, 505, 506, 507, 508, 509, 502, 0, + 0, 512, 0, 1166, 191, 0, 0, 0, 0, 1028, + 838, 0, 675, 0, 0, 0, 0, 0, 0, 0, + 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 566, 0, 0, 0, 0, 0, 0, 0, 0, + 589, 1176, 243, 0, 0, 0, 0, 0, 1181, 1185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 243, 243, 0, 0, 780, 780, 243, 0, 0, 0, + 780, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 243, 243, 243, 243, 0, 191, 0, 780, 191, 191, + 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, + 813, 307, 0, 191, 0, 0, 0, 588, 450, 0, + 0, 191, 191, 0, 0, 1230, 1231, 1068, 1232, 1233, + 1234, 501, 500, 510, 511, 503, 504, 505, 506, 507, + 508, 509, 502, 0, 0, 512, 0, 501, 500, 510, + 511, 503, 504, 505, 506, 507, 508, 509, 502, 0, + 1103, 512, 0, 1243, 0, 0, 0, 0, 664, 665, + 0, 0, 668, 0, 0, 671, 501, 500, 510, 511, + 503, 504, 505, 506, 507, 508, 509, 502, 191, 0, + 512, 1268, 933, 0, 0, 0, 0, 191, 0, 0, + 191, 691, 630, 0, 0, 0, 0, 0, 1103, 0, + 53, 0, 501, 500, 510, 511, 503, 504, 505, 506, + 507, 508, 509, 502, 720, 0, 512, 0, 0, 0, + 0, 0, 0, 496, 0, 499, 675, 0, 0, 0, + 0, 513, 514, 515, 516, 517, 518, 519, 243, 497, + 498, 495, 501, 500, 510, 511, 503, 504, 505, 506, + 507, 508, 509, 502, 0, 0, 512, 0, 0, 1326, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 618, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1324, + 0, 0, 0, 243, 500, 510, 511, 503, 504, 505, + 506, 507, 508, 509, 502, 796, 0, 512, 0, 631, + 0, 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 824, 644, 645, 646, 647, 648, 649, 650, + 0, 651, 652, 653, 654, 655, 632, 633, 634, 635, + 616, 617, 191, 0, 619, 0, 620, 621, 622, 623, + 624, 625, 626, 627, 628, 629, 636, 637, 638, 639, + 640, 641, 642, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, + 0, 0, 0, 0, 0, 0, 0, 903, 0, 0, + 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, + 0, 0, 0, 0, 0, 0, 0, 1056, 1057, 1058, + 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 780, 0, 0, 0, 0, 0, 0, 780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1060, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 407, 397, 0, 369, 409, 347, 361, 417, 362, - 363, 390, 333, 377, 132, 359, 0, 350, 328, 356, - 329, 348, 371, 100, 374, 346, 399, 380, 114, 415, - 116, 385, 0, 149, 125, 0, 0, 373, 401, 375, - 395, 368, 391, 338, 384, 410, 360, 388, 411, 0, - 0, 0, 81, 0, 0, 83, 838, 0, 0, 0, - 0, 0, 93, 0, 387, 406, 358, 389, 327, 386, - 0, 331, 334, 416, 404, 353, 354, 997, 0, 0, - 0, 0, 1150, 0, 372, 376, 392, 366, 0, 0, - 0, 0, 0, 0, 0, 0, 351, 0, 383, 0, - 0, 0, 335, 332, 1157, 370, 0, 0, 0, 337, - 0, 352, 393, 0, 326, 396, 402, 367, 193, 405, - 365, 364, 408, 138, 0, 779, 152, 105, 104, 113, - 400, 349, 357, 96, 355, 144, 134, 164, 382, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 330, - 0, 150, 166, 179, 345, 403, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 341, 344, 339, 340, - 378, 379, 412, 413, 414, 394, 336, 0, 342, 343, - 0, 398, 381, 84, 0, 115, 176, 140, 102, 167, - 407, 397, 0, 369, 409, 347, 361, 417, 362, 363, - 390, 333, 377, 132, 359, 0, 350, 328, 356, 329, - 348, 371, 100, 374, 346, 399, 380, 114, 415, 116, - 385, 0, 149, 125, 0, 0, 373, 401, 375, 395, - 368, 391, 338, 384, 410, 360, 388, 411, 0, 0, - 0, 81, 0, 0, 83, 838, 0, 0, 0, 0, - 0, 93, 0, 387, 406, 358, 389, 327, 386, 0, - 331, 334, 416, 404, 353, 354, 0, 0, 0, 0, - 0, 0, 0, 372, 376, 392, 366, 0, 0, 0, - 0, 0, 0, 0, 0, 351, 0, 383, 0, 0, - 0, 335, 332, 0, 370, 0, 0, 0, 337, 0, - 352, 393, 0, 326, 396, 402, 367, 193, 405, 365, - 364, 408, 138, 0, 0, 152, 105, 104, 113, 400, - 349, 357, 96, 355, 144, 134, 164, 382, 135, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 330, 0, - 150, 166, 179, 345, 403, 172, 173, 174, 175, 0, - 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 341, 344, 339, 340, 378, - 379, 412, 413, 414, 394, 336, 0, 342, 343, 0, - 398, 381, 84, 0, 115, 176, 140, 102, 167, 407, - 397, 0, 369, 409, 347, 361, 417, 362, 363, 390, - 333, 377, 132, 359, 0, 350, 328, 356, 329, 348, - 371, 100, 374, 346, 399, 380, 114, 415, 116, 385, - 0, 149, 125, 0, 0, 373, 401, 375, 395, 368, - 391, 338, 384, 410, 360, 388, 411, 56, 0, 0, - 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 93, 0, 387, 406, 358, 389, 327, 386, 0, 331, - 334, 416, 404, 353, 354, 0, 0, 0, 0, 0, - 0, 0, 372, 376, 392, 366, 0, 0, 0, 0, - 0, 0, 0, 0, 351, 0, 383, 0, 0, 0, - 335, 332, 0, 370, 0, 0, 0, 337, 0, 352, - 393, 0, 326, 396, 402, 367, 193, 405, 365, 364, - 408, 138, 0, 0, 152, 105, 104, 113, 400, 349, - 357, 96, 355, 144, 134, 164, 382, 135, 143, 117, - 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, - 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, - 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, - 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, - 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, - 119, 137, 107, 127, 126, 128, 0, 330, 0, 150, - 166, 179, 345, 403, 172, 173, 174, 175, 0, 0, - 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, - 145, 95, 165, 148, 341, 344, 339, 340, 378, 379, - 412, 413, 414, 394, 336, 0, 342, 343, 0, 398, - 381, 84, 0, 115, 176, 140, 102, 167, 407, 397, - 0, 369, 409, 347, 361, 417, 362, 363, 390, 333, - 377, 132, 359, 0, 350, 328, 356, 329, 348, 371, - 100, 374, 346, 399, 380, 114, 415, 116, 385, 0, - 149, 125, 0, 0, 373, 401, 375, 395, 368, 391, - 338, 384, 410, 360, 388, 411, 0, 0, 0, 81, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, - 0, 387, 406, 358, 389, 327, 386, 0, 331, 334, - 416, 404, 353, 354, 0, 0, 0, 0, 0, 0, - 0, 372, 376, 392, 366, 0, 0, 0, 0, 0, - 0, 1063, 0, 351, 0, 383, 0, 0, 0, 335, - 332, 0, 370, 0, 0, 0, 337, 0, 352, 393, - 0, 326, 396, 402, 367, 193, 405, 365, 364, 408, - 138, 0, 0, 152, 105, 104, 113, 400, 349, 357, - 96, 355, 144, 134, 164, 382, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, - 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, - 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, - 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 330, 0, 150, 166, - 179, 345, 403, 172, 173, 174, 175, 0, 0, 0, - 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 341, 344, 339, 340, 378, 379, 412, - 413, 414, 394, 336, 0, 342, 343, 0, 398, 381, - 84, 0, 115, 176, 140, 102, 167, 407, 397, 0, - 369, 409, 347, 361, 417, 362, 363, 390, 333, 377, - 132, 359, 0, 350, 328, 356, 329, 348, 371, 100, - 374, 346, 399, 380, 114, 415, 116, 385, 0, 149, - 125, 0, 0, 373, 401, 375, 395, 368, 391, 338, - 384, 410, 360, 388, 411, 0, 0, 0, 81, 0, - 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, - 387, 406, 358, 389, 327, 386, 0, 331, 334, 416, - 404, 353, 354, 0, 0, 0, 0, 0, 0, 0, - 372, 376, 392, 366, 0, 0, 0, 0, 0, 0, - 728, 0, 351, 0, 383, 0, 0, 0, 335, 332, - 0, 370, 0, 0, 0, 337, 0, 352, 393, 0, - 326, 396, 402, 367, 193, 405, 365, 364, 408, 138, - 0, 0, 152, 105, 104, 113, 400, 349, 357, 96, - 355, 144, 134, 164, 382, 135, 143, 117, 156, 139, - 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, - 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, - 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, - 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, - 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, - 107, 127, 126, 128, 0, 330, 0, 150, 166, 179, - 345, 403, 172, 173, 174, 175, 0, 0, 0, 129, - 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, - 165, 148, 341, 344, 339, 340, 378, 379, 412, 413, - 414, 394, 336, 0, 342, 343, 0, 398, 381, 84, - 0, 115, 176, 140, 102, 167, 407, 397, 0, 369, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, + 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 407, 397, 0, 369, 409, 347, 361, 417, 362, 363, 390, 333, 377, 132, 359, 0, 350, 328, 356, 329, 348, 371, 100, 374, 346, 399, 380, 114, 415, 116, 385, 0, 149, 125, 0, 0, 373, 401, 375, 395, 368, 391, 338, 384, 410, 360, 388, 411, 0, 0, 0, 81, 0, 0, - 83, 0, 0, 0, 0, 0, 0, 93, 0, 387, + 83, 839, 0, 0, 0, 0, 0, 93, 0, 387, 406, 358, 389, 327, 386, 0, 331, 334, 416, 404, - 353, 354, 0, 0, 0, 0, 0, 0, 0, 372, + 353, 354, 998, 1151, 0, 0, 0, 0, 0, 372, 376, 392, 366, 0, 0, 0, 0, 0, 0, 0, - 0, 351, 0, 383, 0, 0, 0, 335, 332, 0, + 0, 351, 0, 383, 0, 1158, 0, 335, 332, 0, 370, 0, 0, 0, 337, 0, 352, 393, 0, 326, 396, 402, 367, 193, 405, 365, 364, 408, 138, 0, - 0, 152, 105, 104, 113, 400, 349, 357, 96, 355, + 780, 152, 105, 104, 113, 400, 349, 357, 96, 355, 144, 134, 164, 382, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, @@ -1048,7 +924,7 @@ var yyAct = [...]int{ 399, 380, 114, 415, 116, 385, 0, 149, 125, 0, 0, 373, 401, 375, 395, 368, 391, 338, 384, 410, 360, 388, 411, 0, 0, 0, 81, 0, 0, 83, - 0, 0, 0, 0, 0, 0, 93, 0, 387, 406, + 839, 0, 0, 0, 0, 0, 93, 0, 387, 406, 358, 389, 327, 386, 0, 331, 334, 416, 404, 353, 354, 0, 0, 0, 0, 0, 0, 0, 372, 376, 392, 366, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1060,10 +936,10 @@ var yyAct = [...]int{ 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, - 89, 324, 168, 130, 155, 161, 124, 121, 88, 159, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, 330, 0, 150, 166, 179, 345, 403, - 172, 173, 174, 175, 0, 0, 0, 325, 323, 108, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 341, 344, 339, 340, 378, 379, 412, 413, 414, 394, 336, 0, 342, 343, 0, 398, 381, 84, 0, 115, @@ -1072,7 +948,7 @@ var yyAct = [...]int{ 350, 328, 356, 329, 348, 371, 100, 374, 346, 399, 380, 114, 415, 116, 385, 0, 149, 125, 0, 0, 373, 401, 375, 395, 368, 391, 338, 384, 410, 360, - 388, 411, 0, 0, 0, 81, 0, 0, 83, 0, + 388, 411, 56, 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 387, 406, 358, 389, 327, 386, 0, 331, 334, 416, 404, 353, 354, 0, 0, 0, 0, 0, 0, 0, 372, 376, 392, @@ -1082,13 +958,13 @@ var yyAct = [...]int{ 367, 193, 405, 365, 364, 408, 138, 0, 0, 152, 105, 104, 113, 400, 349, 357, 96, 355, 144, 134, 164, 382, 135, 143, 117, 156, 139, 163, 194, 171, - 154, 170, 85, 153, 597, 94, 146, 0, 0, 0, + 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 324, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, 330, 0, 150, 166, 179, 345, 403, 172, - 173, 174, 175, 0, 0, 0, 325, 323, 108, 147, + 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 341, 344, 339, 340, 378, 379, 412, 413, 414, 394, 336, 0, 342, 343, 0, 398, 381, 84, 0, 115, 176, @@ -1101,269 +977,208 @@ var yyAct = [...]int{ 0, 0, 0, 0, 93, 0, 387, 406, 358, 389, 327, 386, 0, 331, 334, 416, 404, 353, 354, 0, 0, 0, 0, 0, 0, 0, 372, 376, 392, 366, - 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, + 0, 0, 0, 0, 0, 0, 1064, 0, 351, 0, 383, 0, 0, 0, 335, 332, 0, 370, 0, 0, 0, 337, 0, 352, 393, 0, 326, 396, 402, 367, 193, 405, 365, 364, 408, 138, 0, 0, 152, 105, 104, 113, 400, 349, 357, 96, 355, 144, 134, 164, 382, 135, 143, 117, 156, 139, 163, 194, 171, 154, - 170, 85, 153, 315, 94, 146, 0, 0, 0, 87, + 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, - 98, 131, 157, 158, 97, 178, 90, 169, 89, 324, + 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, 330, 0, 150, 166, 179, 345, 403, 172, 173, - 174, 175, 0, 0, 0, 325, 323, 318, 317, 111, + 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 341, 344, 339, 340, 378, 379, 412, 413, 414, 394, 336, 0, 342, 343, 0, 398, 381, 84, 0, 115, 176, 140, - 102, 167, 132, 0, 0, 762, 0, 249, 0, 0, - 0, 100, 0, 247, 0, 0, 114, 288, 116, 0, - 0, 149, 125, 0, 0, 0, 0, 279, 280, 0, - 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, - 81, 274, 267, 266, 269, 270, 271, 272, 0, 0, - 93, 268, 273, 275, 276, 0, 0, 245, 260, 0, - 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 257, 258, 241, 0, 0, 0, 299, 0, 259, 0, - 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 193, 0, 0, 297, - 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, - 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, - 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, - 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, - 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, - 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, - 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, - 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, - 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, - 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, - 145, 95, 165, 148, 289, 298, 295, 296, 293, 294, - 292, 291, 290, 300, 281, 282, 283, 284, 286, 0, - 285, 84, 0, 115, 176, 140, 102, 167, 132, 0, - 0, 0, 0, 249, 0, 0, 0, 100, 0, 247, - 0, 0, 114, 288, 116, 0, 0, 149, 125, 0, - 0, 0, 0, 279, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 0, 0, 81, 274, 267, 266, - 269, 270, 271, 272, 0, 0, 93, 268, 273, 275, - 276, 0, 0, 245, 260, 0, 287, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 257, 258, 1236, 0, - 0, 0, 299, 0, 259, 0, 0, 255, 256, 261, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 193, 0, 0, 297, 0, 138, 0, 0, - 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, - 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, - 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, - 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, - 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, - 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, - 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, - 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, - 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, - 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, - 289, 298, 295, 296, 293, 294, 292, 291, 290, 300, - 281, 282, 283, 284, 286, 0, 285, 84, 0, 115, - 176, 140, 102, 167, 132, 0, 0, 0, 0, 249, - 0, 0, 0, 100, 0, 247, 0, 0, 114, 288, - 116, 0, 0, 149, 125, 0, 0, 0, 0, 279, - 280, 0, 0, 0, 0, 0, 0, 0, 0, 56, - 0, 468, 81, 274, 267, 266, 269, 270, 271, 272, - 0, 0, 93, 268, 273, 275, 276, 0, 0, 245, - 260, 0, 287, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 257, 258, 0, 0, 0, 0, 299, 0, - 259, 0, 0, 255, 256, 261, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 297, 0, 138, 0, 0, 152, 105, 104, 113, - 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, - 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 289, 298, 295, 296, - 293, 294, 292, 291, 290, 300, 281, 282, 283, 284, - 286, 0, 285, 84, 0, 115, 176, 140, 102, 167, - 132, 0, 0, 0, 0, 249, 0, 0, 0, 100, - 0, 247, 0, 0, 114, 288, 116, 0, 0, 149, - 125, 0, 0, 0, 0, 279, 280, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 81, 274, - 267, 266, 269, 270, 271, 272, 0, 0, 93, 268, - 273, 275, 276, 0, 0, 245, 260, 0, 287, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 257, 258, - 241, 0, 0, 0, 299, 0, 259, 0, 0, 255, - 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 193, 0, 0, 297, 0, 138, - 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, - 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, - 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, - 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, - 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, - 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, - 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, - 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, - 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, - 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, - 165, 148, 289, 298, 295, 296, 293, 294, 292, 291, - 290, 300, 281, 282, 283, 284, 286, 0, 285, 84, - 0, 115, 176, 140, 102, 167, 132, 0, 0, 0, - 0, 249, 0, 0, 0, 100, 0, 247, 0, 0, - 114, 288, 116, 0, 0, 149, 125, 0, 0, 0, - 0, 279, 280, 0, 0, 0, 0, 0, 0, 830, - 0, 56, 0, 0, 81, 274, 267, 266, 269, 270, - 271, 272, 0, 0, 93, 268, 273, 275, 276, 0, - 0, 245, 260, 0, 287, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, - 299, 0, 259, 0, 0, 255, 256, 261, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 193, 0, 0, 297, 0, 138, 0, 0, 152, 105, - 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, - 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, - 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, - 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, - 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, - 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, - 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, - 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, - 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, - 118, 141, 177, 133, 145, 95, 165, 148, 289, 298, - 295, 296, 293, 294, 292, 291, 290, 300, 281, 282, - 283, 284, 286, 26, 285, 84, 0, 115, 176, 140, - 102, 167, 0, 0, 0, 132, 0, 0, 0, 0, - 249, 0, 0, 0, 100, 0, 247, 0, 0, 114, - 288, 116, 0, 0, 149, 125, 0, 0, 0, 0, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 0, 0, 81, 274, 267, 266, 269, 270, 271, - 272, 0, 0, 93, 268, 273, 275, 276, 0, 0, - 245, 260, 0, 287, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 258, 0, 0, 0, 0, 299, - 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, - 0, 0, 297, 0, 138, 0, 0, 152, 105, 104, - 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, + 102, 167, 407, 397, 0, 369, 409, 347, 361, 417, + 362, 363, 390, 333, 377, 132, 359, 0, 350, 328, + 356, 329, 348, 371, 100, 374, 346, 399, 380, 114, + 415, 116, 385, 0, 149, 125, 0, 0, 373, 401, + 375, 395, 368, 391, 338, 384, 410, 360, 388, 411, + 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 93, 0, 387, 406, 358, 389, 327, + 386, 0, 331, 334, 416, 404, 353, 354, 0, 0, + 0, 0, 0, 0, 0, 372, 376, 392, 366, 0, + 0, 0, 0, 0, 0, 729, 0, 351, 0, 383, + 0, 0, 0, 335, 332, 0, 370, 0, 0, 0, + 337, 0, 352, 393, 0, 326, 396, 402, 367, 193, + 405, 365, 364, 408, 138, 0, 0, 152, 105, 104, + 113, 400, 349, 357, 96, 355, 144, 134, 164, 382, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, - 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, + 330, 0, 150, 166, 179, 345, 403, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, - 141, 177, 133, 145, 95, 165, 148, 289, 298, 295, - 296, 293, 294, 292, 291, 290, 300, 281, 282, 283, - 284, 286, 0, 285, 84, 0, 115, 176, 140, 102, - 167, 132, 0, 0, 0, 0, 249, 0, 0, 0, - 100, 0, 247, 0, 0, 114, 288, 116, 0, 0, - 149, 125, 0, 0, 0, 0, 279, 280, 0, 0, - 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, - 274, 267, 266, 269, 270, 271, 272, 0, 0, 93, - 268, 273, 275, 276, 0, 0, 245, 260, 0, 287, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, - 258, 0, 0, 0, 0, 299, 0, 259, 0, 0, - 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 297, 0, - 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, - 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, - 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, - 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, - 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, - 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, - 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 289, 298, 295, 296, 293, 294, 292, - 291, 290, 300, 281, 282, 283, 284, 286, 132, 285, - 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, - 0, 0, 114, 288, 116, 0, 0, 149, 125, 0, - 0, 0, 0, 279, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 0, 0, 81, 274, 267, 266, - 269, 270, 271, 272, 0, 0, 93, 268, 273, 275, - 276, 0, 0, 0, 260, 0, 287, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 257, 258, 0, 0, - 0, 0, 299, 0, 259, 0, 0, 255, 256, 261, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 193, 0, 0, 297, 0, 138, 0, 0, - 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, - 134, 164, 1326, 135, 143, 117, 156, 139, 163, 194, - 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, - 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, - 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, - 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, - 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, - 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, - 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, - 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, - 289, 298, 295, 296, 293, 294, 292, 291, 290, 300, - 281, 282, 283, 284, 286, 132, 285, 84, 0, 115, - 176, 140, 102, 167, 100, 0, 0, 0, 0, 114, - 288, 116, 0, 0, 149, 125, 0, 0, 0, 0, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 0, 0, 81, 274, 267, 266, 269, 270, 271, - 272, 0, 0, 93, 268, 273, 275, 276, 0, 0, - 0, 260, 0, 287, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 258, 0, 0, 0, 0, 299, - 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, - 0, 0, 297, 0, 138, 0, 0, 152, 105, 104, - 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, - 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, - 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, - 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, - 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, - 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, - 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, - 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, - 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, - 141, 177, 133, 145, 95, 165, 148, 289, 298, 295, - 296, 293, 294, 292, 291, 290, 300, 281, 282, 283, - 284, 286, 132, 285, 84, 0, 115, 176, 140, 102, - 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, - 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 141, 177, 133, 145, 95, 165, 148, 341, 344, 339, + 340, 378, 379, 412, 413, 414, 394, 336, 0, 342, + 343, 0, 398, 381, 84, 0, 115, 176, 140, 102, + 167, 407, 397, 0, 369, 409, 347, 361, 417, 362, + 363, 390, 333, 377, 132, 359, 0, 350, 328, 356, + 329, 348, 371, 100, 374, 346, 399, 380, 114, 415, + 116, 385, 0, 149, 125, 0, 0, 373, 401, 375, + 395, 368, 391, 338, 384, 410, 360, 388, 411, 0, + 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 93, 0, 387, 406, 358, 389, 327, 386, + 0, 331, 334, 416, 404, 353, 354, 0, 0, 0, + 0, 0, 0, 0, 372, 376, 392, 366, 0, 0, + 0, 0, 0, 0, 0, 0, 351, 0, 383, 0, + 0, 0, 335, 332, 0, 370, 0, 0, 0, 337, + 0, 352, 393, 0, 326, 396, 402, 367, 193, 405, + 365, 364, 408, 138, 0, 0, 152, 105, 104, 113, + 400, 349, 357, 96, 355, 144, 134, 164, 382, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 330, + 0, 150, 166, 179, 345, 403, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 341, 344, 339, 340, + 378, 379, 412, 413, 414, 394, 336, 0, 342, 343, + 0, 398, 381, 84, 0, 115, 176, 140, 102, 167, + 407, 397, 0, 369, 409, 347, 361, 417, 362, 363, + 390, 333, 377, 132, 359, 0, 350, 328, 356, 329, + 348, 371, 100, 374, 346, 399, 380, 114, 415, 116, + 385, 0, 149, 125, 0, 0, 373, 401, 375, 395, + 368, 391, 338, 384, 410, 360, 388, 411, 0, 0, + 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 93, 0, 387, 406, 358, 389, 327, 386, 0, + 331, 334, 416, 404, 353, 354, 0, 0, 0, 0, + 0, 0, 0, 372, 376, 392, 366, 0, 0, 0, + 0, 0, 0, 0, 0, 351, 0, 383, 0, 0, + 0, 335, 332, 0, 370, 0, 0, 0, 337, 0, + 352, 393, 0, 326, 396, 402, 367, 193, 405, 365, + 364, 408, 138, 0, 0, 152, 105, 104, 113, 400, + 349, 357, 96, 355, 144, 134, 164, 382, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 324, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 330, 0, + 150, 166, 179, 345, 403, 172, 173, 174, 175, 0, + 0, 0, 325, 323, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 341, 344, 339, 340, 378, + 379, 412, 413, 414, 394, 336, 0, 342, 343, 0, + 398, 381, 84, 0, 115, 176, 140, 102, 167, 407, + 397, 0, 369, 409, 347, 361, 417, 362, 363, 390, + 333, 377, 132, 359, 0, 350, 328, 356, 329, 348, + 371, 100, 374, 346, 399, 380, 114, 415, 116, 385, + 0, 149, 125, 0, 0, 373, 401, 375, 395, 368, + 391, 338, 384, 410, 360, 388, 411, 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 501, 500, 510, 511, - 503, 504, 505, 506, 507, 508, 509, 502, 0, 0, - 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, - 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, - 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, - 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, + 93, 0, 387, 406, 358, 389, 327, 386, 0, 331, + 334, 416, 404, 353, 354, 0, 0, 0, 0, 0, + 0, 0, 372, 376, 392, 366, 0, 0, 0, 0, + 0, 0, 0, 0, 351, 0, 383, 0, 0, 0, + 335, 332, 0, 370, 0, 0, 0, 337, 0, 352, + 393, 0, 326, 396, 402, 367, 193, 405, 365, 364, + 408, 138, 0, 0, 152, 105, 104, 113, 400, 349, + 357, 96, 355, 144, 134, 164, 382, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 597, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, - 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, + 97, 178, 90, 169, 89, 324, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, - 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, - 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, - 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, - 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, - 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, - 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, - 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, - 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, + 119, 137, 107, 127, 126, 128, 0, 330, 0, 150, + 166, 179, 345, 403, 172, 173, 174, 175, 0, 0, + 0, 325, 323, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 341, 344, 339, 340, 378, 379, + 412, 413, 414, 394, 336, 0, 342, 343, 0, 398, + 381, 84, 0, 115, 176, 140, 102, 167, 407, 397, + 0, 369, 409, 347, 361, 417, 362, 363, 390, 333, + 377, 132, 359, 0, 350, 328, 356, 329, 348, 371, + 100, 374, 346, 399, 380, 114, 415, 116, 385, 0, + 149, 125, 0, 0, 373, 401, 375, 395, 368, 391, + 338, 384, 410, 360, 388, 411, 0, 0, 0, 81, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, + 0, 387, 406, 358, 389, 327, 386, 0, 331, 334, + 416, 404, 353, 354, 0, 0, 0, 0, 0, 0, + 0, 372, 376, 392, 366, 0, 0, 0, 0, 0, + 0, 0, 0, 351, 0, 383, 0, 0, 0, 335, + 332, 0, 370, 0, 0, 0, 337, 0, 352, 393, + 0, 326, 396, 402, 367, 193, 405, 365, 364, 408, + 138, 0, 0, 152, 105, 104, 113, 400, 349, 357, + 96, 355, 144, 134, 164, 382, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 315, 94, + 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, + 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, + 178, 90, 169, 89, 324, 168, 130, 155, 161, 124, + 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, + 137, 107, 127, 126, 128, 0, 330, 0, 150, 166, + 179, 345, 403, 172, 173, 174, 175, 0, 0, 0, + 325, 323, 318, 317, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 341, 344, 339, 340, 378, 379, 412, + 413, 414, 394, 336, 0, 342, 343, 0, 398, 381, + 84, 0, 115, 176, 140, 102, 167, 132, 0, 0, + 763, 0, 249, 0, 0, 0, 100, 0, 247, 0, + 0, 114, 288, 116, 0, 0, 149, 125, 0, 0, + 0, 0, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 81, 274, 267, 266, 269, + 270, 271, 272, 0, 0, 93, 268, 273, 275, 276, + 0, 0, 245, 260, 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 257, 258, 241, 0, 0, + 0, 299, 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 193, 0, 0, 297, 0, 138, 0, 0, 152, + 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, + 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, + 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, + 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, + 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, + 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, + 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, + 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 289, + 298, 295, 296, 293, 294, 292, 291, 290, 300, 281, + 282, 283, 284, 286, 0, 285, 84, 0, 115, 176, + 140, 102, 167, 132, 0, 0, 0, 0, 249, 0, + 0, 0, 100, 0, 247, 0, 0, 114, 288, 116, + 0, 0, 149, 125, 0, 0, 0, 0, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 0, 81, 274, 267, 266, 269, 270, 271, 272, 0, + 0, 93, 268, 273, 275, 276, 0, 0, 245, 260, + 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 257, 258, 1237, 0, 0, 0, 299, 0, 259, + 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 297, 0, 138, 0, 0, 152, 105, 104, 113, 0, + 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, + 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 289, 298, 295, 296, 293, + 294, 292, 291, 290, 300, 281, 282, 283, 284, 286, + 0, 285, 84, 0, 115, 176, 140, 102, 167, 132, + 0, 0, 0, 0, 249, 0, 0, 0, 100, 0, + 247, 0, 0, 114, 288, 116, 0, 0, 149, 125, + 0, 0, 0, 0, 279, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 468, 81, 274, 267, + 266, 269, 270, 271, 272, 0, 0, 93, 268, 273, + 275, 276, 0, 0, 245, 260, 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 78, 0, 73, 0, 0, 0, 79, 138, 0, + 0, 0, 0, 0, 0, 0, 0, 257, 258, 0, + 0, 0, 0, 299, 0, 259, 0, 0, 255, 256, + 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 0, 0, 297, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, - 75, 171, 154, 170, 85, 153, 162, 94, 146, 0, + 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, @@ -1371,20 +1186,20 @@ var yyAct = [...]int{ 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, - 148, 0, 76, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, - 115, 176, 140, 102, 167, 132, 0, 0, 0, 490, - 0, 0, 0, 0, 100, 0, 0, 0, 0, 114, - 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 93, 0, 0, 0, 0, 487, 486, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 488, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 148, 289, 298, 295, 296, 293, 294, 292, 291, 290, + 300, 281, 282, 283, 284, 286, 0, 285, 84, 0, + 115, 176, 140, 102, 167, 132, 0, 0, 0, 0, + 249, 0, 0, 0, 100, 0, 247, 0, 0, 114, + 288, 116, 0, 0, 149, 125, 0, 0, 0, 0, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 0, 0, 81, 274, 267, 266, 269, 270, 271, + 272, 0, 0, 93, 268, 273, 275, 276, 0, 0, + 245, 260, 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 257, 258, 241, 0, 0, 0, 299, + 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, - 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, + 0, 0, 297, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, @@ -1394,170 +1209,310 @@ var yyAct = [...]int{ 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, - 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 0, 84, 0, 115, 176, 140, 102, - 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, - 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, - 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 141, 177, 133, 145, 95, 165, 148, 289, 298, 295, + 296, 293, 294, 292, 291, 290, 300, 281, 282, 283, + 284, 286, 0, 285, 84, 0, 115, 176, 140, 102, + 167, 132, 0, 0, 0, 0, 249, 0, 0, 0, + 100, 0, 247, 0, 0, 114, 288, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 279, 280, 0, 0, + 0, 0, 0, 0, 831, 0, 56, 0, 0, 81, + 274, 267, 266, 269, 270, 271, 272, 0, 0, 93, + 268, 273, 275, 276, 0, 0, 245, 260, 0, 287, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, + 258, 0, 0, 0, 0, 299, 0, 259, 0, 0, + 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 0, 0, 297, 0, + 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, + 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, + 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, + 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, + 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, + 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, + 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, + 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, + 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, + 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, + 95, 165, 148, 289, 298, 295, 296, 293, 294, 292, + 291, 290, 300, 281, 282, 283, 284, 286, 26, 285, + 84, 0, 115, 176, 140, 102, 167, 0, 0, 0, + 132, 0, 0, 0, 0, 249, 0, 0, 0, 100, + 0, 247, 0, 0, 114, 288, 116, 0, 0, 149, + 125, 0, 0, 0, 0, 279, 280, 0, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 81, 274, + 267, 266, 269, 270, 271, 272, 0, 0, 93, 268, + 273, 275, 276, 0, 0, 245, 260, 0, 287, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 258, + 0, 0, 0, 0, 299, 0, 259, 0, 0, 255, + 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 0, 297, 0, 138, + 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, + 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 289, 298, 295, 296, 293, 294, 292, 291, + 290, 300, 281, 282, 283, 284, 286, 0, 285, 84, + 0, 115, 176, 140, 102, 167, 132, 0, 0, 0, + 0, 249, 0, 0, 0, 100, 0, 247, 0, 0, + 114, 288, 116, 0, 0, 149, 125, 0, 0, 0, + 0, 279, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 81, 274, 267, 266, 269, 270, + 271, 272, 0, 0, 93, 268, 273, 275, 276, 0, + 0, 245, 260, 0, 287, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, + 299, 0, 259, 0, 0, 255, 256, 261, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 193, 0, 0, 297, 0, 138, 0, 0, 152, 105, + 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, + 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, + 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, + 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, + 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, + 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, + 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, + 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, + 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, + 118, 141, 177, 133, 145, 95, 165, 148, 289, 298, + 295, 296, 293, 294, 292, 291, 290, 300, 281, 282, + 283, 284, 286, 132, 285, 84, 0, 115, 176, 140, + 102, 167, 100, 0, 0, 0, 0, 114, 288, 116, + 0, 0, 149, 125, 0, 0, 0, 0, 279, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 0, 81, 274, 267, 266, 269, 270, 271, 272, 0, + 0, 93, 268, 273, 275, 276, 0, 0, 0, 260, + 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 257, 258, 0, 0, 0, 0, 299, 0, 259, + 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 297, 0, 138, 0, 0, 152, 105, 104, 113, 0, + 0, 0, 96, 0, 144, 134, 164, 1327, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, + 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 289, 298, 295, 296, 293, + 294, 292, 291, 290, 300, 281, 282, 283, 284, 286, + 132, 285, 84, 0, 115, 176, 140, 102, 167, 100, + 0, 0, 0, 0, 114, 288, 116, 0, 0, 149, + 125, 0, 0, 0, 0, 279, 280, 0, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 81, 274, + 267, 266, 269, 270, 271, 272, 0, 0, 93, 268, + 273, 275, 276, 0, 0, 0, 260, 0, 287, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 258, + 0, 0, 0, 0, 299, 0, 259, 0, 0, 255, + 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 0, 297, 0, 138, + 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, + 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 289, 298, 295, 296, 293, 294, 292, 291, + 290, 300, 281, 282, 283, 284, 286, 132, 285, 84, + 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, + 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 501, 500, 510, 511, 503, 504, 505, 506, 507, + 508, 509, 502, 0, 0, 512, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, + 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, + 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, + 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, + 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, + 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, + 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, + 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, + 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 132, 0, 84, 0, 115, 176, + 140, 102, 167, 100, 0, 0, 0, 0, 114, 0, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 93, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, - 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, - 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, - 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, - 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, - 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, - 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, - 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, - 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, - 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, - 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, - 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, - 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, - 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, - 83, 715, 0, 0, 716, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 77, 78, 0, 73, 0, + 0, 0, 79, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, + 143, 117, 156, 139, 163, 75, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 84, 0, 115, 176, 140, 102, 167, + 132, 0, 0, 0, 490, 0, 0, 0, 0, 100, + 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, + 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, + 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, + 0, 0, 0, 487, 486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, - 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, - 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, - 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, - 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, - 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, - 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, - 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, - 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, - 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, - 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, - 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, - 115, 176, 140, 102, 167, 132, 0, 0, 0, 587, - 0, 0, 0, 0, 100, 0, 0, 0, 0, 114, - 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, + 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, + 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 0, 0, 0, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, + 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, + 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, - 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, - 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, - 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, - 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, - 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, - 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, - 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, - 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, - 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, - 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, - 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 0, 84, 0, 115, 176, 140, 102, - 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, - 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, - 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, + 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, + 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, + 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, + 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, + 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, + 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, + 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, + 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 132, 0, 84, 0, 115, 176, + 140, 102, 167, 100, 0, 0, 0, 0, 114, 0, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 83, 716, 0, 0, 717, + 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, - 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, - 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, - 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, - 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, - 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, - 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, - 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, - 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, - 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, - 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, - 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, - 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, - 605, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, - 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 84, 0, 115, 176, 140, 102, 167, + 132, 0, 0, 0, 587, 0, 0, 0, 0, 100, + 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, + 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, + 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, - 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, - 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, - 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, - 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, - 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, - 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, - 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, - 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, - 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, - 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, - 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, - 115, 176, 140, 102, 167, 132, 0, 0, 0, 587, - 0, 0, 0, 0, 100, 0, 0, 0, 0, 114, - 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, + 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, + 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, + 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, + 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, - 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, - 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, - 585, 143, 117, 156, 139, 163, 194, 171, 154, 170, - 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, - 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, - 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, - 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, - 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, - 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, - 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, - 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 132, 84, 0, 115, 176, 140, 102, - 167, 565, 100, 0, 0, 0, 0, 114, 0, 116, - 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, + 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, + 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, + 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, + 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, + 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, + 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, + 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, + 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, + 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, + 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, + 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, - 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 132, 0, 84, 0, 115, 176, + 140, 102, 167, 100, 0, 605, 0, 0, 114, 0, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, - 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, - 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, - 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, - 0, 0, 0, 310, 0, 0, 0, 0, 0, 0, - 132, 0, 84, 0, 115, 176, 140, 102, 167, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 84, 0, 115, 176, 140, 102, 167, + 132, 0, 0, 0, 587, 0, 0, 0, 0, 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, @@ -1569,7 +1524,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, - 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 0, 144, 134, 164, 0, 585, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, @@ -1579,64 +1534,110 @@ var yyAct = [...]int{ 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, - 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, - 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 132, 84, + 0, 115, 176, 140, 102, 167, 565, 100, 0, 0, + 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, + 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 193, 0, 0, 0, 0, 138, 0, 0, + 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, + 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, + 0, 0, 0, 0, 0, 132, 0, 84, 0, 115, + 176, 140, 102, 167, 100, 0, 0, 0, 0, 114, + 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, + 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, + 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, + 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, + 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, + 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, + 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, + 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, + 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, + 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, + 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, - 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 132, 0, 84, 0, 115, 176, 140, 102, + 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, + 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, - 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, - 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, - 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, - 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, - 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, - 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, - 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, - 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, - 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 132, 0, 84, 0, 115, 176, - 140, 102, 167, 100, 0, 0, 0, 0, 114, 0, - 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 0, 193, 0, 0, 0, + 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, + 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, + 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, + 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, + 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, + 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, + 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, + 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, + 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, - 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, - 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 0, 115, 176, 140, 102, 167, + 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, + 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, + 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, + 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, + 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, + 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, + 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, + 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, + 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, + 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, + 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, + 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 115, 176, 140, 102, 167, } var yyPact = [...]int{ - 94, -1000, -183, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 136, -1000, -184, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 891, 915, -1000, -1000, -1000, -1000, - -1000, -1000, 672, 6761, 115, 125, 7, 9059, 124, 184, - 9286, -1000, -9, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -15, 9286, 500, 589, -1000, -1000, -1000, -1000, -1000, 879, - 889, 654, 871, 763, -1000, 5142, 75, 7914, 8832, 4198, - -1000, 497, 120, 9286, -150, 9286, 73, 73, 73, -1000, + -1000, -1000, -1000, -1000, 886, 920, -1000, -1000, -1000, -1000, + -1000, -1000, 687, 6766, 86, 105, 16, 9064, 101, 305, + 9291, -1000, 17, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 6, 9291, 522, 604, -1000, -1000, -1000, -1000, -1000, 870, + 879, 686, 846, 782, -1000, 5147, 70, 7919, 8837, 4203, + -1000, 511, 98, 9291, -148, 9291, 67, 67, 67, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1647,21 +1648,21 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 116, 9286, -1000, 9286, 63, 494, 63, 63, 63, 9286, - -1000, 158, -1000, -1000, -1000, 9286, 475, 817, 67, 2704, - 2704, 2704, 2704, 26, 2704, -104, -94, 696, -1000, -1000, - -1000, -1000, 2704, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 9286, 873, 674, 406, 813, 5853, 5853, - 891, -1000, 589, -1000, -1000, -1000, 799, -1000, -1000, 291, - 902, -1000, 6997, 157, -1000, 5853, 1758, 608, 608, 608, - 144, 314, -1000, -1000, -1000, 6307, 6307, 6307, 6307, 6307, - 6307, 6307, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5617, 608, - 608, 608, 608, 608, 608, 608, 608, 5853, 608, 608, - 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, - 608, 8605, 571, 782, -1000, -1000, -1000, 864, 7224, 8377, - 9286, 553, -1000, 603, 3949, -101, -1000, -1000, -1000, 236, - 8141, -1000, -1000, -1000, 811, -1000, -1000, -1000, -1000, -1000, + 100, 9291, -1000, 9291, 66, 509, 66, 66, 66, 9291, + -1000, 146, -1000, -1000, -1000, 9291, 501, 815, 75, 2709, + 2709, 2709, 2709, 22, 2709, -88, -74, 701, -1000, -1000, + -1000, -1000, 2709, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 9291, 889, 690, 384, 817, 5858, 5858, + 886, -1000, 604, -1000, -1000, -1000, 809, -1000, -1000, 266, + 905, -1000, 7002, 135, -1000, 5858, 1690, 469, 469, 469, + 125, 302, -1000, -1000, -1000, 6312, 6312, 6312, 6312, 6312, + 6312, 6312, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5622, 469, + 469, 469, 469, 469, 469, 469, 469, 5858, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, + 469, 8610, 625, 726, -1000, -1000, -1000, 843, 7229, 8382, + 9291, 633, -1000, 619, 3954, -101, -1000, -1000, -1000, 206, + 8146, -1000, -1000, -1000, 811, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1670,121 +1671,121 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 493, -1000, - 1614, 471, 2704, 90, 613, 469, 245, 445, 9286, 9286, - 2704, 81, 9286, 860, 690, 9286, 438, 428, -1000, 3451, - -1000, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, -1000, - -1000, -1000, -1000, -1000, -1000, 2704, 2704, -1000, -108, -40, - -1000, 9286, -1000, -1000, 105, 105, 9286, -1000, -1000, -1000, - 908, 183, 436, 156, 604, -1000, 381, 879, 406, 763, - 7451, 715, -1000, -1000, 9286, -1000, 5853, 5853, 345, -1000, - 9286, -1000, 3202, 195, 6307, 346, 237, 6307, 6307, 6307, - 6307, 6307, 6307, 6307, 6307, 6307, 6307, 6307, 6307, 6307, - 6307, 6307, 366, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 426, 4434, -1000, 589, 625, 625, -1000, -1000, 174, - 174, 174, 174, 174, 174, 6534, 406, 489, 253, 5617, - 5142, 5142, 5853, 5853, 9286, 9286, 5142, 872, 218, 253, - 9286, -1000, 406, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 5142, 5142, 5142, 5142, 143, 9286, -1000, 9286, 7914, 7914, - 7914, 7914, 7914, -1000, 731, 730, -1000, 710, 707, 767, - 9286, -1000, 487, 7224, 168, 608, -1000, 9286, -1000, 43, - 522, 7914, 9286, -1000, -1000, 3700, 603, -101, 587, -1000, - -112, -119, 5378, 169, -1000, -1000, -1000, 2455, 163, 302, - -75, -1000, -1000, -1000, 614, -1000, 614, 614, 614, 614, - -48, -48, -48, -48, -1000, -1000, -1000, -1000, -1000, 671, - 648, -1000, 614, 614, 614, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 535, -1000, + 1702, 499, 2709, 92, 643, 492, 239, 488, 9291, 9291, + 2709, 81, 9291, 841, 700, 9291, 485, 474, -1000, 3456, + -1000, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, -1000, + -1000, -1000, -1000, -1000, -1000, 2709, 2709, -1000, -90, -69, + -1000, 9291, -1000, -1000, 93, 93, 9291, -1000, -1000, -1000, + 915, 167, 466, 132, 628, -1000, 455, 870, 384, 782, + 7456, 712, -1000, -1000, 9291, -1000, 5858, 5858, 419, -1000, + 9291, -1000, 3207, 172, 6312, 283, 244, 6312, 6312, 6312, + 6312, 6312, 6312, 6312, 6312, 6312, 6312, 6312, 6312, 6312, + 6312, 6312, 323, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 467, 4439, -1000, 604, 981, 981, -1000, -1000, 151, + 151, 151, 151, 151, 151, 6539, 384, 528, 229, 5622, + 5147, 5147, 5858, 5858, 9291, 9291, 5147, 848, 214, 229, + 9291, -1000, 384, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 5147, 5147, 5147, 5147, 154, 9291, -1000, 9291, 7919, 7919, + 7919, 7919, 7919, -1000, 759, 757, -1000, 760, 758, 775, + 9291, -1000, 520, 7229, 149, 469, -1000, 9291, -1000, 45, + 545, 7919, 9291, -1000, -1000, 3705, 619, -101, 606, -1000, + -94, -127, 5383, 140, -1000, -1000, -1000, 2460, 199, 250, + -56, -1000, -1000, -1000, 605, -1000, 605, 605, 605, 605, + -22, -22, -22, -22, -1000, -1000, -1000, -1000, -1000, 675, + 672, -1000, 605, 605, 605, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 641, 641, 641, 616, 616, 618, -1000, 9286, -167, - 424, 2704, 859, 2704, -1000, 79, -1000, 9286, -1000, -1000, - 9286, 2704, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 251, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 602, - -1000, -1000, 768, 5853, 5853, 3451, 5853, -1000, -1000, -1000, - 813, -1000, 872, 883, -1000, 805, 798, 5142, -1000, -1000, - 195, 215, -1000, -1000, 351, -1000, -1000, -1000, -1000, 153, - 608, -1000, -1000, 1647, -1000, -1000, -1000, -1000, 346, 6307, - 6307, 6307, 617, 1647, 1849, 755, 1314, 174, 287, 287, - 166, 166, 166, 166, 166, 249, 249, -1000, -1000, -1000, - 406, 406, 5142, 594, -1000, 314, -1000, 314, -1000, -1000, - 5853, -1000, 406, 483, 483, 329, 266, 636, -1000, 151, - 635, 483, 5142, 292, -1000, 5853, 406, -1000, 483, 406, - 483, 483, 529, 795, 608, -1000, 585, -1000, 227, 782, - 653, 687, 1057, -1000, -1000, -1000, -1000, 717, -1000, 708, - -1000, -1000, -1000, -1000, -1000, 111, 110, 104, 9286, -1000, - 900, 7914, 568, -1000, -1000, 587, -101, -111, -1000, -1000, - -1000, 253, -1000, 376, 580, 2206, -1000, -1000, -1000, -1000, - -1000, 622, 842, 192, 214, 421, -1000, -1000, 833, -1000, - 261, -77, -1000, -1000, 368, -48, -48, -1000, -1000, 169, - 810, 169, 169, 169, 396, 396, -1000, -1000, -1000, -1000, - 367, -1000, -1000, -1000, 364, -1000, 686, 9286, 2704, -1000, - 3451, -1000, -1000, -1000, -1000, -1000, -1000, 1313, 383, 199, + -1000, 659, 659, 659, 631, 631, 689, -1000, 9291, -168, + 439, 2709, 838, 2709, -1000, 63, -1000, 9291, -1000, -1000, + 9291, 2709, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 248, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 42, -1000, 2704, -1000, 264, 9286, 9286, 9286, 774, - 253, 253, 147, -1000, -1000, 9286, -1000, -1000, -1000, -1000, - 612, -1000, -1000, -1000, 2953, 5142, -1000, 617, 1647, 1812, - -1000, 6307, 6307, -1000, -1000, 483, 5142, 253, -1000, -1000, - -1000, 300, 366, 300, 6307, 6307, 3451, 6307, 6307, -161, - 572, 216, -1000, 5853, 228, -1000, -1000, -1000, -1000, -1000, - 685, 9286, 608, -1000, 7224, -1000, 9286, 891, 9286, 5853, - 5853, -1000, -1000, 5853, 621, -1000, 5853, -1000, -1000, -1000, - 608, 608, 608, 443, -1000, 891, 568, -1000, -1000, -1000, - -124, -131, -1000, -1000, -1000, 2455, -1000, 2455, 9286, -1000, - 419, 412, -1000, -1000, 676, 106, -1000, -1000, -1000, 505, - 169, 169, -1000, 170, -1000, -1000, -1000, 479, -1000, 466, - 575, 464, 9286, -1000, -1000, 557, -1000, 220, -1000, -1000, - 9286, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 9286, 9286, -1000, -1000, -1000, -1000, -1000, - 9286, -1000, -1000, 392, 5853, -1000, -1000, -1000, -1000, 3451, - -1000, 900, 7914, -1000, -1000, 406, -1000, 6307, 1647, 1647, - -1000, -1000, 406, 614, 614, -1000, 614, 616, -1000, 614, - -24, 614, -30, 608, 406, 406, 1412, 1797, -1000, 667, - 1436, 608, -158, -1000, 253, 5853, -181, 847, 507, 536, - -1000, -1000, 4906, 406, 462, 139, 443, 879, -1000, 253, - 253, 253, 9286, 253, 9286, 9286, 9286, 7687, 9286, 879, - -1000, -1000, -1000, -1000, 2206, -1000, 433, -1000, 614, -1000, - -1000, -71, 906, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -48, 391, -48, 352, -1000, 342, - 2704, 3451, 2455, -1000, 610, -1000, -1000, -1000, -1000, 851, - -1000, 253, 898, 546, -1000, 1647, -1000, -1000, 78, -1000, - -1000, -1000, -1000, -1000, -1000, 322, -1000, -1000, -1000, 6307, - 6307, -1000, 6307, 6307, 6307, 406, 382, 253, -1000, 4670, - 840, -1000, 608, -1000, -1000, 577, 9286, 9286, -1000, -1000, - 416, -1000, 411, 411, 411, 168, -1000, -1000, 140, 9286, - -1000, 152, -1000, -135, 169, -1000, 169, 444, 434, -1000, - -1000, -1000, 9286, 608, 896, 887, -1000, -1000, 406, 1567, - 1567, 1567, 1567, 57, -1000, -1000, -1000, 535, 905, -1000, - 608, -1000, 589, 136, -1000, 9286, -1000, -1000, -1000, -1000, - -1000, 140, -1000, 370, 213, 379, -1000, 274, 839, -1000, - 836, -1000, -1000, -1000, -1000, -1000, 409, 40, -1000, 5853, - 5853, -1000, -1000, -1000, -1000, -1000, 406, 37, -171, 9286, - 536, 406, 9286, -1000, -1000, -1000, 319, -1000, -1000, -1000, - 375, -1000, -1000, 613, 405, -1000, 9286, 253, 535, -1000, - 771, -165, -175, 513, -1000, -1000, -1000, -1000, -167, -1000, - 40, 780, -1000, 759, -1000, -1000, -1000, 25, -169, 22, - -173, 608, -177, 6080, -1000, 1567, 406, -1000, -1000, + 609, -1000, -1000, 789, 5858, 5858, 3456, 5858, -1000, -1000, + -1000, 817, -1000, 848, 862, -1000, 801, 799, 5147, -1000, + -1000, 172, 192, -1000, -1000, 275, -1000, -1000, -1000, -1000, + 131, 469, -1000, -1000, 1614, -1000, -1000, -1000, -1000, 283, + 6312, 6312, 6312, 256, 1614, 1650, 408, 1731, 151, 370, + 370, 175, 175, 175, 175, 175, 660, 660, -1000, -1000, + -1000, 384, 384, 5147, 607, -1000, 302, -1000, 302, -1000, + -1000, 5858, -1000, 384, 508, 508, 363, 468, 654, -1000, + 128, 600, 508, 5147, 245, -1000, 5858, 384, -1000, 508, + 384, 508, 508, 636, 796, 469, -1000, 694, -1000, 205, + 726, 642, 699, 1209, -1000, -1000, -1000, -1000, 731, -1000, + 723, -1000, -1000, -1000, -1000, -1000, 97, 95, 94, 9291, + -1000, 903, 7919, 586, -1000, -1000, 606, -101, -99, -1000, + -1000, -1000, 229, -1000, 360, 594, 2211, -1000, -1000, -1000, + -1000, -1000, 638, 827, 183, 184, 405, -1000, -1000, 820, + -1000, 262, -59, -1000, -1000, 349, -22, -22, -1000, -1000, + 140, 808, 140, 140, 140, 369, 369, -1000, -1000, -1000, + -1000, 348, -1000, -1000, -1000, 335, -1000, 698, 9291, 2709, + -1000, 3456, -1000, -1000, -1000, -1000, -1000, -1000, 682, 271, + 246, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 44, -1000, 2709, -1000, 257, 9291, 9291, 9291, + 779, 229, 229, 123, -1000, -1000, 9291, -1000, -1000, -1000, + -1000, 593, -1000, -1000, -1000, 2958, 5147, -1000, 256, 1614, + 1585, -1000, 6312, 6312, -1000, -1000, 508, 5147, 229, -1000, + -1000, -1000, 56, 323, 56, 6312, 6312, 3456, 6312, 6312, + -162, 570, 208, -1000, 5858, 333, -1000, -1000, -1000, -1000, + -1000, 696, 9291, 469, -1000, 7229, -1000, 9291, 886, 9291, + 5858, 5858, -1000, -1000, 5858, 635, -1000, 5858, -1000, -1000, + -1000, 469, 469, 469, 444, -1000, 886, 586, -1000, -1000, + -1000, -119, -132, -1000, -1000, -1000, 2460, -1000, 2460, 9291, + -1000, 402, 394, -1000, -1000, 692, 108, -1000, -1000, -1000, + 445, 140, 140, -1000, 207, -1000, -1000, -1000, 505, -1000, + 498, 581, 480, 9291, -1000, -1000, 572, -1000, 202, -1000, + -1000, 9291, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 9291, 9291, -1000, -1000, -1000, -1000, + -1000, 9291, -1000, -1000, 368, 5858, -1000, -1000, -1000, -1000, + 3456, -1000, 903, 7919, -1000, -1000, 384, -1000, 6312, 1614, + 1614, -1000, -1000, 384, 605, 605, -1000, 605, 631, -1000, + 605, -2, 605, -4, 469, 384, 384, 1337, 1569, -1000, + 621, 1435, 469, -159, -1000, 229, 5858, -182, 829, 558, + 549, -1000, -1000, 4911, 384, 478, 119, 444, 870, -1000, + 229, 229, 229, 9291, 229, 9291, 9291, 9291, 7692, 9291, + 870, -1000, -1000, -1000, -1000, 2211, -1000, 428, -1000, 605, + -1000, -1000, -52, 913, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -22, 365, -22, 317, -1000, + 311, 2709, 3456, 2460, -1000, 523, -1000, -1000, -1000, -1000, + 831, -1000, 229, 894, 571, -1000, 1614, -1000, -1000, 104, + -1000, -1000, -1000, -1000, -1000, -1000, 310, -1000, -1000, -1000, + 6312, 6312, -1000, 6312, 6312, 6312, 384, 351, 229, -1000, + 4675, 826, -1000, 469, -1000, -1000, 637, 9291, 9291, -1000, + -1000, 423, -1000, 409, 409, 409, 149, -1000, -1000, 165, + 9291, -1000, 181, -1000, -137, 140, -1000, 140, 420, 410, + -1000, -1000, -1000, 9291, 469, 890, 878, -1000, -1000, 384, + 1408, 1408, 1408, 1408, 15, -1000, -1000, -1000, 537, 909, + -1000, 469, -1000, 604, 116, -1000, 9291, -1000, -1000, -1000, + -1000, -1000, 165, -1000, 385, 201, 334, -1000, 247, 825, + -1000, 823, -1000, -1000, -1000, -1000, -1000, 399, 43, -1000, + 5858, 5858, -1000, -1000, -1000, -1000, -1000, 384, 36, -171, + 9291, 549, 384, 9291, -1000, -1000, -1000, 308, -1000, -1000, + -1000, 324, -1000, -1000, 643, 383, -1000, 9291, 229, 537, + -1000, 769, -166, -175, 526, -1000, -1000, -1000, -1000, -168, + -1000, 43, 795, -1000, 764, -1000, -1000, -1000, 35, -169, + 24, -172, 469, -179, 6085, -1000, 1408, 384, -1000, -1000, } var yyPgo = [...]int{ - 0, 1175, 25, 63, 1174, 1173, 1172, 921, 1169, 1168, - 1163, 1161, 1160, 1158, 1155, 1149, 1148, 1147, 1146, 1145, - 1144, 1143, 1141, 1140, 1139, 1136, 1135, 109, 1134, 1132, - 1122, 58, 1114, 60, 1112, 1111, 28, 807, 29, 50, - 35, 1110, 20, 71, 82, 1106, 42, 1103, 1097, 66, - 1094, 57, 1092, 1091, 1269, 1088, 1085, 10, 16, 1084, - 1080, 1077, 1076, 59, 473, 1074, 1072, 1071, 1070, 1069, - 1062, 44, 3, 6, 7, 13, 1061, 107, 53, 1059, - 33, 1058, 1057, 1056, 1054, 40, 1053, 47, 1052, 22, - 39, 1046, 11, 55, 27, 21, 24, 65, 51, 1043, - 19, 54, 36, 1042, 1041, 391, 1040, 1039, 1038, 1037, - 1036, 1033, 179, 330, 1032, 1030, 1029, 1028, 46, 1027, - 0, 554, 61, 1025, 1024, 1021, 1055, 62, 56, 15, - 1019, 43, 171, 23, 1018, 1017, 48, 1016, 1013, 1011, - 1007, 1004, 1002, 1001, 181, 1000, 997, 995, 9, 37, - 964, 963, 49, 17, 961, 960, 959, 32, 45, 958, - 31, 957, 954, 953, 950, 18, 12, 949, 8, 948, - 5, 946, 945, 1, 936, 14, 935, 2, 934, 4, - 30, 933, 932, 64, 931, 928, 927, 495, 98, 924, - 923, 67, + 0, 1185, 21, 63, 1184, 1183, 1182, 933, 931, 929, + 1181, 1180, 1179, 1178, 1177, 1176, 1172, 1171, 1170, 1166, + 1163, 1162, 1159, 1157, 1156, 1155, 1151, 126, 1145, 1143, + 1142, 59, 1141, 62, 1140, 1139, 29, 139, 33, 57, + 134, 1138, 37, 64, 61, 1137, 42, 1134, 1123, 67, + 1122, 50, 1121, 1115, 1269, 1113, 1110, 14, 28, 1108, + 1107, 1104, 1102, 60, 474, 1099, 1098, 1096, 1095, 1094, + 1093, 44, 3, 6, 25, 15, 1092, 577, 55, 1086, + 39, 1083, 1081, 1079, 1078, 36, 1077, 45, 1075, 23, + 43, 1074, 13, 49, 26, 24, 8, 66, 48, 1072, + 20, 56, 31, 1070, 1063, 365, 1062, 1060, 1058, 1057, + 1056, 1055, 153, 328, 1054, 1053, 1050, 1047, 19, 1035, + 0, 396, 58, 1034, 1033, 1031, 1059, 54, 53, 16, + 1030, 40, 171, 18, 1029, 1028, 46, 1027, 1026, 1022, + 1017, 1015, 1013, 1012, 279, 1011, 1010, 1008, 27, 7, + 1007, 1006, 51, 11, 1003, 1002, 1001, 35, 47, 998, + 32, 996, 993, 965, 964, 17, 10, 961, 9, 959, + 5, 957, 956, 1, 955, 12, 954, 2, 951, 4, + 30, 950, 949, 65, 947, 946, 937, 496, 100, 936, + 935, 94, } var yyR1 = [...]int{ @@ -1817,39 +1818,39 @@ var yyR1 = [...]int{ 108, 108, 109, 109, 109, 111, 111, 111, 135, 135, 135, 19, 19, 21, 21, 22, 23, 20, 20, 20, 20, 20, 24, 25, 25, 183, 183, 183, 183, 183, - 26, 26, 184, 184, 190, 27, 28, 28, 29, 29, - 29, 33, 33, 33, 31, 31, 32, 32, 38, 38, - 37, 37, 39, 39, 39, 39, 123, 123, 123, 122, - 41, 41, 42, 42, 43, 43, 44, 44, 44, 56, - 56, 92, 92, 94, 94, 45, 45, 45, 45, 46, - 46, 47, 47, 48, 48, 130, 130, 129, 129, 129, - 128, 50, 50, 50, 52, 51, 51, 51, 51, 53, - 53, 55, 55, 54, 54, 57, 57, 57, 57, 58, - 58, 40, 40, 40, 40, 40, 40, 40, 106, 106, - 60, 60, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 70, 70, 70, 70, 70, 70, 61, 61, - 61, 61, 61, 61, 61, 36, 36, 71, 71, 71, - 77, 72, 72, 64, 64, 64, 64, 64, 64, 64, + 183, 26, 26, 184, 184, 190, 27, 28, 28, 29, + 29, 29, 33, 33, 33, 31, 31, 32, 32, 38, + 38, 37, 37, 39, 39, 39, 39, 123, 123, 123, + 122, 41, 41, 42, 42, 43, 43, 44, 44, 44, + 56, 56, 92, 92, 94, 94, 45, 45, 45, 45, + 46, 46, 47, 47, 48, 48, 130, 130, 129, 129, + 129, 128, 50, 50, 50, 52, 51, 51, 51, 51, + 53, 53, 55, 55, 54, 54, 57, 57, 57, 57, + 58, 58, 40, 40, 40, 40, 40, 40, 40, 106, + 106, 60, 60, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 70, 70, 70, 70, 70, 70, 61, + 61, 61, 61, 61, 61, 61, 36, 36, 71, 71, + 71, 77, 72, 72, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 68, 68, 68, 66, 66, 66, + 64, 64, 64, 64, 64, 68, 68, 68, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, - 191, 191, 69, 69, 69, 69, 34, 34, 34, 34, - 34, 133, 133, 136, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 81, 81, 35, - 35, 79, 79, 80, 82, 82, 78, 78, 78, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 181, - 65, 65, 65, 83, 83, 84, 84, 85, 85, 86, - 86, 87, 88, 88, 88, 89, 89, 89, 89, 90, - 90, 90, 62, 62, 62, 62, 62, 62, 91, 91, - 91, 91, 95, 95, 73, 73, 75, 75, 74, 76, - 182, 182, 182, 96, 96, 100, 97, 97, 101, 101, - 101, 99, 99, 99, 125, 125, 104, 104, 112, 112, - 113, 113, 105, 105, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 115, 115, 115, 116, 116, 117, - 117, 117, 124, 124, 120, 120, 120, 121, 121, 126, - 127, 127, 118, 118, 118, 118, 118, 118, 118, 118, + 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, + 67, 191, 191, 69, 69, 69, 69, 34, 34, 34, + 34, 34, 133, 133, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 81, 81, + 35, 35, 79, 79, 80, 82, 82, 78, 78, 78, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 181, 65, 65, 65, 83, 83, 84, 84, 85, 85, + 86, 86, 87, 88, 88, 88, 89, 89, 89, 89, + 90, 90, 90, 62, 62, 62, 62, 62, 62, 91, + 91, 91, 91, 95, 95, 73, 73, 75, 75, 74, + 76, 182, 182, 182, 96, 96, 100, 97, 97, 101, + 101, 101, 99, 99, 99, 125, 125, 104, 104, 112, + 112, 113, 113, 105, 105, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 115, 115, 115, 116, 116, + 117, 117, 117, 124, 124, 120, 120, 120, 121, 121, + 126, 127, 127, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, @@ -1858,7 +1859,7 @@ var yyR1 = [...]int{ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, + 118, 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, @@ -1868,7 +1869,7 @@ var yyR1 = [...]int{ 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 187, 188, 131, 132, 132, 132, + 119, 119, 119, 187, 188, 131, 132, 132, 132, } var yyR2 = [...]int{ @@ -1901,38 +1902,38 @@ var yyR2 = [...]int{ 0, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 3, 4, 4, 1, 1, 1, 1, 1, - 2, 4, 1, 3, 0, 2, 0, 2, 1, 2, - 2, 0, 1, 1, 0, 1, 0, 1, 0, 1, - 1, 3, 1, 2, 3, 5, 0, 1, 2, 1, - 0, 2, 1, 3, 1, 1, 1, 3, 3, 3, - 7, 1, 3, 1, 3, 4, 4, 4, 3, 2, - 4, 0, 1, 0, 2, 0, 1, 0, 1, 2, - 1, 1, 2, 2, 1, 2, 3, 2, 3, 2, - 2, 2, 1, 1, 3, 0, 5, 5, 5, 0, - 2, 1, 3, 3, 2, 3, 1, 2, 0, 3, - 1, 1, 3, 3, 4, 4, 5, 3, 4, 5, - 6, 2, 1, 2, 1, 2, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, - 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, + 1, 2, 4, 1, 3, 0, 2, 0, 2, 1, + 2, 2, 0, 1, 1, 0, 1, 0, 1, 0, + 1, 1, 3, 1, 2, 3, 5, 0, 1, 2, + 1, 0, 2, 1, 3, 1, 1, 1, 3, 3, + 3, 7, 1, 3, 1, 3, 4, 4, 4, 3, + 2, 4, 0, 1, 0, 2, 0, 1, 0, 1, + 2, 1, 1, 2, 2, 1, 2, 3, 2, 3, + 2, 2, 2, 1, 1, 3, 0, 5, 5, 5, + 0, 2, 1, 3, 3, 2, 3, 1, 2, 0, + 3, 1, 1, 3, 3, 4, 4, 5, 3, 4, + 5, 6, 2, 1, 2, 1, 2, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, + 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, - 1, 1, 1, 1, 4, 5, 6, 4, 4, 6, - 6, 6, 6, 8, 8, 6, 8, 8, 9, 7, - 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, - 0, 2, 4, 4, 4, 4, 0, 3, 4, 7, - 3, 1, 1, 2, 3, 3, 1, 2, 2, 1, - 2, 1, 2, 2, 1, 2, 4, 0, 1, 0, - 2, 1, 2, 4, 0, 2, 1, 3, 5, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, - 1, 2, 2, 0, 3, 0, 2, 0, 3, 1, - 3, 2, 0, 1, 1, 0, 2, 4, 4, 0, - 2, 4, 2, 1, 3, 5, 4, 6, 1, 3, - 3, 5, 0, 5, 1, 3, 1, 2, 3, 1, - 0, 2, 2, 1, 3, 3, 1, 3, 3, 3, - 3, 1, 2, 1, 1, 1, 1, 1, 0, 2, - 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, - 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, + 3, 1, 1, 1, 1, 4, 5, 6, 4, 4, + 6, 6, 6, 6, 8, 8, 6, 8, 8, 9, + 7, 5, 4, 2, 2, 2, 2, 2, 2, 2, + 2, 0, 2, 4, 4, 4, 4, 0, 3, 4, + 7, 3, 1, 1, 2, 3, 3, 1, 2, 2, + 1, 2, 1, 2, 2, 1, 2, 4, 0, 1, + 0, 2, 1, 2, 4, 0, 2, 1, 3, 5, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 2, 2, 0, 3, 0, 2, 0, 3, + 1, 3, 2, 0, 1, 1, 0, 2, 4, 4, + 0, 2, 4, 2, 1, 3, 5, 4, 6, 1, + 3, 3, 5, 0, 5, 1, 3, 1, 2, 3, + 1, 0, 2, 2, 1, 3, 3, 1, 3, 3, + 3, 3, 1, 2, 1, 1, 1, 1, 1, 0, + 2, 0, 3, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + 0, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1952,7 +1953,7 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ @@ -2025,206 +2026,206 @@ var yyChk = [...]int{ 52, 56, 73, 56, -54, -54, -132, 123, -54, 23, 51, -54, 56, 56, -127, -126, -118, -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, 222, -110, 209, - 216, -54, -183, -3, -7, 56, 57, 59, -183, -184, - -126, 9, 91, 54, 18, 110, 54, -88, 24, 25, - -89, -188, -33, -65, -120, 60, 63, -32, 42, -54, - -40, -40, -70, 68, 73, 69, 70, -122, 98, -127, - -121, -118, -120, -64, -71, -74, -77, 64, 91, 89, - 90, 75, -64, -64, -64, -64, -64, -64, -64, -64, - -64, -64, -64, -64, -64, -64, -64, -133, 56, 59, - 56, -38, 21, -37, -39, -63, 59, -63, -120, -188, - 54, -188, -2, -37, -37, -40, -40, -78, -120, -126, - -78, -37, -31, -79, -80, 77, -78, -188, -37, -38, - -37, -37, -93, 29, 143, -54, -96, -100, -78, -43, - -44, -44, -43, -44, 41, 41, 41, 46, 41, 46, - 41, -51, -126, -188, -57, 49, 124, 50, -187, -128, - -93, 52, -42, -54, -101, -98, 54, 222, 224, 225, - 51, -40, -149, 106, -164, -165, -166, -121, 60, -158, - -159, -167, 127, 130, 126, -160, 121, 28, -154, 68, - 73, -150, 206, -144, 53, -144, -144, -144, -144, -148, - 181, -148, -148, -148, 53, 53, -144, -144, -144, -152, - 53, -152, -152, -153, 53, -153, -124, 52, -54, -177, - 250, -178, 56, -132, 23, -132, -114, 118, 115, 116, - -174, 114, 203, 181, 66, 29, 15, 240, 143, 253, - 56, 144, -54, -54, -132, -109, 11, 91, 54, 37, - -40, -40, -127, -87, -90, -104, 19, 11, 33, 33, - -37, 68, 69, 70, 110, -187, -71, -64, -64, -64, - -36, 138, 72, -188, -188, -37, 54, -40, -188, -188, - -188, 54, 52, 22, 54, 11, 110, 54, 11, -188, - -37, -82, -80, 79, -40, -188, -188, -188, -188, -188, - -62, 30, 33, -2, -187, 33, -187, -58, 54, 12, - 81, -47, -46, 51, 52, -48, 51, -46, 41, 41, - 121, 121, 121, -94, -120, -58, -42, -58, -102, -103, - 226, 223, 229, 56, 59, 54, -166, 81, 53, 28, - -160, -160, 56, 56, -145, 29, 68, -151, 207, 60, - -148, -148, -149, 30, -149, -149, -149, -157, 59, -157, - 60, 60, 51, -120, -132, -176, -175, -121, -131, -180, - 149, 128, 129, 132, 131, 56, 121, 28, 127, 130, - 143, 126, -180, 149, -115, -116, 123, 22, 121, 28, - 143, -132, -111, 89, 12, -126, -126, -126, 38, 110, - -54, -41, 11, 98, -121, -38, -36, 72, -64, -64, - -188, -39, -136, 107, 178, 137, 176, 172, 192, 183, - 205, 174, 206, 179, -133, -136, -64, -64, -121, -64, - -64, 247, -85, 80, -40, 78, -95, 51, -96, -73, - -75, -74, -187, -2, -91, -120, -94, -85, -100, -40, - -40, -40, 53, -40, -187, -187, -187, -188, 54, -85, - -58, 223, 227, 228, -165, -166, -169, -168, -120, 56, - 56, -147, 51, 59, 60, 61, 68, 230, 67, 55, - -149, -149, 56, 107, 55, 54, 55, 54, 55, 54, - -54, 54, 81, -131, -120, -131, -120, -54, -131, -120, - 59, -40, -58, -42, -188, -64, -188, -144, -144, -144, - -153, -144, 166, -144, 166, -187, -188, -188, -188, 54, - 19, -188, 54, 19, -187, -35, 245, -40, -182, 254, - 27, -95, 54, -188, -188, -188, 54, 110, -188, -89, - -92, -120, -92, -92, -92, -129, -120, -89, 55, 54, - -144, -155, 203, 9, -148, 59, -148, 60, 60, -132, - -175, -166, 53, 26, -83, 13, -148, 56, 60, -64, - -64, -64, -64, -64, -188, 59, 98, -72, 28, -75, - 33, -2, -187, -120, -120, 54, 55, -188, -188, -188, - -57, -171, -170, 52, 133, 66, -168, -156, 127, 28, - 126, 230, -149, -149, 55, 55, -92, -187, -84, 14, - 16, -188, -188, -188, -188, -188, -34, 91, 250, 9, - -73, -2, 110, -120, -170, 56, -161, 81, 59, -146, - 66, 28, 28, 55, -172, -173, 143, -40, -72, -188, - 248, 48, 251, -96, -188, -120, 60, 59, -179, -188, - 54, -120, 38, 249, 252, -177, -173, 33, 38, 145, - 250, 146, 251, -187, 252, -64, 142, -188, -188, + 216, -54, -183, -3, -7, -9, -8, 56, 59, -183, + -184, -126, 9, 91, 54, 18, 110, 54, -88, 24, + 25, -89, -188, -33, -65, -120, 60, 63, -32, 42, + -54, -40, -40, -70, 68, 73, 69, 70, -122, 98, + -127, -121, -118, -120, -64, -71, -74, -77, 64, 91, + 89, 90, 75, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -133, 56, + 59, 56, -38, 21, -37, -39, -63, 59, -63, -120, + -188, 54, -188, -2, -37, -37, -40, -40, -78, -120, + -126, -78, -37, -31, -79, -80, 77, -78, -188, -37, + -38, -37, -37, -93, 29, 143, -54, -96, -100, -78, + -43, -44, -44, -43, -44, 41, 41, 41, 46, 41, + 46, 41, -51, -126, -188, -57, 49, 124, 50, -187, + -128, -93, 52, -42, -54, -101, -98, 54, 222, 224, + 225, 51, -40, -149, 106, -164, -165, -166, -121, 60, + -158, -159, -167, 127, 130, 126, -160, 121, 28, -154, + 68, 73, -150, 206, -144, 53, -144, -144, -144, -144, + -148, 181, -148, -148, -148, 53, 53, -144, -144, -144, + -152, 53, -152, -152, -153, 53, -153, -124, 52, -54, + -177, 250, -178, 56, -132, 23, -132, -114, 118, 115, + 116, -174, 114, 203, 181, 66, 29, 15, 240, 143, + 253, 56, 144, -54, -54, -132, -109, 11, 91, 54, + 37, -40, -40, -127, -87, -90, -104, 19, 11, 33, + 33, -37, 68, 69, 70, 110, -187, -71, -64, -64, + -64, -36, 138, 72, -188, -188, -37, 54, -40, -188, + -188, -188, 54, 52, 22, 54, 11, 110, 54, 11, + -188, -37, -82, -80, 79, -40, -188, -188, -188, -188, + -188, -62, 30, 33, -2, -187, 33, -187, -58, 54, + 12, 81, -47, -46, 51, 52, -48, 51, -46, 41, + 41, 121, 121, 121, -94, -120, -58, -42, -58, -102, + -103, 226, 223, 229, 56, 59, 54, -166, 81, 53, + 28, -160, -160, 56, 56, -145, 29, 68, -151, 207, + 60, -148, -148, -149, 30, -149, -149, -149, -157, 59, + -157, 60, 60, 51, -120, -132, -176, -175, -121, -131, + -180, 149, 128, 129, 132, 131, 56, 121, 28, 127, + 130, 143, 126, -180, 149, -115, -116, 123, 22, 121, + 28, 143, -132, -111, 89, 12, -126, -126, -126, 38, + 110, -54, -41, 11, 98, -121, -38, -36, 72, -64, + -64, -188, -39, -136, 107, 178, 137, 176, 172, 192, + 183, 205, 174, 206, 179, -133, -136, -64, -64, -121, + -64, -64, 247, -85, 80, -40, 78, -95, 51, -96, + -73, -75, -74, -187, -2, -91, -120, -94, -85, -100, + -40, -40, -40, 53, -40, -187, -187, -187, -188, 54, + -85, -58, 223, 227, 228, -165, -166, -169, -168, -120, + 56, 56, -147, 51, 59, 60, 61, 68, 230, 67, + 55, -149, -149, 56, 107, 55, 54, 55, 54, 55, + 54, -54, 54, 81, -131, -120, -131, -120, -54, -131, + -120, 59, -40, -58, -42, -188, -64, -188, -144, -144, + -144, -153, -144, 166, -144, 166, -187, -188, -188, -188, + 54, 19, -188, 54, 19, -187, -35, 245, -40, -182, + 254, 27, -95, 54, -188, -188, -188, 54, 110, -188, + -89, -92, -120, -92, -92, -92, -129, -120, -89, 55, + 54, -144, -155, 203, 9, -148, 59, -148, 60, 60, + -132, -175, -166, 53, 26, -83, 13, -148, 56, 60, + -64, -64, -64, -64, -64, -188, 59, 98, -72, 28, + -75, 33, -2, -187, -120, -120, 54, 55, -188, -188, + -188, -57, -171, -170, 52, 133, 66, -168, -156, 127, + 28, 126, 230, -149, -149, 55, 55, -92, -187, -84, + 14, 16, -188, -188, -188, -188, -188, -34, 91, 250, + 9, -73, -2, 110, -120, -170, 56, -161, 81, 59, + -146, 66, 28, 28, 55, -172, -173, 143, -40, -72, + -188, 248, 48, 251, -96, -188, -120, 60, 59, -179, + -188, 54, -120, 38, 249, 252, -177, -173, 33, 38, + 145, 250, 146, 251, -187, 252, -64, 142, -188, -188, } var yyDef = [...]int{ 0, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 527, 0, 294, 294, 294, 294, - 294, 294, 0, 599, 582, 0, 0, 0, 0, -2, - 272, 273, 0, 275, 276, 804, 804, 804, 804, 804, - 0, 0, 0, 0, 37, 38, 802, 1, 3, 535, - 0, 0, 298, 301, 296, 0, 582, 0, 0, 0, - 64, 0, 0, 791, 0, 792, 580, 580, 580, 600, - 601, 604, 605, 606, 704, 705, 706, 707, 708, 709, - 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, - 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, - 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, - 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, - 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, - 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, - 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, - 790, 793, 794, 795, 796, 797, 798, 799, 800, 801, - 0, 0, 583, 0, 578, 0, 578, 578, 578, 0, - 230, 363, 609, 791, 792, 0, 0, 0, 0, 805, - 805, 805, 805, 0, 805, 0, 260, 249, 251, 252, - 253, 254, 805, 269, 270, 259, 271, 274, 277, 278, - 279, 280, 281, 0, 0, 290, 30, 539, 0, 0, - 527, 32, 0, 294, 299, 300, 304, 302, 303, 295, - 0, 312, 316, 0, 371, 0, 376, 378, -2, 0, - 413, 414, 415, 416, 417, 0, 0, 0, 0, 0, - 0, 0, 440, 441, 442, 443, -2, 510, 511, 512, - 513, 514, 515, 516, 517, 380, 381, 559, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 497, 0, 470, - 470, 470, 470, 470, 470, 470, 470, 0, 0, 0, - 0, 0, 0, 322, 324, 325, 326, 345, 0, 347, - 0, 0, 45, 49, 0, 782, 566, -2, -2, 0, - 0, 607, 608, -2, 711, -2, 612, 613, 614, 615, - 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, - 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, - 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, - 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, - 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, - 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, - 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, - 696, 697, 698, 699, 700, 701, 702, 703, 0, 81, - 0, 0, 805, 0, 71, 0, 0, 0, 0, 0, - 805, 0, 0, 0, 0, 0, 0, 0, 229, 0, - 231, 805, 805, 805, 805, 805, 805, 805, 805, 240, - 806, 807, 241, 242, 243, 805, 805, 245, 0, 0, - 261, 0, 255, 282, 0, 0, 0, 31, 803, 25, - 0, 0, 536, 0, 528, 529, 532, 535, 30, 301, - 0, 306, 305, 297, 0, 313, 0, 0, 0, 317, - 0, 319, 0, 374, 0, 0, 0, 0, 0, 0, + 21, 22, 23, 24, 528, 0, 295, 295, 295, 295, + 295, 295, 0, 600, 583, 0, 0, 0, 0, -2, + 272, 273, 0, 275, 276, 805, 805, 805, 805, 805, + 0, 0, 0, 0, 37, 38, 803, 1, 3, 536, + 0, 0, 299, 302, 297, 0, 583, 0, 0, 0, + 64, 0, 0, 792, 0, 793, 581, 581, 581, 601, + 602, 605, 606, 607, 705, 706, 707, 708, 709, 710, + 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, + 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, + 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, + 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, + 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, + 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, + 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, + 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, + 791, 794, 795, 796, 797, 798, 799, 800, 801, 802, + 0, 0, 584, 0, 579, 0, 579, 579, 579, 0, + 230, 364, 610, 792, 793, 0, 0, 0, 0, 806, + 806, 806, 806, 0, 806, 0, 260, 249, 251, 252, + 253, 254, 806, 269, 270, 259, 271, 274, 277, 278, + 279, 280, 281, 0, 0, 291, 30, 540, 0, 0, + 528, 32, 0, 295, 300, 301, 305, 303, 304, 296, + 0, 313, 317, 0, 372, 0, 377, 379, -2, 0, + 414, 415, 416, 417, 418, 0, 0, 0, 0, 0, + 0, 0, 441, 442, 443, 444, -2, 511, 512, 513, + 514, 515, 516, 517, 518, 381, 382, 560, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 498, 0, 471, + 471, 471, 471, 471, 471, 471, 471, 0, 0, 0, + 0, 0, 0, 323, 325, 326, 327, 346, 0, 348, + 0, 0, 45, 49, 0, 783, 567, -2, -2, 0, + 0, 608, 609, -2, 712, -2, 613, 614, 615, 616, + 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, + 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, + 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, + 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, + 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, + 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, + 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, + 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, + 697, 698, 699, 700, 701, 702, 703, 704, 0, 81, + 0, 0, 806, 0, 71, 0, 0, 0, 0, 0, + 806, 0, 0, 0, 0, 0, 0, 0, 229, 0, + 231, 806, 806, 806, 806, 806, 806, 806, 806, 240, + 807, 808, 241, 242, 243, 806, 806, 245, 0, 0, + 261, 0, 255, 282, 0, 0, 0, 31, 804, 25, + 0, 0, 537, 0, 529, 530, 533, 536, 30, 302, + 0, 307, 306, 298, 0, 314, 0, 0, 0, 318, + 0, 320, 0, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 398, 399, 400, 401, 402, 403, 404, - 377, 0, 308, 391, 0, 0, 0, 518, 519, 433, - 434, 435, 436, 437, 438, 0, 30, 0, 411, 0, - 0, 0, 0, 0, 0, 0, 0, 304, 0, 498, - 0, 462, 0, 463, 464, 465, 466, 467, 468, 469, - 0, 308, 0, 0, 47, 0, 362, 0, 0, 0, - 0, 0, 0, 351, 0, 0, 354, 0, 0, 0, - 0, 346, 0, 0, 365, 755, 348, 0, 350, -2, - 0, 0, 0, 43, 44, 0, 50, 782, 52, 53, - 0, 0, 0, 161, 574, 575, 572, 190, 0, 144, + 0, 0, 0, 399, 400, 401, 402, 403, 404, 405, + 378, 0, 309, 392, 0, 0, 0, 519, 520, 434, + 435, 436, 437, 438, 439, 0, 30, 0, 412, 0, + 0, 0, 0, 0, 0, 0, 0, 305, 0, 499, + 0, 463, 0, 464, 465, 466, 467, 468, 469, 470, + 0, 309, 0, 0, 47, 0, 363, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 355, 0, 0, 0, + 0, 347, 0, 0, 366, 756, 349, 0, 351, -2, + 0, 0, 0, 43, 44, 0, 50, 783, 52, 53, + 0, 0, 0, 161, 575, 576, 573, 190, 0, 144, 140, 86, 87, 88, 133, 90, 133, 133, 133, 133, 158, 158, 158, 158, 116, 117, 118, 119, 120, 0, 0, 103, 133, 133, 133, 107, 123, 124, 125, 126, 127, 128, 129, 130, 91, 92, 93, 94, 95, 96, - 97, 135, 135, 135, 137, 137, 602, 66, 0, 74, - 0, 805, 0, 805, 79, 0, 205, 0, 224, 579, - 0, 805, 227, 228, 364, 610, 611, 232, 233, 234, + 97, 135, 135, 135, 137, 137, 603, 66, 0, 74, + 0, 806, 0, 806, 79, 0, 205, 0, 224, 580, + 0, 806, 227, 228, 365, 611, 612, 232, 233, 234, 235, 236, 237, 238, 239, 244, 248, 246, 262, 256, - 257, 250, 283, 285, 286, 287, 288, 289, 284, 291, - 292, 540, 0, 0, 0, 0, 0, 531, 533, 534, - 539, 33, 304, 0, 520, 0, 0, 0, 307, 28, - 372, 373, 375, 392, 0, 394, 396, 318, 314, 0, - 507, -2, -2, 382, 383, 407, 408, 409, 0, 0, - 0, 0, 405, 387, 0, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 432, 481, 482, - 0, 0, 0, 309, 310, 430, 509, 431, 439, 410, - 0, 558, 30, 0, 0, 0, 0, 0, -2, 0, - 0, 0, 0, 504, 501, 0, 0, 471, 0, 0, - 0, 0, 0, 0, 0, 361, 369, 563, 0, 323, - 341, 343, 0, 338, 352, 353, 355, 0, 357, 0, - 359, 360, 327, 328, 329, 0, 0, 0, 0, 349, - 369, 0, 369, 46, 567, 51, 0, 0, 56, 57, - 568, 569, 570, 0, 80, 191, 193, 196, 197, 82, - 83, 0, 0, 0, 0, 0, 185, 186, 147, 145, - 0, 142, 141, 89, 0, 158, 158, 110, 111, 161, - 0, 161, 161, 161, 0, 0, 104, 105, 106, 98, - 0, 99, 100, 101, 0, 102, 0, 0, 805, 68, - 0, 72, 73, 69, 581, 70, 804, 0, 0, 594, - 206, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 593, 0, 223, 805, 226, 265, 0, 0, 0, 0, - 537, 538, 0, 530, 26, 0, 576, 577, 521, 522, - 320, 393, 395, 397, 0, 308, 384, 405, 388, 0, - 385, 0, 0, 379, 444, 0, 0, 412, -2, 447, - 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 527, 0, 502, 0, 0, 461, 472, 473, 474, 475, - 552, 0, 0, -2, 0, 36, 0, 527, 0, 0, - 0, 335, 342, 0, 0, 336, 0, 337, 356, 358, - 0, 0, 0, 0, 333, 527, 369, 42, 54, 55, - 0, 0, 61, 162, 163, 0, 194, 0, 0, 180, - 0, 0, 183, 184, 154, 0, 146, 85, 143, 0, - 161, 161, 112, 0, 113, 114, 115, 0, 131, 0, - 0, 0, 0, 603, 67, 75, 76, 0, 198, 804, - 0, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 804, 0, 0, 804, 595, 596, 597, 598, - 0, 225, 247, 0, 0, 263, 264, 293, 541, 0, - 27, 369, 0, 315, 508, 0, 386, 0, 406, 389, - 445, 311, 0, 133, 133, 486, 133, 137, 489, 133, - 491, 133, 494, 0, 0, 0, 0, 0, 507, 0, - 0, 0, 499, 460, 505, 0, 560, 0, 552, 542, - 554, 556, 0, 30, 0, 548, 0, 535, 564, 370, - 565, 339, 0, 344, 0, 0, 0, 347, 0, 535, - 41, 58, 59, 60, 192, 195, 0, 187, 133, 181, - 182, 156, 0, 148, 149, 150, 151, 152, 153, 134, - 108, 109, 159, 160, 158, 0, 158, 0, 138, 0, - 805, 0, 0, 199, 0, 200, 202, 203, 204, 0, - 266, 267, 523, 321, 446, 390, 449, 483, 158, 487, - 488, 490, 492, 493, 495, 0, 451, 450, 452, 0, - 0, 455, 0, 0, 0, 0, 0, 503, 34, 0, - 0, 35, 0, 557, -2, 0, 0, 0, 48, 39, - 0, 331, 0, 0, 0, 365, 334, 40, 172, 0, - 189, 164, 157, 0, 161, 132, 161, 0, 0, 65, - 77, 78, 0, 0, 525, 0, 484, 485, 0, 0, - 0, 0, 0, 476, 459, 500, 561, 562, 0, 555, - 0, -2, 0, 550, 549, 0, 340, 366, 367, 368, - 330, 171, 173, 0, 178, 0, 188, 169, 0, 166, - 168, 155, 121, 122, 136, 139, 0, 0, 29, 0, - 0, 496, 453, 454, 456, 457, 0, 0, 0, 0, - 545, 30, 0, 332, 174, 175, 0, 179, 177, 84, - 0, 165, 167, 71, 0, 219, 0, 526, 524, 458, - 0, 0, 0, 553, -2, 551, 176, 170, 74, 218, - 0, 0, 477, 0, 480, 201, 220, 0, 478, 0, - 0, 0, 0, 0, 479, 0, 0, 221, 222, + 257, 250, 283, 285, 286, 287, 288, 289, 290, 284, + 292, 293, 541, 0, 0, 0, 0, 0, 532, 534, + 535, 540, 33, 305, 0, 521, 0, 0, 0, 308, + 28, 373, 374, 376, 393, 0, 395, 397, 319, 315, + 0, 508, -2, -2, 383, 384, 408, 409, 410, 0, + 0, 0, 0, 406, 388, 0, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 433, 482, + 483, 0, 0, 0, 310, 311, 431, 510, 432, 440, + 411, 0, 559, 30, 0, 0, 0, 0, 0, -2, + 0, 0, 0, 0, 505, 502, 0, 0, 472, 0, + 0, 0, 0, 0, 0, 0, 362, 370, 564, 0, + 324, 342, 344, 0, 339, 353, 354, 356, 0, 358, + 0, 360, 361, 328, 329, 330, 0, 0, 0, 0, + 350, 370, 0, 370, 46, 568, 51, 0, 0, 56, + 57, 569, 570, 571, 0, 80, 191, 193, 196, 197, + 82, 83, 0, 0, 0, 0, 0, 185, 186, 147, + 145, 0, 142, 141, 89, 0, 158, 158, 110, 111, + 161, 0, 161, 161, 161, 0, 0, 104, 105, 106, + 98, 0, 99, 100, 101, 0, 102, 0, 0, 806, + 68, 0, 72, 73, 69, 582, 70, 805, 0, 0, + 595, 206, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 0, 223, 806, 226, 265, 0, 0, 0, + 0, 538, 539, 0, 531, 26, 0, 577, 578, 522, + 523, 321, 394, 396, 398, 0, 309, 385, 406, 389, + 0, 386, 0, 0, 380, 445, 0, 0, 413, -2, + 448, 449, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 528, 0, 503, 0, 0, 462, 473, 474, 475, + 476, 553, 0, 0, -2, 0, 36, 0, 528, 0, + 0, 0, 336, 343, 0, 0, 337, 0, 338, 357, + 359, 0, 0, 0, 0, 334, 528, 370, 42, 54, + 55, 0, 0, 61, 162, 163, 0, 194, 0, 0, + 180, 0, 0, 183, 184, 154, 0, 146, 85, 143, + 0, 161, 161, 112, 0, 113, 114, 115, 0, 131, + 0, 0, 0, 0, 604, 67, 75, 76, 0, 198, + 805, 0, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 805, 0, 0, 805, 596, 597, 598, + 599, 0, 225, 247, 0, 0, 263, 264, 294, 542, + 0, 27, 370, 0, 316, 509, 0, 387, 0, 407, + 390, 446, 312, 0, 133, 133, 487, 133, 137, 490, + 133, 492, 133, 495, 0, 0, 0, 0, 0, 508, + 0, 0, 0, 500, 461, 506, 0, 561, 0, 553, + 543, 555, 557, 0, 30, 0, 549, 0, 536, 565, + 371, 566, 340, 0, 345, 0, 0, 0, 348, 0, + 536, 41, 58, 59, 60, 192, 195, 0, 187, 133, + 181, 182, 156, 0, 148, 149, 150, 151, 152, 153, + 134, 108, 109, 159, 160, 158, 0, 158, 0, 138, + 0, 806, 0, 0, 199, 0, 200, 202, 203, 204, + 0, 266, 267, 524, 322, 447, 391, 450, 484, 158, + 488, 489, 491, 493, 494, 496, 0, 452, 451, 453, + 0, 0, 456, 0, 0, 0, 0, 0, 504, 34, + 0, 0, 35, 0, 558, -2, 0, 0, 0, 48, + 39, 0, 332, 0, 0, 0, 366, 335, 40, 172, + 0, 189, 164, 157, 0, 161, 132, 161, 0, 0, + 65, 77, 78, 0, 0, 526, 0, 485, 486, 0, + 0, 0, 0, 0, 477, 460, 501, 562, 563, 0, + 556, 0, -2, 0, 551, 550, 0, 341, 367, 368, + 369, 331, 171, 173, 0, 178, 0, 188, 169, 0, + 166, 168, 155, 121, 122, 136, 139, 0, 0, 29, + 0, 0, 497, 454, 455, 457, 458, 0, 0, 0, + 0, 546, 30, 0, 333, 174, 175, 0, 179, 177, + 84, 0, 165, 167, 71, 0, 219, 0, 527, 525, + 459, 0, 0, 0, 554, -2, 552, 176, 170, 74, + 218, 0, 0, 478, 0, 481, 201, 220, 0, 479, + 0, 0, 0, 0, 0, 480, 0, 0, 221, 222, } var yyTok1 = [...]int{ @@ -4194,444 +4195,459 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1589 { - yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, From: yyDollar[4].fromInPrepare} + yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, PreparedStatementQuery: yyDollar[4].preparedQuery} } case 284: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1593 { - yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, From: yyDollar[4].fromInPrepare} + yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, PreparedStatementQuery: yyDollar[4].preparedQuery} } case 285: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1599 { - yyVAL.fromInPrepare = yyDollar[1].selStmt.(*Select) + yyVAL.preparedQuery = yyDollar[1].selStmt.(*Select) } case 286: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1603 { - yyVAL.fromInPrepare = yyDollar[1].statement.(*Insert) + yyVAL.preparedQuery = yyDollar[1].statement.(*Insert) } case 287: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1607 { - yyVAL.fromInPrepare = NewTableIdent(string(yyDollar[1].bytes)) + yyVAL.preparedQuery = yyDollar[1].statement.(*Delete) } case 288: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1611 { - yyVAL.fromInPrepare = NewPgEscapeString(yyDollar[1].bytes) + yyVAL.preparedQuery = yyDollar[1].statement.(*Update) } case 289: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1615 { - yyVAL.fromInPrepare = NewStrVal(yyDollar[1].bytes) + yyVAL.preparedQuery = NewTableIdent(string(yyDollar[1].bytes)) } case 290: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1619 + { + statement, err := NewPreparedQueryFromString(string(yyDollar[1].bytes)) + if statement == nil { + yylex.Error("unsupported type of prepared query") + return 1 + } + if err != nil { + yylex.Error("syntax error in prepared query") + return 1 + } + yyVAL.preparedQuery = statement + } + case 291: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1621 +//line sql.y:1634 { yyVAL.statement = &Execute{PreparedStatementName: NewTableIdent(string(yyDollar[2].bytes))} } - case 291: + case 292: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1625 +//line sql.y:1638 { yyVAL.statement = &Execute{PreparedStatementName: NewTableIdent(string(yyDollar[2].bytes)), Using: yyDollar[4].usingInExecuteList} } - case 292: + case 293: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1631 +//line sql.y:1644 { yyVAL.usingInExecuteList = UsingInExecuteList{yyDollar[1].tableIdent} } - case 293: + case 294: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1635 +//line sql.y:1648 { yyVAL.usingInExecuteList = append(yyDollar[1].usingInExecuteList, yyDollar[3].tableIdent) } - case 294: + case 295: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1640 +//line sql.y:1653 { setAllowComments(yylex, true) } - case 295: + case 296: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1644 +//line sql.y:1657 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 296: + case 297: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1650 +//line sql.y:1663 { yyVAL.bytes2 = nil } - case 297: + case 298: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1654 +//line sql.y:1667 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 298: + case 299: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1660 +//line sql.y:1673 { yyVAL.str = UnionStr } - case 299: + case 300: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1664 +//line sql.y:1677 { yyVAL.str = UnionAllStr } - case 300: + case 301: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1668 +//line sql.y:1681 { yyVAL.str = UnionDistinctStr } - case 301: + case 302: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1673 +//line sql.y:1686 { yyVAL.str = "" } - case 302: + case 303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1677 +//line sql.y:1690 { yyVAL.str = SQLNoCacheStr } - case 303: + case 304: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1681 +//line sql.y:1694 { yyVAL.str = SQLCacheStr } - case 304: + case 305: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1686 +//line sql.y:1699 { yyVAL.str = "" } - case 305: + case 306: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1690 +//line sql.y:1703 { yyVAL.str = DistinctStr } - case 306: + case 307: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1695 +//line sql.y:1708 { yyVAL.str = "" } - case 307: + case 308: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1699 +//line sql.y:1712 { yyVAL.str = StraightJoinHint } - case 308: + case 309: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1704 +//line sql.y:1717 { yyVAL.selectExprs = nil } - case 309: + case 310: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1708 +//line sql.y:1721 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 310: + case 311: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1714 +//line sql.y:1727 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 311: + case 312: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1718 +//line sql.y:1731 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 312: + case 313: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1724 +//line sql.y:1737 { yyVAL.selectExpr = &StarExpr{} } - case 313: + case 314: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1728 +//line sql.y:1741 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 314: + case 315: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1732 +//line sql.y:1745 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 315: + case 316: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1736 +//line sql.y:1749 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 316: + case 317: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1741 +//line sql.y:1754 { yyVAL.colIdent = ColIdent{} } - case 317: + case 318: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1745 +//line sql.y:1758 { yyVAL.colIdent = yyDollar[1].colIdent } - case 318: + case 319: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1749 +//line sql.y:1762 { yyVAL.colIdent = yyDollar[2].colIdent } - case 320: + case 321: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1757 +//line sql.y:1770 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 321: + case 322: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1761 +//line sql.y:1774 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 322: + case 323: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1767 +//line sql.y:1780 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 323: + case 324: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1771 +//line sql.y:1784 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 326: + case 327: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1781 +//line sql.y:1794 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 327: + case 328: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1785 +//line sql.y:1798 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 328: + case 329: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1789 +//line sql.y:1802 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 329: + case 330: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1795 +//line sql.y:1808 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 330: + case 331: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1799 +//line sql.y:1812 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 331: + case 332: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1805 +//line sql.y:1818 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 332: + case 333: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1809 +//line sql.y:1822 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 333: + case 334: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1815 +//line sql.y:1828 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 334: + case 335: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1819 +//line sql.y:1832 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 335: + case 336: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1832 +//line sql.y:1845 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 336: + case 337: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1836 +//line sql.y:1849 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 337: + case 338: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1840 +//line sql.y:1853 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 338: + case 339: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1844 +//line sql.y:1857 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 339: + case 340: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1850 +//line sql.y:1863 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 340: + case 341: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1852 +//line sql.y:1865 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 341: + case 342: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1856 +//line sql.y:1869 { yyVAL.joinCondition = JoinCondition{} } - case 342: + case 343: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1858 +//line sql.y:1871 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 343: + case 344: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1862 +//line sql.y:1875 { yyVAL.joinCondition = JoinCondition{} } - case 344: + case 345: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1864 +//line sql.y:1877 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 345: + case 346: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1867 +//line sql.y:1880 { yyVAL.empty = struct{}{} } - case 346: + case 347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1869 +//line sql.y:1882 { yyVAL.empty = struct{}{} } - case 347: + case 348: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1872 +//line sql.y:1885 { yyVAL.tableIdent = NewTableIdent("") } - case 348: + case 349: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1876 +//line sql.y:1889 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 349: + case 350: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1880 +//line sql.y:1893 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 351: + case 352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1890 +//line sql.y:1903 { yyVAL.str = JoinStr } - case 352: + case 353: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1894 +//line sql.y:1907 { yyVAL.str = JoinStr } - case 353: + case 354: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1898 +//line sql.y:1911 { yyVAL.str = JoinStr } - case 354: + case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1904 +//line sql.y:1917 { yyVAL.str = StraightJoinStr } - case 355: + case 356: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1910 +//line sql.y:1923 { yyVAL.str = LeftJoinStr } - case 356: + case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1914 +//line sql.y:1927 { yyVAL.str = LeftJoinStr } - case 357: + case 358: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1918 +//line sql.y:1931 { yyVAL.str = RightJoinStr } - case 358: + case 359: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1922 +//line sql.y:1935 { yyVAL.str = RightJoinStr } - case 359: + case 360: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1928 +//line sql.y:1941 { yyVAL.str = NaturalJoinStr } - case 360: + case 361: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1932 +//line sql.y:1945 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -4639,453 +4655,453 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 361: + case 362: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1942 +//line sql.y:1955 { yyVAL.tableName = yyDollar[2].tableName } - case 362: + case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1946 +//line sql.y:1959 { yyVAL.tableName = yyDollar[1].tableName } - case 363: + case 364: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1952 +//line sql.y:1965 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 364: + case 365: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1956 +//line sql.y:1969 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 365: + case 366: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1961 +//line sql.y:1974 { yyVAL.indexHints = nil } - case 366: + case 367: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1965 +//line sql.y:1978 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 367: + case 368: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1969 +//line sql.y:1982 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 368: + case 369: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1973 +//line sql.y:1986 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 369: + case 370: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1978 +//line sql.y:1991 { yyVAL.expr = nil } - case 370: + case 371: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1982 +//line sql.y:1995 { yyVAL.expr = yyDollar[2].expr } - case 371: + case 372: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1988 +//line sql.y:2001 { yyVAL.expr = yyDollar[1].expr } - case 372: + case 373: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1992 +//line sql.y:2005 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 373: + case 374: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1996 +//line sql.y:2009 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 374: + case 375: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2000 +//line sql.y:2013 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 375: + case 376: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2004 +//line sql.y:2017 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 376: + case 377: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2008 +//line sql.y:2021 { yyVAL.expr = yyDollar[1].expr } - case 377: + case 378: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2012 +//line sql.y:2025 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 378: + case 379: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2018 +//line sql.y:2031 { yyVAL.str = "" } - case 379: + case 380: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2022 +//line sql.y:2035 { yyVAL.str = string(yyDollar[2].bytes) } - case 380: + case 381: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2028 +//line sql.y:2041 { yyVAL.boolVal = BoolVal(true) } - case 381: + case 382: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2032 +//line sql.y:2045 { yyVAL.boolVal = BoolVal(false) } - case 382: + case 383: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2038 +//line sql.y:2051 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 383: + case 384: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2042 +//line sql.y:2055 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 384: + case 385: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2046 +//line sql.y:2059 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 385: + case 386: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2050 +//line sql.y:2063 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 386: + case 387: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2054 +//line sql.y:2067 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 387: + case 388: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2058 +//line sql.y:2071 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 388: + case 389: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2062 +//line sql.y:2075 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 389: + case 390: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2066 +//line sql.y:2079 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 390: + case 391: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2070 +//line sql.y:2083 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 391: + case 392: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2074 +//line sql.y:2087 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 392: + case 393: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2080 +//line sql.y:2093 { yyVAL.str = IsNullStr } - case 393: + case 394: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2084 +//line sql.y:2097 { yyVAL.str = IsNotNullStr } - case 394: + case 395: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2088 +//line sql.y:2101 { yyVAL.str = IsTrueStr } - case 395: + case 396: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2092 +//line sql.y:2105 { yyVAL.str = IsNotTrueStr } - case 396: + case 397: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2096 +//line sql.y:2109 { yyVAL.str = IsFalseStr } - case 397: + case 398: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2100 +//line sql.y:2113 { yyVAL.str = IsNotFalseStr } - case 398: + case 399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2106 +//line sql.y:2119 { yyVAL.str = EqualStr } - case 399: + case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2110 +//line sql.y:2123 { yyVAL.str = LessThanStr } - case 400: + case 401: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2114 +//line sql.y:2127 { yyVAL.str = GreaterThanStr } - case 401: + case 402: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2118 +//line sql.y:2131 { yyVAL.str = LessEqualStr } - case 402: + case 403: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2122 +//line sql.y:2135 { yyVAL.str = GreaterEqualStr } - case 403: + case 404: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2126 +//line sql.y:2139 { yyVAL.str = NotEqualStr } - case 404: + case 405: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2130 +//line sql.y:2143 { yyVAL.str = NullSafeEqualStr } - case 405: + case 406: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2135 +//line sql.y:2148 { yyVAL.expr = nil } - case 406: + case 407: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2139 +//line sql.y:2152 { yyVAL.expr = yyDollar[2].expr } - case 407: + case 408: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2145 +//line sql.y:2158 { yyVAL.colTuple = yyDollar[1].valTuple } - case 408: + case 409: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2149 +//line sql.y:2162 { yyVAL.colTuple = yyDollar[1].subquery } - case 409: + case 410: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2153 +//line sql.y:2166 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 410: + case 411: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2159 +//line sql.y:2172 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 411: + case 412: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2165 +//line sql.y:2178 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 412: + case 413: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2169 +//line sql.y:2182 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 413: + case 414: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2176 +//line sql.y:2189 { yyVAL.expr = yyDollar[1].colName } - case 414: + case 415: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2181 +//line sql.y:2194 { yyVAL.expr = yyDollar[1].expr } - case 415: + case 416: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2185 +//line sql.y:2198 { yyVAL.expr = yyDollar[1].boolVal } - case 416: + case 417: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2189 +//line sql.y:2202 { yyVAL.expr = yyDollar[1].expr } - case 417: + case 418: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2193 +//line sql.y:2206 { yyVAL.expr = yyDollar[1].subquery } - case 418: + case 419: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2197 +//line sql.y:2210 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } - case 419: + case 420: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2201 +//line sql.y:2214 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } - case 420: + case 421: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2205 +//line sql.y:2218 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } - case 421: + case 422: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2209 +//line sql.y:2222 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } - case 422: + case 423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2213 +//line sql.y:2226 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } - case 423: + case 424: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2217 +//line sql.y:2230 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } - case 424: + case 425: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2221 +//line sql.y:2234 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } - case 425: + case 426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2225 +//line sql.y:2238 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } - case 426: + case 427: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2229 +//line sql.y:2242 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 427: + case 428: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2233 +//line sql.y:2246 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 428: + case 429: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2237 +//line sql.y:2250 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } - case 429: + case 430: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2241 +//line sql.y:2254 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } - case 430: + case 431: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2245 +//line sql.y:2258 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 431: + case 432: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2249 +//line sql.y:2262 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 432: + case 433: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2253 +//line sql.y:2266 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 433: + case 434: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2257 +//line sql.y:2270 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } - case 434: + case 435: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2261 +//line sql.y:2274 { yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } - case 435: + case 436: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2265 +//line sql.y:2278 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -5093,9 +5109,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 436: + case 437: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2273 +//line sql.y:2286 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -5109,21 +5125,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 437: + case 438: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2287 +//line sql.y:2300 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 438: + case 439: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2291 +//line sql.y:2304 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 439: + case 440: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2295 +//line sql.y:2308 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -5131,455 +5147,455 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 444: + case 445: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2313 +//line sql.y:2326 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 445: + case 446: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2317 +//line sql.y:2330 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 446: + case 447: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2321 +//line sql.y:2334 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 447: + case 448: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2331 +//line sql.y:2344 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 448: + case 449: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2335 +//line sql.y:2348 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 449: + case 450: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2339 +//line sql.y:2352 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 450: + case 451: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2343 +//line sql.y:2356 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 451: + case 452: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2347 +//line sql.y:2360 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 452: + case 453: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2351 +//line sql.y:2364 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 453: + case 454: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2355 +//line sql.y:2368 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 454: + case 455: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2359 +//line sql.y:2372 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 455: + case 456: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2363 +//line sql.y:2376 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 456: + case 457: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2367 +//line sql.y:2380 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 457: + case 458: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2371 +//line sql.y:2384 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 458: + case 459: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2375 +//line sql.y:2388 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 459: + case 460: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2379 +//line sql.y:2392 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } - case 460: + case 461: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2383 +//line sql.y:2396 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 461: + case 462: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2387 +//line sql.y:2400 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 462: + case 463: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2397 +//line sql.y:2410 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 463: + case 464: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2401 +//line sql.y:2414 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 464: + case 465: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2405 +//line sql.y:2418 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 465: + case 466: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2409 +//line sql.y:2422 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 466: + case 467: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2414 +//line sql.y:2427 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 467: + case 468: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2419 +//line sql.y:2432 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 468: + case 469: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2424 +//line sql.y:2437 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 469: + case 470: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2429 +//line sql.y:2442 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 472: + case 473: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2443 +//line sql.y:2456 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 473: + case 474: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2447 +//line sql.y:2460 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 474: + case 475: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2451 +//line sql.y:2464 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 475: + case 476: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2455 +//line sql.y:2468 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 476: + case 477: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2461 +//line sql.y:2474 { yyVAL.str = "" } - case 477: + case 478: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2465 +//line sql.y:2478 { yyVAL.str = BooleanModeStr } - case 478: + case 479: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2469 +//line sql.y:2482 { yyVAL.str = NaturalLanguageModeStr } - case 479: + case 480: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2473 +//line sql.y:2486 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 480: + case 481: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2477 +//line sql.y:2490 { yyVAL.str = QueryExpansionStr } - case 481: + case 482: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2483 +//line sql.y:2496 { yyVAL.str = string(yyDollar[1].bytes) } - case 482: + case 483: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2487 +//line sql.y:2500 { yyVAL.str = string(yyDollar[1].bytes) } - case 483: + case 484: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2493 +//line sql.y:2506 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 484: + case 485: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2497 +//line sql.y:2510 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 485: + case 486: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2501 +//line sql.y:2514 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: string(yyDollar[3].bytes)} } - case 486: + case 487: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2505 +//line sql.y:2518 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 487: + case 488: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2509 +//line sql.y:2522 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 488: + case 489: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2513 +//line sql.y:2526 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 489: + case 490: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2519 +//line sql.y:2532 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 490: + case 491: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2523 +//line sql.y:2536 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 491: + case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2527 +//line sql.y:2540 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 492: + case 493: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2531 +//line sql.y:2544 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 493: + case 494: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2535 +//line sql.y:2548 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 494: + case 495: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2539 +//line sql.y:2552 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 495: + case 496: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2543 +//line sql.y:2556 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 496: + case 497: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2547 +//line sql.y:2560 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 497: + case 498: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2552 +//line sql.y:2565 { yyVAL.expr = nil } - case 498: + case 499: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2556 +//line sql.y:2569 { yyVAL.expr = yyDollar[1].expr } - case 499: + case 500: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2561 +//line sql.y:2574 { yyVAL.str = string("") } - case 500: + case 501: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2565 +//line sql.y:2578 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 501: + case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2571 +//line sql.y:2584 { yyVAL.whens = []*When{yyDollar[1].when} } - case 502: + case 503: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2575 +//line sql.y:2588 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 503: + case 504: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2581 +//line sql.y:2594 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 504: + case 505: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2586 +//line sql.y:2599 { yyVAL.expr = nil } - case 505: + case 506: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2590 +//line sql.y:2603 { yyVAL.expr = yyDollar[2].expr } - case 506: + case 507: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2596 +//line sql.y:2609 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 507: + case 508: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2600 +//line sql.y:2613 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 508: + case 509: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2604 +//line sql.y:2617 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 509: + case 510: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2610 +//line sql.y:2623 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 510: + case 511: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2614 +//line sql.y:2627 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 511: + case 512: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2618 +//line sql.y:2631 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 512: + case 513: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2622 +//line sql.y:2635 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 513: + case 514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2626 +//line sql.y:2639 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 514: + case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2630 +//line sql.y:2643 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 515: + case 516: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2634 +//line sql.y:2647 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 516: + case 517: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2638 +//line sql.y:2651 { yyVAL.expr = &NullVal{} } - case 517: + case 518: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2642 +//line sql.y:2655 { yyVAL.expr = NewPgEscapeString(yyDollar[1].bytes) } - case 518: + case 519: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2646 +//line sql.y:2659 { yyVAL.expr = NewCastVal(yyDollar[1].expr, yyDollar[2].bytes) } - case 519: + case 520: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2652 +//line sql.y:2665 { yyVAL.bytes = yyDollar[1].bytes } - case 520: + case 521: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2660 +//line sql.y:2673 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -5588,239 +5604,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 521: + case 522: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2669 +//line sql.y:2682 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 522: + case 523: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2673 +//line sql.y:2686 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 523: + case 524: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2678 +//line sql.y:2691 { yyVAL.exprs = nil } - case 524: + case 525: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2682 +//line sql.y:2695 { yyVAL.exprs = yyDollar[3].exprs } - case 525: + case 526: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2687 +//line sql.y:2700 { yyVAL.expr = nil } - case 526: + case 527: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2691 +//line sql.y:2704 { yyVAL.expr = yyDollar[2].expr } - case 527: + case 528: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2696 +//line sql.y:2709 { yyVAL.orderBy = nil } - case 528: + case 529: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2700 +//line sql.y:2713 { yyVAL.orderBy = yyDollar[3].orderBy } - case 529: + case 530: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2706 +//line sql.y:2719 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 530: + case 531: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2710 +//line sql.y:2723 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 531: + case 532: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2716 +//line sql.y:2729 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 532: + case 533: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2721 +//line sql.y:2734 { yyVAL.str = AscScr } - case 533: + case 534: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2725 +//line sql.y:2738 { yyVAL.str = AscScr } - case 534: + case 535: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2729 +//line sql.y:2742 { yyVAL.str = DescScr } - case 535: + case 536: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2734 +//line sql.y:2747 { yyVAL.limit = nil } - case 536: + case 537: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2738 +//line sql.y:2751 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 537: + case 538: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2742 +//line sql.y:2755 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 538: + case 539: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2746 +//line sql.y:2759 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 539: + case 540: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2751 +//line sql.y:2764 { yyVAL.str = "" } - case 540: + case 541: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2755 +//line sql.y:2768 { yyVAL.str = ForUpdateStr } - case 541: + case 542: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2759 +//line sql.y:2772 { yyVAL.str = ShareModeStr } - case 542: + case 543: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2772 +//line sql.y:2785 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 543: + case 544: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2776 +//line sql.y:2789 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 544: + case 545: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2780 +//line sql.y:2793 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 545: + case 546: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2785 +//line sql.y:2798 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 546: + case 547: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2789 +//line sql.y:2802 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 547: + case 548: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2793 +//line sql.y:2806 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 548: + case 549: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2800 +//line sql.y:2813 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 549: + case 550: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2804 +//line sql.y:2817 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 550: + case 551: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2808 +//line sql.y:2821 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 551: + case 552: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2812 +//line sql.y:2825 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 552: + case 553: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2817 +//line sql.y:2830 { yyVAL.updateExprs = nil } - case 553: + case 554: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2821 +//line sql.y:2834 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 554: + case 555: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2827 +//line sql.y:2840 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 555: + case 556: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2831 +//line sql.y:2844 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 556: + case 557: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2837 +//line sql.y:2850 { yyVAL.valTuple = yyDollar[1].valTuple } - case 557: + case 558: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2841 +//line sql.y:2854 { yyVAL.valTuple = ValTuple{} } - case 558: + case 559: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2847 +//line sql.y:2860 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 559: + case 560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2853 +//line sql.y:2866 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -5828,318 +5844,318 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 560: + case 561: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2862 +//line sql.y:2875 { yyVAL.returning = nil } - case 561: + case 562: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2867 +//line sql.y:2880 { yyVAL.returning = Returning{&StarExpr{}} } - case 562: + case 563: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2872 +//line sql.y:2885 { yyVAL.returning = Returning(yyDollar[2].exprs) } - case 563: + case 564: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2879 +//line sql.y:2892 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 564: + case 565: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2883 +//line sql.y:2896 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 565: + case 566: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2889 +//line sql.y:2902 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 566: + case 567: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2895 +//line sql.y:2908 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 567: + case 568: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2899 +//line sql.y:2912 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 568: + case 569: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2905 +//line sql.y:2918 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 569: + case 570: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2909 +//line sql.y:2922 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 570: + case 571: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2913 +//line sql.y:2926 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 572: + case 573: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2920 +//line sql.y:2933 { yyVAL.bytes = []byte("charset") } - case 574: + case 575: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2927 +//line sql.y:2940 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 575: + case 576: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2931 +//line sql.y:2944 { yyVAL.expr = &Default{} } - case 578: + case 579: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2940 +//line sql.y:2953 { yyVAL.byt = 0 } - case 579: + case 580: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2942 +//line sql.y:2955 { yyVAL.byt = 1 } - case 580: + case 581: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2945 +//line sql.y:2958 { yyVAL.empty = struct{}{} } - case 581: + case 582: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2947 +//line sql.y:2960 { yyVAL.empty = struct{}{} } - case 582: + case 583: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2950 +//line sql.y:2963 { yyVAL.str = "" } - case 583: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2952 - { - yyVAL.str = IgnoreStr - } case 584: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2956 +//line sql.y:2965 { - yyVAL.empty = struct{}{} + yyVAL.str = IgnoreStr } case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2958 +//line sql.y:2969 { yyVAL.empty = struct{}{} } case 586: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2960 +//line sql.y:2971 { yyVAL.empty = struct{}{} } case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2962 +//line sql.y:2973 { yyVAL.empty = struct{}{} } case 588: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2964 +//line sql.y:2975 { yyVAL.empty = struct{}{} } case 589: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2966 +//line sql.y:2977 { yyVAL.empty = struct{}{} } case 590: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2968 +//line sql.y:2979 { yyVAL.empty = struct{}{} } case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2970 +//line sql.y:2981 { yyVAL.empty = struct{}{} } case 592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2972 +//line sql.y:2983 { yyVAL.empty = struct{}{} } case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2974 +//line sql.y:2985 { yyVAL.empty = struct{}{} } case 594: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2977 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2987 { yyVAL.empty = struct{}{} } case 595: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2979 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:2990 { yyVAL.empty = struct{}{} } case 596: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2981 +//line sql.y:2992 { yyVAL.empty = struct{}{} } case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2985 +//line sql.y:2994 { yyVAL.empty = struct{}{} } case 598: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2987 +//line sql.y:2998 { yyVAL.empty = struct{}{} } case 599: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2990 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3000 { yyVAL.empty = struct{}{} } case 600: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2992 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3003 { yyVAL.empty = struct{}{} } case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2994 +//line sql.y:3005 { yyVAL.empty = struct{}{} } case 602: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3007 + { + yyVAL.empty = struct{}{} + } + case 603: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2997 +//line sql.y:3010 { yyVAL.colIdent = ColIdent{} } - case 603: + case 604: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2999 +//line sql.y:3012 { yyVAL.colIdent = yyDollar[2].colIdent } - case 604: + case 605: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3003 +//line sql.y:3016 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 605: + case 606: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3007 +//line sql.y:3020 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 606: + case 607: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3011 +//line sql.y:3024 { yyVAL.colIdent = NewColIdentWithQuotes(string(yyDollar[1].bytes), true) } - case 608: + case 609: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3018 +//line sql.y:3031 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 609: + case 610: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3024 +//line sql.y:3037 { yyVAL.tableIdent = NewTableIdentWithQuotes(yyDollar[1].colIdent.String(), yyDollar[1].colIdent.NeedQuotes()) } - case 611: + case 612: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3031 +//line sql.y:3044 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 802: + case 803: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3247 +//line sql.y:3260 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 803: + case 804: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3256 +//line sql.y:3269 { decNesting(yylex) } - case 804: + case 805: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3261 +//line sql.y:3274 { forceEOF(yylex) } - case 805: + case 806: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3266 +//line sql.y:3279 { forceEOF(yylex) } - case 806: + case 807: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3270 +//line sql.y:3283 { forceEOF(yylex) } - case 807: + case 808: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3274 +//line sql.y:3287 { forceEOF(yylex) } diff --git a/sqlparser/sql.y b/sqlparser/sql.y index 7ce420c2e..a4047164d 100644 --- a/sqlparser/sql.y +++ b/sqlparser/sql.y @@ -112,7 +112,7 @@ func forceEOF(yylex interface{}) { vindexParam VindexParam vindexParams []VindexParam showFilter *ShowFilter - fromInPrepare FromInPrepare + preparedQuery PreparedQuery } %token LEX_ERROR @@ -305,7 +305,7 @@ func forceEOF(yylex interface{}) { %type alter_object_type %type typecast %type returning_opt -%type from_in_prepare +%type prepared_query %type using_in_execute_list %start any_command @@ -1585,16 +1585,16 @@ deallocate_prepare_statement: } prepare_statement: - PREPARE table_id FROM from_in_prepare + PREPARE table_id FROM prepared_query { - $$ = &Prepare{PreparedStatementName: $2, From: $4} + $$ = &Prepare{PreparedStatementName: $2, PreparedStatementQuery: $4} } -| PREPARE table_id AS from_in_prepare +| PREPARE table_id AS prepared_query { - $$ = &Prepare{PreparedStatementName: $2, From: $4} + $$ = &Prepare{PreparedStatementName: $2, PreparedStatementQuery: $4} } -from_in_prepare: +prepared_query: base_select { $$ = $1.(*Select) @@ -1603,17 +1603,30 @@ from_in_prepare: { $$ = $1.(*Insert) } -| ID +| delete_statement { - $$ = NewTableIdent(string($1)) + $$ = $1.(*Delete) } -| PG_ESCAPE_STRING +| update_statement { - $$ = NewPgEscapeString($1) + $$ = $1.(*Update) + } +| ID + { + $$ = NewTableIdent(string($1)) } | STRING { - $$ = NewStrVal($1) + statement, err := NewPreparedQueryFromString(string($1)) + if statement == nil { + yylex.Error("unsupported type of prepared query") + return 1 + } + if err != nil { + yylex.Error("syntax error in prepared query") + return 1 + } + $$ = statement } execute_statement: From 0ced3b4fa48fa15f5d98e7def6394faefbada075 Mon Sep 17 00:00:00 2001 From: storojs72 Date: Mon, 21 Jan 2019 19:18:16 +0200 Subject: [PATCH 11/13] gofmt --- sqlparser/ast.go | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/sqlparser/ast.go b/sqlparser/ast.go index 21f6f55a7..5fdfa8eb1 100644 --- a/sqlparser/ast.go +++ b/sqlparser/ast.go @@ -739,13 +739,12 @@ type PreparedQuery interface { } func (TableIdent) iPreparedQuery() {} -func (*Select) iPreparedQuery() {} -func (*Insert) iPreparedQuery() {} -func (*Delete) iPreparedQuery() {} -func (*Update) iPreparedQuery() {} +func (*Select) iPreparedQuery() {} +func (*Insert) iPreparedQuery() {} +func (*Delete) iPreparedQuery() {} +func (*Update) iPreparedQuery() {} - -func NewPreparedQueryFromString(query string) (PreparedQuery, error){ +func NewPreparedQueryFromString(query string) (PreparedQuery, error) { statement, err := Parse(query) if err != nil { return nil, err @@ -765,7 +764,6 @@ func NewPreparedQueryFromString(query string) (PreparedQuery, error){ return nil, nil } - type UsingInExecuteList []TableIdent // Execute executes prepared statement From 990887d1f3a2c8bc0ea50ec0c986bd33b3762683 Mon Sep 17 00:00:00 2001 From: storojs72 Date: Mon, 21 Jan 2019 19:33:35 +0200 Subject: [PATCH 12/13] golint --- sqlparser/ast.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sqlparser/ast.go b/sqlparser/ast.go index 5fdfa8eb1..e30bd8a41 100644 --- a/sqlparser/ast.go +++ b/sqlparser/ast.go @@ -744,6 +744,7 @@ func (*Insert) iPreparedQuery() {} func (*Delete) iPreparedQuery() {} func (*Update) iPreparedQuery() {} +// NewPreparedQueryFromString creates typed statement based on query inside Prepare statement func NewPreparedQueryFromString(query string) (PreparedQuery, error) { statement, err := Parse(query) if err != nil { @@ -764,6 +765,7 @@ func NewPreparedQueryFromString(query string) (PreparedQuery, error) { return nil, nil } +// UsingInExecuteList is a set of case sensitive SQL identifiers type UsingInExecuteList []TableIdent // Execute executes prepared statement From 2758e2226dc890dcf8f6c84fc3f1269cb173b280 Mon Sep 17 00:00:00 2001 From: Artem Date: Sun, 27 Jan 2019 15:53:01 +0200 Subject: [PATCH 13/13] add support of postgres placeholders in prepare statement --- sqlparser/ast.go | 24 + sqlparser/ast_methods.go | 48 +- sqlparser/parse_test.go | 3 + sqlparser/sql.go | 5135 +++++++++++++++++++------------------- sqlparser/sql.y | 41 +- sqlparser/token.go | 14 + 6 files changed, 2712 insertions(+), 2553 deletions(-) diff --git a/sqlparser/ast.go b/sqlparser/ast.go index e30bd8a41..3cced0b9a 100644 --- a/sqlparser/ast.go +++ b/sqlparser/ast.go @@ -23,6 +23,7 @@ import ( "fmt" "github.com/cossacklabs/acra/sqlparser/dependency/querypb" "github.com/cossacklabs/acra/sqlparser/dependency/sqltypes" + "strconv" "strings" ) @@ -451,6 +452,9 @@ func (col *ColumnDefinition) walkSubtree(visit Visit) error { ) } +// ColumnTypes represents list of column types, eg (int, bool, text, numeric) - dictated by Postgres +type ColumnTypes []ColumnType + // ColumnType represents a sql type in a CREATE TABLE statement // All optional fields are nil if not specified type ColumnType struct { @@ -777,6 +781,7 @@ type Execute struct { // Prepare prepares statement for future execution type Prepare struct { PreparedStatementName TableIdent + ColumnTypes ColumnTypes PreparedStatementQuery PreparedQuery } @@ -1009,6 +1014,7 @@ func (*ConvertUsingExpr) iExpr() {} func (*MatchExpr) iExpr() {} func (*GroupConcatExpr) iExpr() {} func (*Default) iExpr() {} +func (DollarExpr) iExpr() {} // ReplaceExpr finds the from expression from root // and replaces it with to. If from matches root, @@ -1583,6 +1589,24 @@ func (node *Default) replace(from, to Expr) bool { return false } +// DollarExpr represents placeholder '$1' - dictated by Postgres +type DollarExpr struct { + Value string +} + +// NewDollarExpr creates new DollarExpr from input string +func NewDollarExpr(value string) (DollarExpr, error) { + _, err := strconv.Atoi(value[1:]) + if err != nil { + return DollarExpr{Value: ""}, err + } + return DollarExpr{Value: value}, nil +} + +func (node DollarExpr) replace(from, to Expr) bool { + return false +} + // When represents a WHEN sub-expression. type When struct { Cond Expr diff --git a/sqlparser/ast_methods.go b/sqlparser/ast_methods.go index 7be9c5639..69dff3b45 100644 --- a/sqlparser/ast_methods.go +++ b/sqlparser/ast_methods.go @@ -446,6 +446,24 @@ func (ts *TableSpec) walkSubtree(visit Visit) error { return nil } +// Format formats the node. +func (node ColumnTypes) Format(buf *TrackedBuffer) { + var prefix string + for _, n := range node { + buf.Myprintf("(%s%v)", prefix, n) + prefix = ", " + } +} + +func (node ColumnTypes) walkSubtree(visit Visit) error { + for _, n := range node { + if err := Walk(visit, &n); err != nil { + return err + } + } + return nil +} + // Format returns a canonical string representation of the type and all relevant options func (ct *ColumnType) Format(buf *TrackedBuffer) { buf.Myprintf("%s", ct.Type) @@ -720,7 +738,11 @@ func (node *OtherAdmin) walkSubtree(visit Visit) error { // Format formats the node func (node UsingInExecuteList) Format(buf *TrackedBuffer) { - + var prefix string + for _, n := range node { + buf.Myprintf("%s%v", prefix, n) + prefix = ", " + } } func (node UsingInExecuteList) walkSubtree(visit Visit) error { @@ -737,14 +759,8 @@ func (node *Execute) Format(buf *TrackedBuffer) { if node.Using == nil { buf.Myprintf("execute %v", node.PreparedStatementName) } else { - buf.Myprintf("execute %v using ", node.PreparedStatementName) - var prefix string - for _, singleUsing := range node.Using { - buf.Myprintf("%s%v", prefix, singleUsing) - prefix = ", " - } + buf.Myprintf("execute %v using %v", node.PreparedStatementName, node.Using) } - } func (node *Execute) walkSubtree(visit Visit) error { @@ -753,11 +769,14 @@ func (node *Execute) walkSubtree(visit Visit) error { // Format formats the node. func (node *Prepare) Format(buf *TrackedBuffer) { - buf.Myprintf("prepare %v from %v", node.PreparedStatementName, node.PreparedStatementQuery) + if node.ColumnTypes != nil { + buf.Myprintf("prepare %v (%v) from (as) %v", node.PreparedStatementName, node.ColumnTypes, node.PreparedStatementQuery) + } + } func (node *Prepare) walkSubtree(visit Visit) error { - return Walk(visit, node.PreparedStatementName, node.PreparedStatementQuery) + return Walk(visit, node.PreparedStatementName, node.ColumnTypes, node.PreparedStatementQuery) } // Format formats the node. @@ -1559,6 +1578,15 @@ func (node *Default) walkSubtree(visit Visit) error { return nil } +// Format formats the node. +func (node DollarExpr) Format(buf *TrackedBuffer) { + buf.Myprintf("%s", node.Value) +} + +func (node DollarExpr) walkSubtree(visit Visit) error { + return nil +} + // Format formats the node. func (node *When) Format(buf *TrackedBuffer) { buf.Myprintf("when %v then %v", node.Cond, node.Val) diff --git a/sqlparser/parse_test.go b/sqlparser/parse_test.go index aa886e1b9..3ba10ea9b 100644 --- a/sqlparser/parse_test.go +++ b/sqlparser/parse_test.go @@ -1959,6 +1959,9 @@ func TestPreparedStatements(t *testing.T) { `prepare test_statement from "insert into test(id, data) values(1, DEFAULT)"`, `prepare test_statement from "delete from somelog where user = 'jcole' order by timestamp_column limit 1"`, `prepare test_statement from "update t1 set col1 = col1 + 1"`, + `PREPARE usrrptplan (int) AS SELECT * FROM users u, logs l WHERE u.usrid=$1 AND u.usrid=l.usrid AND l.date = $1;`, + `PREPARE fooplan (int, text, bool, numeric) AS INSERT INTO foo DEFAULT VALUES;`, + `PREPARE fooplan (int, text, bool, numeric) AS INSERT INTO foo VALUES($1, $2, $3, $4);`, } for _, query := range testQueries { diff --git a/sqlparser/sql.go b/sqlparser/sql.go index 122ad090e..25cdd4ea7 100644 --- a/sqlparser/sql.go +++ b/sqlparser/sql.go @@ -86,6 +86,7 @@ type yySymType struct { aliasedTableName *AliasedTableExpr TableSpec *TableSpec columnType ColumnType + columnTypes []ColumnType colKeyOpt ColumnKeyOption optVal *SQLVal LengthScaleOption LengthScaleOption @@ -166,179 +167,180 @@ const LIST_ARG = 57403 const COMMENT = 57404 const COMMENT_KEYWORD = 57405 const BIT_LITERAL = 57406 -const NULL = 57407 -const TRUE = 57408 -const FALSE = 57409 -const OR = 57410 -const AND = 57411 -const NOT = 57412 -const BETWEEN = 57413 -const CASE = 57414 -const WHEN = 57415 -const THEN = 57416 -const ELSE = 57417 -const END = 57418 -const LE = 57419 -const GE = 57420 -const NE = 57421 -const NULL_SAFE_EQUAL = 57422 -const IS = 57423 -const LIKE = 57424 -const REGEXP = 57425 -const IN = 57426 -const SHIFT_LEFT = 57427 -const SHIFT_RIGHT = 57428 -const DIV = 57429 -const MOD = 57430 -const UNARY = 57431 -const COLLATE = 57432 -const BINARY = 57433 -const UNDERSCORE_BINARY = 57434 -const INTERVAL = 57435 -const JSON_EXTRACT_OP = 57436 -const JSON_UNQUOTE_EXTRACT_OP = 57437 -const CREATE = 57438 -const ALTER = 57439 -const DROP = 57440 -const RENAME = 57441 -const ANALYZE = 57442 -const ADD = 57443 -const SCHEMA = 57444 -const TABLE = 57445 -const INDEX = 57446 -const VIEW = 57447 -const TO = 57448 -const IGNORE = 57449 -const IF = 57450 -const UNIQUE = 57451 -const PRIMARY = 57452 -const COLUMN = 57453 -const CONSTRAINT = 57454 -const SPATIAL = 57455 -const FULLTEXT = 57456 -const FOREIGN = 57457 -const KEY_BLOCK_SIZE = 57458 -const SHOW = 57459 -const DESCRIBE = 57460 -const EXPLAIN = 57461 -const DATE = 57462 -const ESCAPE = 57463 -const REPAIR = 57464 -const OPTIMIZE = 57465 -const TRUNCATE = 57466 -const MAXVALUE = 57467 -const PARTITION = 57468 -const REORGANIZE = 57469 -const LESS = 57470 -const THAN = 57471 -const PROCEDURE = 57472 -const TRIGGER = 57473 -const VINDEX = 57474 -const VINDEXES = 57475 -const STATUS = 57476 -const VARIABLES = 57477 -const BEGIN = 57478 -const START = 57479 -const TRANSACTION = 57480 -const COMMIT = 57481 -const ROLLBACK = 57482 -const DEALLOCATE = 57483 -const PREPARE = 57484 -const EXECUTE = 57485 -const BIT = 57486 -const TINYINT = 57487 -const SMALLINT = 57488 -const MEDIUMINT = 57489 -const INT = 57490 -const INTEGER = 57491 -const BIGINT = 57492 -const INTNUM = 57493 -const REAL = 57494 -const DOUBLE = 57495 -const FLOAT_TYPE = 57496 -const DECIMAL = 57497 -const NUMERIC = 57498 -const TIME = 57499 -const TIMESTAMP = 57500 -const DATETIME = 57501 -const YEAR = 57502 -const CHAR = 57503 -const VARCHAR = 57504 -const BOOL = 57505 -const CHARACTER = 57506 -const VARBINARY = 57507 -const NCHAR = 57508 -const TEXT = 57509 -const TINYTEXT = 57510 -const MEDIUMTEXT = 57511 -const LONGTEXT = 57512 -const BLOB = 57513 -const TINYBLOB = 57514 -const MEDIUMBLOB = 57515 -const LONGBLOB = 57516 -const JSON = 57517 -const ENUM = 57518 -const GEOMETRY = 57519 -const POINT = 57520 -const LINESTRING = 57521 -const POLYGON = 57522 -const GEOMETRYCOLLECTION = 57523 -const MULTIPOINT = 57524 -const MULTILINESTRING = 57525 -const MULTIPOLYGON = 57526 -const NULLX = 57527 -const AUTO_INCREMENT = 57528 -const APPROXNUM = 57529 -const SIGNED = 57530 -const UNSIGNED = 57531 -const ZEROFILL = 57532 -const DATABASES = 57533 -const TABLES = 57534 -const VITESS_KEYSPACES = 57535 -const VITESS_SHARDS = 57536 -const VITESS_TABLETS = 57537 -const VSCHEMA_TABLES = 57538 -const EXTENDED = 57539 -const FULL = 57540 -const PROCESSLIST = 57541 -const NAMES = 57542 -const CHARSET = 57543 -const GLOBAL = 57544 -const SESSION = 57545 -const ISOLATION = 57546 -const LEVEL = 57547 -const READ = 57548 -const WRITE = 57549 -const ONLY = 57550 -const REPEATABLE = 57551 -const COMMITTED = 57552 -const UNCOMMITTED = 57553 -const SERIALIZABLE = 57554 -const CURRENT_TIMESTAMP = 57555 -const DATABASE = 57556 -const CURRENT_DATE = 57557 -const CURRENT_TIME = 57558 -const LOCALTIME = 57559 -const LOCALTIMESTAMP = 57560 -const UTC_DATE = 57561 -const UTC_TIME = 57562 -const UTC_TIMESTAMP = 57563 -const REPLACE = 57564 -const CONVERT = 57565 -const CAST = 57566 -const SUBSTR = 57567 -const SUBSTRING = 57568 -const GROUP_CONCAT = 57569 -const SEPARATOR = 57570 -const MATCH = 57571 -const AGAINST = 57572 -const BOOLEAN = 57573 -const LANGUAGE = 57574 -const WITH = 57575 -const QUERY = 57576 -const EXPANSION = 57577 -const UNUSED = 57578 -const RETURNING = 57579 +const DOLLAR_SIGN = 57407 +const NULL = 57408 +const TRUE = 57409 +const FALSE = 57410 +const OR = 57411 +const AND = 57412 +const NOT = 57413 +const BETWEEN = 57414 +const CASE = 57415 +const WHEN = 57416 +const THEN = 57417 +const ELSE = 57418 +const END = 57419 +const LE = 57420 +const GE = 57421 +const NE = 57422 +const NULL_SAFE_EQUAL = 57423 +const IS = 57424 +const LIKE = 57425 +const REGEXP = 57426 +const IN = 57427 +const SHIFT_LEFT = 57428 +const SHIFT_RIGHT = 57429 +const DIV = 57430 +const MOD = 57431 +const UNARY = 57432 +const COLLATE = 57433 +const BINARY = 57434 +const UNDERSCORE_BINARY = 57435 +const INTERVAL = 57436 +const JSON_EXTRACT_OP = 57437 +const JSON_UNQUOTE_EXTRACT_OP = 57438 +const CREATE = 57439 +const ALTER = 57440 +const DROP = 57441 +const RENAME = 57442 +const ANALYZE = 57443 +const ADD = 57444 +const SCHEMA = 57445 +const TABLE = 57446 +const INDEX = 57447 +const VIEW = 57448 +const TO = 57449 +const IGNORE = 57450 +const IF = 57451 +const UNIQUE = 57452 +const PRIMARY = 57453 +const COLUMN = 57454 +const CONSTRAINT = 57455 +const SPATIAL = 57456 +const FULLTEXT = 57457 +const FOREIGN = 57458 +const KEY_BLOCK_SIZE = 57459 +const SHOW = 57460 +const DESCRIBE = 57461 +const EXPLAIN = 57462 +const DATE = 57463 +const ESCAPE = 57464 +const REPAIR = 57465 +const OPTIMIZE = 57466 +const TRUNCATE = 57467 +const MAXVALUE = 57468 +const PARTITION = 57469 +const REORGANIZE = 57470 +const LESS = 57471 +const THAN = 57472 +const PROCEDURE = 57473 +const TRIGGER = 57474 +const VINDEX = 57475 +const VINDEXES = 57476 +const STATUS = 57477 +const VARIABLES = 57478 +const BEGIN = 57479 +const START = 57480 +const TRANSACTION = 57481 +const COMMIT = 57482 +const ROLLBACK = 57483 +const DEALLOCATE = 57484 +const PREPARE = 57485 +const EXECUTE = 57486 +const BIT = 57487 +const TINYINT = 57488 +const SMALLINT = 57489 +const MEDIUMINT = 57490 +const INT = 57491 +const INTEGER = 57492 +const BIGINT = 57493 +const INTNUM = 57494 +const REAL = 57495 +const DOUBLE = 57496 +const FLOAT_TYPE = 57497 +const DECIMAL = 57498 +const NUMERIC = 57499 +const TIME = 57500 +const TIMESTAMP = 57501 +const DATETIME = 57502 +const YEAR = 57503 +const CHAR = 57504 +const VARCHAR = 57505 +const BOOL = 57506 +const CHARACTER = 57507 +const VARBINARY = 57508 +const NCHAR = 57509 +const TEXT = 57510 +const TINYTEXT = 57511 +const MEDIUMTEXT = 57512 +const LONGTEXT = 57513 +const BLOB = 57514 +const TINYBLOB = 57515 +const MEDIUMBLOB = 57516 +const LONGBLOB = 57517 +const JSON = 57518 +const ENUM = 57519 +const GEOMETRY = 57520 +const POINT = 57521 +const LINESTRING = 57522 +const POLYGON = 57523 +const GEOMETRYCOLLECTION = 57524 +const MULTIPOINT = 57525 +const MULTILINESTRING = 57526 +const MULTIPOLYGON = 57527 +const NULLX = 57528 +const AUTO_INCREMENT = 57529 +const APPROXNUM = 57530 +const SIGNED = 57531 +const UNSIGNED = 57532 +const ZEROFILL = 57533 +const DATABASES = 57534 +const TABLES = 57535 +const VITESS_KEYSPACES = 57536 +const VITESS_SHARDS = 57537 +const VITESS_TABLETS = 57538 +const VSCHEMA_TABLES = 57539 +const EXTENDED = 57540 +const FULL = 57541 +const PROCESSLIST = 57542 +const NAMES = 57543 +const CHARSET = 57544 +const GLOBAL = 57545 +const SESSION = 57546 +const ISOLATION = 57547 +const LEVEL = 57548 +const READ = 57549 +const WRITE = 57550 +const ONLY = 57551 +const REPEATABLE = 57552 +const COMMITTED = 57553 +const UNCOMMITTED = 57554 +const SERIALIZABLE = 57555 +const CURRENT_TIMESTAMP = 57556 +const DATABASE = 57557 +const CURRENT_DATE = 57558 +const CURRENT_TIME = 57559 +const LOCALTIME = 57560 +const LOCALTIMESTAMP = 57561 +const UTC_DATE = 57562 +const UTC_TIME = 57563 +const UTC_TIMESTAMP = 57564 +const REPLACE = 57565 +const CONVERT = 57566 +const CAST = 57567 +const SUBSTR = 57568 +const SUBSTRING = 57569 +const GROUP_CONCAT = 57570 +const SEPARATOR = 57571 +const MATCH = 57572 +const AGAINST = 57573 +const BOOLEAN = 57574 +const LANGUAGE = 57575 +const WITH = 57576 +const QUERY = 57577 +const EXPANSION = 57578 +const UNUSED = 57579 +const RETURNING = 57580 var yyToknames = [...]string{ "$end", @@ -408,6 +410,7 @@ var yyToknames = [...]string{ "COMMENT", "COMMENT_KEYWORD", "BIT_LITERAL", + "DOLLAR_SIGN", "NULL", "TRUE", "FALSE", @@ -612,570 +615,579 @@ var yyExca = [...]int{ 5, 30, -2, 4, -1, 39, - 151, 268, - 152, 268, - -2, 258, + 152, 272, + 153, 272, + -2, 262, -1, 248, - 110, 610, - -2, 507, + 111, 616, + -2, 512, -1, 266, - 53, 607, - 110, 607, - 111, 607, - 112, 607, - -2, 510, - -1, 317, - 81, 768, - -2, 62, + 53, 613, + 111, 613, + 112, 613, + 113, 613, + -2, 515, -1, 318, - 81, 729, + 82, 774, + -2, 62, + -1, 319, + 82, 735, -2, 63, - -1, 323, - 81, 713, - -2, 572, - -1, 325, - 81, 750, - -2, 574, - -1, 589, + -1, 324, + 82, 719, + -2, 578, + -1, 326, + 82, 756, + -2, 580, + -1, 591, 52, 45, 54, 45, -2, 47, - -1, 732, - 110, 612, - -2, 609, - -1, 733, - 110, 610, - -2, 608, - -1, 779, - 110, 610, - -2, 507, - -1, 939, + -1, 738, + 111, 618, + -2, 615, + -1, 739, + 111, 616, + -2, 614, + -1, 785, + 111, 616, + -2, 512, + -1, 947, 5, 31, - -2, 411, - -1, 964, + -2, 416, + -1, 972, 5, 30, - -2, 544, - -1, 1195, + -2, 550, + -1, 1206, 5, 31, - -2, 545, - -1, 1242, + -2, 551, + -1, 1253, 5, 30, - -2, 547, - -1, 1305, + -2, 553, + -1, 1316, 5, 31, - -2, 548, + -2, 554, } const yyPrivate = 57344 -const yyLast = 9545 +const yyLast = 9654 var yyAct = [...]int{ - 248, 1296, 880, 537, 659, 1253, 1100, 833, 797, 1128, - 837, 874, 1027, 1201, 815, 1101, 584, 836, 758, 322, - 798, 536, 3, 227, 1097, 277, 984, 860, 968, 931, - 1030, 599, 846, 762, 80, 1018, 59, 582, 192, 785, - 218, 192, 973, 469, 735, 475, 1073, 419, 598, 793, - 571, 870, 192, 586, 913, 250, 316, 765, 489, 481, - 251, 304, 236, 24, 303, 692, 313, 311, 192, 192, - 321, 58, 1190, 1325, 192, 226, 424, 1315, 897, 1323, - 1303, 1321, 881, 1314, 1302, 1092, 1187, 219, 220, 221, - 222, 423, 896, 1262, 551, 1123, 1124, 829, 830, 233, - 467, 54, 29, 30, 1122, 302, 1278, 501, 500, 510, - 511, 503, 504, 505, 506, 507, 508, 509, 502, 901, - 600, 512, 601, 240, 992, 231, 63, 991, 828, 895, - 993, 444, 687, 458, 242, 188, 184, 185, 186, 764, - 689, 460, 26, 27, 54, 29, 30, 690, 1009, 697, - 853, 1213, 698, 432, 65, 66, 67, 68, 69, 861, - 1228, 45, 1175, 1074, 1173, 223, 31, 1134, 1135, 1136, - 1322, 449, 217, 455, 456, 1139, 1137, 892, 889, 890, - 1320, 888, 192, 794, 192, 40, 1297, 1051, 795, 56, - 192, 433, 426, 1076, 182, 446, 192, 448, 816, 818, - 321, 321, 321, 321, 667, 321, 899, 902, 181, 1260, - 182, 848, 848, 321, 658, 983, 982, 1254, 981, 421, - 429, 195, 445, 447, 192, 183, 1283, 848, 1078, 1198, - 1082, 1256, 1077, 1060, 1075, 1084, 525, 526, 947, 1080, - 1003, 925, 706, 491, 894, 492, 834, 187, 1079, 33, - 34, 36, 35, 38, 478, 420, 439, 512, 703, 907, - 488, 1081, 1083, 1143, 486, 1279, 893, 477, 1048, 1055, - 39, 46, 47, 817, 1050, 48, 49, 37, 502, 854, - 488, 512, 1288, 1153, 1301, 861, 971, 602, 1094, 41, - 42, 786, 43, 44, 50, 51, 52, 795, 1255, 1038, - 487, 486, 192, 898, 847, 847, 443, 1261, 1259, 192, - 192, 192, 662, 1291, 1144, 321, 900, 488, 850, 742, - 847, 604, 786, 851, 954, 845, 843, 1036, 425, 844, - 1007, 483, 55, 740, 741, 739, 56, 201, 1138, 908, - 435, 436, 437, 922, 923, 924, 1054, 738, 501, 500, - 510, 511, 503, 504, 505, 506, 507, 508, 509, 502, - 479, 212, 512, 472, 476, 180, 528, 1049, 1307, 1047, - 1229, 1219, 452, 453, 454, 55, 457, 1218, 590, 759, - 493, 596, 760, 1308, 462, 553, 554, 555, 556, 557, - 558, 559, 1037, 1289, 932, 1022, 451, 1042, 1039, 1032, - 1033, 1040, 1035, 1034, 487, 486, 427, 428, 1021, 1010, - 1236, 1096, 196, 538, 1041, 943, 994, 942, 198, 995, - 1044, 488, 549, 321, 1216, 204, 200, 1161, 1019, 192, - 192, 321, 301, 192, 487, 486, 192, 1311, 468, 468, - 192, 1286, 321, 321, 321, 321, 321, 321, 321, 321, - 1131, 488, 202, 1246, 1294, 207, 321, 321, 1130, 676, - 205, 1004, 192, 1246, 468, 1266, 319, 192, 505, 506, - 507, 508, 509, 502, 246, 1265, 512, 1246, 1247, 709, - 710, 715, 1210, 1209, 705, 192, 197, 724, 726, 727, - 944, 491, 725, 733, 674, 883, 278, 53, 1119, 468, - 1140, 711, 510, 511, 503, 504, 505, 506, 507, 508, - 509, 502, 732, 199, 512, 208, 209, 210, 211, 215, - 704, 736, 56, 761, 214, 213, 487, 486, 693, 693, - 673, 699, 1197, 468, 1150, 1149, 769, 487, 486, 487, - 486, 672, 713, 488, 663, 779, 779, 730, 661, 728, - 53, 779, 1146, 1147, 488, 656, 488, 441, 232, 1146, - 1145, 773, 937, 468, 308, 434, 192, 420, 779, 192, - 192, 192, 192, 192, 568, 468, 1223, 254, 225, 712, - 969, 192, 771, 468, 192, 60, 766, 768, 192, 608, - 607, 771, 192, 192, 657, 790, 321, 822, 970, 592, - 778, 781, 666, 1193, 1063, 773, 787, 783, 321, 1098, - 26, 949, 969, 677, 678, 679, 680, 681, 682, 683, - 684, 721, 722, 799, 937, 568, 1152, 685, 686, 823, - 812, 801, 802, 800, 804, 1148, 803, 770, 772, 821, - 568, 820, 26, 26, 593, 307, 826, 937, 996, 862, - 863, 864, 825, 788, 948, 567, 840, 56, 855, 192, - 827, 937, 321, 909, 321, 946, 962, 876, 192, 963, - 1241, 192, 321, 595, 538, 1183, 468, 776, 777, 568, - 774, 775, 707, 814, 875, 594, 782, 592, 1113, 56, - 56, 999, 233, 974, 975, 660, 450, 450, 450, 450, - 789, 450, 791, 792, 872, 873, 970, 733, 945, 450, - 1038, 319, 871, 501, 500, 510, 511, 503, 504, 505, - 506, 507, 508, 509, 502, 866, 732, 512, 865, 53, - 529, 530, 531, 532, 533, 534, 535, 832, 1036, 56, - 71, 878, 466, 1133, 521, 522, 524, 1098, 969, 1023, - 977, 670, 461, 914, 719, 915, 503, 504, 505, 506, - 507, 508, 509, 502, 980, 736, 512, 573, 576, 577, - 578, 574, 979, 575, 579, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 927, 550, 552, 552, 552, 552, - 552, 552, 552, 552, 560, 561, 562, 563, 806, 809, - 805, 807, 1319, 1037, 810, 583, 808, 1313, 1042, 1039, - 1032, 1033, 1040, 1035, 1034, 964, 811, 1059, 577, 578, - 985, 237, 238, 192, 953, 1041, 910, 523, 1318, 966, - 482, 1031, 920, 884, 919, 886, 470, 321, 1014, 911, - 912, 606, 476, 905, 480, 442, 978, 997, 471, 1006, - 986, 1293, 988, 1292, 1239, 1000, 1191, 1224, 921, 989, - 987, 885, 934, 935, 669, 581, 234, 235, 1013, 482, - 1015, 1016, 1017, 918, 939, 940, 941, 1001, 1002, 1024, - 321, 917, 321, 950, 1011, 1012, 307, 228, 956, 731, - 957, 958, 959, 960, 1271, 229, 856, 857, 858, 859, - 464, 60, 1020, 936, 1270, 321, 938, 1226, 192, 192, - 192, 465, 867, 868, 869, 970, 484, 192, 1280, 450, - 1043, 955, 1214, 951, 702, 62, 321, 450, 1029, 695, - 7, 696, 6, 694, 5, 64, 591, 57, 450, 450, - 450, 450, 450, 450, 450, 450, 1, 700, 733, 1189, - 527, 882, 450, 450, 1026, 891, 1295, 1252, 1067, 1127, - 1066, 842, 1085, 779, 835, 418, 1106, 732, 985, 734, - 779, 1099, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 1104, 1093, 1102, - 1109, 1086, 319, 70, 1107, 1072, 1287, 321, 841, 321, - 1129, 1258, 1212, 849, 838, 1108, 1008, 852, 1132, 1126, - 1290, 1005, 613, 611, 1125, 612, 1121, 610, 799, 1141, - 1142, 53, 615, 1120, 192, 799, 614, 609, 203, 314, - 580, 603, 1155, 877, 485, 82, 539, 1071, 274, 267, - 767, 269, 270, 271, 272, 1157, 192, 72, 268, 273, - 1046, 1025, 1160, 1045, 887, 1053, 688, 906, 459, 473, - 206, 321, 520, 916, 192, 308, 308, 308, 308, 308, - 990, 1154, 320, 737, 1105, 708, 1052, 474, 1269, 1225, - 583, 952, 819, 548, 1156, 1118, 784, 1159, 308, 1095, - 1171, 1163, 253, 723, 265, 262, 264, 191, 263, 714, - 216, 1164, 961, 731, 494, 1110, 1111, 252, 244, 1112, - 306, 224, 1114, 564, 1202, 572, 1202, 1202, 1202, 192, - 1207, 570, 569, 976, 1192, 243, 321, 191, 191, 1203, - 1204, 1205, 1200, 191, 972, 1206, 997, 305, 1062, 1186, - 1277, 718, 28, 61, 1208, 239, 307, 307, 307, 307, - 307, 23, 321, 321, 321, 22, 21, 19, 450, 18, - 450, 307, 17, 20, 1222, 1221, 16, 1165, 450, 307, - 15, 14, 32, 1215, 1167, 1217, 13, 12, 11, 10, - 9, 8, 4, 230, 25, 2, 1177, 1178, 1179, 0, - 1162, 1182, 0, 0, 1238, 0, 0, 1227, 1244, 1245, - 0, 0, 0, 0, 1194, 1195, 1196, 0, 1199, 1240, - 0, 1129, 0, 0, 0, 928, 929, 930, 1242, 1102, - 1257, 1251, 0, 1263, 1202, 1264, 0, 0, 926, 0, - 0, 1188, 0, 838, 0, 0, 0, 1267, 538, 0, - 0, 191, 0, 191, 0, 0, 0, 1284, 1281, 191, - 573, 576, 577, 578, 574, 191, 575, 579, 1285, 0, - 974, 975, 0, 0, 0, 1282, 0, 1102, 0, 309, - 0, 0, 0, 0, 0, 1299, 0, 0, 1028, 0, - 0, 779, 0, 463, 1306, 0, 0, 1235, 0, 1304, - 965, 0, 967, 0, 0, 0, 0, 0, 1312, 1309, - 0, 0, 0, 0, 1248, 1249, 1250, 190, 0, 0, - 0, 0, 1316, 1317, 0, 0, 0, 737, 0, 308, - 0, 0, 1065, 1220, 0, 538, 0, 0, 0, 0, - 1272, 1273, 1274, 1275, 1276, 0, 799, 0, 312, 0, - 0, 0, 0, 422, 1089, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1168, 1169, 0, 1170, 0, 0, - 1172, 191, 1174, 0, 0, 0, 0, 0, 191, 588, - 191, 0, 0, 0, 0, 0, 450, 0, 1300, 0, - 0, 0, 0, 1305, 0, 0, 0, 0, 0, 0, - 0, 1180, 468, 838, 0, 838, 1310, 0, 0, 0, - 307, 450, 0, 0, 0, 1298, 538, 1069, 1070, 1211, + 248, 1307, 886, 246, 469, 1264, 663, 1110, 250, 803, + 839, 539, 821, 1111, 1138, 1107, 1212, 1035, 538, 3, + 586, 860, 24, 696, 278, 804, 866, 880, 842, 1083, + 843, 764, 323, 768, 80, 771, 939, 1038, 192, 227, + 59, 192, 976, 992, 218, 852, 1026, 791, 601, 741, + 611, 477, 192, 876, 420, 600, 471, 799, 317, 981, + 588, 304, 314, 573, 491, 312, 553, 236, 192, 192, + 322, 483, 226, 58, 192, 1201, 425, 251, 1336, 584, + 1326, 1334, 1314, 1332, 231, 921, 887, 1325, 1313, 305, + 1102, 219, 220, 221, 222, 1198, 233, 424, 54, 29, + 30, 240, 63, 1273, 201, 1132, 445, 903, 1289, 503, + 502, 512, 513, 505, 506, 507, 508, 509, 510, 511, + 504, 902, 834, 514, 1133, 1134, 835, 836, 212, 691, + 65, 66, 67, 68, 69, 1144, 1145, 1146, 188, 184, + 185, 186, 602, 1149, 603, 1147, 701, 303, 907, 702, + 459, 1000, 693, 770, 999, 461, 1017, 1001, 901, 694, + 859, 1224, 433, 867, 1239, 1186, 1184, 223, 217, 450, + 1333, 447, 1331, 449, 456, 457, 800, 1308, 1059, 801, + 196, 434, 192, 427, 192, 181, 198, 182, 182, 671, + 192, 662, 242, 204, 200, 991, 192, 990, 446, 448, + 322, 322, 322, 322, 854, 322, 854, 898, 895, 896, + 989, 894, 1265, 322, 854, 422, 430, 195, 1271, 1056, + 202, 822, 824, 207, 192, 1058, 1267, 183, 205, 527, + 528, 1294, 1011, 1209, 421, 1070, 905, 908, 955, 933, + 712, 494, 440, 493, 507, 508, 509, 510, 511, 504, + 187, 480, 514, 504, 197, 840, 514, 514, 709, 531, + 532, 533, 534, 535, 536, 537, 913, 1290, 1153, 490, + 1063, 479, 488, 1299, 900, 1163, 715, 716, 979, 792, + 604, 199, 444, 208, 209, 210, 211, 215, 490, 1312, + 867, 801, 214, 213, 1266, 1104, 899, 823, 853, 792, + 853, 962, 952, 192, 1046, 851, 849, 1148, 853, 850, + 192, 192, 192, 666, 1084, 426, 322, 1272, 1270, 1057, + 1154, 1055, 606, 748, 489, 488, 856, 254, 489, 488, + 55, 857, 1044, 904, 1015, 1106, 481, 746, 747, 745, + 1302, 490, 485, 180, 1086, 490, 906, 914, 1062, 436, + 437, 438, 489, 488, 56, 951, 530, 950, 555, 556, + 557, 558, 559, 560, 561, 744, 1318, 489, 488, 490, + 453, 454, 455, 1240, 458, 489, 488, 592, 598, 1088, + 1230, 1092, 463, 1087, 490, 1085, 1094, 930, 931, 932, + 1090, 1229, 490, 428, 429, 308, 1030, 711, 1045, 1089, + 1029, 1018, 1319, 1050, 1047, 1040, 1041, 1048, 1043, 1042, + 302, 1300, 1091, 1093, 730, 732, 733, 1247, 1227, 731, + 1049, 474, 478, 1171, 322, 765, 1052, 1027, 766, 1297, + 192, 192, 322, 710, 192, 977, 1002, 192, 495, 1003, + 1141, 192, 1140, 322, 322, 322, 322, 322, 322, 322, + 322, 489, 488, 1322, 470, 1257, 1305, 322, 322, 1257, + 470, 1257, 1258, 192, 1221, 1220, 1129, 470, 490, 192, + 1208, 470, 540, 680, 1160, 1159, 1156, 1157, 1156, 1155, + 470, 551, 1012, 721, 889, 718, 767, 192, 697, 697, + 703, 945, 470, 493, 677, 739, 915, 470, 570, 470, + 740, 777, 470, 749, 750, 751, 752, 753, 754, 755, + 756, 757, 758, 759, 760, 761, 762, 763, 705, 717, + 676, 667, 742, 665, 660, 442, 678, 738, 512, 513, + 505, 506, 507, 508, 509, 510, 511, 504, 775, 435, + 514, 610, 609, 776, 778, 421, 225, 785, 785, 719, + 1277, 1276, 26, 785, 1150, 784, 787, 734, 465, 794, + 779, 793, 1108, 60, 26, 977, 279, 53, 192, 466, + 785, 192, 192, 192, 192, 192, 970, 525, 805, 971, + 736, 595, 1073, 192, 569, 777, 192, 978, 978, 820, + 192, 1252, 1204, 661, 192, 192, 957, 796, 322, 56, + 56, 670, 945, 954, 779, 772, 774, 828, 570, 594, + 322, 56, 681, 682, 683, 684, 685, 686, 687, 688, + 53, 789, 596, 26, 594, 945, 689, 690, 232, 570, + 977, 570, 806, 1162, 309, 809, 1158, 308, 1004, 956, + 833, 862, 863, 864, 865, 818, 953, 945, 917, 827, + 826, 868, 869, 870, 597, 832, 831, 873, 874, 875, + 713, 807, 808, 192, 810, 846, 322, 233, 322, 56, + 56, 1234, 192, 829, 861, 192, 322, 881, 1123, 1007, + 877, 727, 728, 1194, 470, 982, 983, 882, 505, 506, + 507, 508, 509, 510, 511, 504, 780, 781, 514, 872, + 871, 71, 788, 664, 884, 468, 1143, 1108, 1031, 916, + 878, 879, 988, 739, 56, 985, 795, 674, 797, 798, + 452, 462, 503, 502, 512, 513, 505, 506, 507, 508, + 509, 510, 511, 504, 540, 725, 514, 782, 783, 987, + 575, 578, 579, 580, 576, 738, 577, 581, 812, 811, + 936, 937, 938, 575, 578, 579, 580, 576, 1330, 577, + 581, 237, 238, 982, 983, 922, 451, 451, 451, 451, + 742, 451, 942, 943, 923, 815, 813, 1324, 1069, 451, + 816, 814, 918, 1329, 947, 948, 949, 974, 928, 927, + 320, 467, 1022, 958, 484, 935, 608, 838, 964, 53, + 965, 966, 967, 968, 817, 472, 579, 580, 482, 443, + 1014, 1304, 1303, 1250, 523, 524, 526, 473, 972, 1008, + 1202, 1235, 891, 673, 1067, 743, 993, 583, 484, 192, + 234, 235, 926, 228, 1282, 890, 229, 892, 961, 60, + 925, 1281, 1237, 322, 978, 911, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 486, 552, 554, 554, 554, + 554, 554, 554, 554, 554, 562, 563, 564, 565, 986, + 994, 1291, 996, 1005, 1225, 708, 585, 1021, 929, 1023, + 1024, 1025, 997, 62, 64, 1032, 322, 593, 322, 1019, + 1020, 699, 7, 700, 6, 57, 1009, 1010, 308, 308, + 308, 308, 308, 919, 920, 1, 478, 706, 995, 698, + 5, 322, 1200, 308, 192, 192, 529, 888, 192, 1028, + 1034, 308, 897, 944, 1306, 192, 1263, 1137, 848, 841, + 419, 70, 1298, 1051, 322, 847, 1269, 1223, 1037, 855, + 1016, 858, 1142, 959, 1079, 1080, 1301, 1046, 1013, 1081, + 616, 615, 613, 614, 612, 618, 739, 1097, 1098, 617, + 1100, 1101, 704, 203, 315, 582, 1066, 605, 1076, 883, + 946, 785, 487, 1077, 1116, 1044, 993, 82, 785, 805, + 1109, 1082, 1096, 1095, 72, 963, 805, 1054, 738, 1053, + 451, 893, 1114, 1061, 692, 912, 1112, 1128, 451, 460, + 1103, 206, 522, 1119, 924, 322, 998, 322, 1139, 451, + 451, 451, 451, 451, 451, 451, 451, 1118, 321, 1117, + 1115, 714, 476, 451, 451, 1280, 1236, 960, 550, 790, + 1151, 1152, 192, 1135, 253, 1130, 320, 1136, 1131, 729, + 1165, 1045, 265, 262, 264, 263, 1050, 1047, 1040, 1041, + 1048, 1043, 1042, 1167, 192, 1033, 720, 969, 496, 252, + 1170, 244, 307, 1049, 566, 574, 572, 571, 984, 1039, + 980, 322, 306, 743, 192, 1072, 1197, 1288, 724, 28, + 1060, 1176, 1177, 1164, 61, 239, 23, 22, 1178, 21, + 697, 1173, 19, 53, 18, 17, 1166, 20, 16, 1169, + 1188, 1189, 1190, 15, 14, 1193, 1179, 1180, 541, 1181, + 32, 13, 1183, 12, 1185, 1174, 1182, 11, 1205, 1206, + 1207, 10, 1210, 9, 1213, 1203, 1213, 1213, 1213, 192, + 1218, 8, 4, 230, 25, 2, 322, 309, 309, 309, + 309, 309, 1214, 1215, 1216, 0, 0, 0, 0, 1217, + 0, 0, 585, 1175, 825, 1105, 308, 0, 1211, 0, + 309, 1222, 322, 322, 322, 0, 1005, 0, 0, 0, + 1219, 1120, 1121, 0, 0, 1122, 0, 0, 1124, 0, + 1232, 0, 1226, 0, 1228, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1233, 1241, 1242, 0, 1243, 1244, + 1245, 0, 1246, 0, 0, 0, 0, 1238, 0, 1255, + 1256, 0, 0, 1249, 475, 737, 0, 0, 1251, 1259, + 1260, 1261, 1139, 0, 0, 0, 1253, 0, 0, 1112, + 1262, 0, 451, 310, 451, 1213, 1268, 1274, 0, 1275, + 0, 0, 451, 0, 0, 1283, 1284, 1285, 1286, 1287, + 0, 1278, 191, 0, 0, 216, 1172, 0, 1295, 0, + 1292, 0, 0, 0, 0, 0, 224, 0, 0, 1296, + 0, 190, 0, 1293, 0, 0, 0, 1112, 0, 0, + 243, 0, 191, 191, 0, 0, 0, 0, 191, 0, + 0, 0, 785, 1311, 1310, 1317, 0, 0, 1316, 1199, + 805, 1315, 313, 0, 934, 0, 540, 423, 0, 1323, + 0, 1321, 1320, 0, 0, 0, 0, 0, 320, 0, + 0, 0, 0, 1327, 1328, 0, 0, 0, 0, 0, + 844, 1231, 26, 27, 54, 29, 30, 0, 0, 1337, + 0, 0, 1339, 1340, 0, 0, 0, 0, 0, 0, + 0, 45, 0, 0, 0, 0, 31, 0, 0, 274, + 267, 773, 269, 270, 271, 272, 973, 0, 975, 268, + 275, 273, 0, 0, 0, 40, 0, 0, 0, 56, + 502, 512, 513, 505, 506, 507, 508, 509, 510, 511, + 504, 0, 0, 514, 540, 309, 191, 0, 191, 0, + 0, 308, 0, 0, 191, 0, 0, 0, 0, 0, + 191, 0, 0, 0, 0, 431, 0, 432, 0, 0, + 0, 0, 0, 439, 0, 0, 0, 0, 0, 441, + 0, 0, 0, 737, 0, 633, 0, 0, 464, 0, + 33, 34, 36, 35, 38, 0, 0, 0, 0, 0, + 0, 0, 451, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 46, 47, 0, 0, 48, 49, 37, 0, + 0, 0, 0, 0, 1309, 540, 0, 451, 0, 0, + 41, 42, 0, 43, 44, 50, 51, 52, 503, 502, + 512, 513, 505, 506, 507, 508, 509, 510, 511, 504, + 0, 0, 514, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 621, 0, 0, 0, 191, 0, 0, + 0, 0, 0, 0, 191, 590, 191, 0, 0, 0, + 0, 0, 0, 0, 940, 0, 568, 0, 1113, 0, + 53, 0, 0, 634, 0, 591, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1125, 1126, 1127, 0, + 0, 0, 0, 844, 0, 0, 55, 648, 649, 650, + 651, 652, 653, 654, 0, 655, 656, 657, 658, 659, + 635, 636, 637, 638, 619, 620, 647, 0, 622, 0, + 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, + 639, 640, 641, 642, 643, 644, 645, 646, 1036, 498, + 0, 501, 0, 0, 0, 0, 0, 515, 516, 517, + 518, 519, 520, 521, 0, 499, 500, 497, 503, 502, + 512, 513, 505, 506, 507, 508, 509, 510, 511, 504, + 309, 0, 514, 0, 191, 191, 470, 0, 191, 0, + 0, 191, 0, 0, 1075, 679, 0, 0, 0, 0, + 0, 1187, 0, 668, 669, 0, 0, 672, 0, 1196, + 675, 0, 0, 0, 0, 0, 1099, 191, 0, 0, + 0, 0, 0, 707, 503, 502, 512, 513, 505, 506, + 507, 508, 509, 510, 511, 504, 695, 0, 514, 0, + 0, 191, 1191, 470, 0, 0, 0, 0, 0, 679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1087, 1088, 0, 1090, 1091, 0, 0, 1328, 1329, 501, - 500, 510, 511, 503, 504, 505, 506, 507, 508, 509, - 502, 0, 0, 512, 0, 0, 0, 0, 0, 0, - 0, 430, 0, 431, 1184, 0, 0, 1065, 0, 438, - 1103, 0, 53, 468, 0, 440, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1115, 1116, - 1117, 0, 0, 0, 0, 0, 0, 0, 191, 191, - 0, 0, 191, 0, 0, 191, 0, 0, 0, 675, - 501, 500, 510, 511, 503, 504, 505, 506, 507, 508, - 509, 502, 0, 0, 512, 0, 0, 0, 0, 0, - 0, 191, 838, 0, 0, 0, 701, 501, 500, 510, - 511, 503, 504, 505, 506, 507, 508, 509, 502, 0, - 0, 512, 0, 1166, 191, 0, 0, 0, 0, 1028, - 838, 0, 675, 0, 0, 0, 0, 0, 0, 0, - 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 566, 0, 0, 0, 0, 0, 0, 0, 0, - 589, 1176, 243, 0, 0, 0, 0, 0, 1181, 1185, + 726, 0, 0, 0, 0, 844, 0, 844, 451, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, + 0, 503, 502, 512, 513, 505, 506, 507, 508, 509, + 510, 511, 504, 0, 0, 514, 1195, 243, 243, 0, + 0, 786, 786, 243, 0, 0, 0, 786, 0, 0, + 0, 1113, 0, 0, 1254, 0, 0, 243, 243, 243, + 243, 0, 191, 1192, 786, 191, 191, 191, 191, 191, + 0, 1075, 0, 0, 0, 0, 0, 819, 0, 0, + 191, 802, 1279, 0, 590, 0, 0, 0, 191, 191, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1113, + 0, 53, 0, 0, 0, 0, 0, 0, 830, 0, + 503, 502, 512, 513, 505, 506, 507, 508, 509, 510, + 511, 504, 0, 0, 514, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 844, 503, 502, 512, + 513, 505, 506, 507, 508, 509, 510, 511, 504, 0, + 0, 514, 0, 0, 0, 0, 0, 191, 0, 0, + 0, 0, 0, 1036, 844, 0, 191, 0, 0, 191, + 1078, 0, 0, 0, 0, 0, 885, 0, 0, 0, + 1335, 0, 0, 0, 0, 909, 0, 0, 910, 0, + 503, 502, 512, 513, 505, 506, 507, 508, 509, 510, + 511, 504, 941, 0, 514, 0, 0, 679, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, + 0, 0, 503, 502, 512, 513, 505, 506, 507, 508, + 509, 510, 511, 504, 0, 0, 514, 503, 502, 512, + 513, 505, 506, 507, 508, 509, 510, 511, 504, 0, + 0, 514, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 243, 243, 0, 0, 780, 780, 243, 0, 0, 0, - 780, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 243, 243, 243, 243, 0, 191, 0, 780, 191, 191, - 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, - 813, 307, 0, 191, 0, 0, 0, 588, 450, 0, - 0, 191, 191, 0, 0, 1230, 1231, 1068, 1232, 1233, - 1234, 501, 500, 510, 511, 503, 504, 505, 506, 507, - 508, 509, 502, 0, 0, 512, 0, 501, 500, 510, - 511, 503, 504, 505, 506, 507, 508, 509, 502, 0, - 1103, 512, 0, 1243, 0, 0, 0, 0, 664, 665, - 0, 0, 668, 0, 0, 671, 501, 500, 510, 511, - 503, 504, 505, 506, 507, 508, 509, 502, 191, 0, - 512, 1268, 933, 0, 0, 0, 0, 191, 0, 0, - 191, 691, 630, 0, 0, 0, 0, 0, 1103, 0, - 53, 0, 501, 500, 510, 511, 503, 504, 505, 506, - 507, 508, 509, 502, 720, 0, 512, 0, 0, 0, - 0, 0, 0, 496, 0, 499, 675, 0, 0, 0, - 0, 513, 514, 515, 516, 517, 518, 519, 243, 497, - 498, 495, 501, 500, 510, 511, 503, 504, 505, 506, - 507, 508, 509, 502, 0, 0, 512, 0, 0, 1326, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 618, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1324, - 0, 0, 0, 243, 500, 510, 511, 503, 504, 505, - 506, 507, 508, 509, 502, 796, 0, 512, 0, 631, - 0, 0, 0, 243, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 824, 644, 645, 646, 647, 648, 649, 650, - 0, 651, 652, 653, 654, 655, 632, 633, 634, 635, - 616, 617, 191, 0, 619, 0, 620, 621, 622, 623, - 624, 625, 626, 627, 628, 629, 636, 637, 638, 639, - 640, 641, 642, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, - 0, 0, 0, 0, 0, 0, 0, 903, 0, 0, - 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1056, 1057, 1058, - 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 675, 0, 0, + 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 780, 0, 0, 0, 0, 0, 0, 780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1064, 1065, + 0, 0, 1068, 0, 0, 0, 0, 0, 0, 191, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, + 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, + 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 679, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 786, 0, 0, 0, 0, + 0, 0, 786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 588, 0, - 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1161, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 407, 397, 0, 369, - 409, 347, 361, 417, 362, 363, 390, 333, 377, 132, - 359, 0, 350, 328, 356, 329, 348, 371, 100, 374, - 346, 399, 380, 114, 415, 116, 385, 0, 149, 125, - 0, 0, 373, 401, 375, 395, 368, 391, 338, 384, - 410, 360, 388, 411, 0, 0, 0, 81, 0, 0, - 83, 839, 0, 0, 0, 0, 0, 93, 0, 387, - 406, 358, 389, 327, 386, 0, 331, 334, 416, 404, - 353, 354, 998, 1151, 0, 0, 0, 0, 0, 372, - 376, 392, 366, 0, 0, 0, 0, 0, 0, 0, - 0, 351, 0, 383, 0, 1158, 0, 335, 332, 0, - 370, 0, 0, 0, 337, 0, 352, 393, 0, 326, - 396, 402, 367, 193, 405, 365, 364, 408, 138, 0, - 780, 152, 105, 104, 113, 400, 349, 357, 96, 355, - 144, 134, 164, 382, 135, 143, 117, 156, 139, 163, - 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, - 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, - 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, - 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, - 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, - 127, 126, 128, 0, 330, 0, 150, 166, 179, 345, - 403, 172, 173, 174, 175, 0, 0, 0, 129, 92, - 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, - 148, 341, 344, 339, 340, 378, 379, 412, 413, 414, - 394, 336, 0, 342, 343, 0, 398, 381, 84, 0, - 115, 176, 140, 102, 167, 407, 397, 0, 369, 409, - 347, 361, 417, 362, 363, 390, 333, 377, 132, 359, - 0, 350, 328, 356, 329, 348, 371, 100, 374, 346, - 399, 380, 114, 415, 116, 385, 0, 149, 125, 0, - 0, 373, 401, 375, 395, 368, 391, 338, 384, 410, - 360, 388, 411, 0, 0, 0, 81, 0, 0, 83, - 839, 0, 0, 0, 0, 0, 93, 0, 387, 406, - 358, 389, 327, 386, 0, 331, 334, 416, 404, 353, - 354, 0, 0, 0, 0, 0, 0, 0, 372, 376, - 392, 366, 0, 0, 0, 0, 0, 0, 0, 0, - 351, 0, 383, 0, 0, 0, 335, 332, 0, 370, - 0, 0, 0, 337, 0, 352, 393, 0, 326, 396, - 402, 367, 193, 405, 365, 364, 408, 138, 0, 0, - 152, 105, 104, 113, 400, 349, 357, 96, 355, 144, - 134, 164, 382, 135, 143, 117, 156, 139, 163, 194, + 0, 0, 0, 0, 0, 0, 0, 1168, 191, 0, + 0, 0, 0, 0, 408, 398, 0, 370, 410, 348, + 362, 418, 363, 364, 391, 334, 378, 132, 360, 0, + 351, 329, 357, 330, 349, 372, 100, 375, 347, 400, + 381, 114, 416, 116, 386, 0, 149, 125, 0, 0, + 374, 402, 376, 396, 369, 392, 339, 385, 411, 361, + 389, 412, 0, 590, 0, 81, 0, 0, 83, 845, + 0, 0, 0, 0, 0, 93, 0, 0, 388, 407, + 359, 390, 328, 387, 0, 332, 335, 417, 405, 354, + 355, 1006, 0, 0, 0, 0, 0, 0, 373, 377, + 393, 367, 0, 0, 0, 0, 0, 0, 0, 0, + 352, 0, 384, 0, 0, 0, 336, 333, 0, 371, + 0, 0, 0, 338, 0, 353, 394, 0, 327, 397, + 403, 368, 193, 406, 366, 365, 409, 138, 0, 0, + 152, 105, 104, 113, 401, 350, 358, 96, 356, 144, + 134, 164, 383, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 331, 0, 150, 166, 179, 346, 404, + 172, 173, 174, 175, 0, 0, 786, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 342, 345, 340, 341, 379, 380, 413, 414, 415, 395, + 337, 0, 343, 344, 0, 399, 382, 84, 0, 115, + 176, 140, 102, 167, 408, 398, 0, 370, 410, 348, + 362, 418, 363, 364, 391, 334, 378, 132, 360, 0, + 351, 329, 357, 330, 349, 372, 100, 375, 347, 400, + 381, 114, 416, 116, 386, 0, 149, 125, 0, 0, + 374, 402, 376, 396, 369, 392, 339, 385, 411, 361, + 389, 412, 0, 0, 0, 81, 0, 0, 83, 845, + 0, 0, 0, 0, 0, 93, 0, 0, 388, 407, + 359, 390, 328, 387, 0, 332, 335, 417, 405, 354, + 355, 0, 0, 0, 0, 0, 0, 0, 373, 377, + 393, 367, 0, 0, 0, 0, 0, 0, 0, 0, + 352, 0, 384, 0, 0, 0, 336, 333, 0, 371, + 0, 0, 0, 338, 0, 353, 394, 0, 327, 397, + 403, 368, 193, 406, 366, 365, 409, 138, 0, 0, + 152, 105, 104, 113, 401, 350, 358, 96, 356, 144, + 134, 164, 383, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, - 126, 128, 0, 330, 0, 150, 166, 179, 345, 403, + 126, 128, 0, 331, 0, 150, 166, 179, 346, 404, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, - 341, 344, 339, 340, 378, 379, 412, 413, 414, 394, - 336, 0, 342, 343, 0, 398, 381, 84, 0, 115, - 176, 140, 102, 167, 407, 397, 0, 369, 409, 347, - 361, 417, 362, 363, 390, 333, 377, 132, 359, 0, - 350, 328, 356, 329, 348, 371, 100, 374, 346, 399, - 380, 114, 415, 116, 385, 0, 149, 125, 0, 0, - 373, 401, 375, 395, 368, 391, 338, 384, 410, 360, - 388, 411, 56, 0, 0, 81, 0, 0, 83, 0, - 0, 0, 0, 0, 0, 93, 0, 387, 406, 358, - 389, 327, 386, 0, 331, 334, 416, 404, 353, 354, - 0, 0, 0, 0, 0, 0, 0, 372, 376, 392, - 366, 0, 0, 0, 0, 0, 0, 0, 0, 351, - 0, 383, 0, 0, 0, 335, 332, 0, 370, 0, - 0, 0, 337, 0, 352, 393, 0, 326, 396, 402, - 367, 193, 405, 365, 364, 408, 138, 0, 0, 152, - 105, 104, 113, 400, 349, 357, 96, 355, 144, 134, - 164, 382, 135, 143, 117, 156, 139, 163, 194, 171, - 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, - 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, - 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, - 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, - 128, 0, 330, 0, 150, 166, 179, 345, 403, 172, - 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, - 111, 118, 141, 177, 133, 145, 95, 165, 148, 341, - 344, 339, 340, 378, 379, 412, 413, 414, 394, 336, - 0, 342, 343, 0, 398, 381, 84, 0, 115, 176, - 140, 102, 167, 407, 397, 0, 369, 409, 347, 361, - 417, 362, 363, 390, 333, 377, 132, 359, 0, 350, - 328, 356, 329, 348, 371, 100, 374, 346, 399, 380, - 114, 415, 116, 385, 0, 149, 125, 0, 0, 373, - 401, 375, 395, 368, 391, 338, 384, 410, 360, 388, - 411, 0, 0, 0, 81, 0, 0, 83, 0, 0, - 0, 0, 0, 0, 93, 0, 387, 406, 358, 389, - 327, 386, 0, 331, 334, 416, 404, 353, 354, 0, - 0, 0, 0, 0, 0, 0, 372, 376, 392, 366, - 0, 0, 0, 0, 0, 0, 1064, 0, 351, 0, - 383, 0, 0, 0, 335, 332, 0, 370, 0, 0, - 0, 337, 0, 352, 393, 0, 326, 396, 402, 367, - 193, 405, 365, 364, 408, 138, 0, 0, 152, 105, - 104, 113, 400, 349, 357, 96, 355, 144, 134, 164, - 382, 135, 143, 117, 156, 139, 163, 194, 171, 154, - 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, - 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, - 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, - 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, - 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, - 0, 330, 0, 150, 166, 179, 345, 403, 172, 173, - 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, - 118, 141, 177, 133, 145, 95, 165, 148, 341, 344, - 339, 340, 378, 379, 412, 413, 414, 394, 336, 0, - 342, 343, 0, 398, 381, 84, 0, 115, 176, 140, - 102, 167, 407, 397, 0, 369, 409, 347, 361, 417, - 362, 363, 390, 333, 377, 132, 359, 0, 350, 328, - 356, 329, 348, 371, 100, 374, 346, 399, 380, 114, - 415, 116, 385, 0, 149, 125, 0, 0, 373, 401, - 375, 395, 368, 391, 338, 384, 410, 360, 388, 411, - 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 93, 0, 387, 406, 358, 389, 327, - 386, 0, 331, 334, 416, 404, 353, 354, 0, 0, - 0, 0, 0, 0, 0, 372, 376, 392, 366, 0, - 0, 0, 0, 0, 0, 729, 0, 351, 0, 383, - 0, 0, 0, 335, 332, 0, 370, 0, 0, 0, - 337, 0, 352, 393, 0, 326, 396, 402, 367, 193, - 405, 365, 364, 408, 138, 0, 0, 152, 105, 104, - 113, 400, 349, 357, 96, 355, 144, 134, 164, 382, + 342, 345, 340, 341, 379, 380, 413, 414, 415, 395, + 337, 0, 343, 344, 0, 399, 382, 84, 0, 115, + 176, 140, 102, 167, 408, 398, 0, 370, 410, 348, + 362, 418, 363, 364, 391, 334, 378, 132, 360, 0, + 351, 329, 357, 330, 349, 372, 100, 375, 347, 400, + 381, 114, 416, 116, 386, 0, 149, 125, 0, 0, + 374, 402, 376, 396, 369, 392, 339, 385, 411, 361, + 389, 412, 56, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 388, 407, + 359, 390, 328, 387, 0, 332, 335, 417, 405, 354, + 355, 0, 0, 0, 0, 0, 0, 0, 373, 377, + 393, 367, 0, 0, 0, 0, 0, 0, 0, 0, + 352, 0, 384, 0, 0, 0, 336, 333, 0, 371, + 0, 0, 0, 338, 0, 353, 394, 0, 327, 397, + 403, 368, 193, 406, 366, 365, 409, 138, 0, 0, + 152, 105, 104, 113, 401, 350, 358, 96, 356, 144, + 134, 164, 383, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 331, 0, 150, 166, 179, 346, 404, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 342, 345, 340, 341, 379, 380, 413, 414, 415, 395, + 337, 0, 343, 344, 0, 399, 382, 84, 0, 115, + 176, 140, 102, 167, 408, 398, 0, 370, 410, 348, + 362, 418, 363, 364, 391, 334, 378, 132, 360, 0, + 351, 329, 357, 330, 349, 372, 100, 375, 347, 400, + 381, 114, 416, 116, 386, 0, 149, 125, 0, 0, + 374, 402, 376, 396, 369, 392, 339, 385, 411, 361, + 389, 412, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 388, 407, + 359, 390, 328, 387, 0, 332, 335, 417, 405, 354, + 355, 0, 0, 0, 0, 0, 0, 0, 373, 377, + 393, 367, 0, 0, 0, 0, 0, 0, 1074, 0, + 352, 0, 384, 0, 0, 0, 336, 333, 0, 371, + 0, 0, 0, 338, 0, 353, 394, 0, 327, 397, + 403, 368, 193, 406, 366, 365, 409, 138, 0, 0, + 152, 105, 104, 113, 401, 350, 358, 96, 356, 144, + 134, 164, 383, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 331, 0, 150, 166, 179, 346, 404, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 342, 345, 340, 341, 379, 380, 413, 414, 415, 395, + 337, 0, 343, 344, 0, 399, 382, 84, 0, 115, + 176, 140, 102, 167, 408, 398, 0, 370, 410, 348, + 362, 418, 363, 364, 391, 334, 378, 132, 360, 0, + 351, 329, 357, 330, 349, 372, 100, 375, 347, 400, + 381, 114, 416, 116, 386, 0, 149, 125, 0, 0, + 374, 402, 376, 396, 369, 392, 339, 385, 411, 361, + 389, 412, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 388, 407, + 359, 390, 328, 387, 0, 332, 335, 417, 405, 354, + 355, 0, 0, 0, 0, 0, 0, 0, 373, 377, + 393, 367, 0, 0, 0, 0, 0, 0, 735, 0, + 352, 0, 384, 0, 0, 0, 336, 333, 0, 371, + 0, 0, 0, 338, 0, 353, 394, 0, 327, 397, + 403, 368, 193, 406, 366, 365, 409, 138, 0, 0, + 152, 105, 104, 113, 401, 350, 358, 96, 356, 144, + 134, 164, 383, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 331, 0, 150, 166, 179, 346, 404, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 342, 345, 340, 341, 379, 380, 413, 414, 415, 395, + 337, 0, 343, 344, 0, 399, 382, 84, 0, 115, + 176, 140, 102, 167, 408, 398, 0, 370, 410, 348, + 362, 418, 363, 364, 391, 334, 378, 132, 360, 0, + 351, 329, 357, 330, 349, 372, 100, 375, 347, 400, + 381, 114, 416, 116, 386, 0, 149, 125, 0, 0, + 374, 402, 376, 396, 369, 392, 339, 385, 411, 361, + 389, 412, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 388, 407, + 359, 390, 328, 387, 0, 332, 335, 417, 405, 354, + 355, 0, 0, 0, 0, 0, 0, 0, 373, 377, + 393, 367, 0, 0, 0, 0, 0, 0, 0, 0, + 352, 0, 384, 0, 0, 0, 336, 333, 0, 371, + 0, 0, 0, 338, 0, 353, 394, 0, 327, 397, + 403, 368, 193, 406, 366, 365, 409, 138, 0, 0, + 152, 105, 104, 113, 401, 350, 358, 96, 356, 144, + 134, 164, 383, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 331, 0, 150, 166, 179, 346, 404, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 342, 345, 340, 341, 379, 380, 413, 414, 415, 395, + 337, 0, 343, 344, 0, 399, 382, 84, 0, 115, + 176, 140, 102, 167, 408, 398, 0, 370, 410, 348, + 362, 418, 363, 364, 391, 334, 378, 132, 360, 0, + 351, 329, 357, 330, 349, 372, 100, 375, 347, 400, + 381, 114, 416, 116, 386, 0, 149, 125, 0, 0, + 374, 402, 376, 396, 369, 392, 339, 385, 411, 361, + 389, 412, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 388, 407, + 359, 390, 328, 387, 0, 332, 335, 417, 405, 354, + 355, 0, 0, 0, 0, 0, 0, 0, 373, 377, + 393, 367, 0, 0, 0, 0, 0, 0, 0, 0, + 352, 0, 384, 0, 0, 0, 336, 333, 0, 371, + 0, 0, 0, 338, 0, 353, 394, 0, 327, 397, + 403, 368, 193, 406, 366, 365, 409, 138, 0, 0, + 152, 105, 104, 113, 401, 350, 358, 96, 356, 144, + 134, 164, 383, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 325, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 331, 0, 150, 166, 179, 346, 404, + 172, 173, 174, 175, 0, 0, 0, 326, 324, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 342, 345, 340, 341, 379, 380, 413, 414, 415, 395, + 337, 0, 343, 344, 0, 399, 382, 84, 0, 115, + 176, 140, 102, 167, 408, 398, 0, 370, 410, 348, + 362, 418, 363, 364, 391, 334, 378, 132, 360, 0, + 351, 329, 357, 330, 349, 372, 100, 375, 347, 400, + 381, 114, 416, 116, 386, 0, 149, 125, 0, 0, + 374, 402, 376, 396, 369, 392, 339, 385, 411, 361, + 389, 412, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 388, 407, + 359, 390, 328, 387, 0, 332, 335, 417, 405, 354, + 355, 0, 0, 0, 0, 0, 0, 0, 373, 377, + 393, 367, 0, 0, 0, 0, 0, 0, 0, 0, + 352, 0, 384, 0, 0, 0, 336, 333, 0, 371, + 0, 0, 0, 338, 0, 353, 394, 0, 327, 397, + 403, 368, 193, 406, 366, 365, 409, 138, 0, 0, + 152, 105, 104, 113, 401, 350, 358, 96, 356, 144, + 134, 164, 383, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 599, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 325, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 331, 0, 150, 166, 179, 346, 404, + 172, 173, 174, 175, 0, 0, 0, 326, 324, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 342, 345, 340, 341, 379, 380, 413, 414, 415, 395, + 337, 0, 343, 344, 0, 399, 382, 84, 0, 115, + 176, 140, 102, 167, 408, 398, 0, 370, 410, 348, + 362, 418, 363, 364, 391, 334, 378, 132, 360, 0, + 351, 329, 357, 330, 349, 372, 100, 375, 347, 400, + 381, 114, 416, 116, 386, 0, 149, 125, 0, 0, + 374, 402, 376, 396, 369, 392, 339, 385, 411, 361, + 389, 412, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 388, 407, + 359, 390, 328, 387, 0, 332, 335, 417, 405, 354, + 355, 0, 0, 0, 0, 0, 0, 0, 373, 377, + 393, 367, 0, 0, 0, 0, 0, 0, 0, 0, + 352, 0, 384, 0, 0, 0, 336, 333, 0, 371, + 0, 0, 0, 338, 0, 353, 394, 0, 327, 397, + 403, 368, 193, 406, 366, 365, 409, 138, 0, 0, + 152, 105, 104, 113, 401, 350, 358, 96, 356, 144, + 134, 164, 383, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 316, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 325, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 331, 0, 150, 166, 179, 346, 404, + 172, 173, 174, 175, 0, 0, 0, 326, 324, 319, + 318, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 342, 345, 340, 341, 379, 380, 413, 414, 415, 395, + 337, 0, 343, 344, 0, 399, 382, 84, 0, 115, + 176, 140, 102, 167, 132, 0, 0, 769, 0, 249, + 0, 0, 0, 100, 0, 247, 0, 0, 114, 289, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 280, + 281, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 0, 81, 274, 267, 266, 269, 270, 271, 272, + 0, 0, 93, 268, 275, 273, 276, 277, 0, 0, + 245, 260, 0, 288, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 257, 258, 241, 0, 0, 0, 300, + 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 0, 298, 0, 138, 0, 0, 152, 105, 104, + 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, - 330, 0, 150, 166, 179, 345, 403, 172, 173, 174, + 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, - 141, 177, 133, 145, 95, 165, 148, 341, 344, 339, - 340, 378, 379, 412, 413, 414, 394, 336, 0, 342, - 343, 0, 398, 381, 84, 0, 115, 176, 140, 102, - 167, 407, 397, 0, 369, 409, 347, 361, 417, 362, - 363, 390, 333, 377, 132, 359, 0, 350, 328, 356, - 329, 348, 371, 100, 374, 346, 399, 380, 114, 415, - 116, 385, 0, 149, 125, 0, 0, 373, 401, 375, - 395, 368, 391, 338, 384, 410, 360, 388, 411, 0, - 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 93, 0, 387, 406, 358, 389, 327, 386, - 0, 331, 334, 416, 404, 353, 354, 0, 0, 0, - 0, 0, 0, 0, 372, 376, 392, 366, 0, 0, - 0, 0, 0, 0, 0, 0, 351, 0, 383, 0, - 0, 0, 335, 332, 0, 370, 0, 0, 0, 337, - 0, 352, 393, 0, 326, 396, 402, 367, 193, 405, - 365, 364, 408, 138, 0, 0, 152, 105, 104, 113, - 400, 349, 357, 96, 355, 144, 134, 164, 382, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 330, - 0, 150, 166, 179, 345, 403, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 341, 344, 339, 340, - 378, 379, 412, 413, 414, 394, 336, 0, 342, 343, - 0, 398, 381, 84, 0, 115, 176, 140, 102, 167, - 407, 397, 0, 369, 409, 347, 361, 417, 362, 363, - 390, 333, 377, 132, 359, 0, 350, 328, 356, 329, - 348, 371, 100, 374, 346, 399, 380, 114, 415, 116, - 385, 0, 149, 125, 0, 0, 373, 401, 375, 395, - 368, 391, 338, 384, 410, 360, 388, 411, 0, 0, - 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, - 0, 93, 0, 387, 406, 358, 389, 327, 386, 0, - 331, 334, 416, 404, 353, 354, 0, 0, 0, 0, - 0, 0, 0, 372, 376, 392, 366, 0, 0, 0, - 0, 0, 0, 0, 0, 351, 0, 383, 0, 0, - 0, 335, 332, 0, 370, 0, 0, 0, 337, 0, - 352, 393, 0, 326, 396, 402, 367, 193, 405, 365, - 364, 408, 138, 0, 0, 152, 105, 104, 113, 400, - 349, 357, 96, 355, 144, 134, 164, 382, 135, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 324, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 330, 0, - 150, 166, 179, 345, 403, 172, 173, 174, 175, 0, - 0, 0, 325, 323, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 341, 344, 339, 340, 378, - 379, 412, 413, 414, 394, 336, 0, 342, 343, 0, - 398, 381, 84, 0, 115, 176, 140, 102, 167, 407, - 397, 0, 369, 409, 347, 361, 417, 362, 363, 390, - 333, 377, 132, 359, 0, 350, 328, 356, 329, 348, - 371, 100, 374, 346, 399, 380, 114, 415, 116, 385, - 0, 149, 125, 0, 0, 373, 401, 375, 395, 368, - 391, 338, 384, 410, 360, 388, 411, 0, 0, 0, - 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 93, 0, 387, 406, 358, 389, 327, 386, 0, 331, - 334, 416, 404, 353, 354, 0, 0, 0, 0, 0, - 0, 0, 372, 376, 392, 366, 0, 0, 0, 0, - 0, 0, 0, 0, 351, 0, 383, 0, 0, 0, - 335, 332, 0, 370, 0, 0, 0, 337, 0, 352, - 393, 0, 326, 396, 402, 367, 193, 405, 365, 364, - 408, 138, 0, 0, 152, 105, 104, 113, 400, 349, - 357, 96, 355, 144, 134, 164, 382, 135, 143, 117, - 156, 139, 163, 194, 171, 154, 170, 85, 153, 597, + 141, 177, 133, 145, 95, 165, 148, 290, 299, 296, + 297, 294, 295, 293, 292, 291, 301, 282, 283, 284, + 285, 287, 0, 286, 84, 0, 115, 176, 140, 102, + 167, 132, 0, 0, 0, 0, 249, 0, 0, 0, + 100, 0, 247, 0, 0, 114, 289, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 280, 281, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, + 274, 267, 266, 269, 270, 271, 272, 0, 0, 93, + 268, 275, 273, 276, 277, 0, 0, 245, 260, 0, + 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 257, 258, 1248, 0, 0, 0, 300, 0, 259, 0, + 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 0, 298, + 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, + 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, - 97, 178, 90, 169, 89, 324, 168, 130, 155, 161, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, - 119, 137, 107, 127, 126, 128, 0, 330, 0, 150, - 166, 179, 345, 403, 172, 173, 174, 175, 0, 0, - 0, 325, 323, 108, 147, 111, 118, 141, 177, 133, - 145, 95, 165, 148, 341, 344, 339, 340, 378, 379, - 412, 413, 414, 394, 336, 0, 342, 343, 0, 398, - 381, 84, 0, 115, 176, 140, 102, 167, 407, 397, - 0, 369, 409, 347, 361, 417, 362, 363, 390, 333, - 377, 132, 359, 0, 350, 328, 356, 329, 348, 371, - 100, 374, 346, 399, 380, 114, 415, 116, 385, 0, - 149, 125, 0, 0, 373, 401, 375, 395, 368, 391, - 338, 384, 410, 360, 388, 411, 0, 0, 0, 81, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, - 0, 387, 406, 358, 389, 327, 386, 0, 331, 334, - 416, 404, 353, 354, 0, 0, 0, 0, 0, 0, - 0, 372, 376, 392, 366, 0, 0, 0, 0, 0, - 0, 0, 0, 351, 0, 383, 0, 0, 0, 335, - 332, 0, 370, 0, 0, 0, 337, 0, 352, 393, - 0, 326, 396, 402, 367, 193, 405, 365, 364, 408, - 138, 0, 0, 152, 105, 104, 113, 400, 349, 357, - 96, 355, 144, 134, 164, 382, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 315, 94, - 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, - 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 324, 168, 130, 155, 161, 124, - 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 330, 0, 150, 166, - 179, 345, 403, 172, 173, 174, 175, 0, 0, 0, - 325, 323, 318, 317, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 341, 344, 339, 340, 378, 379, 412, - 413, 414, 394, 336, 0, 342, 343, 0, 398, 381, - 84, 0, 115, 176, 140, 102, 167, 132, 0, 0, - 763, 0, 249, 0, 0, 0, 100, 0, 247, 0, - 0, 114, 288, 116, 0, 0, 149, 125, 0, 0, - 0, 0, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 56, 0, 0, 81, 274, 267, 266, 269, - 270, 271, 272, 0, 0, 93, 268, 273, 275, 276, - 0, 0, 245, 260, 0, 287, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 257, 258, 241, 0, 0, - 0, 299, 0, 259, 0, 0, 255, 256, 261, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 193, 0, 0, 297, 0, 138, 0, 0, 152, - 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, - 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, - 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, - 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, - 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, - 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, - 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, - 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, - 111, 118, 141, 177, 133, 145, 95, 165, 148, 289, - 298, 295, 296, 293, 294, 292, 291, 290, 300, 281, - 282, 283, 284, 286, 0, 285, 84, 0, 115, 176, - 140, 102, 167, 132, 0, 0, 0, 0, 249, 0, - 0, 0, 100, 0, 247, 0, 0, 114, 288, 116, - 0, 0, 149, 125, 0, 0, 0, 0, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 0, 81, 274, 267, 266, 269, 270, 271, 272, 0, - 0, 93, 268, 273, 275, 276, 0, 0, 245, 260, - 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 257, 258, 1237, 0, 0, 0, 299, 0, 259, - 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 297, 0, 138, 0, 0, 152, 105, 104, 113, 0, - 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, - 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, - 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, - 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, - 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, - 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, - 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, - 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, - 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 289, 298, 295, 296, 293, - 294, 292, 291, 290, 300, 281, 282, 283, 284, 286, - 0, 285, 84, 0, 115, 176, 140, 102, 167, 132, - 0, 0, 0, 0, 249, 0, 0, 0, 100, 0, - 247, 0, 0, 114, 288, 116, 0, 0, 149, 125, - 0, 0, 0, 0, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 468, 81, 274, 267, - 266, 269, 270, 271, 272, 0, 0, 93, 268, 273, - 275, 276, 0, 0, 245, 260, 0, 287, 0, 0, + 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, + 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 290, 299, 296, 297, 294, 295, + 293, 292, 291, 301, 282, 283, 284, 285, 287, 0, + 286, 84, 0, 115, 176, 140, 102, 167, 132, 0, + 0, 0, 0, 249, 0, 0, 0, 100, 0, 247, + 0, 0, 114, 289, 116, 0, 0, 149, 125, 0, + 0, 0, 0, 280, 281, 0, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 470, 81, 274, 267, 266, + 269, 270, 271, 272, 0, 0, 93, 268, 275, 273, + 276, 277, 0, 0, 245, 260, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 258, 0, - 0, 0, 0, 299, 0, 259, 0, 0, 255, 256, + 0, 0, 0, 300, 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 297, 0, 138, 0, + 0, 0, 0, 193, 0, 0, 298, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, @@ -1186,91 +1198,20 @@ var yyAct = [...]int{ 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, - 148, 289, 298, 295, 296, 293, 294, 292, 291, 290, - 300, 281, 282, 283, 284, 286, 0, 285, 84, 0, + 148, 290, 299, 296, 297, 294, 295, 293, 292, 291, + 301, 282, 283, 284, 285, 287, 0, 286, 84, 0, 115, 176, 140, 102, 167, 132, 0, 0, 0, 0, 249, 0, 0, 0, 100, 0, 247, 0, 0, 114, - 288, 116, 0, 0, 149, 125, 0, 0, 0, 0, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 289, 116, 0, 0, 149, 125, 0, 0, 0, 0, + 280, 281, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, 274, 267, 266, 269, 270, 271, - 272, 0, 0, 93, 268, 273, 275, 276, 0, 0, - 245, 260, 0, 287, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 258, 241, 0, 0, 0, 299, - 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, - 0, 0, 297, 0, 138, 0, 0, 152, 105, 104, - 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, - 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, - 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, - 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, - 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, - 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, - 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, - 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, - 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, - 141, 177, 133, 145, 95, 165, 148, 289, 298, 295, - 296, 293, 294, 292, 291, 290, 300, 281, 282, 283, - 284, 286, 0, 285, 84, 0, 115, 176, 140, 102, - 167, 132, 0, 0, 0, 0, 249, 0, 0, 0, - 100, 0, 247, 0, 0, 114, 288, 116, 0, 0, - 149, 125, 0, 0, 0, 0, 279, 280, 0, 0, - 0, 0, 0, 0, 831, 0, 56, 0, 0, 81, - 274, 267, 266, 269, 270, 271, 272, 0, 0, 93, - 268, 273, 275, 276, 0, 0, 245, 260, 0, 287, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, - 258, 0, 0, 0, 0, 299, 0, 259, 0, 0, - 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 297, 0, - 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, - 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, - 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, - 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, - 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, - 178, 90, 169, 89, 91, 168, 130, 155, 161, 124, - 121, 88, 159, 122, 120, 112, 101, 106, 136, 119, - 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, - 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, - 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, - 95, 165, 148, 289, 298, 295, 296, 293, 294, 292, - 291, 290, 300, 281, 282, 283, 284, 286, 26, 285, - 84, 0, 115, 176, 140, 102, 167, 0, 0, 0, - 132, 0, 0, 0, 0, 249, 0, 0, 0, 100, - 0, 247, 0, 0, 114, 288, 116, 0, 0, 149, - 125, 0, 0, 0, 0, 279, 280, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 81, 274, - 267, 266, 269, 270, 271, 272, 0, 0, 93, 268, - 273, 275, 276, 0, 0, 245, 260, 0, 287, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 257, 258, - 0, 0, 0, 0, 299, 0, 259, 0, 0, 255, - 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 193, 0, 0, 297, 0, 138, - 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, - 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, - 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, - 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, - 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, - 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, - 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, - 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, - 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, - 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, - 165, 148, 289, 298, 295, 296, 293, 294, 292, 291, - 290, 300, 281, 282, 283, 284, 286, 0, 285, 84, - 0, 115, 176, 140, 102, 167, 132, 0, 0, 0, - 0, 249, 0, 0, 0, 100, 0, 247, 0, 0, - 114, 288, 116, 0, 0, 149, 125, 0, 0, 0, - 0, 279, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 0, 0, 81, 274, 267, 266, 269, 270, - 271, 272, 0, 0, 93, 268, 273, 275, 276, 0, - 0, 245, 260, 0, 287, 0, 0, 0, 0, 0, + 272, 0, 0, 93, 268, 275, 273, 276, 277, 0, + 0, 245, 260, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, - 299, 0, 259, 0, 0, 255, 256, 261, 0, 0, + 0, 0, 0, 0, 257, 258, 241, 0, 0, 0, + 300, 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 193, 0, 0, 297, 0, 138, 0, 0, 152, 105, + 193, 0, 0, 298, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, @@ -1280,21 +1221,46 @@ var yyAct = [...]int{ 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, - 118, 141, 177, 133, 145, 95, 165, 148, 289, 298, - 295, 296, 293, 294, 292, 291, 290, 300, 281, 282, - 283, 284, 286, 132, 285, 84, 0, 115, 176, 140, - 102, 167, 100, 0, 0, 0, 0, 114, 288, 116, - 0, 0, 149, 125, 0, 0, 0, 0, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 0, 81, 274, 267, 266, 269, 270, 271, 272, 0, - 0, 93, 268, 273, 275, 276, 0, 0, 0, 260, - 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, + 118, 141, 177, 133, 145, 95, 165, 148, 290, 299, + 296, 297, 294, 295, 293, 292, 291, 301, 282, 283, + 284, 285, 287, 0, 286, 84, 0, 115, 176, 140, + 102, 167, 132, 0, 0, 0, 0, 249, 0, 0, + 0, 100, 0, 247, 0, 0, 114, 289, 116, 0, + 0, 149, 125, 0, 0, 0, 0, 280, 281, 0, + 0, 0, 0, 0, 0, 837, 0, 56, 0, 0, + 81, 274, 267, 266, 269, 270, 271, 272, 0, 0, + 93, 268, 275, 273, 276, 277, 0, 0, 245, 260, + 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 257, 258, 0, 0, 0, 0, 300, 0, 259, + 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 298, 0, 138, 0, 0, 152, 105, 104, 113, 0, + 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, + 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, + 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, + 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, + 158, 97, 178, 90, 169, 89, 91, 168, 130, 155, + 161, 124, 121, 88, 159, 122, 120, 112, 101, 106, + 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, + 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, + 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, + 133, 145, 95, 165, 148, 290, 299, 296, 297, 294, + 295, 293, 292, 291, 301, 282, 283, 284, 285, 287, + 26, 286, 84, 0, 115, 176, 140, 102, 167, 0, + 0, 0, 132, 0, 0, 0, 0, 249, 0, 0, + 0, 100, 0, 247, 0, 0, 114, 289, 116, 0, + 0, 149, 125, 0, 0, 0, 0, 280, 281, 0, + 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, + 81, 274, 267, 266, 269, 270, 271, 272, 0, 0, + 93, 268, 275, 273, 276, 277, 0, 0, 245, 260, + 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 257, 258, 0, 0, 0, 0, 299, 0, 259, + 0, 257, 258, 0, 0, 0, 0, 300, 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 297, 0, 138, 0, 0, 152, 105, 104, 113, 0, - 0, 0, 96, 0, 144, 134, 164, 1327, 135, 143, + 298, 0, 138, 0, 0, 152, 105, 104, 113, 0, + 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, @@ -1303,19 +1269,20 @@ var yyAct = [...]int{ 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, - 133, 145, 95, 165, 148, 289, 298, 295, 296, 293, - 294, 292, 291, 290, 300, 281, 282, 283, 284, 286, - 132, 285, 84, 0, 115, 176, 140, 102, 167, 100, - 0, 0, 0, 0, 114, 288, 116, 0, 0, 149, - 125, 0, 0, 0, 0, 279, 280, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 81, 274, - 267, 266, 269, 270, 271, 272, 0, 0, 93, 268, - 273, 275, 276, 0, 0, 0, 260, 0, 287, 0, + 133, 145, 95, 165, 148, 290, 299, 296, 297, 294, + 295, 293, 292, 291, 301, 282, 283, 284, 285, 287, + 0, 286, 84, 0, 115, 176, 140, 102, 167, 132, + 0, 0, 0, 0, 249, 0, 0, 0, 100, 0, + 247, 0, 0, 114, 289, 116, 0, 0, 149, 125, + 0, 0, 0, 0, 280, 281, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 0, 81, 274, 267, + 266, 269, 270, 271, 272, 0, 0, 93, 268, 275, + 273, 276, 277, 0, 0, 245, 260, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 258, - 0, 0, 0, 0, 299, 0, 259, 0, 0, 255, + 0, 0, 0, 0, 300, 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 193, 0, 0, 297, 0, 138, + 0, 0, 0, 0, 193, 0, 0, 298, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, @@ -1326,44 +1293,67 @@ var yyAct = [...]int{ 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, - 165, 148, 289, 298, 295, 296, 293, 294, 292, 291, - 290, 300, 281, 282, 283, 284, 286, 132, 285, 84, + 165, 148, 290, 299, 296, 297, 294, 295, 293, 292, + 291, 301, 282, 283, 284, 285, 287, 132, 286, 84, 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, - 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, - 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 501, 500, 510, 511, 503, 504, 505, 506, 507, - 508, 509, 502, 0, 0, 512, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, - 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, - 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, - 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, - 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, - 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, - 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, - 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, - 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, - 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, + 0, 114, 289, 116, 0, 0, 149, 125, 0, 0, + 0, 0, 280, 281, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 81, 274, 267, 266, 269, + 270, 271, 272, 0, 0, 93, 268, 275, 273, 276, + 277, 0, 0, 0, 260, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 132, 0, 84, 0, 115, 176, - 140, 102, 167, 100, 0, 0, 0, 0, 114, 0, - 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 258, 0, 0, + 0, 0, 300, 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 74, 0, 0, + 0, 0, 193, 0, 0, 298, 0, 138, 0, 0, + 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, + 134, 164, 1338, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 290, 299, 296, 297, 294, 295, 293, 292, 291, 301, + 282, 283, 284, 285, 287, 132, 286, 84, 0, 115, + 176, 140, 102, 167, 100, 0, 0, 0, 0, 114, + 289, 116, 0, 0, 149, 125, 0, 0, 0, 0, + 280, 281, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 0, 0, 81, 274, 267, 266, 269, 270, 271, + 272, 0, 0, 93, 268, 275, 273, 276, 277, 0, + 0, 0, 260, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, + 300, 0, 259, 0, 0, 255, 256, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 193, 0, 0, 298, 0, 138, 0, 0, 152, 105, + 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, + 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, + 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, + 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, + 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, + 168, 130, 155, 161, 124, 121, 88, 159, 122, 120, + 112, 101, 106, 136, 119, 137, 107, 127, 126, 128, + 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, + 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, + 118, 141, 177, 133, 145, 95, 165, 148, 290, 299, + 296, 297, 294, 295, 293, 292, 291, 301, 282, 283, + 284, 285, 287, 132, 286, 84, 0, 115, 176, 140, + 102, 167, 100, 0, 0, 0, 0, 114, 0, 116, + 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 77, 78, 0, 73, 0, - 0, 0, 79, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 0, 0, 0, 0, 0, 503, 502, + 512, 513, 505, 506, 507, 508, 509, 510, 511, 504, + 0, 0, 514, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, - 143, 117, 156, 139, 163, 75, 171, 154, 170, 85, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, @@ -1371,37 +1361,60 @@ var yyAct = [...]int{ 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 0, 76, 0, 0, + 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 0, 115, 176, 140, 102, 167, - 132, 0, 0, 0, 490, 0, 0, 0, 0, 100, - 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, - 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, - 0, 0, 0, 487, 486, 0, 0, 0, 0, 0, + 0, 132, 0, 84, 0, 115, 176, 140, 102, 167, + 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, - 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, - 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, - 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, - 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, - 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, - 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, - 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, - 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, - 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, - 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, - 165, 148, 0, 0, 0, 26, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, - 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, - 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 56, 0, 0, 81, 0, 0, 83, 0, - 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 77, 78, 0, 73, 0, 0, 0, + 79, 138, 0, 0, 152, 105, 104, 113, 0, 0, + 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, + 156, 139, 163, 75, 171, 154, 170, 85, 153, 162, + 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, + 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, + 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, + 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, + 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 0, 76, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 84, 0, 115, 176, 140, 102, 167, 132, 0, + 0, 0, 492, 0, 0, 0, 0, 100, 0, 0, + 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, + 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, + 0, 0, 489, 488, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 490, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, + 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, + 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, + 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, + 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, + 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, + 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, + 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, + 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, + 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, + 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, + 148, 0, 0, 0, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 132, 0, 84, 0, + 115, 176, 140, 102, 167, 100, 0, 0, 0, 0, + 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 81, 0, 0, 83, 0, 0, + 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1423,100 +1436,54 @@ var yyAct = [...]int{ 140, 102, 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 0, 0, 83, 716, 0, 0, 717, + 0, 0, 81, 0, 0, 83, 722, 0, 0, 723, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, - 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, - 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 0, 115, 176, 140, 102, 167, - 132, 0, 0, 0, 587, 0, 0, 0, 0, 100, - 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, - 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, - 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, - 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, - 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, - 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, - 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, - 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, - 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, - 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, - 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, - 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, - 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, - 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, - 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 56, 0, 0, 81, 0, 0, 83, 0, - 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, - 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, - 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, - 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, - 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, - 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, - 91, 168, 130, 155, 161, 124, 121, 88, 159, 122, - 120, 112, 101, 106, 136, 119, 137, 107, 127, 126, - 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, - 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, - 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, + 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, + 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, + 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, + 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, + 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, + 130, 155, 161, 124, 121, 88, 159, 122, 120, 112, + 101, 106, 136, 119, 137, 107, 127, 126, 128, 0, + 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, + 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, + 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 132, 0, 84, 0, 115, 176, - 140, 102, 167, 100, 0, 605, 0, 0, 114, 0, - 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 0, 115, 176, 140, 102, + 167, 132, 0, 0, 0, 589, 0, 0, 0, 0, + 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, - 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, - 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, - 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, - 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, - 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, - 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, - 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, - 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, - 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, - 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, + 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, + 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, + 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, + 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, + 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, + 97, 178, 90, 169, 89, 91, 168, 130, 155, 161, + 124, 121, 88, 159, 122, 120, 112, 101, 106, 136, + 119, 137, 107, 127, 126, 128, 0, 0, 0, 150, + 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, + 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, + 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, + 0, 84, 0, 115, 176, 140, 102, 167, 100, 0, + 0, 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 0, 115, 176, 140, 102, 167, - 132, 0, 0, 0, 587, 0, 0, 0, 0, 100, - 0, 0, 0, 0, 114, 0, 116, 0, 0, 149, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, - 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, + 0, 0, 0, 0, 56, 0, 0, 81, 0, 0, + 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1524,7 +1491,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, - 0, 144, 134, 164, 0, 585, 143, 117, 156, 139, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, @@ -1534,12 +1501,12 @@ var yyAct = [...]int{ 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 132, 84, - 0, 115, 176, 140, 102, 167, 565, 100, 0, 0, - 0, 0, 114, 0, 116, 0, 0, 149, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, + 0, 115, 176, 140, 102, 167, 100, 0, 607, 0, + 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 81, 0, 0, 83, - 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1556,13 +1523,14 @@ var yyAct = [...]int{ 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, - 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, - 0, 0, 0, 0, 0, 132, 0, 84, 0, 115, - 176, 140, 102, 167, 100, 0, 0, 0, 0, 114, - 0, 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 0, 115, + 176, 140, 102, 167, 132, 0, 0, 0, 589, 0, + 0, 0, 0, 100, 0, 0, 0, 0, 114, 0, + 116, 0, 0, 149, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1570,7 +1538,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, - 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, + 587, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, 89, 91, 168, @@ -1580,17 +1548,40 @@ var yyAct = [...]int{ 175, 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 0, 84, 0, 115, 176, 140, 102, - 167, 100, 0, 0, 0, 0, 114, 0, 116, 0, - 0, 149, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 132, 84, 0, 115, 176, 140, 102, + 167, 567, 100, 0, 0, 0, 0, 114, 0, 116, + 0, 0, 149, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 81, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, + 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, + 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, + 153, 162, 94, 146, 0, 0, 0, 87, 160, 151, + 123, 109, 110, 86, 0, 142, 99, 103, 98, 131, + 157, 158, 97, 178, 90, 169, 89, 91, 168, 130, + 155, 161, 124, 121, 88, 159, 122, 120, 112, 101, + 106, 136, 119, 137, 107, 127, 126, 128, 0, 0, + 0, 150, 166, 179, 0, 0, 172, 173, 174, 175, + 0, 0, 0, 129, 92, 108, 147, 111, 118, 141, + 177, 133, 145, 95, 165, 148, 0, 0, 0, 0, + 0, 0, 0, 0, 311, 0, 0, 0, 0, 0, + 0, 132, 0, 84, 0, 115, 176, 140, 102, 167, + 100, 0, 0, 0, 0, 114, 0, 116, 0, 0, + 149, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 189, 0, 193, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, 171, 154, 170, 85, 153, 162, @@ -1613,31 +1604,54 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 0, 0, 138, 0, - 0, 152, 105, 104, 113, 0, 0, 0, 96, 0, - 144, 134, 164, 0, 135, 143, 117, 156, 139, 163, - 194, 171, 154, 170, 85, 153, 162, 94, 146, 0, - 0, 0, 87, 160, 151, 123, 109, 110, 86, 0, - 142, 99, 103, 98, 131, 157, 158, 97, 178, 90, - 169, 89, 91, 168, 130, 155, 161, 124, 121, 88, - 159, 122, 120, 112, 101, 106, 136, 119, 137, 107, - 127, 126, 128, 0, 0, 0, 150, 166, 179, 0, - 0, 172, 173, 174, 175, 0, 0, 0, 129, 92, - 108, 147, 111, 118, 141, 177, 133, 145, 95, 165, - 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, - 115, 176, 140, 102, 167, + 0, 0, 189, 0, 193, 0, 0, 0, 0, 138, + 0, 0, 152, 105, 104, 113, 0, 0, 0, 96, + 0, 144, 134, 164, 0, 135, 143, 117, 156, 139, + 163, 194, 171, 154, 170, 85, 153, 162, 94, 146, + 0, 0, 0, 87, 160, 151, 123, 109, 110, 86, + 0, 142, 99, 103, 98, 131, 157, 158, 97, 178, + 90, 169, 89, 91, 168, 130, 155, 161, 124, 121, + 88, 159, 122, 120, 112, 101, 106, 136, 119, 137, + 107, 127, 126, 128, 0, 0, 0, 150, 166, 179, + 0, 0, 172, 173, 174, 175, 0, 0, 0, 129, + 92, 108, 147, 111, 118, 141, 177, 133, 145, 95, + 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 132, 0, 84, + 0, 115, 176, 140, 102, 167, 100, 0, 0, 0, + 0, 114, 0, 116, 0, 0, 149, 125, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 193, 0, 0, 0, 0, 138, 0, 0, + 152, 105, 104, 113, 0, 0, 0, 96, 0, 144, + 134, 164, 0, 135, 143, 117, 156, 139, 163, 194, + 171, 154, 170, 85, 153, 162, 94, 146, 0, 0, + 0, 87, 160, 151, 123, 109, 110, 86, 0, 142, + 99, 103, 98, 131, 157, 158, 97, 178, 90, 169, + 89, 91, 168, 130, 155, 161, 124, 121, 88, 159, + 122, 120, 112, 101, 106, 136, 119, 137, 107, 127, + 126, 128, 0, 0, 0, 150, 166, 179, 0, 0, + 172, 173, 174, 175, 0, 0, 0, 129, 92, 108, + 147, 111, 118, 141, 177, 133, 145, 95, 165, 148, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 0, 115, + 176, 140, 102, 167, } var yyPact = [...]int{ - 136, -1000, -184, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1326, -1000, -183, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 886, 920, -1000, -1000, -1000, -1000, - -1000, -1000, 687, 6766, 86, 105, 16, 9064, 101, 305, - 9291, -1000, 17, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 6, 9291, 522, 604, -1000, -1000, -1000, -1000, -1000, 870, - 879, 686, 846, 782, -1000, 5147, 70, 7919, 8837, 4203, - -1000, 511, 98, 9291, -148, 9291, 67, 67, 67, -1000, + -1000, -1000, -1000, -1000, 824, 878, -1000, -1000, -1000, -1000, + -1000, -1000, 648, 6863, 62, 106, 18, 9171, 96, 72, + 9399, -1000, 12, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 7, 9399, 490, 617, -1000, -1000, -1000, -1000, -1000, 816, + 820, 661, 810, 722, -1000, 5237, 63, 8021, 8943, 4289, + -1000, 489, 93, 9399, -143, 9399, 57, 57, 57, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1648,21 +1662,21 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 100, 9291, -1000, 9291, 66, 509, 66, 66, 66, 9291, - -1000, 146, -1000, -1000, -1000, 9291, 501, 815, 75, 2709, - 2709, 2709, 2709, 22, 2709, -88, -74, 701, -1000, -1000, - -1000, -1000, 2709, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 9291, 889, 690, 384, 817, 5858, 5858, - 886, -1000, 604, -1000, -1000, -1000, 809, -1000, -1000, 266, - 905, -1000, 7002, 135, -1000, 5858, 1690, 469, 469, 469, - 125, 302, -1000, -1000, -1000, 6312, 6312, 6312, 6312, 6312, - 6312, 6312, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5622, 469, - 469, 469, 469, 469, 469, 469, 469, 5858, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 8610, 625, 726, -1000, -1000, -1000, 843, 7229, 8382, - 9291, 633, -1000, 619, 3954, -101, -1000, -1000, -1000, 206, - 8146, -1000, -1000, -1000, 811, -1000, -1000, -1000, -1000, -1000, + 95, 9399, -1000, 9399, 55, 483, 55, 55, 55, 9399, + -1000, 131, -1000, -1000, -1000, 9399, 469, 779, 50, 2789, + 2789, 2789, 2789, 22, 2789, -72, -61, 670, -1000, -1000, + -1000, -1000, 2789, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 9399, 547, 653, 425, 786, 5951, 5951, + 824, -1000, 617, -1000, -1000, -1000, 773, -1000, -1000, 277, + 844, -1000, 7100, 130, -1000, 5951, 1535, 616, 616, 616, + 117, 292, -1000, -1000, -1000, 6407, 6407, 6407, 6407, 6407, + 6407, 6407, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5714, + 616, 616, 616, 616, 616, 616, 616, 616, 5951, 616, + 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, + 616, 616, 8715, 554, 699, -1000, -1000, -1000, 805, 7328, + 8486, 9399, 570, -1000, 600, 4039, -80, -1000, -1000, -1000, + 198, 8249, -1000, -1000, -1000, 766, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1671,186 +1685,188 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 535, -1000, - 1702, 499, 2709, 92, 643, 492, 239, 488, 9291, 9291, - 2709, 81, 9291, 841, 700, 9291, 485, 474, -1000, 3456, - -1000, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, -1000, - -1000, -1000, -1000, -1000, -1000, 2709, 2709, -1000, -90, -69, - -1000, 9291, -1000, -1000, 93, 93, 9291, -1000, -1000, -1000, - 915, 167, 466, 132, 628, -1000, 455, 870, 384, 782, - 7456, 712, -1000, -1000, 9291, -1000, 5858, 5858, 419, -1000, - 9291, -1000, 3207, 172, 6312, 283, 244, 6312, 6312, 6312, - 6312, 6312, 6312, 6312, 6312, 6312, 6312, 6312, 6312, 6312, - 6312, 6312, 323, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 467, 4439, -1000, 604, 981, 981, -1000, -1000, 151, - 151, 151, 151, 151, 151, 6539, 384, 528, 229, 5622, - 5147, 5147, 5858, 5858, 9291, 9291, 5147, 848, 214, 229, - 9291, -1000, 384, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 5147, 5147, 5147, 5147, 154, 9291, -1000, 9291, 7919, 7919, - 7919, 7919, 7919, -1000, 759, 757, -1000, 760, 758, 775, - 9291, -1000, 520, 7229, 149, 469, -1000, 9291, -1000, 45, - 545, 7919, 9291, -1000, -1000, 3705, 619, -101, 606, -1000, - -94, -127, 5383, 140, -1000, -1000, -1000, 2460, 199, 250, - -56, -1000, -1000, -1000, 605, -1000, 605, 605, 605, 605, - -22, -22, -22, -22, -1000, -1000, -1000, -1000, -1000, 675, - 672, -1000, 605, 605, 605, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 487, + -1000, 1405, 468, 2789, 68, 651, 467, 239, 465, 9399, + 9399, 2789, 65, 9399, 800, 666, 9399, 464, 438, -1000, + 3539, -1000, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, + -1000, -1000, -1000, -1000, -1000, -1000, 2789, 2789, -1000, -94, + -58, -1000, 9399, -1000, -1000, 90, 90, 1405, 9399, -1000, + -1000, -1000, 866, 166, 379, 129, 606, -1000, 252, 816, + 425, 722, 7556, 693, -1000, -1000, 9399, -1000, 5951, 5951, + 345, -1000, 9399, -1000, 3289, 180, 6407, 301, 247, 6407, + 6407, 6407, 6407, 6407, 6407, 6407, 6407, 6407, 6407, 6407, + 6407, 6407, 6407, 6407, 369, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 430, 4526, -1000, 617, 1302, 1302, -1000, + -1000, 150, 150, 150, 150, 150, 150, 6635, 425, 447, + 295, 5714, 5237, 5237, 5951, 5951, 9399, 9399, 5237, 807, + 201, 295, 9399, -1000, 425, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 5237, 5237, 5237, 5237, 147, 9399, -1000, 9399, + 8021, 8021, 8021, 8021, 8021, -1000, 708, 707, -1000, 735, + 734, 763, 9399, -1000, 444, 7328, 172, 616, -1000, 9399, + -1000, 35, 555, 8021, 9399, -1000, -1000, 3789, 600, -80, + 586, -1000, -101, -99, 5474, 148, -1000, -1000, -1000, 2539, + 178, 257, -47, -1000, -1000, -1000, -1000, 621, -1000, 621, + 621, 621, 621, -19, -19, -19, -19, -1000, -1000, -1000, + -1000, -1000, 647, 646, -1000, 621, 621, 621, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 659, 659, 659, 631, 631, 689, -1000, 9291, -168, - 439, 2709, 838, 2709, -1000, 63, -1000, 9291, -1000, -1000, - 9291, 2709, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 248, -1000, + -1000, -1000, -1000, -1000, -1000, 627, 627, 627, 624, 624, + 652, -1000, 9399, -165, 428, 2789, 799, 2789, -1000, 92, + -1000, 9399, -1000, -1000, 9399, 2789, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 609, -1000, -1000, 789, 5858, 5858, 3456, 5858, -1000, -1000, - -1000, 817, -1000, 848, 862, -1000, 801, 799, 5147, -1000, - -1000, 172, 192, -1000, -1000, 275, -1000, -1000, -1000, -1000, - 131, 469, -1000, -1000, 1614, -1000, -1000, -1000, -1000, 283, - 6312, 6312, 6312, 256, 1614, 1650, 408, 1731, 151, 370, - 370, 175, 175, 175, 175, 175, 660, 660, -1000, -1000, - -1000, 384, 384, 5147, 607, -1000, 302, -1000, 302, -1000, - -1000, 5858, -1000, 384, 508, 508, 363, 468, 654, -1000, - 128, 600, 508, 5147, 245, -1000, 5858, 384, -1000, 508, - 384, 508, 508, 636, 796, 469, -1000, 694, -1000, 205, - 726, 642, 699, 1209, -1000, -1000, -1000, -1000, 731, -1000, - 723, -1000, -1000, -1000, -1000, -1000, 97, 95, 94, 9291, - -1000, 903, 7919, 586, -1000, -1000, 606, -101, -99, -1000, - -1000, -1000, 229, -1000, 360, 594, 2211, -1000, -1000, -1000, - -1000, -1000, 638, 827, 183, 184, 405, -1000, -1000, 820, - -1000, 262, -59, -1000, -1000, 349, -22, -22, -1000, -1000, - 140, 808, 140, 140, 140, 369, 369, -1000, -1000, -1000, - -1000, 348, -1000, -1000, -1000, 335, -1000, 698, 9291, 2709, - -1000, 3456, -1000, -1000, -1000, -1000, -1000, -1000, 682, 271, - 246, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 44, -1000, 2709, -1000, 257, 9291, 9291, 9291, - 779, 229, 229, 123, -1000, -1000, 9291, -1000, -1000, -1000, - -1000, 593, -1000, -1000, -1000, 2958, 5147, -1000, 256, 1614, - 1585, -1000, 6312, 6312, -1000, -1000, 508, 5147, 229, -1000, - -1000, -1000, 56, 323, 56, 6312, 6312, 3456, 6312, 6312, - -162, 570, 208, -1000, 5858, 333, -1000, -1000, -1000, -1000, - -1000, 696, 9291, 469, -1000, 7229, -1000, 9291, 886, 9291, - 5858, 5858, -1000, -1000, 5858, 635, -1000, 5858, -1000, -1000, - -1000, 469, 469, 469, 444, -1000, 886, 586, -1000, -1000, - -1000, -119, -132, -1000, -1000, -1000, 2460, -1000, 2460, 9291, - -1000, 402, 394, -1000, -1000, 692, 108, -1000, -1000, -1000, - 445, 140, 140, -1000, 207, -1000, -1000, -1000, 505, -1000, - 498, 581, 480, 9291, -1000, -1000, 572, -1000, 202, -1000, - -1000, 9291, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 9291, 9291, -1000, -1000, -1000, -1000, - -1000, 9291, -1000, -1000, 368, 5858, -1000, -1000, -1000, -1000, - 3456, -1000, 903, 7919, -1000, -1000, 384, -1000, 6312, 1614, - 1614, -1000, -1000, 384, 605, 605, -1000, 605, 631, -1000, - 605, -2, 605, -4, 469, 384, 384, 1337, 1569, -1000, - 621, 1435, 469, -159, -1000, 229, 5858, -182, 829, 558, - 549, -1000, -1000, 4911, 384, 478, 119, 444, 870, -1000, - 229, 229, 229, 9291, 229, 9291, 9291, 9291, 7692, 9291, - 870, -1000, -1000, -1000, -1000, 2211, -1000, 428, -1000, 605, - -1000, -1000, -52, 913, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -22, 365, -22, 317, -1000, - 311, 2709, 3456, 2460, -1000, 523, -1000, -1000, -1000, -1000, - 831, -1000, 229, 894, 571, -1000, 1614, -1000, -1000, 104, - -1000, -1000, -1000, -1000, -1000, -1000, 310, -1000, -1000, -1000, - 6312, 6312, -1000, 6312, 6312, 6312, 384, 351, 229, -1000, - 4675, 826, -1000, 469, -1000, -1000, 637, 9291, 9291, -1000, - -1000, 423, -1000, 409, 409, 409, 149, -1000, -1000, 165, - 9291, -1000, 181, -1000, -137, 140, -1000, 140, 420, 410, - -1000, -1000, -1000, 9291, 469, 890, 878, -1000, -1000, 384, - 1408, 1408, 1408, 1408, 15, -1000, -1000, -1000, 537, 909, - -1000, 469, -1000, 604, 116, -1000, 9291, -1000, -1000, -1000, - -1000, -1000, 165, -1000, 385, 201, 334, -1000, 247, 825, - -1000, 823, -1000, -1000, -1000, -1000, -1000, 399, 43, -1000, - 5858, 5858, -1000, -1000, -1000, -1000, -1000, 384, 36, -171, - 9291, 549, 384, 9291, -1000, -1000, -1000, 308, -1000, -1000, - -1000, 324, -1000, -1000, 643, 383, -1000, 9291, 229, 537, - -1000, 769, -166, -175, 526, -1000, -1000, -1000, -1000, -168, - -1000, 43, 795, -1000, 764, -1000, -1000, -1000, 35, -169, - 24, -172, 469, -179, 6085, -1000, 1408, 384, -1000, -1000, + -1000, -1000, 255, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 442, -1000, 594, -1000, -1000, 745, + 5951, 5951, 3539, 5951, -1000, -1000, -1000, 786, -1000, 807, + 821, -1000, 756, 755, 5237, -1000, -1000, 180, 199, -1000, + -1000, 318, -1000, -1000, -1000, -1000, 128, 616, -1000, -1000, + 1864, -1000, -1000, -1000, -1000, 301, 6407, 6407, 6407, 1395, + 1864, 1849, 433, 1286, 150, 145, 145, 149, 149, 149, + 149, 149, 591, 591, -1000, -1000, -1000, 425, 425, 5237, + 593, -1000, 292, -1000, 292, -1000, -1000, 5951, -1000, 425, + 437, 437, 303, 280, 592, -1000, 127, 585, 437, 5237, + 221, -1000, 5951, 425, -1000, 437, 425, 437, 437, 546, + 754, 616, -1000, 576, -1000, 196, 699, 634, 664, 712, + -1000, -1000, -1000, -1000, 698, -1000, 671, -1000, -1000, -1000, + -1000, -1000, 88, 75, 73, 9399, -1000, 832, 8021, 575, + -1000, -1000, 586, -80, -73, -1000, -1000, -1000, 295, -1000, + 380, 584, 2289, -1000, -1000, -1000, -1000, -1000, 626, 791, + 186, 176, 426, -1000, -1000, 781, -1000, 265, -52, -1000, + -1000, 341, -19, -19, -1000, -1000, 148, 762, 148, 148, + 148, 368, 368, -1000, -1000, -1000, -1000, 340, -1000, -1000, + -1000, 336, -1000, 657, 9399, 2789, -1000, 3539, -1000, -1000, + -1000, -1000, -1000, -1000, 919, 276, 197, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 34, -1000, + 2789, -1000, 258, 9399, 9399, 1405, 802, 9399, 740, 295, + 295, 124, -1000, -1000, 9399, -1000, -1000, -1000, -1000, 571, + -1000, -1000, -1000, 3039, 5237, -1000, 1395, 1864, 1817, -1000, + 6407, 6407, -1000, -1000, 437, 5237, 295, -1000, -1000, -1000, + 206, 369, 206, 6407, 6407, 3539, 6407, 6407, -158, 548, + 214, -1000, 5951, 256, -1000, -1000, -1000, -1000, -1000, 656, + 9399, 616, -1000, 7328, -1000, 9399, 824, 9399, 5951, 5951, + -1000, -1000, 5951, 625, -1000, 5951, -1000, -1000, -1000, 616, + 616, 616, 412, -1000, 824, 575, -1000, -1000, -1000, -119, + -104, -1000, -1000, -1000, 2539, -1000, 2539, 9399, -1000, 386, + 384, -1000, -1000, 655, 76, -1000, -1000, -1000, 499, 148, + 148, -1000, 212, -1000, -1000, -1000, 424, -1000, 422, 582, + 420, 9399, -1000, -1000, 579, -1000, 193, -1000, -1000, 9399, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 9399, 9399, -1000, -1000, -1000, -1000, -1000, 9399, + -1000, -1000, 364, 5951, -1000, -1000, -1000, 90, -1000, -1000, + 3539, -1000, 832, 8021, -1000, -1000, 425, -1000, 6407, 1864, + 1864, -1000, -1000, 425, 621, 621, -1000, 621, 624, -1000, + 621, -1, 621, -2, 616, 425, 425, 1648, 1764, -1000, + 629, 1737, 616, -151, -1000, 295, 5951, -180, 793, 511, + 538, -1000, -1000, 5000, 425, 416, 122, 412, 816, -1000, + 295, 295, 295, 9399, 295, 9399, 9399, 9399, 7793, 9399, + 816, -1000, -1000, -1000, -1000, 2289, -1000, 410, -1000, 621, + -1000, -1000, -43, 865, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -19, 359, -19, 331, -1000, + 320, 2789, 3539, 2539, -1000, 618, -1000, -1000, -1000, -1000, + 795, -1000, 295, -1000, 829, 577, -1000, 1864, -1000, -1000, + 108, -1000, -1000, -1000, -1000, -1000, -1000, 313, -1000, -1000, + -1000, 6407, 6407, -1000, 6407, 6407, 6407, 425, 358, 295, + -1000, 4763, 785, -1000, 616, -1000, -1000, 558, 9399, 9399, + -1000, -1000, 407, -1000, 405, 405, 405, 172, -1000, -1000, + 160, 9399, -1000, 190, -1000, -128, 148, -1000, 148, 496, + 495, -1000, -1000, -1000, 9399, 616, 827, 818, -1000, -1000, + 425, 1591, 1591, 1591, 1591, 16, -1000, -1000, -1000, 531, + 862, -1000, 616, -1000, 617, 120, -1000, 9399, -1000, -1000, + -1000, -1000, -1000, 160, -1000, 373, 191, 352, -1000, 274, + 784, -1000, 783, -1000, -1000, -1000, -1000, -1000, 401, 33, + -1000, 5951, 5951, -1000, -1000, -1000, -1000, -1000, 425, 40, + -170, 9399, 538, 425, 9399, -1000, -1000, -1000, 306, -1000, + -1000, -1000, 343, -1000, -1000, 651, 399, -1000, 9399, 295, + 531, -1000, 739, -163, -173, 381, -1000, -1000, -1000, -1000, + -165, -1000, 33, 750, -1000, 720, -1000, -1000, -1000, 26, + -168, 23, -171, 616, -175, 6179, -1000, 1591, 425, -1000, + -1000, } var yyPgo = [...]int{ - 0, 1185, 21, 63, 1184, 1183, 1182, 933, 931, 929, - 1181, 1180, 1179, 1178, 1177, 1176, 1172, 1171, 1170, 1166, - 1163, 1162, 1159, 1157, 1156, 1155, 1151, 126, 1145, 1143, - 1142, 59, 1141, 62, 1140, 1139, 29, 139, 33, 57, - 134, 1138, 37, 64, 61, 1137, 42, 1134, 1123, 67, - 1122, 50, 1121, 1115, 1269, 1113, 1110, 14, 28, 1108, - 1107, 1104, 1102, 60, 474, 1099, 1098, 1096, 1095, 1094, - 1093, 44, 3, 6, 25, 15, 1092, 577, 55, 1086, - 39, 1083, 1081, 1079, 1078, 36, 1077, 45, 1075, 23, - 43, 1074, 13, 49, 26, 24, 8, 66, 48, 1072, - 20, 56, 31, 1070, 1063, 365, 1062, 1060, 1058, 1057, - 1056, 1055, 153, 328, 1054, 1053, 1050, 1047, 19, 1035, - 0, 396, 58, 1034, 1033, 1031, 1059, 54, 53, 16, - 1030, 40, 171, 18, 1029, 1028, 46, 1027, 1026, 1022, - 1017, 1015, 1013, 1012, 279, 1011, 1010, 1008, 27, 7, - 1007, 1006, 51, 11, 1003, 1002, 1001, 35, 47, 998, - 32, 996, 993, 965, 964, 17, 10, 961, 9, 959, - 5, 957, 956, 1, 955, 12, 954, 2, 951, 4, - 30, 950, 949, 65, 947, 946, 937, 496, 100, 936, - 935, 94, + 0, 1135, 18, 22, 1134, 1133, 1132, 909, 893, 891, + 1131, 1123, 1121, 1117, 1113, 1111, 1110, 1104, 1103, 1098, + 1097, 1095, 1094, 1092, 1089, 1087, 1086, 102, 1085, 1084, + 1079, 71, 1078, 67, 1077, 1076, 36, 153, 33, 35, + 192, 1075, 79, 61, 89, 1072, 59, 1070, 1068, 65, + 1067, 63, 1066, 1065, 1233, 1064, 1062, 12, 42, 1061, + 1059, 1058, 1057, 77, 3, 1056, 1045, 1044, 1043, 1042, + 1039, 49, 11, 7, 24, 13, 1034, 327, 8, 1029, + 47, 1028, 1027, 1026, 1025, 40, 1022, 51, 1021, 39, + 56, 1020, 16, 57, 43, 15, 9, 62, 55, 1018, + 25, 58, 48, 1006, 1004, 343, 1002, 1001, 999, 995, + 994, 993, 162, 315, 991, 989, 987, 984, 32, 977, + 0, 720, 64, 972, 969, 967, 1214, 85, 60, 20, + 965, 44, 169, 31, 964, 963, 29, 962, 50, 959, + 955, 954, 953, 952, 951, 950, 21, 948, 946, 942, + 26, 10, 941, 940, 53, 27, 939, 937, 936, 46, + 54, 935, 45, 932, 931, 930, 929, 28, 30, 928, + 14, 927, 5, 926, 924, 1, 922, 17, 920, 2, + 917, 6, 37, 916, 912, 23, 907, 905, 895, 566, + 4, 887, 884, 66, } var yyR1 = [...]int{ - 0, 185, 186, 186, 1, 1, 1, 1, 1, 1, + 0, 187, 188, 188, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 6, 3, 4, 4, 5, 5, 7, 7, 7, 30, 30, 8, - 9, 9, 9, 189, 189, 49, 49, 93, 93, 10, + 9, 9, 9, 191, 191, 49, 49, 93, 93, 10, 10, 10, 10, 98, 98, 102, 102, 102, 103, 103, 103, 103, 134, 134, 11, 11, 11, 11, 11, 11, - 11, 179, 179, 178, 177, 177, 176, 176, 175, 16, - 162, 163, 163, 163, 158, 137, 137, 137, 137, 140, - 140, 138, 138, 138, 138, 138, 138, 138, 139, 139, - 139, 139, 139, 141, 141, 141, 141, 141, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 143, 143, 143, 143, 143, 143, 143, - 143, 157, 157, 144, 144, 152, 152, 153, 153, 153, - 150, 150, 151, 151, 154, 154, 154, 145, 145, 145, - 145, 145, 145, 145, 147, 147, 155, 155, 148, 148, - 148, 149, 149, 149, 156, 156, 156, 156, 156, 146, - 146, 159, 159, 171, 171, 170, 170, 170, 161, 161, - 167, 167, 167, 167, 167, 160, 160, 169, 169, 168, - 164, 164, 164, 165, 165, 165, 166, 166, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 174, 172, - 172, 173, 173, 13, 14, 14, 14, 14, 14, 15, - 15, 17, 18, 18, 18, 18, 18, 18, 18, 18, + 11, 181, 181, 180, 179, 179, 178, 178, 177, 16, + 164, 165, 165, 165, 160, 137, 137, 138, 138, 138, + 138, 138, 145, 141, 141, 139, 139, 139, 139, 139, + 139, 139, 140, 140, 140, 140, 140, 142, 142, 142, + 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 144, 144, 144, + 144, 144, 144, 144, 144, 159, 159, 146, 146, 154, + 154, 155, 155, 155, 152, 152, 153, 153, 156, 156, + 156, 147, 147, 147, 147, 147, 147, 147, 149, 149, + 157, 157, 150, 150, 150, 151, 151, 151, 158, 158, + 158, 158, 158, 148, 148, 161, 161, 173, 173, 172, + 172, 172, 163, 163, 169, 169, 169, 169, 169, 162, + 162, 171, 171, 170, 166, 166, 166, 167, 167, 167, + 168, 168, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 176, 174, 174, 175, 175, 13, 14, 14, + 14, 14, 14, 15, 15, 17, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 110, 110, 107, 107, - 108, 108, 109, 109, 109, 111, 111, 111, 135, 135, - 135, 19, 19, 21, 21, 22, 23, 20, 20, 20, - 20, 20, 24, 25, 25, 183, 183, 183, 183, 183, - 183, 26, 26, 184, 184, 190, 27, 28, 28, 29, - 29, 29, 33, 33, 33, 31, 31, 32, 32, 38, - 38, 37, 37, 39, 39, 39, 39, 123, 123, 123, - 122, 41, 41, 42, 42, 43, 43, 44, 44, 44, - 56, 56, 92, 92, 94, 94, 45, 45, 45, 45, - 46, 46, 47, 47, 48, 48, 130, 130, 129, 129, - 129, 128, 50, 50, 50, 52, 51, 51, 51, 51, - 53, 53, 55, 55, 54, 54, 57, 57, 57, 57, - 58, 58, 40, 40, 40, 40, 40, 40, 40, 106, - 106, 60, 60, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 70, 70, 70, 70, 70, 70, 61, - 61, 61, 61, 61, 61, 61, 36, 36, 71, 71, - 71, 77, 72, 72, 64, 64, 64, 64, 64, 64, + 110, 110, 107, 107, 108, 108, 109, 109, 109, 111, + 111, 111, 135, 135, 135, 19, 19, 21, 21, 22, + 23, 20, 20, 20, 20, 20, 24, 25, 25, 25, + 185, 185, 185, 185, 185, 185, 26, 26, 186, 186, + 192, 27, 28, 28, 29, 29, 29, 33, 33, 33, + 31, 31, 32, 32, 38, 38, 37, 37, 39, 39, + 39, 39, 123, 123, 123, 122, 41, 41, 42, 42, + 43, 43, 44, 44, 44, 56, 56, 92, 92, 94, + 94, 45, 45, 45, 45, 46, 46, 47, 47, 48, + 48, 130, 130, 129, 129, 129, 128, 50, 50, 50, + 52, 51, 51, 51, 51, 53, 53, 55, 55, 54, + 54, 57, 57, 57, 57, 58, 58, 40, 40, 40, + 40, 40, 40, 40, 106, 106, 60, 60, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 70, 70, + 70, 70, 70, 70, 61, 61, 61, 61, 61, 61, + 61, 36, 36, 71, 71, 71, 77, 72, 72, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 68, 68, 68, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, - 67, 191, 191, 69, 69, 69, 69, 34, 34, 34, - 34, 34, 133, 133, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 81, 81, - 35, 35, 79, 79, 80, 82, 82, 78, 78, 78, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 181, 65, 65, 65, 83, 83, 84, 84, 85, 85, - 86, 86, 87, 88, 88, 88, 89, 89, 89, 89, - 90, 90, 90, 62, 62, 62, 62, 62, 62, 91, - 91, 91, 91, 95, 95, 73, 73, 75, 75, 74, - 76, 182, 182, 182, 96, 96, 100, 97, 97, 101, - 101, 101, 99, 99, 99, 125, 125, 104, 104, 112, - 112, 113, 113, 105, 105, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 115, 115, 115, 116, 116, - 117, 117, 117, 124, 124, 120, 120, 120, 121, 121, - 126, 127, 127, 118, 118, 118, 118, 118, 118, 118, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 68, 68, 68, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, + 67, 67, 67, 67, 67, 67, 193, 193, 69, 69, + 69, 69, 34, 34, 34, 34, 34, 133, 133, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 81, 81, 35, 35, 79, 79, 80, + 82, 82, 78, 78, 78, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 183, 65, 65, 65, + 83, 83, 84, 84, 85, 85, 86, 86, 87, 88, + 88, 88, 89, 89, 89, 89, 90, 90, 90, 62, + 62, 62, 62, 62, 62, 91, 91, 91, 91, 95, + 95, 73, 73, 75, 75, 74, 76, 184, 184, 184, + 96, 96, 100, 97, 97, 101, 101, 101, 99, 99, + 99, 125, 125, 104, 104, 112, 112, 113, 113, 105, + 105, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 115, 115, 115, 116, 116, 117, 117, 117, 124, + 124, 120, 120, 120, 121, 121, 126, 127, 127, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, @@ -1859,8 +1875,8 @@ var yyR1 = [...]int{ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, @@ -1869,7 +1885,8 @@ var yyR1 = [...]int{ 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 187, 188, 131, 132, 132, 132, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 189, + 190, 131, 132, 132, 132, } var yyR2 = [...]int{ @@ -1881,60 +1898,60 @@ var yyR2 = [...]int{ 4, 5, 4, 1, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 2, 8, 4, 6, 5, 5, 5, 0, 2, 1, 0, 2, 1, 3, 3, 4, - 4, 1, 3, 3, 8, 3, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 1, 2, 2, 2, 1, 4, 4, - 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, - 1, 6, 6, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 0, 3, 0, 5, 0, 3, 5, - 0, 1, 0, 1, 0, 1, 2, 0, 2, 2, - 2, 2, 2, 2, 0, 3, 0, 1, 0, 3, - 3, 0, 2, 2, 0, 2, 1, 2, 1, 0, - 2, 5, 4, 1, 2, 2, 3, 2, 0, 1, - 2, 3, 3, 2, 2, 1, 1, 1, 3, 2, - 0, 1, 3, 1, 2, 3, 1, 1, 6, 7, - 7, 12, 7, 7, 7, 4, 5, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, - 3, 8, 8, 5, 4, 6, 5, 4, 4, 3, - 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, - 3, 3, 3, 3, 4, 3, 4, 6, 4, 2, - 4, 2, 2, 2, 2, 3, 1, 1, 0, 1, - 0, 1, 0, 2, 2, 0, 2, 2, 0, 1, - 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, - 2, 2, 3, 4, 4, 1, 1, 1, 1, 1, - 1, 2, 4, 1, 3, 0, 2, 0, 2, 1, - 2, 2, 0, 1, 1, 0, 1, 0, 1, 0, - 1, 1, 3, 1, 2, 3, 5, 0, 1, 2, - 1, 0, 2, 1, 3, 1, 1, 1, 3, 3, - 3, 7, 1, 3, 1, 3, 4, 4, 4, 3, - 2, 4, 0, 1, 0, 2, 0, 1, 0, 1, - 2, 1, 1, 2, 2, 1, 2, 3, 2, 3, - 2, 2, 2, 1, 1, 3, 0, 5, 5, 5, - 0, 2, 1, 3, 3, 2, 3, 1, 2, 0, - 3, 1, 1, 3, 3, 4, 4, 5, 3, 4, - 5, 6, 2, 1, 2, 1, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, - 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, - 3, 1, 1, 1, 1, 4, 5, 6, 4, 4, - 6, 6, 6, 6, 8, 8, 6, 8, 8, 9, - 7, 5, 4, 2, 2, 2, 2, 2, 2, 2, - 2, 0, 2, 4, 4, 4, 4, 0, 3, 4, - 7, 3, 1, 1, 2, 3, 3, 1, 2, 2, - 1, 2, 1, 2, 2, 1, 2, 4, 0, 1, - 0, 2, 1, 2, 4, 0, 2, 1, 3, 5, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 2, 2, 0, 3, 0, 2, 0, 3, - 1, 3, 2, 0, 1, 1, 0, 2, 4, 4, - 0, 2, 4, 2, 1, 3, 5, 4, 6, 1, - 3, 3, 5, 0, 5, 1, 3, 1, 2, 3, - 1, 0, 2, 2, 1, 3, 3, 1, 3, 3, - 3, 3, 1, 2, 1, 1, 1, 1, 1, 0, - 2, 0, 3, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, - 0, 1, 1, 0, 2, 1, 1, 1, 1, 1, + 4, 1, 3, 3, 8, 1, 3, 3, 1, 1, + 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, + 2, 1, 4, 4, 2, 2, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 6, 6, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 0, 3, 0, + 5, 0, 3, 5, 0, 1, 0, 1, 0, 1, + 2, 0, 2, 2, 2, 2, 2, 2, 0, 3, + 0, 1, 0, 3, 3, 0, 2, 2, 0, 2, + 1, 2, 1, 0, 2, 5, 4, 1, 2, 2, + 3, 2, 0, 1, 2, 3, 3, 2, 2, 1, + 1, 1, 3, 2, 0, 1, 3, 1, 2, 3, + 1, 1, 6, 7, 7, 12, 7, 7, 7, 4, + 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 7, 1, 3, 8, 8, 5, 4, 6, + 5, 4, 4, 3, 2, 3, 4, 4, 4, 4, + 4, 4, 4, 4, 3, 3, 3, 3, 4, 3, + 4, 6, 4, 2, 4, 2, 2, 2, 2, 3, + 1, 1, 0, 1, 0, 1, 0, 2, 2, 0, + 2, 2, 0, 1, 1, 2, 1, 1, 2, 1, + 1, 2, 2, 2, 2, 2, 3, 4, 4, 7, + 1, 1, 1, 1, 1, 1, 2, 4, 1, 3, + 0, 2, 0, 2, 1, 2, 2, 0, 1, 1, + 0, 1, 0, 1, 0, 1, 1, 3, 1, 2, + 3, 5, 0, 1, 2, 1, 0, 2, 1, 3, + 1, 1, 1, 3, 3, 3, 7, 1, 3, 1, + 3, 4, 4, 4, 3, 2, 4, 0, 1, 0, + 2, 0, 1, 0, 1, 2, 1, 1, 2, 2, + 1, 2, 3, 2, 3, 2, 2, 2, 1, 1, + 3, 0, 5, 5, 5, 0, 2, 1, 3, 3, + 2, 3, 1, 2, 0, 3, 1, 1, 3, 3, + 4, 4, 5, 3, 4, 5, 6, 2, 1, 2, + 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 0, 2, 1, 1, 1, 3, 1, 3, 1, + 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, + 4, 5, 6, 4, 4, 6, 6, 6, 6, 8, + 8, 6, 8, 8, 9, 7, 5, 4, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 2, 4, 4, + 4, 4, 0, 3, 4, 7, 3, 1, 1, 2, + 3, 3, 1, 2, 2, 1, 2, 1, 2, 2, + 1, 2, 4, 0, 1, 0, 2, 1, 2, 4, + 0, 2, 1, 3, 5, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, + 0, 3, 0, 2, 0, 3, 1, 3, 2, 0, + 1, 1, 0, 2, 4, 4, 0, 2, 4, 2, + 1, 3, 5, 4, 6, 1, 3, 3, 5, 0, + 5, 1, 3, 1, 2, 3, 1, 0, 2, 2, + 1, 3, 3, 1, 3, 3, 3, 3, 1, 2, + 1, 1, 1, 1, 1, 0, 2, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1953,295 +1970,300 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -185, -1, -2, -6, -7, -8, -9, -10, -11, + -1000, -187, -1, -2, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -17, -18, -19, -21, -22, -23, -20, -24, -25, -26, -3, -4, 6, 7, -30, 9, - 10, 30, -16, 113, 114, 116, 115, 141, 117, 134, - 49, 153, 154, 156, 157, 25, 135, 136, 139, 140, - 158, 159, 160, -187, 8, 239, 53, -186, 255, -85, - 15, -29, 5, -27, -190, -27, -27, -27, -27, -27, - -162, 53, -117, 122, 71, 149, 231, 119, 120, 126, - -120, 56, -119, 59, 247, 153, 167, 161, 188, 180, - 178, 181, 218, 66, 156, 227, 137, 176, 172, 170, - 27, 193, 252, 171, 132, 131, 194, 198, 219, 165, - 166, 221, 192, 133, 32, 249, 34, 145, 222, 196, - 191, 187, 190, 164, 186, 38, 200, 199, 201, 217, - 183, 173, 18, 225, 140, 143, 195, 197, 127, 147, - 251, 223, 169, 144, 139, 226, 157, 220, 229, 37, - 205, 163, 130, 154, 151, 184, 146, 174, 175, 189, - 162, 185, 155, 148, 141, 228, 206, 253, 182, 179, - 152, 150, 210, 211, 212, 213, 250, 224, 177, 207, - -105, 122, 124, 120, 120, 121, 122, 231, 119, 120, - -54, -126, -120, 122, 149, 120, 107, 181, 113, 208, - 121, 32, 147, -135, 120, 155, -107, 150, 210, 211, - 212, 213, 56, 220, 219, 214, -126, 155, -131, -131, - -131, -131, -131, 159, -126, 56, -2, -89, 17, 16, - -5, -3, -187, 6, 20, 21, -33, 39, 40, -28, - -39, 98, -40, -126, -59, 73, -64, 29, -120, 23, - -78, -63, -60, -76, -77, 107, 108, 96, 97, 104, - 74, 109, -68, -66, -67, -69, 59, 58, 67, 60, - 61, 62, 63, 68, 57, 69, 70, -74, -187, 43, - 44, 240, 241, 242, 243, 246, 244, 76, 33, 230, - 238, 237, 236, 234, 235, 232, 233, 125, 231, 102, - 239, -105, -42, -43, -44, -45, -56, -77, -187, -54, - 11, -49, -54, -97, -134, 155, -101, 220, 219, -121, - -99, -120, -118, 218, 181, 217, 118, 72, 22, 24, - 203, 75, 107, 16, 76, 106, 240, 113, 47, 232, - 233, 230, 242, 243, 231, 208, 29, 10, 25, 135, - 21, 100, 115, 79, 80, 138, 23, 136, 70, 19, - 50, 11, 13, 14, 125, 124, 91, 121, 45, 8, - 109, 26, 88, 41, 28, 43, 89, 17, 234, 235, - 31, 246, 142, 102, 48, 35, 73, 68, 51, 71, - 15, 46, 90, 116, 239, 44, 119, 6, 245, 30, - 134, 42, 120, 209, 78, 123, 69, 5, 126, 9, - 49, 52, 236, 237, 238, 33, 77, 12, -163, -158, - 56, 121, -54, 239, -120, -113, 125, -113, -113, 120, - -54, -54, -112, 125, 56, -112, -112, -112, -54, 110, - -54, 56, 30, 231, 56, 147, 120, 148, 122, -132, - -187, -121, -132, -132, -132, 151, 152, -132, 221, -108, - 215, 51, -132, -126, 11, 22, 52, -188, 55, -90, - 19, 31, -40, -126, -86, -87, -40, -85, -2, -27, - 35, -31, 21, 65, 11, -123, 72, 71, 88, -122, - 22, -120, 110, -40, -61, 91, 73, 89, 90, 75, - 93, 92, 103, 96, 97, 98, 99, 100, 101, 102, - 94, 95, 106, 81, 82, 83, 84, 85, 86, 87, - -106, -187, -187, -77, -187, 111, 112, -181, 64, -64, - -64, -64, -64, -64, -64, -64, -2, -72, -40, -187, - -187, -187, -187, -187, -187, -187, -187, -187, -81, -40, - -187, -191, -187, -191, -191, -191, -191, -191, -191, -191, - -187, -187, -187, -187, -55, 26, -54, 30, 54, -50, - -52, -51, -53, 41, 45, 47, 42, 43, 44, 48, - -130, 22, -42, -187, -129, 143, -128, 22, -126, -54, - -49, -189, 54, 11, 52, 54, -97, 155, -98, -102, - 221, 223, 81, -125, -120, 29, 30, 55, 54, -137, - -140, -142, -141, -143, -138, -139, 178, 179, 107, 182, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 30, 137, 174, 175, 176, 177, 194, 195, 196, 197, - 198, 199, 200, 201, 161, 162, 163, 164, 165, 166, - 167, 169, 170, 171, 172, 173, 56, -132, 122, -179, - 52, 56, 73, 56, -54, -54, -132, 123, -54, 23, - 51, -54, 56, 56, -127, -126, -118, -132, -132, -132, - -132, -132, -132, -132, -132, -132, -132, 222, -110, 209, - 216, -54, -183, -3, -7, -9, -8, 56, 59, -183, - -184, -126, 9, 91, 54, 18, 110, 54, -88, 24, - 25, -89, -188, -33, -65, -120, 60, 63, -32, 42, - -54, -40, -40, -70, 68, 73, 69, 70, -122, 98, - -127, -121, -118, -120, -64, -71, -74, -77, 64, 91, - 89, 90, 75, -64, -64, -64, -64, -64, -64, -64, - -64, -64, -64, -64, -64, -64, -64, -64, -133, 56, - 59, 56, -38, 21, -37, -39, -63, 59, -63, -120, - -188, 54, -188, -2, -37, -37, -40, -40, -78, -120, - -126, -78, -37, -31, -79, -80, 77, -78, -188, -37, - -38, -37, -37, -93, 29, 143, -54, -96, -100, -78, - -43, -44, -44, -43, -44, 41, 41, 41, 46, 41, - 46, 41, -51, -126, -188, -57, 49, 124, 50, -187, - -128, -93, 52, -42, -54, -101, -98, 54, 222, 224, - 225, 51, -40, -149, 106, -164, -165, -166, -121, 60, - -158, -159, -167, 127, 130, 126, -160, 121, 28, -154, - 68, 73, -150, 206, -144, 53, -144, -144, -144, -144, - -148, 181, -148, -148, -148, 53, 53, -144, -144, -144, - -152, 53, -152, -152, -153, 53, -153, -124, 52, -54, - -177, 250, -178, 56, -132, 23, -132, -114, 118, 115, - 116, -174, 114, 203, 181, 66, 29, 15, 240, 143, - 253, 56, 144, -54, -54, -132, -109, 11, 91, 54, - 37, -40, -40, -127, -87, -90, -104, 19, 11, 33, - 33, -37, 68, 69, 70, 110, -187, -71, -64, -64, - -64, -36, 138, 72, -188, -188, -37, 54, -40, -188, - -188, -188, 54, 52, 22, 54, 11, 110, 54, 11, - -188, -37, -82, -80, 79, -40, -188, -188, -188, -188, - -188, -62, 30, 33, -2, -187, 33, -187, -58, 54, - 12, 81, -47, -46, 51, 52, -48, 51, -46, 41, - 41, 121, 121, 121, -94, -120, -58, -42, -58, -102, - -103, 226, 223, 229, 56, 59, 54, -166, 81, 53, - 28, -160, -160, 56, 56, -145, 29, 68, -151, 207, - 60, -148, -148, -149, 30, -149, -149, -149, -157, 59, - -157, 60, 60, 51, -120, -132, -176, -175, -121, -131, - -180, 149, 128, 129, 132, 131, 56, 121, 28, 127, - 130, 143, 126, -180, 149, -115, -116, 123, 22, 121, - 28, 143, -132, -111, 89, 12, -126, -126, -126, 38, - 110, -54, -41, 11, 98, -121, -38, -36, 72, -64, - -64, -188, -39, -136, 107, 178, 137, 176, 172, 192, - 183, 205, 174, 206, 179, -133, -136, -64, -64, -121, - -64, -64, 247, -85, 80, -40, 78, -95, 51, -96, - -73, -75, -74, -187, -2, -91, -120, -94, -85, -100, - -40, -40, -40, 53, -40, -187, -187, -187, -188, 54, - -85, -58, 223, 227, 228, -165, -166, -169, -168, -120, - 56, 56, -147, 51, 59, 60, 61, 68, 230, 67, - 55, -149, -149, 56, 107, 55, 54, 55, 54, 55, - 54, -54, 54, 81, -131, -120, -131, -120, -54, -131, - -120, 59, -40, -58, -42, -188, -64, -188, -144, -144, - -144, -153, -144, 166, -144, 166, -187, -188, -188, -188, - 54, 19, -188, 54, 19, -187, -35, 245, -40, -182, - 254, 27, -95, 54, -188, -188, -188, 54, 110, -188, - -89, -92, -120, -92, -92, -92, -129, -120, -89, 55, - 54, -144, -155, 203, 9, -148, 59, -148, 60, 60, - -132, -175, -166, 53, 26, -83, 13, -148, 56, 60, - -64, -64, -64, -64, -64, -188, 59, 98, -72, 28, - -75, 33, -2, -187, -120, -120, 54, 55, -188, -188, - -188, -57, -171, -170, 52, 133, 66, -168, -156, 127, - 28, 126, 230, -149, -149, 55, 55, -92, -187, -84, - 14, 16, -188, -188, -188, -188, -188, -34, 91, 250, - 9, -73, -2, 110, -120, -170, 56, -161, 81, 59, - -146, 66, 28, 28, 55, -172, -173, 143, -40, -72, - -188, 248, 48, 251, -96, -188, -120, 60, 59, -179, - -188, 54, -120, 38, 249, 252, -177, -173, 33, 38, - 145, 250, 146, 251, -187, 252, -64, 142, -188, -188, + 10, 30, -16, 114, 115, 117, 116, 142, 118, 135, + 49, 154, 155, 157, 158, 25, 136, 137, 140, 141, + 159, 160, 161, -189, 8, 240, 53, -188, 256, -85, + 15, -29, 5, -27, -192, -27, -27, -27, -27, -27, + -164, 53, -117, 123, 72, 150, 232, 120, 121, 127, + -120, 56, -119, 59, 248, 154, 168, 162, 189, 181, + 179, 182, 219, 66, 157, 228, 138, 177, 173, 171, + 27, 194, 253, 172, 133, 132, 195, 199, 220, 166, + 167, 222, 193, 134, 32, 250, 34, 146, 223, 197, + 192, 188, 191, 165, 187, 38, 201, 200, 202, 218, + 184, 174, 18, 226, 141, 144, 196, 198, 128, 148, + 252, 224, 170, 145, 140, 227, 158, 221, 230, 37, + 206, 164, 131, 155, 152, 185, 147, 175, 176, 190, + 163, 186, 156, 149, 142, 229, 207, 254, 183, 180, + 153, 151, 211, 212, 213, 214, 251, 225, 178, 208, + -105, 123, 125, 121, 121, 122, 123, 232, 120, 121, + -54, -126, -120, 123, 150, 121, 108, 182, 114, 209, + 122, 32, 148, -135, 121, 156, -107, 151, 211, 212, + 213, 214, 56, 221, 220, 215, -126, 156, -131, -131, + -131, -131, -131, 160, -126, 56, -2, -89, 17, 16, + -5, -3, -189, 6, 20, 21, -33, 39, 40, -28, + -39, 99, -40, -126, -59, 74, -64, 29, -120, 23, + -78, -63, -60, -76, -77, 108, 109, 97, 98, 105, + 75, 110, -68, -66, -67, -69, 59, 58, 67, 60, + 61, 62, 63, 69, 57, 68, 70, 71, -74, -189, + 43, 44, 241, 242, 243, 244, 247, 245, 77, 33, + 231, 239, 238, 237, 235, 236, 233, 234, 126, 232, + 103, 240, -105, -42, -43, -44, -45, -56, -77, -189, + -54, 11, -49, -54, -97, -134, 156, -101, 221, 220, + -121, -99, -120, -118, 219, 182, 218, 119, 73, 22, + 24, 204, 76, 108, 16, 77, 107, 241, 114, 47, + 233, 234, 231, 243, 244, 232, 209, 29, 10, 25, + 136, 21, 101, 116, 80, 81, 139, 23, 137, 71, + 19, 50, 11, 13, 14, 126, 125, 92, 122, 45, + 8, 110, 26, 89, 41, 28, 43, 90, 17, 235, + 236, 31, 247, 143, 103, 48, 35, 74, 69, 51, + 72, 15, 46, 91, 117, 240, 44, 120, 6, 246, + 30, 135, 42, 121, 210, 79, 124, 70, 5, 127, + 9, 49, 52, 237, 238, 239, 33, 78, 12, -165, + -160, 56, 122, -54, 240, -120, -113, 126, -113, -113, + 121, -54, -54, -112, 126, 56, -112, -112, -112, -54, + 111, -54, 56, 30, 232, 56, 148, 121, 149, 123, + -132, -189, -121, -132, -132, -132, 152, 153, -132, 222, + -108, 216, 51, -132, -126, 11, 22, -189, 52, -190, + 55, -90, 19, 31, -40, -126, -86, -87, -40, -85, + -2, -27, 35, -31, 21, 65, 11, -123, 73, 72, + 89, -122, 22, -120, 111, -40, -61, 92, 74, 90, + 91, 76, 94, 93, 104, 97, 98, 99, 100, 101, + 102, 103, 95, 96, 107, 82, 83, 84, 85, 86, + 87, 88, -106, -189, -189, -77, -189, 112, 113, -183, + 64, -64, -64, -64, -64, -64, -64, -64, -2, -72, + -40, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -81, -40, -189, -193, -189, -193, -193, -193, -193, -193, + -193, -193, -189, -189, -189, -189, -55, 26, -54, 30, + 54, -50, -52, -51, -53, 41, 45, 47, 42, 43, + 44, 48, -130, 22, -42, -189, -129, 144, -128, 22, + -126, -54, -49, -191, 54, 11, 52, 54, -97, 156, + -98, -102, 222, 224, 82, -125, -120, 29, 30, 55, + 54, -138, -141, -143, -142, -144, -145, -139, -140, 179, + 180, 108, 183, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 30, 138, 175, 176, 177, 178, 195, + 196, 197, 198, 199, 200, 201, 202, 181, 162, 163, + 164, 165, 166, 167, 168, 170, 171, 172, 173, 174, + 56, -132, 123, -181, 52, 56, 74, 56, -54, -54, + -132, 124, -54, 23, 51, -54, 56, 56, -127, -126, + -118, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, 223, -110, 210, 217, -54, -185, -3, -7, -9, + -8, 56, 59, -185, -137, -138, -186, -126, 9, 92, + 54, 18, 111, 54, -88, 24, 25, -89, -190, -33, + -65, -120, 60, 63, -32, 42, -54, -40, -40, -70, + 69, 74, 70, 71, -122, 99, -127, -121, -118, -120, + -64, -71, -74, -77, 64, 92, 90, 91, 76, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -133, 56, 59, 56, -38, 21, + -37, -39, -63, 59, -63, -120, -190, 54, -190, -2, + -37, -37, -40, -40, -78, -120, -126, -78, -37, -31, + -79, -80, 78, -78, -190, -37, -38, -37, -37, -93, + 29, 144, -54, -96, -100, -78, -43, -44, -44, -43, + -44, 41, 41, 41, 46, 41, 46, 41, -51, -126, + -190, -57, 49, 125, 50, -189, -128, -93, 52, -42, + -54, -101, -98, 54, 223, 225, 226, 51, -40, -151, + 107, -166, -167, -168, -121, 60, -160, -161, -169, 128, + 131, 127, -162, 122, 28, -156, 69, 74, -152, 207, + -146, 53, -146, -146, -146, -146, -150, 182, -150, -150, + -150, 53, 53, -146, -146, -146, -154, 53, -154, -154, + -155, 53, -155, -124, 52, -54, -179, 251, -180, 56, + -132, 23, -132, -114, 119, 116, 117, -176, 115, 204, + 182, 66, 29, 15, 241, 144, 254, 56, 145, -54, + -54, -132, -109, 11, 92, 54, -190, 54, 37, -40, + -40, -127, -87, -90, -104, 19, 11, 33, 33, -37, + 69, 70, 71, 111, -189, -71, -64, -64, -64, -36, + 139, 73, -190, -190, -37, 54, -40, -190, -190, -190, + 54, 52, 22, 54, 11, 111, 54, 11, -190, -37, + -82, -80, 80, -40, -190, -190, -190, -190, -190, -62, + 30, 33, -2, -189, 33, -189, -58, 54, 12, 82, + -47, -46, 51, 52, -48, 51, -46, 41, 41, 122, + 122, 122, -94, -120, -58, -42, -58, -102, -103, 227, + 224, 230, 56, 59, 54, -168, 82, 53, 28, -162, + -162, 56, 56, -147, 29, 69, -153, 208, 60, -150, + -150, -151, 30, -151, -151, -151, -159, 59, -159, 60, + 60, 51, -120, -132, -178, -177, -121, -131, -182, 150, + 129, 130, 133, 132, 56, 122, 28, 128, 131, 144, + 127, -182, 150, -115, -116, 124, 22, 122, 28, 144, + -132, -111, 90, 12, -126, -126, -138, 22, -126, 38, + 111, -54, -41, 11, 99, -121, -38, -36, 73, -64, + -64, -190, -39, -136, 108, 179, 138, 177, 173, 193, + 184, 206, 175, 207, 180, -133, -136, -64, -64, -121, + -64, -64, 248, -85, 81, -40, 79, -95, 51, -96, + -73, -75, -74, -189, -2, -91, -120, -94, -85, -100, + -40, -40, -40, 53, -40, -189, -189, -189, -190, 54, + -85, -58, 224, 228, 229, -167, -168, -171, -170, -120, + 56, 56, -149, 51, 59, 60, 61, 69, 231, 67, + 55, -151, -151, 56, 108, 55, 54, 55, 54, 55, + 54, -54, 54, 82, -131, -120, -131, -120, -54, -131, + -120, 59, -40, -185, -58, -42, -190, -64, -190, -146, + -146, -146, -155, -146, 167, -146, 167, -189, -190, -190, + -190, 54, 19, -190, 54, 19, -189, -35, 246, -40, + -184, 255, 27, -95, 54, -190, -190, -190, 54, 111, + -190, -89, -92, -120, -92, -92, -92, -129, -120, -89, + 55, 54, -146, -157, 204, 9, -150, 59, -150, 60, + 60, -132, -177, -168, 53, 26, -83, 13, -150, 56, + 60, -64, -64, -64, -64, -64, -190, 59, 99, -72, + 28, -75, 33, -2, -189, -120, -120, 54, 55, -190, + -190, -190, -57, -173, -172, 52, 134, 66, -170, -158, + 128, 28, 127, 231, -151, -151, 55, 55, -92, -189, + -84, 14, 16, -190, -190, -190, -190, -190, -34, 92, + 251, 9, -73, -2, 111, -120, -172, 56, -163, 82, + 59, -148, 66, 28, 28, 55, -174, -175, 144, -40, + -72, -190, 249, 48, 252, -96, -190, -120, 60, 59, + -181, -190, 54, -120, 38, 250, 253, -179, -175, 33, + 38, 146, 251, 147, 252, -189, 253, -64, 143, -190, + -190, } var yyDef = [...]int{ 0, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 528, 0, 295, 295, 295, 295, - 295, 295, 0, 600, 583, 0, 0, 0, 0, -2, - 272, 273, 0, 275, 276, 805, 805, 805, 805, 805, - 0, 0, 0, 0, 37, 38, 803, 1, 3, 536, - 0, 0, 299, 302, 297, 0, 583, 0, 0, 0, - 64, 0, 0, 792, 0, 793, 581, 581, 581, 601, - 602, 605, 606, 607, 705, 706, 707, 708, 709, 710, - 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, - 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, - 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, - 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, - 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, - 791, 794, 795, 796, 797, 798, 799, 800, 801, 802, - 0, 0, 584, 0, 579, 0, 579, 579, 579, 0, - 230, 364, 610, 792, 793, 0, 0, 0, 0, 806, - 806, 806, 806, 0, 806, 0, 260, 249, 251, 252, - 253, 254, 806, 269, 270, 259, 271, 274, 277, 278, - 279, 280, 281, 0, 0, 291, 30, 540, 0, 0, - 528, 32, 0, 295, 300, 301, 305, 303, 304, 296, - 0, 313, 317, 0, 372, 0, 377, 379, -2, 0, - 414, 415, 416, 417, 418, 0, 0, 0, 0, 0, - 0, 0, 441, 442, 443, 444, -2, 511, 512, 513, - 514, 515, 516, 517, 518, 381, 382, 560, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 498, 0, 471, - 471, 471, 471, 471, 471, 471, 471, 0, 0, 0, - 0, 0, 0, 323, 325, 326, 327, 346, 0, 348, - 0, 0, 45, 49, 0, 783, 567, -2, -2, 0, - 0, 608, 609, -2, 712, -2, 613, 614, 615, 616, - 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, - 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, - 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, - 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, - 697, 698, 699, 700, 701, 702, 703, 704, 0, 81, - 0, 0, 806, 0, 71, 0, 0, 0, 0, 0, - 806, 0, 0, 0, 0, 0, 0, 0, 229, 0, - 231, 806, 806, 806, 806, 806, 806, 806, 806, 240, - 807, 808, 241, 242, 243, 806, 806, 245, 0, 0, - 261, 0, 255, 282, 0, 0, 0, 31, 804, 25, - 0, 0, 537, 0, 529, 530, 533, 536, 30, 302, - 0, 307, 306, 298, 0, 314, 0, 0, 0, 318, - 0, 320, 0, 375, 0, 0, 0, 0, 0, 0, + 21, 22, 23, 24, 534, 0, 300, 300, 300, 300, + 300, 300, 0, 606, 589, 0, 0, 0, 0, -2, + 276, 277, 0, 279, 280, 811, 811, 811, 811, 811, + 0, 0, 0, 0, 37, 38, 809, 1, 3, 542, + 0, 0, 304, 307, 302, 0, 589, 0, 0, 0, + 64, 0, 0, 798, 0, 799, 587, 587, 587, 607, + 608, 611, 612, 613, 711, 712, 713, 714, 715, 716, + 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, + 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, + 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, + 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, + 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, + 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, + 797, 800, 801, 802, 803, 804, 805, 806, 807, 808, + 0, 0, 590, 0, 585, 0, 585, 585, 585, 0, + 234, 369, 616, 798, 799, 0, 0, 0, 0, 812, + 812, 812, 812, 0, 812, 0, 264, 253, 255, 256, + 257, 258, 812, 273, 274, 263, 275, 278, 281, 282, + 283, 284, 285, 0, 0, 296, 30, 546, 0, 0, + 534, 32, 0, 300, 305, 306, 310, 308, 309, 301, + 0, 318, 322, 0, 377, 0, 382, 384, -2, 0, + 419, 420, 421, 422, 423, 0, 0, 0, 0, 0, + 0, 0, 446, 447, 448, 449, -2, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 386, 387, 566, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 503, 0, + 476, 476, 476, 476, 476, 476, 476, 476, 0, 0, + 0, 0, 0, 0, 328, 330, 331, 332, 351, 0, + 353, 0, 0, 45, 49, 0, 789, 573, -2, -2, + 0, 0, 614, 615, -2, 718, -2, 619, 620, 621, + 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, + 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, + 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, + 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, + 702, 703, 704, 705, 706, 707, 708, 709, 710, 0, + 81, 0, 0, 812, 0, 71, 0, 0, 0, 0, + 0, 812, 0, 0, 0, 0, 0, 0, 0, 233, + 0, 235, 812, 812, 812, 812, 812, 812, 812, 812, + 244, 813, 814, 245, 246, 247, 812, 812, 249, 0, + 0, 265, 0, 259, 286, 0, 0, 0, 0, 31, + 810, 25, 0, 0, 543, 0, 535, 536, 539, 542, + 30, 307, 0, 312, 311, 303, 0, 319, 0, 0, + 0, 323, 0, 325, 0, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399, 400, 401, 402, 403, 404, 405, - 378, 0, 309, 392, 0, 0, 0, 519, 520, 434, - 435, 436, 437, 438, 439, 0, 30, 0, 412, 0, - 0, 0, 0, 0, 0, 0, 0, 305, 0, 499, - 0, 463, 0, 464, 465, 466, 467, 468, 469, 470, - 0, 309, 0, 0, 47, 0, 363, 0, 0, 0, - 0, 0, 0, 352, 0, 0, 355, 0, 0, 0, - 0, 347, 0, 0, 366, 756, 349, 0, 351, -2, - 0, 0, 0, 43, 44, 0, 50, 783, 52, 53, - 0, 0, 0, 161, 575, 576, 573, 190, 0, 144, - 140, 86, 87, 88, 133, 90, 133, 133, 133, 133, - 158, 158, 158, 158, 116, 117, 118, 119, 120, 0, - 0, 103, 133, 133, 133, 107, 123, 124, 125, 126, - 127, 128, 129, 130, 91, 92, 93, 94, 95, 96, - 97, 135, 135, 135, 137, 137, 603, 66, 0, 74, - 0, 806, 0, 806, 79, 0, 205, 0, 224, 580, - 0, 806, 227, 228, 365, 611, 612, 232, 233, 234, - 235, 236, 237, 238, 239, 244, 248, 246, 262, 256, - 257, 250, 283, 285, 286, 287, 288, 289, 290, 284, - 292, 293, 541, 0, 0, 0, 0, 0, 532, 534, - 535, 540, 33, 305, 0, 521, 0, 0, 0, 308, - 28, 373, 374, 376, 393, 0, 395, 397, 319, 315, - 0, 508, -2, -2, 383, 384, 408, 409, 410, 0, - 0, 0, 0, 406, 388, 0, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 433, 482, - 483, 0, 0, 0, 310, 311, 431, 510, 432, 440, - 411, 0, 559, 30, 0, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 505, 502, 0, 0, 472, 0, - 0, 0, 0, 0, 0, 0, 362, 370, 564, 0, - 324, 342, 344, 0, 339, 353, 354, 356, 0, 358, - 0, 360, 361, 328, 329, 330, 0, 0, 0, 0, - 350, 370, 0, 370, 46, 568, 51, 0, 0, 56, - 57, 569, 570, 571, 0, 80, 191, 193, 196, 197, - 82, 83, 0, 0, 0, 0, 0, 185, 186, 147, - 145, 0, 142, 141, 89, 0, 158, 158, 110, 111, - 161, 0, 161, 161, 161, 0, 0, 104, 105, 106, - 98, 0, 99, 100, 101, 0, 102, 0, 0, 806, - 68, 0, 72, 73, 69, 582, 70, 805, 0, 0, - 595, 206, 585, 586, 587, 588, 589, 590, 591, 592, - 593, 594, 0, 223, 806, 226, 265, 0, 0, 0, - 0, 538, 539, 0, 531, 26, 0, 577, 578, 522, - 523, 321, 394, 396, 398, 0, 309, 385, 406, 389, - 0, 386, 0, 0, 380, 445, 0, 0, 413, -2, - 448, 449, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 528, 0, 503, 0, 0, 462, 473, 474, 475, - 476, 553, 0, 0, -2, 0, 36, 0, 528, 0, - 0, 0, 336, 343, 0, 0, 337, 0, 338, 357, - 359, 0, 0, 0, 0, 334, 528, 370, 42, 54, - 55, 0, 0, 61, 162, 163, 0, 194, 0, 0, - 180, 0, 0, 183, 184, 154, 0, 146, 85, 143, - 0, 161, 161, 112, 0, 113, 114, 115, 0, 131, - 0, 0, 0, 0, 604, 67, 75, 76, 0, 198, - 805, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 805, 0, 0, 805, 596, 597, 598, - 599, 0, 225, 247, 0, 0, 263, 264, 294, 542, - 0, 27, 370, 0, 316, 509, 0, 387, 0, 407, - 390, 446, 312, 0, 133, 133, 487, 133, 137, 490, - 133, 492, 133, 495, 0, 0, 0, 0, 0, 508, - 0, 0, 0, 500, 461, 506, 0, 561, 0, 553, - 543, 555, 557, 0, 30, 0, 549, 0, 536, 565, - 371, 566, 340, 0, 345, 0, 0, 0, 348, 0, - 536, 41, 58, 59, 60, 192, 195, 0, 187, 133, - 181, 182, 156, 0, 148, 149, 150, 151, 152, 153, - 134, 108, 109, 159, 160, 158, 0, 158, 0, 138, - 0, 806, 0, 0, 199, 0, 200, 202, 203, 204, - 0, 266, 267, 524, 322, 447, 391, 450, 484, 158, - 488, 489, 491, 493, 494, 496, 0, 452, 451, 453, - 0, 0, 456, 0, 0, 0, 0, 0, 504, 34, - 0, 0, 35, 0, 558, -2, 0, 0, 0, 48, - 39, 0, 332, 0, 0, 0, 366, 335, 40, 172, - 0, 189, 164, 157, 0, 161, 132, 161, 0, 0, - 65, 77, 78, 0, 0, 526, 0, 485, 486, 0, - 0, 0, 0, 0, 477, 460, 501, 562, 563, 0, - 556, 0, -2, 0, 551, 550, 0, 341, 367, 368, - 369, 331, 171, 173, 0, 178, 0, 188, 169, 0, - 166, 168, 155, 121, 122, 136, 139, 0, 0, 29, - 0, 0, 497, 454, 455, 457, 458, 0, 0, 0, - 0, 546, 30, 0, 333, 174, 175, 0, 179, 177, - 84, 0, 165, 167, 71, 0, 219, 0, 527, 525, - 459, 0, 0, 0, 554, -2, 552, 176, 170, 74, - 218, 0, 0, 478, 0, 481, 201, 220, 0, 479, - 0, 0, 0, 0, 0, 480, 0, 0, 221, 222, + 0, 0, 0, 0, 0, 404, 405, 406, 407, 408, + 409, 410, 383, 0, 314, 397, 0, 0, 0, 525, + 526, 439, 440, 441, 442, 443, 444, 0, 30, 0, + 417, 0, 0, 0, 0, 0, 0, 0, 0, 310, + 0, 504, 0, 468, 0, 469, 470, 471, 472, 473, + 474, 475, 0, 314, 0, 0, 47, 0, 368, 0, + 0, 0, 0, 0, 0, 357, 0, 0, 360, 0, + 0, 0, 0, 352, 0, 0, 371, 762, 354, 0, + 356, -2, 0, 0, 0, 43, 44, 0, 50, 789, + 52, 53, 0, 0, 0, 165, 581, 582, 579, 194, + 0, 148, 144, 88, 89, 90, 91, 137, 94, 137, + 137, 137, 137, 162, 162, 162, 162, 120, 121, 122, + 123, 124, 0, 0, 107, 137, 137, 137, 111, 127, + 128, 129, 130, 131, 132, 133, 134, 92, 95, 96, + 97, 98, 99, 100, 101, 139, 139, 139, 141, 141, + 609, 66, 0, 74, 0, 812, 0, 812, 79, 0, + 209, 0, 228, 586, 0, 812, 231, 232, 370, 617, + 618, 236, 237, 238, 239, 240, 241, 242, 243, 248, + 252, 250, 266, 260, 261, 254, 287, 290, 291, 292, + 293, 294, 295, 288, 0, 85, 297, 298, 547, 0, + 0, 0, 0, 0, 538, 540, 541, 546, 33, 310, + 0, 527, 0, 0, 0, 313, 28, 378, 379, 381, + 398, 0, 400, 402, 324, 320, 0, 513, -2, -2, + 388, 389, 413, 414, 415, 0, 0, 0, 0, 411, + 393, 0, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 438, 487, 488, 0, 0, 0, + 315, 316, 436, 515, 437, 445, 416, 0, 565, 30, + 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, + 510, 507, 0, 0, 477, 0, 0, 0, 0, 0, + 0, 0, 367, 375, 570, 0, 329, 347, 349, 0, + 344, 358, 359, 361, 0, 363, 0, 365, 366, 333, + 334, 335, 0, 0, 0, 0, 355, 375, 0, 375, + 46, 574, 51, 0, 0, 56, 57, 575, 576, 577, + 0, 80, 195, 197, 200, 201, 82, 83, 0, 0, + 0, 0, 0, 189, 190, 151, 149, 0, 146, 145, + 93, 0, 162, 162, 114, 115, 165, 0, 165, 165, + 165, 0, 0, 108, 109, 110, 102, 0, 103, 104, + 105, 0, 106, 0, 0, 812, 68, 0, 72, 73, + 69, 588, 70, 811, 0, 0, 601, 210, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 0, 227, + 812, 230, 269, 0, 0, 0, 0, 0, 0, 544, + 545, 0, 537, 26, 0, 583, 584, 528, 529, 326, + 399, 401, 403, 0, 314, 390, 411, 394, 0, 391, + 0, 0, 385, 450, 0, 0, 418, -2, 453, 454, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, + 0, 508, 0, 0, 467, 478, 479, 480, 481, 559, + 0, 0, -2, 0, 36, 0, 534, 0, 0, 0, + 341, 348, 0, 0, 342, 0, 343, 362, 364, 0, + 0, 0, 0, 339, 534, 375, 42, 54, 55, 0, + 0, 61, 166, 167, 0, 198, 0, 0, 184, 0, + 0, 187, 188, 158, 0, 150, 87, 147, 0, 165, + 165, 116, 0, 117, 118, 119, 0, 135, 0, 0, + 0, 0, 610, 67, 75, 76, 0, 202, 811, 0, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 811, 0, 0, 811, 602, 603, 604, 605, 0, + 229, 251, 0, 0, 267, 268, 86, 0, 299, 548, + 0, 27, 375, 0, 321, 514, 0, 392, 0, 412, + 395, 451, 317, 0, 137, 137, 492, 137, 141, 495, + 137, 497, 137, 500, 0, 0, 0, 0, 0, 513, + 0, 0, 0, 505, 466, 511, 0, 567, 0, 559, + 549, 561, 563, 0, 30, 0, 555, 0, 542, 571, + 376, 572, 345, 0, 350, 0, 0, 0, 353, 0, + 542, 41, 58, 59, 60, 196, 199, 0, 191, 137, + 185, 186, 160, 0, 152, 153, 154, 155, 156, 157, + 138, 112, 113, 163, 164, 162, 0, 162, 0, 142, + 0, 812, 0, 0, 203, 0, 204, 206, 207, 208, + 0, 270, 271, 289, 530, 327, 452, 396, 455, 489, + 162, 493, 494, 496, 498, 499, 501, 0, 457, 456, + 458, 0, 0, 461, 0, 0, 0, 0, 0, 509, + 34, 0, 0, 35, 0, 564, -2, 0, 0, 0, + 48, 39, 0, 337, 0, 0, 0, 371, 340, 40, + 176, 0, 193, 168, 161, 0, 165, 136, 165, 0, + 0, 65, 77, 78, 0, 0, 532, 0, 490, 491, + 0, 0, 0, 0, 0, 482, 465, 506, 568, 569, + 0, 562, 0, -2, 0, 557, 556, 0, 346, 372, + 373, 374, 336, 175, 177, 0, 182, 0, 192, 173, + 0, 170, 172, 159, 125, 126, 140, 143, 0, 0, + 29, 0, 0, 502, 459, 460, 462, 463, 0, 0, + 0, 0, 552, 30, 0, 338, 178, 179, 0, 183, + 181, 84, 0, 169, 171, 71, 0, 223, 0, 533, + 531, 464, 0, 0, 0, 560, -2, 558, 180, 174, + 74, 222, 0, 0, 483, 0, 486, 205, 224, 0, + 484, 0, 0, 0, 0, 0, 485, 0, 0, 225, + 226, } var yyTok1 = [...]int{ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 74, 3, 3, 3, 101, 93, 3, - 53, 55, 98, 96, 54, 97, 110, 99, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 255, - 82, 81, 83, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 75, 3, 3, 3, 102, 94, 3, + 53, 55, 99, 97, 54, 98, 111, 100, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 256, + 83, 82, 84, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 103, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 104, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 92, 3, 104, + 3, 3, 3, 3, 93, 3, 105, } var yyTok2 = [...]int{ @@ -2251,10 +2273,10 @@ var yyTok2 = [...]int{ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, - 76, 77, 78, 79, 80, 84, 85, 86, 87, 88, - 89, 90, 91, 94, 95, 100, 102, 105, 106, 107, - 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 76, 77, 78, 79, 80, 81, 85, 86, 87, 88, + 89, 90, 91, 92, 95, 96, 101, 103, 106, 107, + 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, @@ -2268,7 +2290,7 @@ var yyTok2 = [...]int{ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, + 249, 250, 251, 252, 253, 254, 255, } var yyTok3 = [...]int{ 0, @@ -2613,29 +2635,29 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:317 +//line sql.y:319 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:322 +//line sql.y:324 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:323 +//line sql.y:325 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:327 +//line sql.y:329 { yyVAL.statement = yyDollar[1].selStmt } case 25: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:353 +//line sql.y:355 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -2645,55 +2667,55 @@ yydefault: } case 26: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:361 +//line sql.y:363 { yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].str} } case 27: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:365 +//line sql.y:367 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, SelectExprs: SelectExprs{Nextval{Expr: yyDollar[5].expr}}, From: TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}} } case 28: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:371 +//line sql.y:373 { yyVAL.statement = &Stream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName} } case 29: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:378 +//line sql.y:380 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, Distinct: yyDollar[4].str, Hints: yyDollar[5].str, SelectExprs: yyDollar[6].selectExprs, From: yyDollar[7].tableExprs, Where: NewWhere(WhereStr, yyDollar[8].expr), GroupBy: GroupBy(yyDollar[9].exprs), Having: NewWhere(HavingStr, yyDollar[10].expr)} } case 30: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:384 +//line sql.y:386 { yyVAL.selStmt = yyDollar[1].selStmt } case 31: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:388 +//line sql.y:390 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 32: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:394 +//line sql.y:396 { yyVAL.selStmt = yyDollar[1].selStmt } case 33: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:398 +//line sql.y:400 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 34: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:405 +//line sql.y:407 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].ins @@ -2708,7 +2730,7 @@ yydefault: } case 35: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:418 +//line sql.y:420 { cols := make(Columns, 0, len(yyDollar[7].updateExprs)) vals := make(ValTuple, 0, len(yyDollar[8].updateExprs)) @@ -2720,199 +2742,199 @@ yydefault: } case 36: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:428 +//line sql.y:430 { yyVAL.statement = &Insert{Action: yyDollar[1].str, Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, Table: yyDollar[4].tableName, Default: true} } case 37: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:434 +//line sql.y:436 { yyVAL.str = InsertStr } case 38: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:438 +//line sql.y:440 { yyVAL.str = ReplaceStr } case 39: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:444 +//line sql.y:446 { yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), TableExprs: yyDollar[3].tableExprs, Exprs: yyDollar[5].updateExprs, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } case 40: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:450 +//line sql.y:452 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[4].tableName}}, Partitions: yyDollar[5].partitions, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } case 41: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:454 +//line sql.y:456 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereStr, yyDollar[7].expr)} } case 42: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:458 +//line sql.y:460 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} } case 43: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:463 +//line sql.y:465 { } case 44: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:464 +//line sql.y:466 { } case 45: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:468 +//line sql.y:470 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 46: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:472 +//line sql.y:474 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 47: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:477 +//line sql.y:479 { yyVAL.partitions = nil } case 48: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:481 +//line sql.y:483 { yyVAL.partitions = yyDollar[3].partitions } case 49: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:487 +//line sql.y:489 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } case 50: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:491 +//line sql.y:493 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[4].setExprs} } case 51: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:495 +//line sql.y:497 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[5].setExprs} } case 52: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:499 +//line sql.y:501 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[4].setExprs} } case 53: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:505 +//line sql.y:507 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } case 54: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:509 +//line sql.y:511 { yyVAL.setExprs = append(yyVAL.setExprs, yyDollar[3].setExpr) } case 55: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:515 +//line sql.y:517 { yyVAL.setExpr = yyDollar[3].setExpr } case 56: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:519 +//line sql.y:521 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_read_only"), Expr: NewIntVal([]byte("0"))} } case 57: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:523 +//line sql.y:525 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_read_only"), Expr: NewIntVal([]byte("1"))} } case 58: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:529 +//line sql.y:531 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("repeatable read"))} } case 59: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:533 +//line sql.y:535 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("read committed"))} } case 60: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:537 +//line sql.y:539 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("read uncommitted"))} } case 61: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:541 +//line sql.y:543 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("serializable"))} } case 62: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:547 +//line sql.y:549 { yyVAL.str = SessionStr } case 63: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:551 +//line sql.y:553 { yyVAL.str = GlobalStr } case 64: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:557 +//line sql.y:559 { yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec yyVAL.statement = yyDollar[1].ddl } case 65: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:562 +//line sql.y:564 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName, NewName: yyDollar[7].tableName} } case 66: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:567 +//line sql.y:569 { yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[3].tableName.ToViewName()} } case 67: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:571 +//line sql.y:573 { yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[5].tableName.ToViewName()} } case 68: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:575 +//line sql.y:577 { yyVAL.statement = &DDL{Action: CreateVindexStr, VindexSpec: &VindexSpec{ Name: yyDollar[3].colIdent, @@ -2922,102 +2944,102 @@ yydefault: } case 69: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:583 +//line sql.y:585 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].bytes)} } case 70: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:587 +//line sql.y:589 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].bytes)} } case 71: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:592 +//line sql.y:594 { yyVAL.colIdent = NewColIdent("") } case 72: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:596 +//line sql.y:598 { yyVAL.colIdent = yyDollar[2].colIdent } case 73: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:602 +//line sql.y:604 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 74: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:607 +//line sql.y:609 { var v []VindexParam yyVAL.vindexParams = v } case 75: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:612 +//line sql.y:614 { yyVAL.vindexParams = yyDollar[2].vindexParams } case 76: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:618 +//line sql.y:620 { yyVAL.vindexParams = make([]VindexParam, 0, 4) yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam) } case 77: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:623 +//line sql.y:625 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } case 78: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:629 +//line sql.y:631 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } case 79: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:635 +//line sql.y:637 { yyVAL.ddl = &DDL{Action: CreateStr, NewName: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } case 80: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:642 +//line sql.y:644 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } case 81: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:649 +//line sql.y:651 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } case 82: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:654 +//line sql.y:656 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } case 83: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:658 +//line sql.y:660 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } case 84: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:664 +//line sql.y:666 { yyDollar[2].columnType.NotNull = yyDollar[3].boolVal yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -3028,679 +3050,697 @@ yydefault: yyVAL.columnDefinition = &ColumnDefinition{Name: NewColIdent(string(yyDollar[1].bytes)), Type: yyDollar[2].columnType} } case 85: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:678 + { + yyVAL.columnTypes = ColumnTypes{yyDollar[1].columnType} + } + case 86: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:682 + { + yyVAL.columnTypes = append(yyDollar[1].columnTypes, yyDollar[3].columnType) + } + case 87: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:675 +//line sql.y:688 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolVal yyVAL.columnType.Zerofill = yyDollar[3].boolVal } - case 89: + case 92: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:700 + { + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + } + case 93: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:686 +//line sql.y:707 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].optVal } - case 90: + case 94: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:691 +//line sql.y:712 { yyVAL.columnType = yyDollar[1].columnType } - case 91: + case 95: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:697 +//line sql.y:718 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 92: + case 96: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:701 +//line sql.y:722 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 93: + case 97: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:705 +//line sql.y:726 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 94: + case 98: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:709 +//line sql.y:730 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 95: + case 99: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:713 +//line sql.y:734 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 96: + case 100: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:717 +//line sql.y:738 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 97: + case 101: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:721 +//line sql.y:742 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 98: + case 102: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:727 +//line sql.y:748 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 99: + case 103: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:733 +//line sql.y:754 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 100: + case 104: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:739 +//line sql.y:760 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 101: + case 105: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:745 +//line sql.y:766 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 102: + case 106: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:751 +//line sql.y:772 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 103: + case 107: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:759 +//line sql.y:780 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 104: + case 108: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:763 +//line sql.y:784 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 105: + case 109: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:767 +//line sql.y:788 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 106: + case 110: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:771 +//line sql.y:792 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 107: + case 111: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:775 +//line sql.y:796 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 108: + case 112: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:781 +//line sql.y:802 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 109: + case 113: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:785 +//line sql.y:806 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 110: + case 114: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:789 +//line sql.y:810 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 111: + case 115: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:793 +//line sql.y:814 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 112: + case 116: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:797 +//line sql.y:818 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 113: + case 117: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:801 +//line sql.y:822 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 114: + case 118: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:805 +//line sql.y:826 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 115: + case 119: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:809 +//line sql.y:830 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 116: + case 120: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:813 +//line sql.y:834 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 117: + case 121: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:817 +//line sql.y:838 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 118: + case 122: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:821 +//line sql.y:842 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 119: + case 123: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:825 +//line sql.y:846 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 120: + case 124: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:829 +//line sql.y:850 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 121: + case 125: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:833 +//line sql.y:854 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } - case 122: + case 126: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:838 +//line sql.y:859 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } - case 123: + case 127: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:844 +//line sql.y:865 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 124: + case 128: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:848 +//line sql.y:869 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 125: + case 129: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:852 +//line sql.y:873 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 126: + case 130: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:856 +//line sql.y:877 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 127: + case 131: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:860 +//line sql.y:881 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 128: + case 132: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:864 +//line sql.y:885 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 129: + case 133: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:868 +//line sql.y:889 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 130: + case 134: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:872 +//line sql.y:893 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 131: + case 135: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:878 +//line sql.y:899 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } - case 132: + case 136: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:883 +//line sql.y:904 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } - case 133: + case 137: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:888 +//line sql.y:909 { yyVAL.optVal = nil } - case 134: + case 138: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:892 +//line sql.y:913 { yyVAL.optVal = NewIntVal(yyDollar[2].bytes) } - case 135: + case 139: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:897 +//line sql.y:918 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 136: + case 140: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:901 +//line sql.y:922 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 137: + case 141: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:909 +//line sql.y:930 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 138: + case 142: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:913 +//line sql.y:934 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), } } - case 139: + case 143: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:919 +//line sql.y:940 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 140: + case 144: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:927 +//line sql.y:948 { yyVAL.boolVal = BoolVal(false) } - case 141: + case 145: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:931 +//line sql.y:952 { yyVAL.boolVal = BoolVal(true) } - case 142: + case 146: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:936 +//line sql.y:957 { yyVAL.boolVal = BoolVal(false) } - case 143: + case 147: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:940 +//line sql.y:961 { yyVAL.boolVal = BoolVal(true) } - case 144: + case 148: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:946 +//line sql.y:967 { yyVAL.boolVal = BoolVal(false) } - case 145: + case 149: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:950 +//line sql.y:971 { yyVAL.boolVal = BoolVal(false) } - case 146: + case 150: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:954 +//line sql.y:975 { yyVAL.boolVal = BoolVal(true) } - case 147: + case 151: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:959 +//line sql.y:980 { yyVAL.optVal = nil } - case 148: + case 152: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:963 +//line sql.y:984 { yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } - case 149: + case 153: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:967 +//line sql.y:988 { yyVAL.optVal = NewIntVal(yyDollar[2].bytes) } - case 150: + case 154: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:971 +//line sql.y:992 { yyVAL.optVal = NewFloatVal(yyDollar[2].bytes) } - case 151: + case 155: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:975 +//line sql.y:996 { yyVAL.optVal = NewValArg(yyDollar[2].bytes) } - case 152: + case 156: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:979 +//line sql.y:1000 { yyVAL.optVal = NewValArg(yyDollar[2].bytes) } - case 153: + case 157: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:983 +//line sql.y:1004 { yyVAL.optVal = NewBitVal(yyDollar[2].bytes) } - case 154: + case 158: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:988 +//line sql.y:1009 { yyVAL.optVal = nil } - case 155: + case 159: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:992 +//line sql.y:1013 { yyVAL.optVal = NewValArg(yyDollar[3].bytes) } - case 156: + case 160: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:997 +//line sql.y:1018 { yyVAL.boolVal = BoolVal(false) } - case 157: + case 161: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1001 +//line sql.y:1022 { yyVAL.boolVal = BoolVal(true) } - case 158: + case 162: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1006 +//line sql.y:1027 { yyVAL.str = "" } - case 159: + case 163: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1010 +//line sql.y:1031 { yyVAL.str = string(yyDollar[3].bytes) } - case 160: + case 164: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1014 +//line sql.y:1035 { yyVAL.str = string(yyDollar[3].bytes) } - case 161: + case 165: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1019 +//line sql.y:1040 { yyVAL.str = "" } - case 162: + case 166: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1023 +//line sql.y:1044 { yyVAL.str = string(yyDollar[2].bytes) } - case 163: + case 167: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1027 +//line sql.y:1048 { yyVAL.str = string(yyDollar[2].bytes) } - case 164: + case 168: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1032 +//line sql.y:1053 { yyVAL.colKeyOpt = colKeyNone } - case 165: + case 169: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1036 +//line sql.y:1057 { yyVAL.colKeyOpt = colKeyPrimary } - case 166: + case 170: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1040 +//line sql.y:1061 { yyVAL.colKeyOpt = colKey } - case 167: + case 171: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1044 +//line sql.y:1065 { yyVAL.colKeyOpt = colKeyUniqueKey } - case 168: + case 172: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1048 +//line sql.y:1069 { yyVAL.colKeyOpt = colKeyUnique } - case 169: + case 173: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1053 +//line sql.y:1074 { yyVAL.optVal = nil } - case 170: + case 174: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1057 +//line sql.y:1078 { yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } - case 171: + case 175: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1063 +//line sql.y:1084 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } - case 172: + case 176: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1067 +//line sql.y:1088 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} } - case 173: + case 177: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1073 +//line sql.y:1094 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 174: + case 178: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1077 +//line sql.y:1098 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } - case 175: + case 179: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1083 +//line sql.y:1104 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].bytes)} } - case 176: + case 180: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1087 +//line sql.y:1108 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntVal(yyDollar[3].bytes)} } - case 177: + case 181: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1092 +//line sql.y:1113 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrVal(yyDollar[2].bytes)} } - case 178: + case 182: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1098 +//line sql.y:1119 { yyVAL.str = "" } - case 179: + case 183: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1102 +//line sql.y:1123 { yyVAL.str = string(yyDollar[1].bytes) } - case 180: + case 184: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1108 +//line sql.y:1129 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } - case 181: + case 185: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1112 +//line sql.y:1133 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Spatial: true, Unique: false} } - case 182: + case 186: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1116 +//line sql.y:1137 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Unique: true} } - case 183: + case 187: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1120 +//line sql.y:1141 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: true} } - case 184: + case 188: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1124 +//line sql.y:1145 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: false} } - case 185: + case 189: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1130 +//line sql.y:1151 { yyVAL.str = string(yyDollar[1].bytes) } - case 186: + case 190: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1134 +//line sql.y:1155 { yyVAL.str = string(yyDollar[1].bytes) } - case 187: + case 191: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1140 +//line sql.y:1161 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } - case 188: + case 192: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1144 +//line sql.y:1165 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } - case 189: + case 193: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1150 +//line sql.y:1171 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].optVal} } - case 190: + case 194: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1155 +//line sql.y:1176 { yyVAL.str = "" } - case 191: + case 195: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1159 +//line sql.y:1180 { yyVAL.str = " " + string(yyDollar[1].str) } - case 192: + case 196: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1163 +//line sql.y:1184 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } - case 193: + case 197: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1171 +//line sql.y:1192 { yyVAL.str = yyDollar[1].str } - case 194: + case 198: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1175 +//line sql.y:1196 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } - case 195: + case 199: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1179 +//line sql.y:1200 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } - case 196: + case 200: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1185 +//line sql.y:1206 { if yyDollar[1].colIdent.NeedQuotes() { yyVAL.str = "'" + yyDollar[1].colIdent.String() + "'" @@ -3709,33 +3749,33 @@ yydefault: } } - case 197: + case 201: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1194 +//line sql.y:1215 { yyVAL.str = string(yyDollar[1].bytes) } - case 198: + case 202: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1200 +//line sql.y:1221 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 199: + case 203: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1204 +//line sql.y:1225 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 200: + case 204: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1208 +//line sql.y:1229 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 201: + case 205: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1212 +//line sql.y:1233 { yyVAL.statement = &DDL{ Action: AddColVindexStr, @@ -3748,9 +3788,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 202: + case 206: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1225 +//line sql.y:1246 { yyVAL.statement = &DDL{ Action: DropColVindexStr, @@ -3760,71 +3800,71 @@ yydefault: }, } } - case 203: + case 207: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1235 +//line sql.y:1256 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableName, NewName: yyDollar[7].tableName} } - case 204: + case 208: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1240 +//line sql.y:1261 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 205: + case 209: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1245 +//line sql.y:1266 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName(), NewName: yyDollar[3].tableName.ToViewName()} } - case 206: + case 210: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1249 +//line sql.y:1270 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } - case 218: + case 222: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1268 +//line sql.y:1289 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeStr, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } - case 219: + case 223: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1274 +//line sql.y:1295 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 220: + case 224: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1278 +//line sql.y:1299 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 221: + case 225: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1284 +//line sql.y:1305 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 222: + case 226: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1288 +//line sql.y:1309 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 223: + case 227: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1294 +//line sql.y:1315 { yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[3].tableName, NewName: yyDollar[5].tableName} } - case 224: + case 228: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1300 +//line sql.y:1321 { var exists bool if yyDollar[3].byt != 0 { @@ -3832,16 +3872,16 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName, IfExists: exists} } - case 225: + case 229: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1308 +//line sql.y:1329 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName, NewName: yyDollar[5].tableName} } - case 226: + case 230: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1313 +//line sql.y:1334 { var exists bool if yyDollar[3].byt != 0 { @@ -3849,129 +3889,129 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName.ToViewName(), IfExists: exists} } - case 227: + case 231: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1321 +//line sql.y:1342 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 228: + case 232: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1325 +//line sql.y:1346 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 229: + case 233: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1331 +//line sql.y:1352 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[3].tableName} } - case 230: + case 234: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1335 +//line sql.y:1356 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[2].tableName} } - case 231: + case 235: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1340 +//line sql.y:1361 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName} } - case 232: + case 236: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1346 +//line sql.y:1367 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 233: + case 237: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1350 +//line sql.y:1371 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 234: + case 238: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1354 +//line sql.y:1375 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 235: + case 239: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1359 +//line sql.y:1380 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 236: + case 240: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1363 +//line sql.y:1384 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 237: + case 241: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1367 +//line sql.y:1388 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 238: + case 242: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1371 +//line sql.y:1392 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 239: + case 243: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1375 +//line sql.y:1396 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 240: + case 244: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1379 +//line sql.y:1400 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 241: + case 245: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1383 +//line sql.y:1404 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 242: + case 246: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1387 +//line sql.y:1408 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 243: + case 247: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1391 +//line sql.y:1412 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 244: + case 248: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1395 +//line sql.y:1416 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 245: + case 249: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1399 +//line sql.y:1420 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 246: + case 250: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1403 +//line sql.y:1424 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 247: + case 251: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1407 +//line sql.y:1428 { // this is ugly, but I couldn't find a better way for now if yyDollar[4].str == "processlist" { @@ -3981,261 +4021,267 @@ yydefault: yyVAL.statement = &Show{Type: yyDollar[4].str, ShowTablesOpt: showTablesOpt} } } - case 248: + case 252: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1417 +//line sql.y:1438 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 249: + case 253: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1421 +//line sql.y:1442 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 250: + case 254: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1425 +//line sql.y:1446 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), OnTable: yyDollar[4].tableName} } - case 251: + case 255: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1429 +//line sql.y:1450 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 252: + case 256: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1433 +//line sql.y:1454 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 253: + case 257: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1437 +//line sql.y:1458 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 254: + case 258: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1441 +//line sql.y:1462 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 255: + case 259: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1451 +//line sql.y:1472 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 256: + case 260: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1457 +//line sql.y:1478 { yyVAL.str = string(yyDollar[1].bytes) } - case 257: + case 261: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1461 +//line sql.y:1482 { yyVAL.str = string(yyDollar[1].bytes) } - case 258: + case 262: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1467 +//line sql.y:1488 { yyVAL.str = "" } - case 259: + case 263: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1471 +//line sql.y:1492 { yyVAL.str = "extended " } - case 260: + case 264: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1477 +//line sql.y:1498 { yyVAL.str = "" } - case 261: + case 265: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1481 +//line sql.y:1502 { yyVAL.str = "full " } - case 262: + case 266: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1487 +//line sql.y:1508 { yyVAL.str = "" } - case 263: + case 267: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1491 +//line sql.y:1512 { yyVAL.str = yyDollar[2].tableIdent.v } - case 264: + case 268: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1495 +//line sql.y:1516 { yyVAL.str = yyDollar[2].tableIdent.v } - case 265: + case 269: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1501 +//line sql.y:1522 { yyVAL.showFilter = nil } - case 266: + case 270: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1505 +//line sql.y:1526 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 267: + case 271: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1509 +//line sql.y:1530 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 268: + case 272: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1515 +//line sql.y:1536 { yyVAL.str = "" } - case 269: + case 273: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1519 +//line sql.y:1540 { yyVAL.str = SessionStr } - case 270: + case 274: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1523 +//line sql.y:1544 { yyVAL.str = GlobalStr } - case 271: + case 275: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1529 +//line sql.y:1550 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 272: + case 276: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1533 +//line sql.y:1554 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 273: + case 277: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1539 +//line sql.y:1560 { yyVAL.statement = &Begin{} } - case 274: + case 278: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1543 +//line sql.y:1564 { yyVAL.statement = &Begin{} } - case 275: + case 279: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1549 +//line sql.y:1570 { yyVAL.statement = &Commit{} } - case 276: + case 280: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1555 +//line sql.y:1576 { yyVAL.statement = &Rollback{} } - case 277: + case 281: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1561 +//line sql.y:1582 { yyVAL.statement = &OtherRead{} } - case 278: + case 282: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1565 +//line sql.y:1586 { yyVAL.statement = &OtherRead{} } - case 279: + case 283: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1569 +//line sql.y:1590 { yyVAL.statement = &OtherRead{} } - case 280: + case 284: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1573 +//line sql.y:1594 { yyVAL.statement = &OtherAdmin{} } - case 281: + case 285: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1577 +//line sql.y:1598 { yyVAL.statement = &OtherAdmin{} } - case 282: + case 286: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1583 +//line sql.y:1604 { yyVAL.statement = &DeallocatePrepare{PreparedStatementName: yyDollar[3].tableIdent} } - case 283: + case 287: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1589 +//line sql.y:1610 { yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, PreparedStatementQuery: yyDollar[4].preparedQuery} } - case 284: + case 288: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1593 +//line sql.y:1614 { yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, PreparedStatementQuery: yyDollar[4].preparedQuery} } - case 285: + case 289: + yyDollar = yyS[yypt-7 : yypt+1] +//line sql.y:1618 + { + yyVAL.statement = &Prepare{PreparedStatementName: yyDollar[2].tableIdent, ColumnTypes: yyDollar[4].columnTypes, PreparedStatementQuery: yyDollar[7].preparedQuery} + } + case 290: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1599 +//line sql.y:1624 { yyVAL.preparedQuery = yyDollar[1].selStmt.(*Select) } - case 286: + case 291: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1603 +//line sql.y:1628 { yyVAL.preparedQuery = yyDollar[1].statement.(*Insert) } - case 287: + case 292: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1607 +//line sql.y:1632 { yyVAL.preparedQuery = yyDollar[1].statement.(*Delete) } - case 288: + case 293: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1611 +//line sql.y:1636 { yyVAL.preparedQuery = yyDollar[1].statement.(*Update) } - case 289: + case 294: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1615 +//line sql.y:1640 { yyVAL.preparedQuery = NewTableIdent(string(yyDollar[1].bytes)) } - case 290: + case 295: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1619 +//line sql.y:1644 { statement, err := NewPreparedQueryFromString(string(yyDollar[1].bytes)) if statement == nil { @@ -4248,406 +4294,406 @@ yydefault: } yyVAL.preparedQuery = statement } - case 291: + case 296: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1634 +//line sql.y:1659 { yyVAL.statement = &Execute{PreparedStatementName: NewTableIdent(string(yyDollar[2].bytes))} } - case 292: + case 297: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1638 +//line sql.y:1663 { yyVAL.statement = &Execute{PreparedStatementName: NewTableIdent(string(yyDollar[2].bytes)), Using: yyDollar[4].usingInExecuteList} } - case 293: + case 298: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1644 +//line sql.y:1669 { yyVAL.usingInExecuteList = UsingInExecuteList{yyDollar[1].tableIdent} } - case 294: + case 299: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1648 +//line sql.y:1673 { yyVAL.usingInExecuteList = append(yyDollar[1].usingInExecuteList, yyDollar[3].tableIdent) } - case 295: + case 300: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1653 +//line sql.y:1678 { setAllowComments(yylex, true) } - case 296: + case 301: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1657 +//line sql.y:1682 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 297: + case 302: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1663 +//line sql.y:1688 { yyVAL.bytes2 = nil } - case 298: + case 303: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1667 +//line sql.y:1692 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 299: + case 304: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1673 +//line sql.y:1698 { yyVAL.str = UnionStr } - case 300: + case 305: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1677 +//line sql.y:1702 { yyVAL.str = UnionAllStr } - case 301: + case 306: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1681 +//line sql.y:1706 { yyVAL.str = UnionDistinctStr } - case 302: + case 307: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1686 +//line sql.y:1711 { yyVAL.str = "" } - case 303: + case 308: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1690 +//line sql.y:1715 { yyVAL.str = SQLNoCacheStr } - case 304: + case 309: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1694 +//line sql.y:1719 { yyVAL.str = SQLCacheStr } - case 305: + case 310: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1699 +//line sql.y:1724 { yyVAL.str = "" } - case 306: + case 311: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1703 +//line sql.y:1728 { yyVAL.str = DistinctStr } - case 307: + case 312: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1708 +//line sql.y:1733 { yyVAL.str = "" } - case 308: + case 313: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1712 +//line sql.y:1737 { yyVAL.str = StraightJoinHint } - case 309: + case 314: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1717 +//line sql.y:1742 { yyVAL.selectExprs = nil } - case 310: + case 315: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1721 +//line sql.y:1746 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 311: + case 316: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1727 +//line sql.y:1752 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 312: + case 317: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1731 +//line sql.y:1756 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 313: + case 318: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1737 +//line sql.y:1762 { yyVAL.selectExpr = &StarExpr{} } - case 314: + case 319: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1741 +//line sql.y:1766 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 315: + case 320: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1745 +//line sql.y:1770 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 316: + case 321: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1749 +//line sql.y:1774 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 317: + case 322: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1754 +//line sql.y:1779 { yyVAL.colIdent = ColIdent{} } - case 318: + case 323: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1758 +//line sql.y:1783 { yyVAL.colIdent = yyDollar[1].colIdent } - case 319: + case 324: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1762 +//line sql.y:1787 { yyVAL.colIdent = yyDollar[2].colIdent } - case 321: + case 326: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1770 +//line sql.y:1795 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 322: + case 327: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1774 +//line sql.y:1799 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 323: + case 328: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1780 +//line sql.y:1805 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 324: + case 329: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1784 +//line sql.y:1809 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 327: + case 332: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1794 +//line sql.y:1819 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 328: + case 333: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1798 +//line sql.y:1823 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 329: + case 334: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1802 +//line sql.y:1827 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 330: + case 335: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1808 +//line sql.y:1833 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 331: + case 336: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1812 +//line sql.y:1837 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 332: + case 337: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1818 +//line sql.y:1843 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 333: + case 338: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1822 +//line sql.y:1847 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 334: + case 339: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1828 +//line sql.y:1853 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 335: + case 340: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1832 +//line sql.y:1857 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 336: + case 341: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1845 +//line sql.y:1870 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 337: + case 342: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1849 +//line sql.y:1874 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 338: + case 343: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1853 +//line sql.y:1878 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 339: + case 344: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1857 +//line sql.y:1882 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 340: + case 345: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1863 +//line sql.y:1888 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 341: + case 346: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1865 +//line sql.y:1890 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 342: + case 347: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1869 +//line sql.y:1894 { yyVAL.joinCondition = JoinCondition{} } - case 343: + case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1871 +//line sql.y:1896 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 344: + case 349: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1875 +//line sql.y:1900 { yyVAL.joinCondition = JoinCondition{} } - case 345: + case 350: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1877 +//line sql.y:1902 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 346: + case 351: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1880 +//line sql.y:1905 { yyVAL.empty = struct{}{} } - case 347: + case 352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1882 +//line sql.y:1907 { yyVAL.empty = struct{}{} } - case 348: + case 353: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1885 +//line sql.y:1910 { yyVAL.tableIdent = NewTableIdent("") } - case 349: + case 354: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1889 +//line sql.y:1914 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 350: + case 355: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1893 +//line sql.y:1918 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 352: + case 357: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1903 +//line sql.y:1928 { yyVAL.str = JoinStr } - case 353: + case 358: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1907 +//line sql.y:1932 { yyVAL.str = JoinStr } - case 354: + case 359: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1911 +//line sql.y:1936 { yyVAL.str = JoinStr } - case 355: + case 360: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1917 +//line sql.y:1942 { yyVAL.str = StraightJoinStr } - case 356: + case 361: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1923 +//line sql.y:1948 { yyVAL.str = LeftJoinStr } - case 357: + case 362: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1927 +//line sql.y:1952 { yyVAL.str = LeftJoinStr } - case 358: + case 363: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1931 +//line sql.y:1956 { yyVAL.str = RightJoinStr } - case 359: + case 364: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1935 +//line sql.y:1960 { yyVAL.str = RightJoinStr } - case 360: + case 365: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1941 +//line sql.y:1966 { yyVAL.str = NaturalJoinStr } - case 361: + case 366: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1945 +//line sql.y:1970 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -4655,453 +4701,453 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 362: + case 367: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1955 +//line sql.y:1980 { yyVAL.tableName = yyDollar[2].tableName } - case 363: + case 368: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1959 +//line sql.y:1984 { yyVAL.tableName = yyDollar[1].tableName } - case 364: + case 369: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1965 +//line sql.y:1990 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 365: + case 370: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1969 +//line sql.y:1994 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 366: + case 371: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1974 +//line sql.y:1999 { yyVAL.indexHints = nil } - case 367: + case 372: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1978 +//line sql.y:2003 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 368: + case 373: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1982 +//line sql.y:2007 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 369: + case 374: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1986 +//line sql.y:2011 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 370: + case 375: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1991 +//line sql.y:2016 { yyVAL.expr = nil } - case 371: + case 376: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1995 +//line sql.y:2020 { yyVAL.expr = yyDollar[2].expr } - case 372: + case 377: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2001 +//line sql.y:2026 { yyVAL.expr = yyDollar[1].expr } - case 373: + case 378: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2005 +//line sql.y:2030 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 374: + case 379: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2009 +//line sql.y:2034 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 375: + case 380: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2013 +//line sql.y:2038 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 376: + case 381: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2017 +//line sql.y:2042 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 377: + case 382: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2021 +//line sql.y:2046 { yyVAL.expr = yyDollar[1].expr } - case 378: + case 383: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2025 +//line sql.y:2050 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 379: + case 384: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2031 +//line sql.y:2056 { yyVAL.str = "" } - case 380: + case 385: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2035 +//line sql.y:2060 { yyVAL.str = string(yyDollar[2].bytes) } - case 381: + case 386: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2041 +//line sql.y:2066 { yyVAL.boolVal = BoolVal(true) } - case 382: + case 387: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2045 +//line sql.y:2070 { yyVAL.boolVal = BoolVal(false) } - case 383: + case 388: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2051 +//line sql.y:2076 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 384: + case 389: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2055 +//line sql.y:2080 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 385: + case 390: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2059 +//line sql.y:2084 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 386: + case 391: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2063 +//line sql.y:2088 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 387: + case 392: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2067 +//line sql.y:2092 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 388: + case 393: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2071 +//line sql.y:2096 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 389: + case 394: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2075 +//line sql.y:2100 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 390: + case 395: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2079 +//line sql.y:2104 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 391: + case 396: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2083 +//line sql.y:2108 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 392: + case 397: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2087 +//line sql.y:2112 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 393: + case 398: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2093 +//line sql.y:2118 { yyVAL.str = IsNullStr } - case 394: + case 399: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2097 +//line sql.y:2122 { yyVAL.str = IsNotNullStr } - case 395: + case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2101 +//line sql.y:2126 { yyVAL.str = IsTrueStr } - case 396: + case 401: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2105 +//line sql.y:2130 { yyVAL.str = IsNotTrueStr } - case 397: + case 402: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2109 +//line sql.y:2134 { yyVAL.str = IsFalseStr } - case 398: + case 403: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2113 +//line sql.y:2138 { yyVAL.str = IsNotFalseStr } - case 399: + case 404: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2119 +//line sql.y:2144 { yyVAL.str = EqualStr } - case 400: + case 405: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2123 +//line sql.y:2148 { yyVAL.str = LessThanStr } - case 401: + case 406: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2127 +//line sql.y:2152 { yyVAL.str = GreaterThanStr } - case 402: + case 407: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2131 +//line sql.y:2156 { yyVAL.str = LessEqualStr } - case 403: + case 408: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2135 +//line sql.y:2160 { yyVAL.str = GreaterEqualStr } - case 404: + case 409: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2139 +//line sql.y:2164 { yyVAL.str = NotEqualStr } - case 405: + case 410: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2143 +//line sql.y:2168 { yyVAL.str = NullSafeEqualStr } - case 406: + case 411: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2148 +//line sql.y:2173 { yyVAL.expr = nil } - case 407: + case 412: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2152 +//line sql.y:2177 { yyVAL.expr = yyDollar[2].expr } - case 408: + case 413: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2158 +//line sql.y:2183 { yyVAL.colTuple = yyDollar[1].valTuple } - case 409: + case 414: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2162 +//line sql.y:2187 { yyVAL.colTuple = yyDollar[1].subquery } - case 410: + case 415: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2166 +//line sql.y:2191 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 411: + case 416: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2172 +//line sql.y:2197 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 412: + case 417: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2178 +//line sql.y:2203 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 413: + case 418: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2182 +//line sql.y:2207 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 414: + case 419: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2189 +//line sql.y:2214 { yyVAL.expr = yyDollar[1].colName } - case 415: + case 420: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2194 +//line sql.y:2218 { yyVAL.expr = yyDollar[1].expr } - case 416: + case 421: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2198 +//line sql.y:2222 { yyVAL.expr = yyDollar[1].boolVal } - case 417: + case 422: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2202 +//line sql.y:2226 { yyVAL.expr = yyDollar[1].expr } - case 418: + case 423: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2206 +//line sql.y:2230 { yyVAL.expr = yyDollar[1].subquery } - case 419: + case 424: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2210 +//line sql.y:2234 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } - case 420: + case 425: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2214 +//line sql.y:2238 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } - case 421: + case 426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2218 +//line sql.y:2242 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } - case 422: + case 427: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2222 +//line sql.y:2246 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } - case 423: + case 428: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2226 +//line sql.y:2250 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } - case 424: + case 429: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2230 +//line sql.y:2254 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } - case 425: + case 430: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2234 +//line sql.y:2258 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } - case 426: + case 431: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2238 +//line sql.y:2262 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } - case 427: + case 432: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2242 +//line sql.y:2266 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 428: + case 433: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2246 +//line sql.y:2270 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 429: + case 434: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2250 +//line sql.y:2274 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } - case 430: + case 435: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2254 +//line sql.y:2278 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } - case 431: + case 436: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2258 +//line sql.y:2282 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 432: + case 437: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2262 +//line sql.y:2286 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 433: + case 438: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2266 +//line sql.y:2290 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 434: + case 439: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2270 +//line sql.y:2294 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } - case 435: + case 440: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2274 +//line sql.y:2298 { yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } - case 436: + case 441: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2278 +//line sql.y:2302 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -5109,9 +5155,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 437: + case 442: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2286 +//line sql.y:2310 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -5125,21 +5171,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 438: + case 443: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2300 +//line sql.y:2324 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 439: + case 444: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2304 +//line sql.y:2328 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 440: + case 445: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2308 +//line sql.y:2332 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -5147,455 +5193,466 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 445: + case 450: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2326 +//line sql.y:2350 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 446: + case 451: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2330 +//line sql.y:2354 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 447: + case 452: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2334 +//line sql.y:2358 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 448: + case 453: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2344 +//line sql.y:2368 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 449: + case 454: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2348 +//line sql.y:2372 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 450: + case 455: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2352 +//line sql.y:2376 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 451: + case 456: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2356 +//line sql.y:2380 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 452: + case 457: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2360 +//line sql.y:2384 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 453: + case 458: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2364 +//line sql.y:2388 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 454: + case 459: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2368 +//line sql.y:2392 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 455: + case 460: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2372 +//line sql.y:2396 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 456: + case 461: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2376 +//line sql.y:2400 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 457: + case 462: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2380 +//line sql.y:2404 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 458: + case 463: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2384 +//line sql.y:2408 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 459: + case 464: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2388 +//line sql.y:2412 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 460: + case 465: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2392 +//line sql.y:2416 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } - case 461: + case 466: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2396 +//line sql.y:2420 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 462: + case 467: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2400 +//line sql.y:2424 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 463: + case 468: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2410 +//line sql.y:2434 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 464: + case 469: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2414 +//line sql.y:2438 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 465: + case 470: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2418 +//line sql.y:2442 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 466: + case 471: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2422 +//line sql.y:2446 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 467: + case 472: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2427 +//line sql.y:2451 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 468: + case 473: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2432 +//line sql.y:2456 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 469: + case 474: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2437 +//line sql.y:2461 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 470: + case 475: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2442 +//line sql.y:2466 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 473: + case 478: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2456 +//line sql.y:2480 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 474: + case 479: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2460 +//line sql.y:2484 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 475: + case 480: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2464 +//line sql.y:2488 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 476: + case 481: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2468 +//line sql.y:2492 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 477: + case 482: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2474 +//line sql.y:2498 { yyVAL.str = "" } - case 478: + case 483: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2478 +//line sql.y:2502 { yyVAL.str = BooleanModeStr } - case 479: + case 484: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2482 +//line sql.y:2506 { yyVAL.str = NaturalLanguageModeStr } - case 480: + case 485: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2486 +//line sql.y:2510 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 481: + case 486: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2490 +//line sql.y:2514 { yyVAL.str = QueryExpansionStr } - case 482: + case 487: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2496 +//line sql.y:2520 { yyVAL.str = string(yyDollar[1].bytes) } - case 483: + case 488: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2500 +//line sql.y:2524 { yyVAL.str = string(yyDollar[1].bytes) } - case 484: + case 489: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2506 +//line sql.y:2530 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 485: + case 490: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2510 +//line sql.y:2534 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 486: + case 491: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2514 +//line sql.y:2538 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: string(yyDollar[3].bytes)} } - case 487: + case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2518 +//line sql.y:2542 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 488: + case 493: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2522 +//line sql.y:2546 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 489: + case 494: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2526 +//line sql.y:2550 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 490: + case 495: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2532 +//line sql.y:2556 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 491: + case 496: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2536 +//line sql.y:2560 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 492: + case 497: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2540 +//line sql.y:2564 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 493: + case 498: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2544 +//line sql.y:2568 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 494: + case 499: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2548 +//line sql.y:2572 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 495: + case 500: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2552 +//line sql.y:2576 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 496: + case 501: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2556 +//line sql.y:2580 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 497: + case 502: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2560 +//line sql.y:2584 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 498: + case 503: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2565 +//line sql.y:2589 { yyVAL.expr = nil } - case 499: + case 504: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2569 +//line sql.y:2593 { yyVAL.expr = yyDollar[1].expr } - case 500: + case 505: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2574 +//line sql.y:2598 { yyVAL.str = string("") } - case 501: + case 506: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2578 +//line sql.y:2602 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 502: + case 507: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2584 +//line sql.y:2608 { yyVAL.whens = []*When{yyDollar[1].when} } - case 503: + case 508: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2588 +//line sql.y:2612 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 504: + case 509: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2594 +//line sql.y:2618 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 505: + case 510: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2599 +//line sql.y:2623 { yyVAL.expr = nil } - case 506: + case 511: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2603 +//line sql.y:2627 { yyVAL.expr = yyDollar[2].expr } - case 507: + case 512: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2609 +//line sql.y:2633 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 508: + case 513: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2613 +//line sql.y:2637 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 509: + case 514: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2617 +//line sql.y:2641 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 510: + case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2623 +//line sql.y:2647 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 511: + case 516: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2627 +//line sql.y:2651 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 512: + case 517: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2631 +//line sql.y:2655 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 513: + case 518: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2635 +//line sql.y:2659 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 514: + case 519: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2639 +//line sql.y:2663 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 515: + case 520: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2643 +//line sql.y:2667 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 516: + case 521: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2647 +//line sql.y:2671 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 517: + case 522: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2651 +//line sql.y:2675 { yyVAL.expr = &NullVal{} } - case 518: + case 523: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2655 +//line sql.y:2679 { yyVAL.expr = NewPgEscapeString(yyDollar[1].bytes) } - case 519: + case 524: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2683 + { + result, err := NewDollarExpr(string(yyDollar[1].bytes)) + if err != nil { + yylex.Error("syntax error") + return 1 + } + yyVAL.expr = result + } + case 525: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2659 +//line sql.y:2692 { yyVAL.expr = NewCastVal(yyDollar[1].expr, yyDollar[2].bytes) } - case 520: + case 526: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2665 +//line sql.y:2698 { yyVAL.bytes = yyDollar[1].bytes } - case 521: + case 527: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2673 +//line sql.y:2706 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -5604,239 +5661,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 522: + case 528: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2682 +//line sql.y:2715 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 523: + case 529: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2686 +//line sql.y:2719 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 524: + case 530: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2691 +//line sql.y:2724 { yyVAL.exprs = nil } - case 525: + case 531: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2695 +//line sql.y:2728 { yyVAL.exprs = yyDollar[3].exprs } - case 526: + case 532: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2700 +//line sql.y:2733 { yyVAL.expr = nil } - case 527: + case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2704 +//line sql.y:2737 { yyVAL.expr = yyDollar[2].expr } - case 528: + case 534: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2709 +//line sql.y:2742 { yyVAL.orderBy = nil } - case 529: + case 535: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2713 +//line sql.y:2746 { yyVAL.orderBy = yyDollar[3].orderBy } - case 530: + case 536: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2719 +//line sql.y:2752 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 531: + case 537: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2723 +//line sql.y:2756 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 532: + case 538: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2729 +//line sql.y:2762 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 533: + case 539: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2734 +//line sql.y:2767 { yyVAL.str = AscScr } - case 534: + case 540: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2738 +//line sql.y:2771 { yyVAL.str = AscScr } - case 535: + case 541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2742 +//line sql.y:2775 { yyVAL.str = DescScr } - case 536: + case 542: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2747 +//line sql.y:2780 { yyVAL.limit = nil } - case 537: + case 543: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2751 +//line sql.y:2784 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 538: + case 544: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2755 +//line sql.y:2788 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 539: + case 545: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2759 +//line sql.y:2792 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 540: + case 546: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2764 +//line sql.y:2797 { yyVAL.str = "" } - case 541: + case 547: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2768 +//line sql.y:2801 { yyVAL.str = ForUpdateStr } - case 542: + case 548: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2772 +//line sql.y:2805 { yyVAL.str = ShareModeStr } - case 543: + case 549: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2785 +//line sql.y:2818 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 544: + case 550: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2789 +//line sql.y:2822 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 545: + case 551: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2793 +//line sql.y:2826 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 546: + case 552: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2798 +//line sql.y:2831 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 547: + case 553: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2802 +//line sql.y:2835 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 548: + case 554: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2806 +//line sql.y:2839 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 549: + case 555: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2813 +//line sql.y:2846 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 550: + case 556: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2817 +//line sql.y:2850 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 551: + case 557: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2821 +//line sql.y:2854 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 552: + case 558: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2825 +//line sql.y:2858 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 553: + case 559: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2830 +//line sql.y:2863 { yyVAL.updateExprs = nil } - case 554: + case 560: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2834 +//line sql.y:2867 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 555: + case 561: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2840 +//line sql.y:2873 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 556: + case 562: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2844 +//line sql.y:2877 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 557: + case 563: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2850 +//line sql.y:2883 { yyVAL.valTuple = yyDollar[1].valTuple } - case 558: + case 564: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2854 +//line sql.y:2887 { yyVAL.valTuple = ValTuple{} } - case 559: + case 565: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2860 +//line sql.y:2893 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 560: + case 566: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2866 +//line sql.y:2899 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -5844,318 +5901,318 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 561: + case 567: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2875 +//line sql.y:2908 { yyVAL.returning = nil } - case 562: + case 568: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2880 +//line sql.y:2913 { yyVAL.returning = Returning{&StarExpr{}} } - case 563: + case 569: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2885 +//line sql.y:2918 { yyVAL.returning = Returning(yyDollar[2].exprs) } - case 564: + case 570: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2892 +//line sql.y:2925 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 565: + case 571: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2896 +//line sql.y:2929 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 566: + case 572: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2902 +//line sql.y:2935 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 567: + case 573: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2908 +//line sql.y:2941 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 568: + case 574: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2912 +//line sql.y:2945 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 569: + case 575: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2918 +//line sql.y:2951 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 570: + case 576: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2922 +//line sql.y:2955 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 571: + case 577: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2926 +//line sql.y:2959 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 573: + case 579: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2933 +//line sql.y:2966 { yyVAL.bytes = []byte("charset") } - case 575: + case 581: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2940 +//line sql.y:2973 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 576: + case 582: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2944 +//line sql.y:2977 { yyVAL.expr = &Default{} } - case 579: + case 585: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2953 +//line sql.y:2986 { yyVAL.byt = 0 } - case 580: + case 586: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2955 +//line sql.y:2988 { yyVAL.byt = 1 } - case 581: + case 587: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2958 +//line sql.y:2991 { yyVAL.empty = struct{}{} } - case 582: + case 588: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2960 +//line sql.y:2993 { yyVAL.empty = struct{}{} } - case 583: + case 589: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2963 +//line sql.y:2996 { yyVAL.str = "" } - case 584: + case 590: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2965 +//line sql.y:2998 { yyVAL.str = IgnoreStr } - case 585: + case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2969 +//line sql.y:3002 { yyVAL.empty = struct{}{} } - case 586: + case 592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2971 +//line sql.y:3004 { yyVAL.empty = struct{}{} } - case 587: + case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2973 +//line sql.y:3006 { yyVAL.empty = struct{}{} } - case 588: + case 594: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2975 +//line sql.y:3008 { yyVAL.empty = struct{}{} } - case 589: + case 595: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2977 +//line sql.y:3010 { yyVAL.empty = struct{}{} } - case 590: + case 596: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2979 +//line sql.y:3012 { yyVAL.empty = struct{}{} } - case 591: + case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2981 +//line sql.y:3014 { yyVAL.empty = struct{}{} } - case 592: + case 598: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2983 +//line sql.y:3016 { yyVAL.empty = struct{}{} } - case 593: + case 599: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2985 +//line sql.y:3018 { yyVAL.empty = struct{}{} } - case 594: + case 600: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2987 +//line sql.y:3020 { yyVAL.empty = struct{}{} } - case 595: + case 601: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2990 +//line sql.y:3023 { yyVAL.empty = struct{}{} } - case 596: + case 602: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2992 +//line sql.y:3025 { yyVAL.empty = struct{}{} } - case 597: + case 603: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2994 +//line sql.y:3027 { yyVAL.empty = struct{}{} } - case 598: + case 604: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2998 +//line sql.y:3031 { yyVAL.empty = struct{}{} } - case 599: + case 605: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3000 +//line sql.y:3033 { yyVAL.empty = struct{}{} } - case 600: + case 606: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3003 +//line sql.y:3036 { yyVAL.empty = struct{}{} } - case 601: + case 607: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3005 +//line sql.y:3038 { yyVAL.empty = struct{}{} } - case 602: + case 608: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3007 +//line sql.y:3040 { yyVAL.empty = struct{}{} } - case 603: + case 609: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3010 +//line sql.y:3043 { yyVAL.colIdent = ColIdent{} } - case 604: + case 610: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3012 +//line sql.y:3045 { yyVAL.colIdent = yyDollar[2].colIdent } - case 605: + case 611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3016 +//line sql.y:3049 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 606: + case 612: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3020 +//line sql.y:3053 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 607: + case 613: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3024 +//line sql.y:3057 { yyVAL.colIdent = NewColIdentWithQuotes(string(yyDollar[1].bytes), true) } - case 609: + case 615: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3031 +//line sql.y:3064 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 610: + case 616: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3037 +//line sql.y:3070 { yyVAL.tableIdent = NewTableIdentWithQuotes(yyDollar[1].colIdent.String(), yyDollar[1].colIdent.NeedQuotes()) } - case 612: + case 618: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3044 +//line sql.y:3077 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 803: + case 809: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3260 +//line sql.y:3293 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 804: + case 810: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3269 +//line sql.y:3302 { decNesting(yylex) } - case 805: + case 811: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3274 +//line sql.y:3307 { forceEOF(yylex) } - case 806: + case 812: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3279 +//line sql.y:3312 { forceEOF(yylex) } - case 807: + case 813: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3283 +//line sql.y:3316 { forceEOF(yylex) } - case 808: + case 814: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3287 +//line sql.y:3320 { forceEOF(yylex) } diff --git a/sqlparser/sql.y b/sqlparser/sql.y index a4047164d..44cffe160 100644 --- a/sqlparser/sql.y +++ b/sqlparser/sql.y @@ -96,6 +96,7 @@ func forceEOF(yylex interface{}) { aliasedTableName *AliasedTableExpr TableSpec *TableSpec columnType ColumnType + columnTypes []ColumnType colKeyOpt ColumnKeyOption optVal *SQLVal LengthScaleOption LengthScaleOption @@ -125,7 +126,7 @@ func forceEOF(yylex interface{}) { %left JOIN STRAIGHT_JOIN LEFT RIGHT INNER OUTER CROSS NATURAL USE FORCE %left ON USING %token '(' ',' ')' -%token ID PG_ESCAPE_STRING HEX STRING INTEGRAL FLOAT HEXNUM VALUE_ARG LIST_ARG COMMENT COMMENT_KEYWORD BIT_LITERAL +%token ID PG_ESCAPE_STRING HEX STRING INTEGRAL FLOAT HEXNUM VALUE_ARG LIST_ARG COMMENT COMMENT_KEYWORD BIT_LITERAL DOLLAR_SIGN %token NULL TRUE FALSE // Precedence dictated by mysql. But the vitess grammar is simplified. @@ -276,8 +277,9 @@ func forceEOF(yylex interface{}) { %type charset %type set_session_or_global show_session_or_global %type convert_type +%type column_type_list %type column_type -%type int_type decimal_type numeric_type time_type char_type spatial_type +%type int_type decimal_type numeric_type time_type char_type spatial_type bool_type %type length_opt column_default_opt column_comment_opt on_update_opt %type charset_opt collate_opt %type unsigned_opt zero_fill_opt @@ -670,6 +672,17 @@ column_definition: $2.Comment = $8 $$ = &ColumnDefinition{Name: NewColIdent(string($1)), Type: $2} } + +column_type_list: + column_type + { + $$ = ColumnTypes{$1} + } +| column_type_list ',' column_type + { + $$ = append($1, $3) + } + column_type: numeric_type unsigned_opt zero_fill_opt { @@ -680,6 +693,14 @@ column_type: | char_type | time_type | spatial_type +| bool_type + +bool_type: + BOOL + { + $$ = ColumnType{Type: string($1)} + } + numeric_type: int_type length_opt @@ -1593,6 +1614,10 @@ prepare_statement: { $$ = &Prepare{PreparedStatementName: $2, PreparedStatementQuery: $4} } +| PREPARE table_id openb column_type_list closeb AS prepared_query + { + $$ = &Prepare{PreparedStatementName: $2, ColumnTypes: $4, PreparedStatementQuery: $7} + } prepared_query: base_select @@ -2189,8 +2214,7 @@ column_name { $$ = $1 } -| - value +| value { $$ = $1 } @@ -2655,6 +2679,15 @@ value: { $$ = NewPgEscapeString($1) } +| DOLLAR_SIGN + { + result, err := NewDollarExpr(string($1)) + if err != nil { + yylex.Error("syntax error") + return 1 + } + $$ = result + } | value typecast { $$ = NewCastVal($1, $2) diff --git a/sqlparser/token.go b/sqlparser/token.go index 6e69e441e..096be6ab7 100644 --- a/sqlparser/token.go +++ b/sqlparser/token.go @@ -609,12 +609,26 @@ func (tkn *Tokenizer) Scan() (int, []byte) { return tkn.scanString(ch, STRING) case '`': return tkn.scanLiteralIdentifier() + case '$': + return tkn.scanDollarParameter() default: return LEX_ERROR, []byte{byte(ch)} } } } +func (tkn *Tokenizer) scanDollarParameter() (int, []byte) { + buffer := &bytes2.Buffer{} + buffer.WriteByte(byte('$')) + result, value := tkn.scanNumber(false) + if result == INTEGRAL { + buffer.Write(value) + return DOLLAR_SIGN, buffer.Bytes() + } + + return LEX_ERROR, nil +} + // skipStatement scans until the EOF, or end of statement is encountered. func (tkn *Tokenizer) skipStatement() { ch := tkn.lastChar