diff --git a/pkg/bootstrap/versions/v4_0_0/cluster_upgrade_list.go b/pkg/bootstrap/versions/v4_0_0/cluster_upgrade_list.go index cbb54bc19c66b..f899b6ccac638 100644 --- a/pkg/bootstrap/versions/v4_0_0/cluster_upgrade_list.go +++ b/pkg/bootstrap/versions/v4_0_0/cluster_upgrade_list.go @@ -25,6 +25,7 @@ import ( var clusterUpgEntries = []versions.UpgradeEntry{ upg_mo_iscp_log_new, upg_mo_iscp_task, + upg_mo_index_update_new, upg_create_mo_branch_metadata, upg_rename_system_stmt_info_4000, upg_create_system_stmt_info_4000, @@ -53,6 +54,16 @@ var upg_mo_iscp_task = versions.UpgradeEntry{ }, } +var upg_mo_index_update_new = versions.UpgradeEntry{ + Schema: catalog.MO_CATALOG, + TableName: catalog.MO_INDEX_UPDATE, + UpgType: versions.CREATE_NEW_TABLE, + UpgSql: frontend.MoCatalogMoIndexUpdateDDL, + CheckFunc: func(txn executor.TxnExecutor, accountId uint32) (bool, error) { + return versions.CheckTableDefinition(txn, accountId, catalog.MO_CATALOG, catalog.MO_INDEX_UPDATE) + }, +} + var upg_create_mo_branch_metadata = versions.UpgradeEntry{ Schema: catalog.MO_CATALOG, TableName: catalog.MO_BRANCH_METADATA, diff --git a/pkg/catalog/secondary_index_utils.go b/pkg/catalog/secondary_index_utils.go index b02b507ee1bbd..d9481b1844fce 100644 --- a/pkg/catalog/secondary_index_utils.go +++ b/pkg/catalog/secondary_index_utils.go @@ -86,6 +86,9 @@ const ( HnswQuantization = "quantization" HnswEfSearch = "ef_search" Async = "async" + AutoUpdate = "auto_update" + Day = "day" + Hour = "hour" ) /* 1. ToString Functions */ @@ -131,6 +134,20 @@ func IndexParamsToStringList(indexParams string) (string, error) { } } + if val, ok := result[AutoUpdate]; ok { + if val == "true" { + res += fmt.Sprintf(" %s = %s ", AutoUpdate, val) + } + } + + if val, ok := result[Day]; ok { + res += fmt.Sprintf(" %s = %s ", Day, val) + } + + if val, ok := result[Hour]; ok { + res += fmt.Sprintf(" %s = %s ", Hour, val) + } + return res, nil } @@ -232,6 +249,16 @@ func indexParamsToMap(def interface{}) (map[string]string, error) { if idx.IndexOption.Async { res[Async] = "true" } + if idx.IndexOption.AutoUpdate { + res[AutoUpdate] = "true" + } + if idx.IndexOption.Day > 0 { + res[Day] = strconv.FormatInt(idx.IndexOption.Day, 10) + } + + if idx.IndexOption.Hour > 0 { + res[Hour] = strconv.FormatInt(idx.IndexOption.Hour, 10) + } case tree.INDEX_TYPE_HNSW: if idx.IndexOption.HnswM < 0 { return nil, moerr.NewInternalErrorNoCtx("invalid M. hnsw.M must be > 0") diff --git a/pkg/catalog/types.go b/pkg/catalog/types.go index 5b6c602cccef2..63a9146bc6d2d 100644 --- a/pkg/catalog/types.go +++ b/pkg/catalog/types.go @@ -174,6 +174,8 @@ const ( MO_ISCP_LOG = "mo_iscp_log" MO_STORED_PROCEDURE = "mo_stored_procedure" + MO_INDEX_UPDATE = "mo_index_update" + MO_BRANCH_METADATA = "mo_branch_metadata" ) diff --git a/pkg/cnservice/server_task.go b/pkg/cnservice/server_task.go index feab98991809f..2724c90c680aa 100644 --- a/pkg/cnservice/server_task.go +++ b/pkg/cnservice/server_task.go @@ -38,6 +38,7 @@ import ( db_holder "github.com/matrixorigin/matrixone/pkg/util/export/etl/db" ie "github.com/matrixorigin/matrixone/pkg/util/internalExecutor" "github.com/matrixorigin/matrixone/pkg/util/metric/mometric" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" "github.com/matrixorigin/matrixone/pkg/vm/engine/disttae" "github.com/matrixorigin/matrixone/pkg/vm/engine/tae/common" "go.uber.org/zap" @@ -338,4 +339,13 @@ func (s *service) registerExecutorsLocked() { common.ISCPAllocator, ), ) + + s.task.runner.RegisterExecutor(task.TaskCode_IndexUpdateTaskExecutor, + idxcron.IndexUpdateTaskExecutorFactory( + s.cfg.UUID, + s.storeEngine, + s._txnClient, + common.ISCPAllocator, + ), + ) } diff --git a/pkg/container/bytejson/bytejson.go b/pkg/container/bytejson/bytejson.go index 058d97dbfe37f..52d7694d9931d 100644 --- a/pkg/container/bytejson/bytejson.go +++ b/pkg/container/bytejson/bytejson.go @@ -126,7 +126,14 @@ func (bj ByteJson) GetUint64() uint64 { } func (bj ByteJson) GetFloat64() float64 { - return math.Float64frombits(bj.GetUint64()) + switch bj.Type { + case TpCodeInt64: + return float64(bj.GetInt64()) + case TpCodeUint64: + return float64(bj.GetUint64()) + default: + return math.Float64frombits(bj.GetUint64()) + } } func (bj ByteJson) GetString() []byte { diff --git a/pkg/frontend/authenticate.go b/pkg/frontend/authenticate.go index 80ae2d8f809f3..572b07623be2b 100644 --- a/pkg/frontend/authenticate.go +++ b/pkg/frontend/authenticate.go @@ -933,6 +933,7 @@ var ( catalog.MO_TABLE_STATS: 0, catalog.MO_MERGE_SETTINGS: 0, catalog.MO_ISCP_LOG: 0, + catalog.MO_INDEX_UPDATE: 0, catalog.MO_BRANCH_METADATA: 0, } sysAccountTables = map[string]struct{}{ @@ -979,6 +980,7 @@ var ( catalog.MO_ACCOUNT_LOCK: 0, catalog.MO_MERGE_SETTINGS: 0, catalog.MO_ISCP_LOG: 0, + catalog.MO_INDEX_UPDATE: 0, catalog.MO_BRANCH_METADATA: 0, } createDbInformationSchemaSql = "create database information_schema;" @@ -1021,6 +1023,7 @@ var ( MoCatalogMergeSettingsDDL, MoCatalogMergeSettingsInitData, MoCatalogMoISCPLogDDL, + MoCatalogMoIndexUpdateDDL, MoCatalogBranchMetadataDDL, } @@ -7977,7 +7980,9 @@ func createTablesInMoCatalogOfGeneralTenant2(bh BackgroundExec, ca *createAccoun if strings.HasPrefix(sql, fmt.Sprintf("CREATE TABLE mo_catalog.%s", catalog.MO_ISCP_LOG)) { return true } - + if strings.HasPrefix(sql, fmt.Sprintf("CREATE TABLE mo_catalog.%s", catalog.MO_INDEX_UPDATE)) { + return true + } if strings.HasPrefix(sql, fmt.Sprintf("create table mo_catalog.%s", catalog.MO_BRANCH_METADATA)) { return true } diff --git a/pkg/frontend/predefined.go b/pkg/frontend/predefined.go index ca617b5aec3c5..b7fd490ed57a8 100644 --- a/pkg/frontend/predefined.go +++ b/pkg/frontend/predefined.go @@ -282,6 +282,20 @@ var ( primary key(account_id, table_id, job_name, job_id) )` + MoCatalogMoIndexUpdateDDL = `CREATE TABLE mo_catalog.mo_index_update ( + account_id INT UNSIGNED NOT NULL, + table_id BIGINT UNSIGNED NOT NULL, + db_name VARCHAR NOT NULL, + table_name VARCHAR NOT NULL, + index_name VARCHAR NOT NULL, + action VARCHAR NOT NULL, + metadata JSON NOT NULL, + status JSON NOT NULL, + create_at TIMESTAMP NOT NULL, + last_update_at TIMESTAMP NULL, + primary key(account_id, table_id, index_name, action) + )` + MoCatalogMoSessionsDDL = `CREATE VIEW mo_catalog.mo_sessions AS SELECT node_id, conn_id, session_id, account, user, host, db, session_start, command, info, txn_id, statement_id, statement_type, query_type, sql_source_type, query_start, client_host, role, proxy_host FROM mo_sessions() AS mo_sessions_tmp` MoCatalogMoConfigurationsDDL = `CREATE VIEW mo_catalog.mo_configurations AS SELECT node_type, node_id, name, current_value, default_value, internal FROM mo_configurations() AS mo_configurations_tmp` MoCatalogMoLocksDDL = `CREATE VIEW mo_catalog.mo_locks AS SELECT cn_id, txn_id, table_id, lock_key, lock_content, lock_mode, lock_status, lock_wait FROM mo_locks() AS mo_locks_tmp` diff --git a/pkg/frontend/variables.go b/pkg/frontend/variables.go index 91ff8d96e44e3..feae9292820c2 100644 --- a/pkg/frontend/variables.go +++ b/pkg/frontend/variables.go @@ -3552,7 +3552,7 @@ var gSysVarsDefs = map[string]SystemVariable{ Dynamic: true, SetVarHintApplies: false, Type: InitSystemVariableBoolType("experimental_ivf_index"), - Default: int64(0), + Default: int8(0), }, "ivf_threads_build": { Name: "ivf_threads_build", @@ -3583,8 +3583,8 @@ var gSysVarsDefs = map[string]SystemVariable{ Scope: ScopeBoth, Dynamic: true, SetVarHintApplies: false, - Type: InitSystemVariableIntType("kmeans_train_percent", 1, 100, false), - Default: int64(10), + Type: InitSystemVariableDoubleType("kmeans_train_percent", 0, 100), + Default: float64(10), }, "kmeans_max_iteration": { Name: "kmeans_max_iteration", @@ -3608,7 +3608,7 @@ var gSysVarsDefs = map[string]SystemVariable{ Dynamic: true, SetVarHintApplies: false, Type: InitSystemVariableBoolType("experimental_fulltext_index"), - Default: int64(0), + Default: int8(0), }, "ft_relevancy_algorithm": { Name: fulltext.FulltextRelevancyAlgo, @@ -3624,7 +3624,7 @@ var gSysVarsDefs = map[string]SystemVariable{ Dynamic: true, SetVarHintApplies: false, Type: InitSystemVariableBoolType("experimental_hnsw_index"), - Default: int64(0), + Default: int8(0), }, "hnsw_threads_build": { Name: "hnsw_threads_build", diff --git a/pkg/pb/plan/plan.pb.go b/pkg/pb/plan/plan.pb.go index 885dc963eddf0..563259a9badcd 100644 --- a/pkg/pb/plan/plan.pb.go +++ b/pkg/pb/plan/plan.pb.go @@ -1190,7 +1190,7 @@ func (x AlterTable_AlgorithmType) String() string { } func (AlterTable_AlgorithmType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{105, 0} + return fileDescriptor_2d655ab2f7683c23, []int{106, 0} } type MetadataScanInfo_MetadataScanInfoType int32 @@ -1248,7 +1248,7 @@ func (x MetadataScanInfo_MetadataScanInfoType) String() string { } func (MetadataScanInfo_MetadataScanInfoType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{128, 0} + return fileDescriptor_2d655ab2f7683c23, []int{129, 0} } type Type struct { @@ -10288,6 +10288,7 @@ type AlterTableAlterReIndex struct { TableName string `protobuf:"bytes,2,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` IndexName string `protobuf:"bytes,3,opt,name=index_name,json=indexName,proto3" json:"index_name,omitempty"` IndexAlgoParamList int64 `protobuf:"varint,4,opt,name=index_algo_param_list,json=indexAlgoParamList,proto3" json:"index_algo_param_list,omitempty"` + ForceSync bool `protobuf:"varint,5,opt,name=force_sync,json=forceSync,proto3" json:"force_sync,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -10354,6 +10355,100 @@ func (m *AlterTableAlterReIndex) GetIndexAlgoParamList() int64 { return 0 } +func (m *AlterTableAlterReIndex) GetForceSync() bool { + if m != nil { + return m.ForceSync + } + return false +} + +type AlterTableAlterAutoUpdate struct { + DbName string `protobuf:"bytes,1,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` + TableName string `protobuf:"bytes,2,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` + IndexName string `protobuf:"bytes,3,opt,name=index_name,json=indexName,proto3" json:"index_name,omitempty"` + AutoUpdate bool `protobuf:"varint,4,opt,name=auto_update,json=autoUpdate,proto3" json:"auto_update,omitempty"` + Day int64 `protobuf:"varint,5,opt,name=day,proto3" json:"day,omitempty"` + Hour int64 `protobuf:"varint,6,opt,name=hour,proto3" json:"hour,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AlterTableAlterAutoUpdate) Reset() { *m = AlterTableAlterAutoUpdate{} } +func (m *AlterTableAlterAutoUpdate) String() string { return proto.CompactTextString(m) } +func (*AlterTableAlterAutoUpdate) ProtoMessage() {} +func (*AlterTableAlterAutoUpdate) Descriptor() ([]byte, []int) { + return fileDescriptor_2d655ab2f7683c23, []int{96} +} +func (m *AlterTableAlterAutoUpdate) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AlterTableAlterAutoUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AlterTableAlterAutoUpdate.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AlterTableAlterAutoUpdate) XXX_Merge(src proto.Message) { + xxx_messageInfo_AlterTableAlterAutoUpdate.Merge(m, src) +} +func (m *AlterTableAlterAutoUpdate) XXX_Size() int { + return m.ProtoSize() +} +func (m *AlterTableAlterAutoUpdate) XXX_DiscardUnknown() { + xxx_messageInfo_AlterTableAlterAutoUpdate.DiscardUnknown(m) +} + +var xxx_messageInfo_AlterTableAlterAutoUpdate proto.InternalMessageInfo + +func (m *AlterTableAlterAutoUpdate) GetDbName() string { + if m != nil { + return m.DbName + } + return "" +} + +func (m *AlterTableAlterAutoUpdate) GetTableName() string { + if m != nil { + return m.TableName + } + return "" +} + +func (m *AlterTableAlterAutoUpdate) GetIndexName() string { + if m != nil { + return m.IndexName + } + return "" +} + +func (m *AlterTableAlterAutoUpdate) GetAutoUpdate() bool { + if m != nil { + return m.AutoUpdate + } + return false +} + +func (m *AlterTableAlterAutoUpdate) GetDay() int64 { + if m != nil { + return m.Day + } + return 0 +} + +func (m *AlterTableAlterAutoUpdate) GetHour() int64 { + if m != nil { + return m.Hour + } + return 0 +} + type AlterTableComment struct { NewComment string `protobuf:"bytes,1,opt,name=new_comment,json=newComment,proto3" json:"new_comment,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -10365,7 +10460,7 @@ func (m *AlterTableComment) Reset() { *m = AlterTableComment{} } func (m *AlterTableComment) String() string { return proto.CompactTextString(m) } func (*AlterTableComment) ProtoMessage() {} func (*AlterTableComment) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{96} + return fileDescriptor_2d655ab2f7683c23, []int{97} } func (m *AlterTableComment) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10413,7 +10508,7 @@ func (m *AlterTableName) Reset() { *m = AlterTableName{} } func (m *AlterTableName) String() string { return proto.CompactTextString(m) } func (*AlterTableName) ProtoMessage() {} func (*AlterTableName) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{97} + return fileDescriptor_2d655ab2f7683c23, []int{98} } func (m *AlterTableName) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10470,7 +10565,7 @@ func (m *AlterAddColumn) Reset() { *m = AlterAddColumn{} } func (m *AlterAddColumn) String() string { return proto.CompactTextString(m) } func (*AlterAddColumn) ProtoMessage() {} func (*AlterAddColumn) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{98} + return fileDescriptor_2d655ab2f7683c23, []int{99} } func (m *AlterAddColumn) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10539,7 +10634,7 @@ func (m *AlterDropColumn) Reset() { *m = AlterDropColumn{} } func (m *AlterDropColumn) String() string { return proto.CompactTextString(m) } func (*AlterDropColumn) ProtoMessage() {} func (*AlterDropColumn) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{99} + return fileDescriptor_2d655ab2f7683c23, []int{100} } func (m *AlterDropColumn) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10593,7 +10688,7 @@ func (m *RenameTable) Reset() { *m = RenameTable{} } func (m *RenameTable) String() string { return proto.CompactTextString(m) } func (*RenameTable) ProtoMessage() {} func (*RenameTable) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{100} + return fileDescriptor_2d655ab2f7683c23, []int{101} } func (m *RenameTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10642,7 +10737,7 @@ func (m *AlterVarcharLength) Reset() { *m = AlterVarcharLength{} } func (m *AlterVarcharLength) String() string { return proto.CompactTextString(m) } func (*AlterVarcharLength) ProtoMessage() {} func (*AlterVarcharLength) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{101} + return fileDescriptor_2d655ab2f7683c23, []int{102} } func (m *AlterVarcharLength) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10702,7 +10797,7 @@ func (m *AlterReplaceDef) Reset() { *m = AlterReplaceDef{} } func (m *AlterReplaceDef) String() string { return proto.CompactTextString(m) } func (*AlterReplaceDef) ProtoMessage() {} func (*AlterReplaceDef) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{102} + return fileDescriptor_2d655ab2f7683c23, []int{103} } func (m *AlterReplaceDef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10744,7 +10839,7 @@ func (m *AlterRenameColumn) Reset() { *m = AlterRenameColumn{} } func (m *AlterRenameColumn) String() string { return proto.CompactTextString(m) } func (*AlterRenameColumn) ProtoMessage() {} func (*AlterRenameColumn) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{103} + return fileDescriptor_2d655ab2f7683c23, []int{104} } func (m *AlterRenameColumn) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10808,7 +10903,7 @@ func (m *AlterCopyOpt) Reset() { *m = AlterCopyOpt{} } func (m *AlterCopyOpt) String() string { return proto.CompactTextString(m) } func (*AlterCopyOpt) ProtoMessage() {} func (*AlterCopyOpt) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{104} + return fileDescriptor_2d655ab2f7683c23, []int{105} } func (m *AlterCopyOpt) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10893,7 +10988,7 @@ func (m *AlterTable) Reset() { *m = AlterTable{} } func (m *AlterTable) String() string { return proto.CompactTextString(m) } func (*AlterTable) ProtoMessage() {} func (*AlterTable) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{105} + return fileDescriptor_2d655ab2f7683c23, []int{106} } func (m *AlterTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11042,6 +11137,7 @@ type AlterTable_Action struct { // *AlterTable_Action_AlterVarcharLength // *AlterTable_Action_AlterReplaceDef // *AlterTable_Action_AlterRenameColumn + // *AlterTable_Action_AlterAutoUpdate Action isAlterTable_Action_Action `protobuf_oneof:"action"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -11052,7 +11148,7 @@ func (m *AlterTable_Action) Reset() { *m = AlterTable_Action{} } func (m *AlterTable_Action) String() string { return proto.CompactTextString(m) } func (*AlterTable_Action) ProtoMessage() {} func (*AlterTable_Action) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{105, 0} + return fileDescriptor_2d655ab2f7683c23, []int{106, 0} } func (m *AlterTable_Action) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11123,6 +11219,9 @@ type AlterTable_Action_AlterReplaceDef struct { type AlterTable_Action_AlterRenameColumn struct { AlterRenameColumn *AlterRenameColumn `protobuf:"bytes,12,opt,name=alter_rename_column,json=alterRenameColumn,proto3,oneof" json:"alter_rename_column,omitempty"` } +type AlterTable_Action_AlterAutoUpdate struct { + AlterAutoUpdate *AlterTableAlterAutoUpdate `protobuf:"bytes,13,opt,name=alter_auto_update,json=alterAutoUpdate,proto3,oneof" json:"alter_auto_update,omitempty"` +} func (*AlterTable_Action_Drop) isAlterTable_Action_Action() {} func (*AlterTable_Action_AddFk) isAlterTable_Action_Action() {} @@ -11136,6 +11235,7 @@ func (*AlterTable_Action_AlterReindex) isAlterTable_Action_Action() {} func (*AlterTable_Action_AlterVarcharLength) isAlterTable_Action_Action() {} func (*AlterTable_Action_AlterReplaceDef) isAlterTable_Action_Action() {} func (*AlterTable_Action_AlterRenameColumn) isAlterTable_Action_Action() {} +func (*AlterTable_Action_AlterAutoUpdate) isAlterTable_Action_Action() {} func (m *AlterTable_Action) GetAction() isAlterTable_Action_Action { if m != nil { @@ -11228,6 +11328,13 @@ func (m *AlterTable_Action) GetAlterRenameColumn() *AlterRenameColumn { return nil } +func (m *AlterTable_Action) GetAlterAutoUpdate() *AlterTableAlterAutoUpdate { + if x, ok := m.GetAction().(*AlterTable_Action_AlterAutoUpdate); ok { + return x.AlterAutoUpdate + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*AlterTable_Action) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -11243,6 +11350,7 @@ func (*AlterTable_Action) XXX_OneofWrappers() []interface{} { (*AlterTable_Action_AlterVarcharLength)(nil), (*AlterTable_Action_AlterReplaceDef)(nil), (*AlterTable_Action_AlterRenameColumn)(nil), + (*AlterTable_Action_AlterAutoUpdate)(nil), } } @@ -11270,7 +11378,7 @@ func (m *DropTable) Reset() { *m = DropTable{} } func (m *DropTable) String() string { return proto.CompactTextString(m) } func (*DropTable) ProtoMessage() {} func (*DropTable) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{106} + return fileDescriptor_2d655ab2f7683c23, []int{107} } func (m *DropTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11390,7 +11498,7 @@ func (m *CreateView) Reset() { *m = CreateView{} } func (m *CreateView) String() string { return proto.CompactTextString(m) } func (*CreateView) ProtoMessage() {} func (*CreateView) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{107} + return fileDescriptor_2d655ab2f7683c23, []int{108} } func (m *CreateView) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11460,7 +11568,7 @@ func (m *AlterView) Reset() { *m = AlterView{} } func (m *AlterView) String() string { return proto.CompactTextString(m) } func (*AlterView) ProtoMessage() {} func (*AlterView) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{108} + return fileDescriptor_2d655ab2f7683c23, []int{109} } func (m *AlterView) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11523,7 +11631,7 @@ func (m *CreateSequence) Reset() { *m = CreateSequence{} } func (m *CreateSequence) String() string { return proto.CompactTextString(m) } func (*CreateSequence) ProtoMessage() {} func (*CreateSequence) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{109} + return fileDescriptor_2d655ab2f7683c23, []int{110} } func (m *CreateSequence) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11587,7 +11695,7 @@ func (m *DropSequence) Reset() { *m = DropSequence{} } func (m *DropSequence) String() string { return proto.CompactTextString(m) } func (*DropSequence) ProtoMessage() {} func (*DropSequence) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{110} + return fileDescriptor_2d655ab2f7683c23, []int{111} } func (m *DropSequence) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11657,7 +11765,7 @@ func (m *AlterSequence) Reset() { *m = AlterSequence{} } func (m *AlterSequence) String() string { return proto.CompactTextString(m) } func (*AlterSequence) ProtoMessage() {} func (*AlterSequence) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{111} + return fileDescriptor_2d655ab2f7683c23, []int{112} } func (m *AlterSequence) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11723,7 +11831,7 @@ func (m *CreateIndex) Reset() { *m = CreateIndex{} } func (m *CreateIndex) String() string { return proto.CompactTextString(m) } func (*CreateIndex) ProtoMessage() {} func (*CreateIndex) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{112} + return fileDescriptor_2d655ab2f7683c23, []int{113} } func (m *CreateIndex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11805,7 +11913,7 @@ func (m *AlterIndex) Reset() { *m = AlterIndex{} } func (m *AlterIndex) String() string { return proto.CompactTextString(m) } func (*AlterIndex) ProtoMessage() {} func (*AlterIndex) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{113} + return fileDescriptor_2d655ab2f7683c23, []int{114} } func (m *AlterIndex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11854,7 +11962,7 @@ func (m *DropIndex) Reset() { *m = DropIndex{} } func (m *DropIndex) String() string { return proto.CompactTextString(m) } func (*DropIndex) ProtoMessage() {} func (*DropIndex) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{114} + return fileDescriptor_2d655ab2f7683c23, []int{115} } func (m *DropIndex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11921,7 +12029,7 @@ func (m *TruncateTable) Reset() { *m = TruncateTable{} } func (m *TruncateTable) String() string { return proto.CompactTextString(m) } func (*TruncateTable) ProtoMessage() {} func (*TruncateTable) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{115} + return fileDescriptor_2d655ab2f7683c23, []int{116} } func (m *TruncateTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12012,7 +12120,7 @@ func (m *ClusterTable) Reset() { *m = ClusterTable{} } func (m *ClusterTable) String() string { return proto.CompactTextString(m) } func (*ClusterTable) ProtoMessage() {} func (*ClusterTable) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{116} + return fileDescriptor_2d655ab2f7683c23, []int{117} } func (m *ClusterTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12074,7 +12182,7 @@ func (m *ShowVariables) Reset() { *m = ShowVariables{} } func (m *ShowVariables) String() string { return proto.CompactTextString(m) } func (*ShowVariables) ProtoMessage() {} func (*ShowVariables) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{117} + return fileDescriptor_2d655ab2f7683c23, []int{118} } func (m *ShowVariables) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12128,7 +12236,7 @@ func (m *SetVariables) Reset() { *m = SetVariables{} } func (m *SetVariables) String() string { return proto.CompactTextString(m) } func (*SetVariables) ProtoMessage() {} func (*SetVariables) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{118} + return fileDescriptor_2d655ab2f7683c23, []int{119} } func (m *SetVariables) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12179,7 +12287,7 @@ func (m *SetVariablesItem) Reset() { *m = SetVariablesItem{} } func (m *SetVariablesItem) String() string { return proto.CompactTextString(m) } func (*SetVariablesItem) ProtoMessage() {} func (*SetVariablesItem) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{119} + return fileDescriptor_2d655ab2f7683c23, []int{120} } func (m *SetVariablesItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12257,7 +12365,7 @@ func (m *Prepare) Reset() { *m = Prepare{} } func (m *Prepare) String() string { return proto.CompactTextString(m) } func (*Prepare) ProtoMessage() {} func (*Prepare) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{120} + return fileDescriptor_2d655ab2f7683c23, []int{121} } func (m *Prepare) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12326,7 +12434,7 @@ func (m *Execute) Reset() { *m = Execute{} } func (m *Execute) String() string { return proto.CompactTextString(m) } func (*Execute) ProtoMessage() {} func (*Execute) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{121} + return fileDescriptor_2d655ab2f7683c23, []int{122} } func (m *Execute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12380,7 +12488,7 @@ func (m *Deallocate) Reset() { *m = Deallocate{} } func (m *Deallocate) String() string { return proto.CompactTextString(m) } func (*Deallocate) ProtoMessage() {} func (*Deallocate) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{122} + return fileDescriptor_2d655ab2f7683c23, []int{123} } func (m *Deallocate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12427,7 +12535,7 @@ func (m *OtherDCL) Reset() { *m = OtherDCL{} } func (m *OtherDCL) String() string { return proto.CompactTextString(m) } func (*OtherDCL) ProtoMessage() {} func (*OtherDCL) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{123} + return fileDescriptor_2d655ab2f7683c23, []int{124} } func (m *OtherDCL) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12475,7 +12583,7 @@ func (m *TableLockInfo) Reset() { *m = TableLockInfo{} } func (m *TableLockInfo) String() string { return proto.CompactTextString(m) } func (*TableLockInfo) ProtoMessage() {} func (*TableLockInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{124} + return fileDescriptor_2d655ab2f7683c23, []int{125} } func (m *TableLockInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12529,7 +12637,7 @@ func (m *LockTables) Reset() { *m = LockTables{} } func (m *LockTables) String() string { return proto.CompactTextString(m) } func (*LockTables) ProtoMessage() {} func (*LockTables) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{125} + return fileDescriptor_2d655ab2f7683c23, []int{126} } func (m *LockTables) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12575,7 +12683,7 @@ func (m *UnLockTables) Reset() { *m = UnLockTables{} } func (m *UnLockTables) String() string { return proto.CompactTextString(m) } func (*UnLockTables) ProtoMessage() {} func (*UnLockTables) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{126} + return fileDescriptor_2d655ab2f7683c23, []int{127} } func (m *UnLockTables) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12615,7 +12723,7 @@ func (m *MetadataScanInfos) Reset() { *m = MetadataScanInfos{} } func (m *MetadataScanInfos) String() string { return proto.CompactTextString(m) } func (*MetadataScanInfos) ProtoMessage() {} func (*MetadataScanInfos) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{127} + return fileDescriptor_2d655ab2f7683c23, []int{128} } func (m *MetadataScanInfos) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12672,7 +12780,7 @@ func (m *MetadataScanInfo) Reset() { *m = MetadataScanInfo{} } func (m *MetadataScanInfo) String() string { return proto.CompactTextString(m) } func (*MetadataScanInfo) ProtoMessage() {} func (*MetadataScanInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{128} + return fileDescriptor_2d655ab2f7683c23, []int{129} } func (m *MetadataScanInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12802,7 +12910,7 @@ func (m *CreatePitr) Reset() { *m = CreatePitr{} } func (m *CreatePitr) String() string { return proto.CompactTextString(m) } func (*CreatePitr) ProtoMessage() {} func (*CreatePitr) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{129} + return fileDescriptor_2d655ab2f7683c23, []int{130} } func (m *CreatePitr) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12941,7 +13049,7 @@ func (m *DropPitr) Reset() { *m = DropPitr{} } func (m *DropPitr) String() string { return proto.CompactTextString(m) } func (*DropPitr) ProtoMessage() {} func (*DropPitr) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{130} + return fileDescriptor_2d655ab2f7683c23, []int{131} } func (m *DropPitr) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13004,7 +13112,7 @@ func (m *CreateCDC) Reset() { *m = CreateCDC{} } func (m *CreateCDC) String() string { return proto.CompactTextString(m) } func (*CreateCDC) ProtoMessage() {} func (*CreateCDC) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{131} + return fileDescriptor_2d655ab2f7683c23, []int{132} } func (m *CreateCDC) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13117,7 +13225,7 @@ func (m *DropCDC) Reset() { *m = DropCDC{} } func (m *DropCDC) String() string { return proto.CompactTextString(m) } func (*DropCDC) ProtoMessage() {} func (*DropCDC) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{132} + return fileDescriptor_2d655ab2f7683c23, []int{133} } func (m *DropCDC) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13190,7 +13298,7 @@ func (m *CloneTable) Reset() { *m = CloneTable{} } func (m *CloneTable) String() string { return proto.CompactTextString(m) } func (*CloneTable) ProtoMessage() {} func (*CloneTable) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{133} + return fileDescriptor_2d655ab2f7683c23, []int{134} } func (m *CloneTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13273,7 +13381,7 @@ func (m *AlterPartitionOption) Reset() { *m = AlterPartitionOption{} } func (m *AlterPartitionOption) String() string { return proto.CompactTextString(m) } func (*AlterPartitionOption) ProtoMessage() {} func (*AlterPartitionOption) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{134} + return fileDescriptor_2d655ab2f7683c23, []int{135} } func (m *AlterPartitionOption) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13327,7 +13435,7 @@ func (m *RankOption) Reset() { *m = RankOption{} } func (m *RankOption) String() string { return proto.CompactTextString(m) } func (*RankOption) ProtoMessage() {} func (*RankOption) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{135} + return fileDescriptor_2d655ab2f7683c23, []int{136} } func (m *RankOption) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13494,6 +13602,7 @@ func init() { proto.RegisterType((*AlterTableDropIndex)(nil), "plan.AlterTableDropIndex") proto.RegisterType((*AlterTableAlterIndex)(nil), "plan.AlterTableAlterIndex") proto.RegisterType((*AlterTableAlterReIndex)(nil), "plan.AlterTableAlterReIndex") + proto.RegisterType((*AlterTableAlterAutoUpdate)(nil), "plan.AlterTableAlterAutoUpdate") proto.RegisterType((*AlterTableComment)(nil), "plan.AlterTableComment") proto.RegisterType((*AlterTableName)(nil), "plan.AlterTableName") proto.RegisterType((*AlterAddColumn)(nil), "plan.AlterAddColumn") @@ -13543,816 +13652,822 @@ func init() { func init() { proto.RegisterFile("plan.proto", fileDescriptor_2d655ab2f7683c23) } var fileDescriptor_2d655ab2f7683c23 = []byte{ - // 12940 bytes of a gzipped FileDescriptorProto + // 13026 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0xbd, 0x5d, 0x6c, 0x1b, 0x59, 0x96, 0x18, 0x2c, 0x8a, 0xa4, 0x48, 0x1e, 0x52, 0x54, 0xe9, 0x5a, 0xb6, 0x69, 0xb7, 0xdb, 0x56, 0x97, 0xdd, 0x6e, 0xb7, 0xbb, 0xdb, 0xdd, 0x6d, 0xf7, 0x8f, 0x7b, 0x76, 0x66, 0x67, 0x28, 0x92, 0xb2, 0x38, 0xa6, 0x48, 0x4d, 0x91, 0xb2, 0xbb, 0x67, 0xbf, 0x45, 0xa1, 0xc8, 0x2a, 0x4a, 0xd5, 0x2a, 0x56, 0xb1, 0xab, 0x8a, 0x96, 0x34, 0xc0, 0xe2, 0x1b, 0x7c, 0x1f, 0xb0, 0x3f, 0xdf, 0x87, - 0x3c, 0x05, 0xbb, 0xc9, 0x43, 0x16, 0x98, 0x2c, 0x10, 0x24, 0x08, 0x36, 0x40, 0x12, 0x2c, 0xb0, - 0x9b, 0xe7, 0xbc, 0x6c, 0x12, 0xec, 0x26, 0x40, 0x80, 0x04, 0x49, 0x80, 0x4d, 0x30, 0x41, 0x1e, - 0x83, 0x24, 0x48, 0xde, 0x13, 0x9c, 0x73, 0x6f, 0x55, 0xdd, 0x22, 0x29, 0xbb, 0xbb, 0x67, 0x16, - 0x48, 0x5e, 0x24, 0xde, 0xf3, 0x73, 0xff, 0xef, 0xb9, 0xe7, 0x9c, 0x7b, 0xee, 0x2d, 0x80, 0xa9, - 0x63, 0xb8, 0x0f, 0xa6, 0xbe, 0x17, 0x7a, 0x2c, 0x87, 0xbf, 0xaf, 0xbf, 0x77, 0x64, 0x87, 0xc7, - 0xb3, 0xe1, 0x83, 0x91, 0x37, 0x79, 0xff, 0xc8, 0x3b, 0xf2, 0xde, 0x27, 0xe4, 0x70, 0x36, 0xa6, - 0x14, 0x25, 0xe8, 0x17, 0x67, 0xba, 0x0e, 0x8e, 0x37, 0x3a, 0x11, 0xbf, 0x37, 0x42, 0x7b, 0x62, - 0x05, 0xa1, 0x31, 0x99, 0x72, 0x80, 0xfa, 0xc7, 0x19, 0xc8, 0x0d, 0xce, 0xa7, 0x16, 0xab, 0xc2, - 0xaa, 0x6d, 0xd6, 0x32, 0xdb, 0x99, 0x7b, 0x79, 0x6d, 0xd5, 0x36, 0xd9, 0x36, 0x94, 0x5d, 0x2f, - 0xec, 0xce, 0x1c, 0xc7, 0x18, 0x3a, 0x56, 0x6d, 0x75, 0x3b, 0x73, 0xaf, 0xa8, 0xc9, 0x20, 0xf6, - 0x1a, 0x94, 0x8c, 0x59, 0xe8, 0xe9, 0xb6, 0x3b, 0xf2, 0x6b, 0x59, 0xc2, 0x17, 0x11, 0xd0, 0x76, - 0x47, 0x3e, 0xdb, 0x82, 0xfc, 0xa9, 0x6d, 0x86, 0xc7, 0xb5, 0x1c, 0xe5, 0xc8, 0x13, 0x08, 0x0d, - 0x46, 0x86, 0x63, 0xd5, 0xf2, 0x1c, 0x4a, 0x09, 0x84, 0x86, 0x54, 0xc8, 0xda, 0x76, 0xe6, 0x5e, - 0x49, 0xe3, 0x09, 0x76, 0x13, 0xc0, 0x72, 0x67, 0x93, 0x17, 0x86, 0x33, 0xb3, 0x82, 0x5a, 0x81, - 0x50, 0x12, 0x44, 0xfd, 0x3e, 0x94, 0x26, 0xc1, 0xd1, 0x9e, 0x65, 0x98, 0x96, 0xcf, 0xae, 0x42, - 0x61, 0x12, 0x1c, 0xe9, 0xa1, 0x71, 0x24, 0x9a, 0xb0, 0x36, 0x09, 0x8e, 0x06, 0xc6, 0x11, 0xbb, - 0x06, 0x45, 0x42, 0x9c, 0x4f, 0x79, 0x1b, 0xf2, 0x1a, 0x12, 0x62, 0x8b, 0xd5, 0xdf, 0x59, 0x83, - 0x42, 0xc7, 0x0e, 0x2d, 0xdf, 0x70, 0xd8, 0x15, 0x58, 0xb3, 0x03, 0x77, 0xe6, 0x38, 0xc4, 0x5e, - 0xd4, 0x44, 0x8a, 0x5d, 0x81, 0xbc, 0xfd, 0xf8, 0x85, 0xe1, 0x70, 0xde, 0xbd, 0x15, 0x8d, 0x27, - 0x59, 0x0d, 0xd6, 0xec, 0x0f, 0x3f, 0x41, 0x44, 0x56, 0x20, 0x44, 0x9a, 0x30, 0x8f, 0x1e, 0x22, - 0x26, 0x17, 0x63, 0x28, 0x4d, 0x98, 0x4f, 0x3e, 0x42, 0x0c, 0xb6, 0x3e, 0x4b, 0x18, 0x4a, 0x63, - 0x29, 0x33, 0x2a, 0x05, 0x3b, 0x60, 0x1d, 0x4b, 0x99, 0x45, 0xa5, 0xcc, 0x78, 0x29, 0x05, 0x81, - 0x10, 0x69, 0xc2, 0xf0, 0x52, 0x8a, 0x31, 0x26, 0x2e, 0x65, 0xc6, 0x4b, 0x29, 0x6d, 0x67, 0xee, - 0xe5, 0x08, 0xc3, 0x4b, 0xd9, 0x82, 0x9c, 0x89, 0x70, 0xd8, 0xce, 0xdc, 0xcb, 0xec, 0xad, 0x68, - 0x94, 0x42, 0x68, 0x80, 0xd0, 0x32, 0x76, 0x30, 0x42, 0x03, 0x01, 0x1d, 0x22, 0xb4, 0x82, 0xbd, - 0x81, 0xd0, 0xa1, 0x80, 0x8e, 0x11, 0xba, 0xbe, 0x9d, 0xb9, 0xb7, 0x8a, 0x50, 0x4c, 0xb1, 0xeb, - 0x50, 0x30, 0x8d, 0xd0, 0x42, 0x44, 0x55, 0x34, 0x39, 0x02, 0x20, 0x0e, 0x67, 0x1c, 0xe2, 0x36, - 0x44, 0xa3, 0x23, 0x00, 0x53, 0xa1, 0x8c, 0x64, 0x11, 0x5e, 0x11, 0x78, 0x19, 0xc8, 0x3e, 0x86, - 0x8a, 0x69, 0x8d, 0xec, 0x89, 0xe1, 0xf0, 0x36, 0x6d, 0x6e, 0x67, 0xee, 0x95, 0x1f, 0x6e, 0x3c, - 0xa0, 0x35, 0x11, 0x63, 0xf6, 0x56, 0xb4, 0x14, 0x19, 0x7b, 0x0c, 0xeb, 0x22, 0xfd, 0xe1, 0x43, - 0xea, 0x58, 0x46, 0x7c, 0x4a, 0x8a, 0xef, 0xc3, 0x87, 0x8f, 0xf7, 0x56, 0xb4, 0x34, 0x21, 0xbb, - 0x03, 0x95, 0x78, 0x89, 0x20, 0xe3, 0x25, 0x51, 0xab, 0x14, 0x14, 0x9b, 0xf5, 0x65, 0xe0, 0xb9, - 0x48, 0xb0, 0x25, 0xfa, 0x2d, 0x02, 0xb0, 0x6d, 0x00, 0xd3, 0x1a, 0x1b, 0x33, 0x27, 0x44, 0xf4, - 0x65, 0xd1, 0x81, 0x12, 0x8c, 0xdd, 0x84, 0xd2, 0x6c, 0x8a, 0xad, 0x7c, 0x66, 0x38, 0xb5, 0x2b, - 0x82, 0x20, 0x01, 0x61, 0xee, 0x38, 0xcf, 0x11, 0x7b, 0x55, 0x8c, 0x6e, 0x04, 0xc0, 0xe1, 0x7d, - 0x61, 0x8d, 0x10, 0x55, 0x13, 0x05, 0x8b, 0x34, 0xae, 0x22, 0x3b, 0xd8, 0xb1, 0xdd, 0xda, 0x35, - 0x9a, 0xc1, 0x3c, 0xc1, 0x6e, 0x40, 0x36, 0xf0, 0x47, 0xb5, 0xeb, 0xd4, 0x7e, 0xe0, 0xed, 0x6f, - 0x9d, 0x4d, 0x7d, 0x0d, 0xc1, 0x3b, 0x05, 0xc8, 0xd3, 0x6a, 0x52, 0x6f, 0x40, 0xf1, 0xc0, 0xf0, - 0x8d, 0x89, 0x66, 0x8d, 0x99, 0x02, 0xd9, 0xa9, 0x17, 0x88, 0x75, 0x84, 0x3f, 0xd5, 0x0e, 0xac, - 0x3d, 0x33, 0x7c, 0xc4, 0x31, 0xc8, 0xb9, 0xc6, 0xc4, 0x22, 0x64, 0x49, 0xa3, 0xdf, 0xb8, 0x76, - 0x82, 0xf3, 0x20, 0xb4, 0x26, 0x42, 0x48, 0x88, 0x14, 0xc2, 0x8f, 0x1c, 0x6f, 0x28, 0xd6, 0x48, - 0x51, 0x13, 0x29, 0xf5, 0xff, 0xc9, 0xc0, 0x5a, 0xc3, 0x73, 0x30, 0xbb, 0xab, 0x50, 0xf0, 0x2d, - 0x47, 0x4f, 0x8a, 0x5b, 0xf3, 0x2d, 0xe7, 0xc0, 0x0b, 0x10, 0x31, 0xf2, 0x38, 0x82, 0xaf, 0xda, - 0xb5, 0x91, 0x47, 0x88, 0xa8, 0x02, 0x59, 0xa9, 0x02, 0xd7, 0xa0, 0x18, 0x0e, 0x1d, 0x9d, 0xe0, - 0x39, 0x82, 0x17, 0xc2, 0xa1, 0xd3, 0x45, 0xd4, 0x55, 0x28, 0x98, 0x43, 0x8e, 0xc9, 0x13, 0x66, - 0xcd, 0x1c, 0x22, 0x42, 0xfd, 0x0c, 0x4a, 0x9a, 0x71, 0x2a, 0xaa, 0x71, 0x19, 0xd6, 0x30, 0x03, - 0x21, 0xff, 0x72, 0x5a, 0x3e, 0x1c, 0x3a, 0x6d, 0x13, 0xc1, 0x58, 0x09, 0xdb, 0xa4, 0x3a, 0xe4, - 0xb4, 0xfc, 0xc8, 0x73, 0xda, 0xa6, 0x3a, 0x00, 0x68, 0x78, 0xbe, 0xff, 0xad, 0x9b, 0xb0, 0x05, - 0x79, 0xd3, 0x9a, 0x86, 0xc7, 0x5c, 0x74, 0x68, 0x3c, 0xa1, 0xde, 0x87, 0x22, 0x8e, 0x4b, 0xc7, - 0x0e, 0x42, 0x76, 0x13, 0x72, 0x8e, 0x1d, 0x84, 0xb5, 0xcc, 0x76, 0x76, 0x6e, 0xd4, 0x08, 0xae, - 0x6e, 0x43, 0x71, 0xdf, 0x38, 0x7b, 0x86, 0x23, 0x87, 0xb9, 0xd1, 0x10, 0x8a, 0x21, 0x11, 0xe3, - 0x59, 0x01, 0x18, 0x18, 0xfe, 0x91, 0x15, 0x92, 0xa4, 0xfb, 0xef, 0x19, 0x28, 0xf7, 0x67, 0xc3, - 0xaf, 0x66, 0x96, 0x7f, 0x8e, 0x75, 0xbe, 0x07, 0xd9, 0xf0, 0x7c, 0x4a, 0x1c, 0xd5, 0x87, 0x57, - 0x78, 0xf6, 0x12, 0xfe, 0x01, 0x32, 0x69, 0x48, 0x82, 0x8d, 0x70, 0x3d, 0xd3, 0x8a, 0xfa, 0x20, - 0xaf, 0xad, 0x61, 0xb2, 0x6d, 0xe2, 0x76, 0xe1, 0x4d, 0xc5, 0x28, 0xac, 0x7a, 0x53, 0xb6, 0x0d, - 0xf9, 0xd1, 0xb1, 0xed, 0x98, 0x34, 0x00, 0xe9, 0x3a, 0x73, 0x04, 0x8e, 0x92, 0xef, 0x9d, 0xea, - 0x81, 0xfd, 0x93, 0x48, 0xfc, 0x17, 0x7c, 0xef, 0xb4, 0x6f, 0xff, 0xc4, 0x52, 0x07, 0x62, 0x0f, - 0x02, 0x58, 0xeb, 0x37, 0xea, 0x9d, 0xba, 0xa6, 0xac, 0xe0, 0xef, 0xd6, 0xe7, 0xed, 0xfe, 0xa0, - 0xaf, 0x64, 0x58, 0x15, 0xa0, 0xdb, 0x1b, 0xe8, 0x22, 0xbd, 0xca, 0xd6, 0x60, 0xb5, 0xdd, 0x55, - 0xb2, 0x48, 0x83, 0xf0, 0x76, 0x57, 0xc9, 0xb1, 0x02, 0x64, 0xeb, 0xdd, 0x2f, 0x94, 0x3c, 0xfd, - 0xe8, 0x74, 0x94, 0x35, 0xf5, 0xcf, 0x57, 0xa1, 0xd4, 0x1b, 0x7e, 0x69, 0x8d, 0x42, 0x6c, 0x33, - 0xce, 0x52, 0xcb, 0x7f, 0x61, 0xf9, 0xd4, 0xec, 0xac, 0x26, 0x52, 0xd8, 0x10, 0x73, 0x48, 0x8d, - 0xcb, 0x6a, 0xab, 0xe6, 0x90, 0xe8, 0x46, 0xc7, 0xd6, 0xc4, 0xa0, 0xc6, 0x21, 0x1d, 0xa5, 0x70, - 0x55, 0x78, 0xc3, 0x2f, 0xa9, 0x79, 0x59, 0x0d, 0x7f, 0xb2, 0x5b, 0x50, 0xe6, 0x79, 0xc8, 0xf3, - 0x0b, 0x38, 0x68, 0x7e, 0xf2, 0xad, 0xc9, 0x93, 0x8f, 0x38, 0x29, 0x57, 0x8e, 0x14, 0x7b, 0x1b, - 0x07, 0x75, 0xc5, 0x8c, 0xf6, 0x86, 0x5f, 0x72, 0x6c, 0x91, 0xcf, 0x68, 0x6f, 0xf8, 0x25, 0xa1, - 0xde, 0x81, 0xcd, 0x60, 0x36, 0x0c, 0x46, 0xbe, 0x3d, 0x0d, 0x6d, 0xcf, 0xe5, 0x34, 0x25, 0xa2, - 0x51, 0x64, 0x04, 0x11, 0xdf, 0x83, 0xe2, 0x74, 0x36, 0xd4, 0x6d, 0x77, 0xec, 0x91, 0xd8, 0x2f, - 0x3f, 0x5c, 0xe7, 0x03, 0x73, 0x30, 0x1b, 0xb6, 0xdd, 0xb1, 0xa7, 0x15, 0xa6, 0xfc, 0x07, 0x53, - 0x61, 0xdd, 0xf5, 0x42, 0x1d, 0x55, 0x05, 0x7d, 0x62, 0x85, 0x06, 0xed, 0x07, 0x7c, 0xc3, 0xef, - 0x78, 0xa3, 0x93, 0x7d, 0x2b, 0x34, 0xd4, 0xbb, 0x50, 0x10, 0x7c, 0xb8, 0xf7, 0x87, 0x96, 0x6b, - 0xb8, 0xa1, 0x1e, 0x2b, 0x0d, 0x45, 0x0e, 0x68, 0x9b, 0xea, 0x1f, 0x65, 0x40, 0xe9, 0x4b, 0x55, - 0x41, 0xe6, 0xa5, 0x92, 0xe3, 0x75, 0x00, 0x63, 0x34, 0xf2, 0x66, 0x3c, 0x1b, 0x3e, 0xc1, 0x4a, - 0x02, 0xd2, 0x36, 0xe5, 0xfe, 0xcb, 0xa6, 0xfa, 0xef, 0x0d, 0xa8, 0x44, 0x7c, 0xd2, 0xa2, 0x2f, - 0x0b, 0x58, 0xd4, 0x83, 0xc1, 0x2c, 0xb5, 0xf2, 0x0b, 0xc1, 0x8c, 0x73, 0x5f, 0x81, 0x35, 0xd2, - 0x30, 0x82, 0x68, 0x54, 0x78, 0x4a, 0xfd, 0xd7, 0x19, 0x58, 0x6f, 0xbb, 0xa6, 0x75, 0xd6, 0x1f, - 0x19, 0x6e, 0xd4, 0x29, 0x76, 0xa0, 0xdb, 0x08, 0xd3, 0x83, 0x91, 0xe1, 0x0a, 0xe5, 0xa0, 0x6c, - 0x07, 0x31, 0x1d, 0xb6, 0x81, 0x13, 0x50, 0x51, 0xab, 0x94, 0x63, 0x89, 0x20, 0x54, 0xd8, 0x5d, - 0xd8, 0x18, 0x5a, 0x8e, 0xe7, 0x1e, 0xe9, 0xa1, 0xa7, 0x73, 0x2d, 0x87, 0xb7, 0x65, 0x9d, 0x83, - 0x07, 0xde, 0x80, 0xb4, 0x9d, 0x2d, 0xc8, 0x4f, 0x0d, 0x3f, 0x0c, 0x6a, 0xb9, 0xed, 0x2c, 0x2e, - 0x63, 0x4a, 0x60, 0x37, 0xdb, 0x81, 0x3e, 0x73, 0xed, 0xaf, 0x66, 0xbc, 0x19, 0x45, 0xad, 0x68, - 0x07, 0x87, 0x94, 0x66, 0xf7, 0x40, 0xe1, 0x25, 0x53, 0xb6, 0xf2, 0x3c, 0xab, 0x12, 0x9c, 0x32, - 0x26, 0x61, 0xf7, 0xff, 0xad, 0x42, 0x71, 0x77, 0xe6, 0x8e, 0x70, 0x30, 0xd8, 0x6d, 0xc8, 0x8d, - 0x67, 0xee, 0x88, 0xda, 0x12, 0x6f, 0xa5, 0xf1, 0x3a, 0xd1, 0x08, 0x89, 0x12, 0xc8, 0xf0, 0x8f, - 0x50, 0x72, 0x2d, 0x48, 0x20, 0x84, 0xab, 0x7f, 0x92, 0xe1, 0x39, 0xee, 0x3a, 0xc6, 0x11, 0x2b, - 0x42, 0xae, 0xdb, 0xeb, 0xb6, 0x94, 0x15, 0x56, 0x81, 0x62, 0xbb, 0x3b, 0x68, 0x69, 0xdd, 0x7a, - 0x47, 0xc9, 0xd0, 0x72, 0x1e, 0xd4, 0x77, 0x3a, 0x2d, 0x65, 0x15, 0x31, 0xcf, 0x7a, 0x9d, 0xfa, - 0xa0, 0xdd, 0x69, 0x29, 0x39, 0x8e, 0xd1, 0xda, 0x8d, 0x81, 0x52, 0x64, 0x0a, 0x54, 0x0e, 0xb4, - 0x5e, 0xf3, 0xb0, 0xd1, 0xd2, 0xbb, 0x87, 0x9d, 0x8e, 0xa2, 0xb0, 0x4b, 0xb0, 0x11, 0x43, 0x7a, - 0x1c, 0xb8, 0x8d, 0x2c, 0xcf, 0xea, 0x5a, 0x5d, 0x7b, 0xa2, 0xfc, 0x80, 0x15, 0x21, 0x5b, 0x7f, - 0xf2, 0x44, 0xf9, 0x29, 0x4a, 0x86, 0xd2, 0xf3, 0x76, 0x57, 0x7f, 0x56, 0xef, 0x1c, 0xb6, 0x94, - 0x9f, 0xae, 0x46, 0xe9, 0x9e, 0xd6, 0x6c, 0x69, 0xca, 0x4f, 0x73, 0x6c, 0x13, 0x2a, 0x3f, 0xee, - 0x75, 0x5b, 0xfb, 0xf5, 0x83, 0x03, 0xaa, 0xc8, 0x4f, 0x8b, 0xea, 0x7f, 0xce, 0x41, 0x0e, 0x5b, - 0xc2, 0xd4, 0x44, 0x0a, 0xc6, 0x4d, 0x44, 0x31, 0xb4, 0x93, 0xfb, 0xd3, 0xbf, 0xb8, 0xb5, 0xc2, - 0xe5, 0xdf, 0x1b, 0x90, 0x75, 0xec, 0x90, 0x86, 0x35, 0x5e, 0x3b, 0x42, 0x67, 0xdc, 0x5b, 0xd1, - 0x10, 0xc7, 0x6e, 0x42, 0x86, 0x0b, 0xc2, 0xf2, 0xc3, 0xaa, 0x58, 0x5c, 0x62, 0x27, 0xdd, 0x5b, - 0xd1, 0x32, 0x53, 0x76, 0x03, 0x32, 0x2f, 0x84, 0x54, 0xac, 0x70, 0x3c, 0xdf, 0x4b, 0x11, 0xfb, - 0x82, 0x6d, 0x43, 0x76, 0xe4, 0x71, 0x8d, 0x30, 0xc6, 0xf3, 0x9d, 0x05, 0xf3, 0x1f, 0x79, 0x0e, - 0xbb, 0x0d, 0x59, 0xdf, 0x38, 0xa5, 0x91, 0x8d, 0x87, 0x2b, 0xde, 0xba, 0x90, 0xc8, 0x37, 0x4e, - 0xb1, 0x12, 0x63, 0x92, 0x23, 0x71, 0x25, 0xa2, 0xf1, 0xc6, 0x62, 0xc6, 0x6c, 0x1b, 0x32, 0xa7, - 0x24, 0x49, 0x62, 0x25, 0xe8, 0xb9, 0xed, 0x9a, 0xde, 0x69, 0x7f, 0x6a, 0x8d, 0x90, 0xe2, 0x94, - 0xbd, 0x09, 0xd9, 0x60, 0x36, 0x24, 0x49, 0x52, 0x7e, 0xb8, 0xb9, 0xb0, 0x27, 0x60, 0x41, 0xc1, - 0x6c, 0xc8, 0xee, 0x42, 0x6e, 0xe4, 0xf9, 0xbe, 0x90, 0x26, 0x4a, 0x54, 0xe1, 0x68, 0x3b, 0x44, - 0xa5, 0x10, 0xf1, 0x58, 0x60, 0x48, 0x32, 0x24, 0x26, 0x4a, 0xf6, 0x23, 0x2c, 0x30, 0x64, 0x77, - 0xc4, 0x26, 0x57, 0x91, 0x6b, 0x1d, 0x6d, 0x81, 0x98, 0x0f, 0x62, 0x71, 0x90, 0x26, 0xc6, 0x19, - 0x69, 0x9c, 0x31, 0x51, 0xb4, 0xf7, 0x61, 0x9d, 0x26, 0xc6, 0x19, 0xbb, 0x03, 0xd9, 0x17, 0xd6, - 0x88, 0x94, 0xcf, 0xb8, 0x34, 0x31, 0x48, 0xcf, 0xa8, 0x79, 0x88, 0xa6, 0x79, 0xef, 0x39, 0x26, - 0xe9, 0xa1, 0xf1, 0x58, 0xee, 0x7a, 0x8e, 0xf9, 0x8c, 0xc6, 0x92, 0x90, 0xb8, 0xe5, 0x1b, 0xb3, - 0x33, 0x94, 0x46, 0x0a, 0xdf, 0x9c, 0x8d, 0xd9, 0x59, 0xdb, 0x44, 0xe1, 0xef, 0x9a, 0x2f, 0x48, - 0xfb, 0xcc, 0x68, 0xf8, 0x13, 0xcd, 0xa3, 0xc0, 0x72, 0xac, 0x51, 0x68, 0xbf, 0xb0, 0xc3, 0x73, - 0xd2, 0x2f, 0x33, 0x9a, 0x0c, 0xda, 0x59, 0x83, 0x9c, 0x75, 0x36, 0xf5, 0xd5, 0x3d, 0x28, 0x88, - 0x52, 0x16, 0x6c, 0xac, 0x6b, 0x50, 0xb4, 0x03, 0x7d, 0xe4, 0xb9, 0x41, 0x28, 0x74, 0xa7, 0x82, - 0x1d, 0x34, 0x30, 0x89, 0xe2, 0xd2, 0x34, 0x42, 0xbe, 0x09, 0x55, 0x34, 0xfa, 0xad, 0x3e, 0x04, - 0x48, 0x9a, 0x85, 0x75, 0x72, 0x2c, 0x37, 0x52, 0xd3, 0x1c, 0xcb, 0x8d, 0x79, 0x56, 0x25, 0x9e, - 0x6b, 0x50, 0x8a, 0x35, 0x63, 0x56, 0x81, 0x8c, 0x21, 0xb6, 0xbf, 0x8c, 0xa1, 0xde, 0x43, 0x45, - 0x35, 0xd2, 0x7d, 0xd3, 0x38, 0x4c, 0x45, 0x9b, 0x62, 0x66, 0xa8, 0x7e, 0x17, 0x2a, 0x9a, 0x15, - 0xcc, 0x9c, 0xb0, 0xe1, 0x39, 0x4d, 0x6b, 0xcc, 0xde, 0x05, 0x88, 0xd3, 0x81, 0xd0, 0x52, 0x92, - 0xb9, 0xdb, 0xb4, 0xc6, 0x9a, 0x84, 0x57, 0xff, 0x4e, 0x8e, 0xf4, 0xbd, 0x26, 0x57, 0xb4, 0x84, - 0x46, 0x95, 0x91, 0x34, 0xaa, 0x78, 0x6f, 0x58, 0x4d, 0x6b, 0x95, 0xc7, 0xb6, 0x69, 0x5a, 0x6e, - 0xa4, 0x3d, 0xf2, 0x14, 0x0e, 0xb6, 0xe1, 0x1c, 0xd1, 0x82, 0xaa, 0x3e, 0x64, 0x51, 0xa1, 0x93, - 0xa9, 0x6f, 0x05, 0x01, 0xd7, 0x5b, 0x0c, 0xe7, 0x28, 0x5a, 0xdb, 0xf9, 0x97, 0xad, 0xed, 0x6b, - 0x50, 0xc4, 0x2d, 0x8f, 0xac, 0xbe, 0x35, 0xde, 0xfb, 0xc2, 0xbc, 0x65, 0x6f, 0x41, 0x41, 0xe8, - 0xeb, 0x62, 0x51, 0x89, 0xe9, 0xd2, 0xe4, 0x40, 0x2d, 0xc2, 0xb2, 0x1a, 0x2a, 0x79, 0x93, 0x89, - 0xe5, 0x86, 0xd1, 0x3e, 0x2d, 0x92, 0xec, 0x1d, 0x28, 0x79, 0xae, 0xce, 0x95, 0x7a, 0xb1, 0xaa, - 0xc4, 0xf4, 0xed, 0xb9, 0x87, 0x04, 0xd5, 0x8a, 0x9e, 0xf8, 0x85, 0x55, 0x71, 0xbc, 0x53, 0x7d, - 0x64, 0xf8, 0x26, 0xad, 0xac, 0xa2, 0x56, 0x70, 0xbc, 0xd3, 0x86, 0xe1, 0x9b, 0x5c, 0x6f, 0xf9, - 0xca, 0x9d, 0x4d, 0x68, 0x35, 0xad, 0x6b, 0x22, 0xc5, 0x6e, 0x40, 0x69, 0xe4, 0xcc, 0x82, 0xd0, - 0xf2, 0x77, 0xce, 0xb9, 0x99, 0xa6, 0x25, 0x00, 0xac, 0xd7, 0xd4, 0xb7, 0x27, 0x86, 0x7f, 0x4e, - 0x4b, 0xa7, 0xa8, 0x45, 0x49, 0xda, 0x68, 0x4e, 0x6c, 0xf3, 0x8c, 0xdb, 0x6a, 0x1a, 0x4f, 0x20, - 0xfd, 0x31, 0x59, 0xd2, 0x01, 0xad, 0x8f, 0xa2, 0x16, 0x25, 0x69, 0x1c, 0xe8, 0x27, 0xad, 0x88, - 0x92, 0x26, 0x52, 0x29, 0xa5, 0x7b, 0xf3, 0x42, 0xa5, 0x9b, 0xcd, 0xeb, 0x3d, 0x9e, 0x6f, 0x1f, - 0xd9, 0x42, 0x6b, 0xb9, 0xc4, 0xf5, 0x1e, 0x0e, 0xa2, 0x8d, 0xea, 0x2b, 0x28, 0x88, 0x2e, 0xc6, - 0x1d, 0x08, 0x97, 0x4f, 0x5a, 0x3c, 0xf3, 0x1d, 0x08, 0xe1, 0xec, 0x36, 0xac, 0x8b, 0xbc, 0x82, - 0xd0, 0xb7, 0xdd, 0x23, 0x31, 0x79, 0x2a, 0x1c, 0xd8, 0x27, 0x18, 0x2a, 0x0a, 0x38, 0xbc, 0xba, - 0x31, 0xb4, 0x1d, 0x5c, 0xa6, 0x59, 0xa1, 0xd4, 0xcc, 0x1c, 0xa7, 0xce, 0x41, 0x6a, 0x0f, 0x8a, - 0xd1, 0x80, 0xfc, 0x52, 0xca, 0x54, 0x7f, 0x33, 0x03, 0x65, 0x52, 0x0f, 0x7a, 0xa4, 0xfc, 0xb0, - 0x77, 0x81, 0x8d, 0x7c, 0xcb, 0x08, 0x2d, 0xdd, 0x3a, 0x0b, 0x7d, 0x43, 0x28, 0x01, 0x5c, 0x93, - 0x50, 0x38, 0xa6, 0x85, 0x08, 0xae, 0x07, 0xdc, 0x82, 0xf2, 0xd4, 0xf0, 0x83, 0x48, 0xa9, 0xe4, - 0x05, 0x00, 0x07, 0x09, 0x95, 0x4e, 0x71, 0x8f, 0x7c, 0x63, 0xa2, 0x87, 0xde, 0x89, 0xe5, 0x72, - 0x75, 0x9a, 0x1b, 0x12, 0x55, 0x82, 0x0f, 0x10, 0x4c, 0x5a, 0xf5, 0xbf, 0xcd, 0xc0, 0xfa, 0x01, - 0x1f, 0xf5, 0xa7, 0xd6, 0x79, 0x93, 0x5b, 0x6f, 0xa3, 0x68, 0xc5, 0xe6, 0x34, 0xfa, 0xcd, 0x6e, - 0x42, 0x79, 0x7a, 0x62, 0x9d, 0xeb, 0x29, 0x4b, 0xa7, 0x84, 0xa0, 0x06, 0xad, 0xcd, 0xb7, 0x61, - 0xcd, 0xa3, 0x86, 0x88, 0x3d, 0x4e, 0x6c, 0x0d, 0x52, 0x0b, 0x35, 0x41, 0x80, 0xea, 0x52, 0x9c, - 0x95, 0xac, 0x97, 0x89, 0xcc, 0xa8, 0xfa, 0x5b, 0x90, 0x47, 0x54, 0x50, 0xcb, 0x73, 0x3d, 0x87, - 0x12, 0xec, 0x03, 0x58, 0x1f, 0x79, 0x93, 0xa9, 0x1e, 0xb1, 0x8b, 0xdd, 0x2e, 0x2d, 0x53, 0xca, - 0x48, 0x72, 0xc0, 0xf3, 0x52, 0x7f, 0x2f, 0x0b, 0x45, 0xaa, 0x83, 0x10, 0x2b, 0xb6, 0x79, 0x16, - 0x89, 0x95, 0x92, 0x96, 0xb7, 0x4d, 0x94, 0xda, 0xaf, 0x50, 0xcd, 0x62, 0x95, 0x2b, 0x2b, 0xab, - 0x5c, 0x57, 0x60, 0x4d, 0xe8, 0x5b, 0x39, 0x2e, 0x77, 0x66, 0x17, 0x6b, 0x5b, 0xf9, 0x65, 0xda, - 0x16, 0x0e, 0x21, 0xa7, 0xb1, 0xce, 0x70, 0x7f, 0xe3, 0xa2, 0x05, 0x08, 0xd4, 0x42, 0x88, 0x2c, - 0x34, 0x0a, 0x69, 0xa1, 0x51, 0x83, 0xc2, 0x0b, 0x3b, 0xb0, 0x71, 0x82, 0x14, 0xf9, 0x32, 0x14, - 0x49, 0x69, 0x18, 0x4a, 0xaf, 0x1a, 0x86, 0xb8, 0xd9, 0x86, 0x73, 0xc4, 0xd5, 0xfe, 0xa8, 0xd9, - 0x75, 0xe7, 0xc8, 0x63, 0x1f, 0xc2, 0xe5, 0x04, 0x2d, 0x5a, 0x43, 0xee, 0x31, 0xf2, 0x00, 0x69, - 0x2c, 0xa6, 0xa4, 0x16, 0x91, 0x5d, 0x76, 0x1f, 0x36, 0x25, 0x96, 0x29, 0xaa, 0x37, 0x01, 0xc9, - 0x9c, 0x92, 0xb6, 0x11, 0x93, 0x93, 0xd6, 0x13, 0xa8, 0xff, 0x64, 0x15, 0xd6, 0x77, 0x3d, 0xdf, - 0xb2, 0x8f, 0xdc, 0x64, 0xd6, 0x2d, 0x68, 0xfe, 0xd1, 0x4c, 0x5c, 0x95, 0x66, 0xe2, 0x2d, 0x28, - 0x8f, 0x39, 0xa3, 0x1e, 0x0e, 0xb9, 0xd3, 0x20, 0xa7, 0x81, 0x00, 0x0d, 0x86, 0x0e, 0xae, 0xe6, - 0x88, 0x80, 0x98, 0x73, 0xc4, 0x1c, 0x31, 0xe1, 0x5e, 0xc3, 0xbe, 0x43, 0x52, 0xd7, 0xb4, 0x1c, - 0x2b, 0xe4, 0xc3, 0x53, 0x7d, 0xf8, 0x7a, 0xb4, 0xd3, 0x4b, 0x75, 0x7a, 0xa0, 0x59, 0xe3, 0x3a, - 0xa9, 0x47, 0x28, 0x84, 0x9b, 0x44, 0x2e, 0x78, 0x85, 0xc4, 0x5e, 0xfb, 0x9a, 0xbc, 0x5c, 0x72, - 0xa8, 0x03, 0x28, 0xc5, 0x60, 0xd4, 0x75, 0xb5, 0x96, 0xd0, 0x6f, 0x57, 0x58, 0x19, 0x0a, 0x8d, - 0x7a, 0xbf, 0x51, 0x6f, 0xb6, 0x94, 0x0c, 0xa2, 0xfa, 0xad, 0x01, 0xd7, 0x69, 0x57, 0xd9, 0x06, - 0x94, 0x31, 0xd5, 0x6c, 0xed, 0xd6, 0x0f, 0x3b, 0x03, 0x25, 0xcb, 0xd6, 0xa1, 0xd4, 0xed, 0xe9, - 0xf5, 0xc6, 0xa0, 0xdd, 0xeb, 0x2a, 0x39, 0xf5, 0x07, 0x50, 0x6c, 0x1c, 0x5b, 0xa3, 0x93, 0x8b, - 0x7a, 0x91, 0x8c, 0x6e, 0x6b, 0x74, 0x22, 0xf4, 0xd3, 0x39, 0xa3, 0xdb, 0x1a, 0x9d, 0xa8, 0x2d, - 0x28, 0x1d, 0x18, 0x7e, 0x68, 0x53, 0xbd, 0x1e, 0xc3, 0x7a, 0x9c, 0x68, 0x5a, 0xe3, 0x68, 0xe7, - 0x66, 0xb1, 0xd6, 0x1a, 0xa3, 0xb4, 0x34, 0xa1, 0xfa, 0x2e, 0x54, 0x64, 0x00, 0xbb, 0x01, 0x59, - 0xd3, 0x1a, 0x2f, 0x91, 0x93, 0x08, 0x56, 0x9f, 0x41, 0xa5, 0x11, 0xed, 0x44, 0x17, 0x55, 0xfd, - 0x21, 0x54, 0x69, 0xc5, 0x8f, 0x86, 0xd1, 0x92, 0x5f, 0x5d, 0xb2, 0xe4, 0x2b, 0x48, 0xd3, 0x18, - 0x8a, 0x35, 0xff, 0x31, 0x94, 0x0f, 0x7c, 0x6f, 0x6a, 0xf9, 0x21, 0x65, 0xab, 0x40, 0xf6, 0xc4, - 0x3a, 0x17, 0xb9, 0xe2, 0xcf, 0xc4, 0x17, 0xb2, 0x2a, 0xfb, 0x42, 0x1e, 0x42, 0x31, 0x62, 0xfb, - 0xda, 0x3c, 0xdf, 0x47, 0xd1, 0x49, 0x3c, 0xb6, 0x15, 0x60, 0x61, 0x0f, 0x00, 0xa6, 0x31, 0x40, - 0x74, 0x5c, 0xa4, 0xee, 0x8b, 0xcc, 0x35, 0x89, 0x42, 0x7d, 0x1d, 0x0a, 0xcf, 0x6c, 0xeb, 0x54, - 0x34, 0xff, 0x85, 0x6d, 0x9d, 0x46, 0xcd, 0xc7, 0xdf, 0xea, 0xff, 0x5f, 0x82, 0x22, 0xad, 0xaf, - 0xe6, 0xc5, 0xee, 0xa7, 0x6f, 0xa2, 0x15, 0x6d, 0x8b, 0xf5, 0x94, 0x5b, 0xa2, 0x8b, 0xf1, 0xd5, - 0xf5, 0x3a, 0x80, 0xb4, 0xd6, 0xb9, 0xe4, 0x2a, 0x85, 0xf1, 0x12, 0x47, 0x75, 0x82, 0xf6, 0xa2, - 0xe0, 0x2b, 0x47, 0x58, 0x91, 0x09, 0x80, 0x3d, 0xe0, 0x9b, 0x3d, 0xd9, 0x8d, 0x5c, 0x21, 0xba, - 0x14, 0x29, 0xf5, 0x43, 0xc7, 0x8a, 0x4c, 0x0d, 0xd2, 0x00, 0x30, 0x41, 0x72, 0xcc, 0xf2, 0x03, - 0x14, 0x57, 0xe4, 0x9f, 0xd6, 0xa2, 0x24, 0x7b, 0x0b, 0x72, 0x28, 0xe4, 0x85, 0x69, 0x70, 0x29, - 0xea, 0x41, 0x69, 0x97, 0xd2, 0x88, 0x80, 0xdd, 0x83, 0x02, 0x89, 0x16, 0x0b, 0x25, 0x8d, 0xd4, - 0xdb, 0x91, 0xd0, 0xd7, 0x22, 0x34, 0x7b, 0x1b, 0xf2, 0xe3, 0x13, 0xeb, 0x3c, 0xa8, 0xad, 0x13, - 0xdd, 0xa5, 0x25, 0x6b, 0x56, 0xe3, 0x14, 0xec, 0x0e, 0x54, 0x7d, 0x6b, 0xac, 0x93, 0x43, 0x0a, - 0x85, 0x4c, 0x50, 0xab, 0x92, 0x0c, 0xa9, 0xf8, 0xd6, 0xb8, 0x81, 0xc0, 0xc1, 0xd0, 0x09, 0xd8, - 0x5d, 0x58, 0xa3, 0xd5, 0x83, 0xba, 0x90, 0x54, 0x72, 0xb4, 0x14, 0x35, 0x81, 0x65, 0x1f, 0x02, - 0x08, 0x8d, 0x4b, 0x1f, 0x9e, 0x93, 0x23, 0x37, 0x5e, 0x4c, 0xf2, 0xfc, 0x97, 0xf5, 0xb2, 0xb7, - 0x20, 0x8f, 0x93, 0x24, 0xa8, 0x5d, 0xa5, 0x9c, 0x37, 0xd3, 0x33, 0x88, 0x6a, 0x4a, 0x78, 0x76, - 0x0f, 0x8a, 0x38, 0x51, 0x74, 0x1c, 0x8e, 0x9a, 0xac, 0x82, 0x8a, 0x59, 0x85, 0x3b, 0x83, 0x75, - 0xda, 0xff, 0xca, 0x61, 0xf7, 0x21, 0x67, 0xe2, 0x62, 0xbe, 0x46, 0x39, 0x5e, 0x91, 0xc6, 0x05, - 0x85, 0x55, 0xd3, 0x1a, 0x93, 0x56, 0x4c, 0x34, 0x6c, 0x0f, 0xaa, 0x38, 0x8d, 0x1e, 0xd2, 0x66, - 0x8f, 0xdd, 0x57, 0xbb, 0x4e, 0x5c, 0x6f, 0xcc, 0x71, 0x75, 0x05, 0x11, 0x75, 0x76, 0xcb, 0x0d, - 0xfd, 0x73, 0x6d, 0xdd, 0x95, 0x61, 0xec, 0x3a, 0x9a, 0x2e, 0x1d, 0x6f, 0x74, 0x62, 0x99, 0xb5, - 0xd7, 0x22, 0xc7, 0x04, 0x4f, 0xb3, 0xcf, 0x60, 0x9d, 0x26, 0x16, 0x26, 0xb1, 0xf0, 0xda, 0x0d, - 0x12, 0xa6, 0xf2, 0x94, 0x89, 0x50, 0x5a, 0x9a, 0x12, 0x45, 0xbc, 0x1d, 0xe8, 0xa1, 0x35, 0x99, - 0x7a, 0x3e, 0x2a, 0xaf, 0xaf, 0x47, 0x0e, 0x97, 0x41, 0x04, 0xc2, 0x8d, 0x38, 0x3e, 0x76, 0xd2, - 0xbd, 0xf1, 0x38, 0xb0, 0xc2, 0xda, 0x4d, 0x5a, 0x37, 0xd5, 0xe8, 0xf4, 0xa9, 0x47, 0x50, 0xda, - 0x08, 0x03, 0xdd, 0x3c, 0x77, 0x8d, 0x89, 0x3d, 0xaa, 0xdd, 0xe2, 0x3a, 0xb2, 0x1d, 0x34, 0x39, - 0x40, 0x56, 0x53, 0xb7, 0x53, 0x6a, 0xea, 0x25, 0xc8, 0x9b, 0x43, 0x5c, 0x8e, 0x6f, 0x50, 0xb6, - 0x39, 0x73, 0xd8, 0x36, 0xd9, 0x7b, 0x50, 0x9a, 0x46, 0x22, 0xb0, 0xa6, 0xca, 0xc6, 0x78, 0x2c, - 0x19, 0xb5, 0x84, 0x02, 0xed, 0xc3, 0x5d, 0xcb, 0x08, 0x67, 0xbe, 0xb5, 0xeb, 0x18, 0x47, 0xb5, - 0xdb, 0x94, 0x93, 0x0c, 0xba, 0xfe, 0x84, 0x74, 0x5d, 0x6a, 0xf5, 0xc7, 0x73, 0xc2, 0x25, 0xb5, - 0x34, 0x24, 0x29, 0xb4, 0xb7, 0x22, 0xcb, 0x98, 0x9d, 0x3c, 0x49, 0xe1, 0xeb, 0x3f, 0x00, 0xb6, - 0x38, 0x5e, 0xaf, 0x92, 0x74, 0x79, 0x21, 0xe9, 0xbe, 0xb3, 0xfa, 0x38, 0xa3, 0x3e, 0x83, 0xf5, - 0xd4, 0x42, 0x5e, 0x2a, 0xb1, 0xb9, 0xba, 0x64, 0x4c, 0x84, 0x79, 0xc9, 0x13, 0xc2, 0x43, 0x15, - 0xd8, 0xee, 0x91, 0xf0, 0x6c, 0xd1, 0x44, 0xe8, 0x53, 0x5a, 0xfd, 0xf3, 0x2c, 0x54, 0xf6, 0x8c, - 0xe0, 0x78, 0xdf, 0x98, 0xf6, 0x43, 0x23, 0x0c, 0x70, 0x78, 0x8f, 0x8d, 0xe0, 0x78, 0x62, 0x4c, - 0xb9, 0xe2, 0x9a, 0xe1, 0x66, 0xb3, 0x80, 0xa1, 0xd6, 0x8a, 0x13, 0x0b, 0x93, 0x3d, 0xf7, 0xe0, - 0xa9, 0xb0, 0x89, 0xe3, 0x34, 0x8a, 0x95, 0xe0, 0x78, 0x36, 0x1e, 0xc7, 0x45, 0x45, 0x49, 0x76, - 0x07, 0xd6, 0xc5, 0x4f, 0xd2, 0x5a, 0xcf, 0xc4, 0xb1, 0x63, 0x1a, 0xc8, 0x1e, 0x41, 0x59, 0x00, - 0x06, 0x91, 0x10, 0xac, 0xc6, 0xbe, 0x8e, 0x04, 0xa1, 0xc9, 0x54, 0xec, 0x47, 0x70, 0x59, 0x4a, - 0xee, 0x7a, 0xfe, 0xfe, 0xcc, 0x09, 0xed, 0x46, 0x57, 0xa8, 0x08, 0xaf, 0x2d, 0xb0, 0x27, 0x24, - 0xda, 0x72, 0xce, 0x74, 0x6d, 0xf7, 0x6d, 0x97, 0x64, 0x6a, 0x56, 0x4b, 0x03, 0xe7, 0xa8, 0x8c, - 0x33, 0x12, 0xa5, 0x69, 0x2a, 0xe3, 0x0c, 0x17, 0x9b, 0x00, 0xec, 0x5b, 0xe1, 0xb1, 0x67, 0x92, - 0x7e, 0x18, 0x2f, 0xb6, 0xbe, 0x8c, 0xd2, 0xd2, 0x94, 0xd8, 0x9d, 0x68, 0x09, 0x8d, 0xdc, 0x90, - 0xb4, 0xc4, 0xac, 0x16, 0x25, 0x71, 0x9b, 0xf1, 0x0d, 0xf7, 0xc8, 0x0a, 0x6a, 0xe5, 0xed, 0xec, - 0xbd, 0x8c, 0x26, 0x52, 0xea, 0xdf, 0x5a, 0x85, 0x3c, 0x1f, 0xc9, 0xd7, 0xa0, 0x34, 0x24, 0x67, - 0x31, 0x5a, 0xa6, 0xc2, 0x01, 0x4c, 0x80, 0xee, 0x6c, 0xc2, 0xb5, 0x3b, 0xe1, 0xd3, 0xc8, 0x68, - 0xf4, 0x1b, 0xb3, 0xf4, 0x66, 0x21, 0x96, 0x95, 0x25, 0xa8, 0x48, 0x61, 0x25, 0x7c, 0xef, 0x94, - 0x66, 0x43, 0x8e, 0x10, 0x51, 0x92, 0x7c, 0xcc, 0xb4, 0x63, 0x21, 0x53, 0x9e, 0x70, 0x45, 0x02, - 0x34, 0xdc, 0x70, 0xde, 0xff, 0xb2, 0xb6, 0xe0, 0x7f, 0x61, 0x37, 0x01, 0x75, 0xc7, 0x91, 0xd5, - 0x73, 0xad, 0x46, 0x97, 0x7a, 0xb8, 0xa8, 0x49, 0x10, 0x5c, 0x20, 0xa6, 0x37, 0xa5, 0x4e, 0xcd, - 0x6b, 0xf8, 0x93, 0x7d, 0x12, 0xcf, 0x4e, 0x6a, 0xa3, 0xd0, 0xb4, 0x85, 0x44, 0x97, 0xe7, 0xb1, - 0x96, 0xa2, 0xc3, 0x9c, 0x50, 0x4c, 0x73, 0x4d, 0x1b, 0x7f, 0xaa, 0x2d, 0x00, 0xcd, 0x3b, 0x0d, - 0xac, 0x90, 0x1c, 0x8d, 0x57, 0xa9, 0x89, 0xa9, 0x23, 0x22, 0xef, 0xf4, 0xc0, 0x0b, 0x62, 0x7b, - 0x73, 0x75, 0xb9, 0xbd, 0xa9, 0xbe, 0x0f, 0x05, 0xdc, 0xc3, 0x8d, 0xd0, 0x60, 0x77, 0x84, 0x6f, - 0x87, 0x6b, 0x1e, 0xc2, 0xc9, 0x95, 0x94, 0x21, 0xbc, 0x3d, 0x9d, 0xa8, 0x5c, 0xe2, 0x79, 0x43, - 0x32, 0xf7, 0xe2, 0xfd, 0x43, 0x64, 0x28, 0xb4, 0x82, 0xd7, 0xa0, 0x84, 0x55, 0x23, 0xbf, 0xb9, - 0x90, 0x0b, 0x45, 0xdf, 0x3b, 0x6d, 0x60, 0x5a, 0xfd, 0x77, 0x19, 0x28, 0xf7, 0x7c, 0x13, 0x37, - 0xae, 0xfe, 0xd4, 0x1a, 0xbd, 0xd2, 0x3c, 0x46, 0x1d, 0xc2, 0x73, 0x1c, 0x83, 0x44, 0xa4, 0x30, - 0xb7, 0x62, 0x00, 0xfb, 0x10, 0x72, 0x63, 0x14, 0x85, 0x59, 0x59, 0xb3, 0x96, 0xb2, 0x8f, 0x7e, - 0xa3, 0x70, 0xd4, 0x88, 0x54, 0xfd, 0xb5, 0xb8, 0x7c, 0xf2, 0x33, 0xcb, 0xde, 0xe5, 0x15, 0x3a, - 0xe7, 0xe9, 0x37, 0x94, 0x0c, 0x2b, 0x42, 0xae, 0xd9, 0xea, 0x37, 0xb8, 0x3e, 0x8d, 0x9a, 0x75, - 0x5f, 0xdf, 0x6d, 0x6b, 0xfd, 0x81, 0x92, 0xa3, 0x83, 0x23, 0x02, 0x74, 0xea, 0xfd, 0x81, 0x52, - 0x64, 0x00, 0x6b, 0x87, 0xdd, 0xf6, 0x8f, 0x0e, 0x5b, 0x8a, 0xa2, 0xfe, 0xcb, 0x0c, 0x40, 0xe2, - 0x04, 0x65, 0xef, 0x40, 0xf9, 0x94, 0x52, 0xba, 0xe4, 0x1d, 0x97, 0xdb, 0x08, 0x1c, 0x4d, 0xfa, - 0xcd, 0x7b, 0x50, 0x89, 0x45, 0x3d, 0xee, 0xfd, 0x8b, 0x6e, 0xf2, 0x72, 0x8c, 0xdf, 0x39, 0x67, - 0xef, 0x42, 0xd1, 0xc3, 0x76, 0x20, 0x69, 0x56, 0xde, 0xf8, 0xa5, 0xe6, 0x6b, 0x05, 0x8f, 0x27, - 0x50, 0x47, 0x18, 0xfb, 0x91, 0xf9, 0x1c, 0x93, 0xee, 0x22, 0xa8, 0xe1, 0x18, 0xb3, 0xc0, 0xd2, - 0x38, 0x3e, 0x96, 0xd2, 0xf9, 0x44, 0x4a, 0xab, 0x3f, 0x86, 0x6a, 0xdf, 0x98, 0x4c, 0xb9, 0x2c, - 0xa7, 0x86, 0x31, 0xc8, 0xe1, 0x9c, 0x10, 0x53, 0x8f, 0x7e, 0xe3, 0xa2, 0x3b, 0xb0, 0xfc, 0x91, - 0xe5, 0x46, 0x6b, 0x34, 0x4a, 0xa2, 0xf8, 0x3d, 0x44, 0x69, 0xae, 0x79, 0xa7, 0x91, 0x38, 0x8f, - 0xd2, 0xea, 0x1f, 0x66, 0xa0, 0x2c, 0x55, 0x83, 0xbd, 0x0f, 0x39, 0x52, 0x26, 0x33, 0xb2, 0x20, - 0x94, 0x08, 0xf8, 0x6f, 0xae, 0x7e, 0x20, 0x21, 0xbb, 0x0b, 0xf9, 0x20, 0x34, 0xfc, 0xc8, 0x9f, - 0xae, 0x48, 0x1c, 0x3b, 0xde, 0xcc, 0x35, 0x35, 0x8e, 0x66, 0x2a, 0x64, 0x2d, 0xd7, 0x14, 0x0e, - 0x87, 0x45, 0x2a, 0x44, 0xaa, 0xdb, 0x50, 0x8a, 0xb3, 0xc7, 0x29, 0xa0, 0xf5, 0x9e, 0xf7, 0x95, - 0x15, 0x56, 0x82, 0xbc, 0x56, 0xef, 0x3e, 0x69, 0x29, 0x19, 0xf5, 0x8f, 0x32, 0x00, 0x09, 0x17, - 0x7b, 0x90, 0xaa, 0xed, 0xf5, 0xf9, 0x5c, 0x1f, 0xd0, 0x5f, 0xa9, 0xb2, 0x37, 0xa0, 0x34, 0x73, - 0x09, 0x68, 0x99, 0x62, 0x27, 0x4a, 0x00, 0x68, 0x01, 0x45, 0xd1, 0x1f, 0x73, 0x16, 0xd0, 0x0b, - 0xc3, 0x51, 0xbf, 0x03, 0xa5, 0x38, 0x3b, 0x34, 0xea, 0x76, 0x7b, 0x9d, 0x4e, 0xef, 0x79, 0xbb, - 0xfb, 0x44, 0x59, 0xc1, 0xe4, 0x81, 0xd6, 0x6a, 0xb4, 0x9a, 0x98, 0xcc, 0xe0, 0x9c, 0x6d, 0x1c, - 0x6a, 0x5a, 0xab, 0x3b, 0xd0, 0xb5, 0xde, 0x73, 0x65, 0x55, 0xfd, 0x7f, 0x73, 0xb0, 0xd9, 0x73, - 0x9b, 0xb3, 0xa9, 0x63, 0x8f, 0x8c, 0xd0, 0x7a, 0x6a, 0x9d, 0x37, 0xc2, 0x33, 0xdc, 0x7d, 0x8d, - 0x30, 0xf4, 0xf9, 0x62, 0x2e, 0x69, 0x3c, 0xc1, 0x9d, 0x12, 0x81, 0xe5, 0x87, 0xe4, 0x73, 0x91, - 0x57, 0x71, 0x95, 0xc3, 0x1b, 0x9e, 0x43, 0x6b, 0x99, 0x7d, 0x0f, 0x2e, 0x73, 0x47, 0x06, 0xa7, - 0x44, 0x05, 0x56, 0xa7, 0xc5, 0x9c, 0x5d, 0x98, 0xba, 0x8c, 0x13, 0x22, 0x2b, 0x92, 0x91, 0x08, - 0xbb, 0x05, 0xe5, 0x84, 0x3d, 0x3a, 0xa4, 0x82, 0x98, 0x90, 0x6a, 0x82, 0x86, 0x77, 0x54, 0x6b, - 0xdd, 0x36, 0xcf, 0xc8, 0xc5, 0x93, 0xd7, 0xaa, 0x5e, 0xd2, 0x18, 0xdc, 0x84, 0x3f, 0x87, 0xcd, - 0x14, 0x25, 0xd5, 0x62, 0x8d, 0x6a, 0xf1, 0x6e, 0xe4, 0x20, 0x9d, 0x6b, 0xbd, 0x0c, 0xc1, 0xea, - 0x70, 0x8d, 0x74, 0xc3, 0x4b, 0x43, 0x85, 0x2e, 0x62, 0x1f, 0xb9, 0x9e, 0x6f, 0x09, 0x81, 0x5f, - 0xb4, 0x83, 0x36, 0xa5, 0x13, 0xfb, 0x47, 0x3a, 0x54, 0xe5, 0xfb, 0x4b, 0x74, 0x5e, 0xc8, 0xd1, - 0x36, 0xdf, 0x41, 0x73, 0x5a, 0x81, 0xd2, 0x6d, 0x93, 0xdd, 0x16, 0xea, 0xac, 0x1e, 0x99, 0x34, - 0x40, 0x26, 0x4d, 0x85, 0x80, 0xcf, 0x38, 0xec, 0x7a, 0x17, 0xb6, 0x96, 0x55, 0x72, 0x89, 0x1a, - 0xb6, 0x2d, 0xab, 0x61, 0x73, 0x46, 0x7b, 0xa2, 0x92, 0xfd, 0xfd, 0x0c, 0x54, 0x9a, 0x96, 0x39, - 0x9b, 0xfe, 0xd0, 0xb3, 0x5d, 0x9c, 0x00, 0x1f, 0x41, 0xc5, 0x73, 0x4c, 0x1a, 0x3d, 0x29, 0x36, - 0x20, 0x75, 0x62, 0x24, 0x9c, 0xdb, 0xe0, 0x39, 0x66, 0xc3, 0x73, 0x28, 0x92, 0xe0, 0x3d, 0xb8, - 0xc4, 0x1d, 0x1a, 0xc2, 0xbf, 0x77, 0xc6, 0x99, 0x57, 0x69, 0x64, 0x14, 0x8e, 0xe2, 0xca, 0x11, - 0x91, 0xff, 0x0a, 0x6c, 0x49, 0xe4, 0x38, 0x32, 0x9c, 0x7e, 0x71, 0x92, 0x6c, 0xc6, 0xbc, 0xd1, - 0x91, 0x8d, 0xfa, 0x5b, 0xab, 0x50, 0xe2, 0xee, 0x10, 0xac, 0xef, 0x3d, 0x28, 0x78, 0xc3, 0x2f, - 0x75, 0x3f, 0x76, 0x13, 0x2c, 0x9c, 0x34, 0xae, 0x79, 0xc3, 0x2f, 0x35, 0x6b, 0xcc, 0xde, 0x89, - 0xf6, 0x79, 0xd3, 0x1a, 0x8b, 0x4e, 0xa9, 0xa6, 0xed, 0x11, 0xb1, 0xef, 0xa3, 0xad, 0xfc, 0x08, - 0xca, 0xc9, 0x8c, 0x0f, 0x6a, 0x85, 0x8b, 0x7b, 0x21, 0x5e, 0x00, 0x01, 0x32, 0x71, 0x97, 0x10, - 0x67, 0x2a, 0x5e, 0xcc, 0xc4, 0xc9, 0x88, 0xe9, 0x33, 0xa8, 0x26, 0x32, 0x9e, 0xf8, 0x4a, 0x17, - 0xf2, 0xad, 0xc7, 0x94, 0x74, 0xe2, 0xf1, 0x0f, 0x32, 0x50, 0x6a, 0xf3, 0xe2, 0xc3, 0x33, 0xf6, - 0x06, 0x64, 0x5f, 0xd2, 0x0b, 0x88, 0x63, 0xf7, 0x61, 0xd3, 0x30, 0x4d, 0xdd, 0x18, 0x8f, 0xad, - 0x51, 0x68, 0x99, 0x3a, 0xaa, 0x40, 0x42, 0xe6, 0x6c, 0x18, 0xa6, 0x59, 0x17, 0x70, 0x92, 0xdd, - 0xb8, 0xe6, 0x03, 0x3d, 0x32, 0x3c, 0x93, 0x23, 0xe5, 0xa2, 0x56, 0xb5, 0x03, 0x61, 0x77, 0x72, - 0x5f, 0x72, 0xaa, 0x63, 0x73, 0x2f, 0xef, 0x58, 0xf5, 0x77, 0x57, 0x01, 0x34, 0x6b, 0xea, 0x18, - 0x23, 0xeb, 0xff, 0x98, 0x4a, 0xa3, 0x58, 0x8a, 0x07, 0xd6, 0x35, 0xa3, 0x10, 0x8c, 0x68, 0x10, - 0x5d, 0x93, 0xfd, 0x00, 0x5e, 0xf7, 0xad, 0x53, 0xdf, 0x0e, 0x2d, 0x7d, 0xec, 0x7b, 0x13, 0x3d, - 0x25, 0x79, 0x70, 0x61, 0x96, 0xa8, 0x12, 0xd7, 0x04, 0xd1, 0xae, 0xef, 0x4d, 0xd2, 0xd2, 0x47, - 0xfd, 0xc3, 0x32, 0x94, 0xeb, 0xae, 0xe1, 0x9c, 0xff, 0xc4, 0xa2, 0x98, 0x00, 0xf2, 0xae, 0x4e, - 0x67, 0x21, 0x6f, 0x2e, 0x3f, 0x30, 0x2b, 0x11, 0x84, 0x1a, 0x7a, 0x0b, 0xca, 0xde, 0x2c, 0x8c, - 0xf1, 0xfc, 0x08, 0x0d, 0x38, 0x88, 0x08, 0x62, 0xfe, 0xd8, 0x73, 0x1f, 0xf1, 0x93, 0xf9, 0x93, - 0xf0, 0xc7, 0x2a, 0x71, 0xcc, 0x4f, 0x04, 0x28, 0x8d, 0xec, 0x09, 0x35, 0x38, 0x98, 0x4d, 0x2c, - 0xde, 0xe8, 0x2c, 0x8f, 0x4f, 0x6b, 0x08, 0x18, 0xe6, 0x32, 0xb1, 0x26, 0x9e, 0x7f, 0xce, 0x73, - 0x59, 0xe3, 0xb9, 0x70, 0x10, 0xe5, 0xf2, 0x2e, 0xb0, 0x53, 0xc3, 0x0e, 0xf5, 0x74, 0x56, 0xdc, - 0x0c, 0x51, 0x10, 0x33, 0x90, 0xb3, 0xbb, 0x02, 0x6b, 0xa6, 0x1d, 0x9c, 0xb4, 0x7b, 0xc2, 0x04, - 0x11, 0x29, 0x6c, 0x4b, 0x30, 0x32, 0x50, 0x03, 0x0a, 0x2d, 0xae, 0x2e, 0x67, 0xb5, 0x12, 0x42, - 0x76, 0x10, 0x80, 0x3b, 0xa8, 0x6b, 0x85, 0xa7, 0x9e, 0x8f, 0x9c, 0xdc, 0xc2, 0x48, 0x00, 0xa8, - 0x69, 0x20, 0x29, 0x16, 0x44, 0xde, 0xa0, 0xac, 0x16, 0xa7, 0x51, 0x77, 0xe7, 0xcb, 0x97, 0xb0, - 0x15, 0x5e, 0xfd, 0x04, 0xc2, 0xee, 0x40, 0x95, 0xaa, 0x4f, 0x16, 0x08, 0xb6, 0x81, 0x4e, 0xb9, - 0xb2, 0x5a, 0x05, 0xa1, 0xe4, 0x4c, 0x40, 0xaa, 0xcf, 0xe0, 0x5a, 0xaa, 0x7d, 0xba, 0xe1, 0xfb, - 0xc6, 0xb9, 0x3e, 0x31, 0xbe, 0xf4, 0x7c, 0x72, 0xfc, 0x64, 0xb5, 0x2b, 0x72, 0xb7, 0xd5, 0x11, - 0xbd, 0x8f, 0xd8, 0x0b, 0x59, 0x6d, 0xd7, 0xf3, 0xc9, 0x2b, 0xb4, 0x94, 0x15, 0xb1, 0xe4, 0xc2, - 0xa0, 0x01, 0x26, 0x73, 0x28, 0xe0, 0x71, 0x8d, 0x5a, 0x99, 0x60, 0x3b, 0x04, 0x42, 0x83, 0x20, - 0x78, 0xc4, 0x25, 0xeb, 0xa6, 0x08, 0x32, 0x7a, 0x44, 0xf2, 0x97, 0x23, 0x8e, 0x2d, 0xc3, 0xa4, - 0x93, 0x33, 0x42, 0xec, 0x59, 0x06, 0x9d, 0x4b, 0x07, 0x8f, 0xf4, 0xe9, 0x2c, 0xe4, 0x01, 0x89, - 0x5a, 0x3e, 0x78, 0x74, 0x30, 0x0b, 0x05, 0xf8, 0xc8, 0x0a, 0x29, 0x0c, 0x91, 0xc0, 0x4f, 0xac, - 0x10, 0x37, 0xc2, 0xe0, 0x51, 0xe4, 0x05, 0xbf, 0x2c, 0xfa, 0xf6, 0x91, 0x70, 0x73, 0xab, 0xb0, - 0x1e, 0x23, 0xf5, 0xc9, 0x8c, 0x47, 0x20, 0x66, 0xb5, 0x72, 0x44, 0xb0, 0x3f, 0x73, 0x70, 0x60, - 0x47, 0xc6, 0xe8, 0xd8, 0xd2, 0x7d, 0xac, 0xca, 0x55, 0x3e, 0x74, 0x04, 0xd1, 0xb0, 0x36, 0xaf, - 0x01, 0x4f, 0xe8, 0xc7, 0x76, 0x48, 0xde, 0xa9, 0xac, 0x56, 0x24, 0xc0, 0x9e, 0x1d, 0xa2, 0x58, - 0xe0, 0x48, 0x31, 0x03, 0x29, 0x8b, 0x6b, 0x44, 0xb4, 0x41, 0x88, 0x7d, 0x82, 0x53, 0x46, 0xf7, - 0x40, 0x49, 0xd1, 0x62, 0x7e, 0xd7, 0x89, 0xb4, 0x2a, 0x91, 0x62, 0xae, 0x77, 0x81, 0x33, 0xeb, - 0x38, 0xf5, 0x78, 0x9e, 0xaf, 0x71, 0x73, 0x98, 0xc0, 0x4d, 0x3b, 0x38, 0xa1, 0x1c, 0xef, 0x40, - 0x55, 0xa2, 0xc3, 0xfc, 0x6e, 0xf0, 0x99, 0x11, 0x93, 0xa5, 0xea, 0xe8, 0x5b, 0x13, 0x2f, 0x14, - 0xcd, 0x7c, 0x5d, 0xaa, 0xa3, 0x46, 0xf0, 0x74, 0x1d, 0x05, 0x2d, 0xe6, 0x79, 0x53, 0xaa, 0x23, - 0x27, 0xc5, 0x5c, 0xdf, 0x80, 0x0a, 0x4a, 0x91, 0xd0, 0x72, 0xf9, 0xe2, 0xbf, 0xc5, 0x3b, 0x56, - 0xc0, 0x68, 0xf5, 0xbf, 0x01, 0x15, 0xde, 0xf3, 0x42, 0x5c, 0x6e, 0x73, 0x12, 0x01, 0x8b, 0x04, - 0x84, 0xe8, 0x8d, 0x89, 0xed, 0x92, 0x0b, 0x2a, 0xab, 0x95, 0x38, 0x64, 0xdf, 0x76, 0x65, 0xb4, - 0x71, 0x46, 0x8e, 0xa8, 0x04, 0x6d, 0x9c, 0xd1, 0x92, 0x9c, 0xda, 0x8e, 0xc3, 0x17, 0xfe, 0x6d, - 0xb1, 0x24, 0x11, 0xd2, 0x17, 0x36, 0x35, 0x47, 0x63, 0xde, 0x77, 0xc4, 0xcc, 0x40, 0x00, 0x66, - 0x9d, 0x20, 0x8d, 0xb3, 0xda, 0x9b, 0x32, 0xd2, 0x38, 0x13, 0x82, 0x09, 0x2b, 0x4d, 0xbc, 0x77, - 0x63, 0xc1, 0x84, 0x20, 0xe4, 0x96, 0x09, 0x8c, 0xb3, 0xda, 0x5b, 0x69, 0x02, 0xe3, 0x8c, 0x6c, - 0x4d, 0xcb, 0x30, 0x79, 0xcd, 0xee, 0xf1, 0xec, 0x11, 0x40, 0x15, 0xdb, 0x86, 0x4a, 0xf0, 0x48, - 0x4f, 0xf0, 0x6f, 0x73, 0xf6, 0xe0, 0x91, 0x16, 0x51, 0xdc, 0x81, 0x6a, 0x3c, 0xf6, 0x9c, 0xe6, - 0x3e, 0x1f, 0x59, 0x53, 0x8c, 0x3d, 0x1d, 0x7a, 0xfe, 0x34, 0x03, 0xd7, 0x7b, 0x74, 0x1c, 0x4b, - 0xdb, 0xc5, 0xbe, 0x15, 0x04, 0xc6, 0x91, 0xb5, 0xeb, 0xf9, 0xbb, 0xb3, 0x9f, 0xfc, 0xe4, 0x9c, - 0xdd, 0x83, 0x8d, 0x03, 0xc3, 0xb7, 0xdc, 0x30, 0x3e, 0xae, 0x13, 0xaa, 0xd9, 0x3c, 0x98, 0x3d, - 0x06, 0x85, 0x83, 0x0e, 0x63, 0x25, 0x57, 0x98, 0x79, 0x69, 0xef, 0xfa, 0x02, 0x15, 0x9a, 0xcd, - 0xa5, 0xa6, 0x1d, 0x84, 0x9a, 0xe1, 0x1e, 0xa1, 0x10, 0x52, 0x1c, 0xef, 0x14, 0x6d, 0x3f, 0x34, - 0x08, 0x74, 0xc9, 0x04, 0x11, 0xbb, 0x6a, 0x62, 0x77, 0x54, 0x89, 0x30, 0x31, 0x1c, 0x3e, 0x03, - 0x65, 0x36, 0x9d, 0xa6, 0x59, 0x57, 0x2f, 0x60, 0x25, 0xc2, 0x84, 0xf5, 0x1d, 0x28, 0x4b, 0xa5, - 0x2e, 0x31, 0x53, 0x20, 0x29, 0x0b, 0x89, 0xa5, 0x72, 0x96, 0x44, 0x70, 0x42, 0x92, 0xbb, 0xfa, - 0x27, 0x19, 0x50, 0xc8, 0xcd, 0xa8, 0x51, 0x1c, 0x00, 0x9d, 0xfa, 0xa5, 0x0c, 0xdc, 0xcc, 0x2b, - 0x0d, 0xdc, 0x6d, 0xc8, 0x3b, 0xf6, 0x24, 0x0e, 0xab, 0x4a, 0x69, 0xc0, 0x84, 0xc0, 0xb1, 0xf6, - 0x7c, 0xfb, 0x88, 0x4c, 0x71, 0x39, 0x00, 0x90, 0x4e, 0xda, 0xd1, 0xb2, 0xa5, 0x21, 0x7a, 0x00, - 0x60, 0xda, 0x41, 0xa8, 0x93, 0x73, 0x4a, 0x54, 0x5b, 0xf4, 0x4c, 0xdc, 0xff, 0x5a, 0xc9, 0x8c, - 0x7e, 0xaa, 0x7f, 0x45, 0x85, 0x5c, 0xd7, 0x33, 0x2d, 0xf6, 0x01, 0x94, 0x28, 0xaa, 0x55, 0x1a, - 0x0c, 0xe1, 0x2f, 0x43, 0x34, 0xfd, 0xa1, 0x5e, 0x2d, 0xba, 0xe2, 0xd7, 0xc5, 0x71, 0xb0, 0x6f, - 0x90, 0x49, 0x4b, 0x87, 0xc8, 0x58, 0x7c, 0x59, 0xb8, 0xdd, 0xc8, 0x4b, 0xc4, 0x31, 0xb8, 0xd1, - 0xd1, 0x81, 0x83, 0x6f, 0xb9, 0x64, 0x38, 0xe5, 0xb5, 0x38, 0x4d, 0x8e, 0x04, 0xdf, 0x43, 0xb5, - 0x8a, 0x6f, 0x07, 0xf9, 0x25, 0x8e, 0x04, 0x8e, 0xa7, 0xfd, 0xe1, 0x03, 0x28, 0x7d, 0xe9, 0xd9, - 0x2e, 0xaf, 0xf8, 0xda, 0x42, 0xc5, 0xd1, 0x56, 0xe0, 0x15, 0xff, 0x52, 0xfc, 0x62, 0xb7, 0xa1, - 0xe0, 0xb9, 0x3c, 0xef, 0xc2, 0x42, 0xde, 0x6b, 0x9e, 0xdb, 0xe1, 0x41, 0x56, 0xeb, 0x76, 0xa0, - 0xfb, 0xf6, 0xd1, 0x71, 0xa8, 0x23, 0xa7, 0x38, 0x7c, 0x2e, 0xdb, 0x81, 0x86, 0x30, 0xcc, 0x16, - 0x27, 0xc9, 0xd8, 0x76, 0x50, 0x7b, 0xa3, 0xcc, 0x4a, 0x0b, 0x99, 0x01, 0x47, 0x53, 0x86, 0x6f, - 0x42, 0xf1, 0xc8, 0xf7, 0x66, 0x53, 0x9c, 0x0f, 0xb0, 0x40, 0x59, 0x20, 0xdc, 0xce, 0x39, 0xea, - 0x32, 0xf4, 0xd3, 0x76, 0x8f, 0x74, 0xf2, 0x0d, 0x95, 0xb7, 0xb3, 0xf7, 0x8a, 0x5a, 0x25, 0x02, - 0x92, 0xd7, 0xe7, 0x4d, 0x28, 0x1a, 0x47, 0x47, 0xba, 0x88, 0x15, 0x5b, 0xc8, 0xcb, 0x38, 0x3a, - 0xa2, 0x22, 0x1f, 0xc0, 0xfa, 0xa9, 0xed, 0xea, 0xc1, 0xd4, 0x1a, 0x71, 0xda, 0xf5, 0xc5, 0xae, - 0x3c, 0xb5, 0x5d, 0x9c, 0x89, 0x44, 0x2f, 0x4f, 0xd9, 0xea, 0xd7, 0x9f, 0xb2, 0x1b, 0x17, 0x4d, - 0x59, 0x15, 0xd6, 0xc4, 0x61, 0x84, 0xb2, 0x40, 0x22, 0x30, 0xec, 0x43, 0x28, 0xfb, 0x86, 0x7b, - 0xa2, 0x8b, 0x93, 0xfc, 0x2f, 0x64, 0xff, 0x86, 0x66, 0xb8, 0x27, 0xe2, 0x20, 0x1f, 0xfc, 0xf8, - 0x77, 0x5a, 0x1d, 0xde, 0x7c, 0x85, 0x3a, 0x2c, 0xd9, 0x5c, 0xec, 0xe5, 0x36, 0xd7, 0xc7, 0x64, - 0xdc, 0x58, 0x6e, 0xa8, 0x47, 0x0c, 0x97, 0x96, 0x33, 0x54, 0x38, 0x59, 0x8f, 0xb3, 0x61, 0x03, - 0xc8, 0xbf, 0xa8, 0x93, 0x33, 0x72, 0x2b, 0xd5, 0x80, 0xd8, 0xf1, 0xa8, 0x81, 0x9f, 0x38, 0x21, - 0xeb, 0xb0, 0x91, 0x04, 0xd0, 0xf2, 0x48, 0xe4, 0xcb, 0xf2, 0x01, 0x47, 0x2a, 0xe2, 0x36, 0x32, - 0xa7, 0xec, 0x54, 0x18, 0xee, 0x6d, 0x58, 0xe7, 0xa1, 0x33, 0xbc, 0xdf, 0x02, 0xd2, 0x58, 0x4a, - 0x5a, 0x85, 0x80, 0xbc, 0x9f, 0x02, 0x12, 0x06, 0xc2, 0x14, 0x08, 0xcf, 0x48, 0x65, 0x49, 0x84, - 0x01, 0xb7, 0x07, 0xc2, 0x33, 0xad, 0x64, 0x46, 0x3f, 0x71, 0x27, 0x1e, 0xda, 0xae, 0x89, 0x53, - 0x2f, 0x34, 0x8e, 0x82, 0x5a, 0x8d, 0x56, 0x66, 0x59, 0xc0, 0x06, 0xc6, 0x51, 0x80, 0x26, 0xb7, - 0xc1, 0x35, 0x7f, 0x5e, 0xef, 0x6b, 0xb2, 0x3f, 0x4e, 0xb2, 0x09, 0xb4, 0xb2, 0x21, 0x19, 0x08, - 0x9f, 0x02, 0x8b, 0xce, 0x4a, 0x25, 0x0b, 0xfa, 0xfa, 0xc2, 0x6c, 0xdc, 0x10, 0x87, 0xa5, 0x71, - 0xd4, 0xff, 0x2d, 0x28, 0x07, 0xde, 0xcc, 0x1f, 0x59, 0x7a, 0x10, 0x5a, 0xd3, 0xda, 0x6b, 0x54, - 0x21, 0xe0, 0xa0, 0x7e, 0x68, 0x4d, 0xd9, 0xa7, 0xb0, 0x9e, 0xb6, 0xa0, 0x6e, 0x2c, 0x39, 0x72, - 0xa4, 0x69, 0xa1, 0x55, 0x46, 0xb2, 0x4d, 0x75, 0x9b, 0x07, 0x77, 0x93, 0xba, 0x42, 0x8c, 0xfc, - 0x58, 0xad, 0xe2, 0x7a, 0x61, 0x23, 0x82, 0x61, 0x07, 0x46, 0x96, 0x75, 0x78, 0x46, 0x1a, 0x4e, - 0xdc, 0x81, 0xb1, 0x2d, 0x8b, 0x96, 0x4a, 0x64, 0xd6, 0xe2, 0x5c, 0xe0, 0xf6, 0x22, 0x31, 0xdc, - 0x4a, 0xcd, 0x85, 0xd8, 0x90, 0xd4, 0xc0, 0x4f, 0x8c, 0xca, 0x26, 0xf0, 0xe8, 0x12, 0xda, 0xc3, - 0x2d, 0x9f, 0x47, 0x92, 0x90, 0x0e, 0x14, 0x1f, 0x5c, 0xce, 0x6f, 0x2d, 0x1a, 0x8f, 0xba, 0x91, - 0x37, 0x9b, 0xc7, 0x50, 0x9d, 0xfa, 0x38, 0x24, 0x71, 0x65, 0x55, 0xb9, 0x1f, 0x0e, 0x7c, 0x2b, - 0xa9, 0x6f, 0x65, 0x2a, 0xa5, 0xd8, 0xf7, 0x61, 0x53, 0xe2, 0x9c, 0x9d, 0x10, 0xf3, 0x6d, 0x62, - 0xde, 0x9a, 0x63, 0x3e, 0x3c, 0x41, 0xf6, 0xea, 0x34, 0x95, 0x66, 0xf5, 0x39, 0x2f, 0x17, 0x5a, - 0x90, 0x77, 0x88, 0xff, 0xea, 0x05, 0xae, 0xab, 0x94, 0xfb, 0xeb, 0x29, 0x3f, 0x85, 0x6b, 0x07, - 0x2d, 0xd7, 0x24, 0x05, 0xab, 0xa8, 0xf1, 0x04, 0x7b, 0x04, 0x15, 0x6e, 0xcb, 0x50, 0x90, 0x6c, - 0x50, 0xbb, 0x2b, 0xbb, 0xf9, 0xc9, 0xa0, 0x21, 0x84, 0x56, 0x76, 0xe2, 0xdf, 0x01, 0xfb, 0x04, - 0x36, 0xf9, 0x19, 0x8c, 0x2c, 0x98, 0xdf, 0x5a, 0x9c, 0x68, 0x44, 0xb4, 0x9b, 0x48, 0x67, 0x0d, - 0xae, 0xf9, 0x33, 0x97, 0xec, 0x1b, 0xc1, 0x39, 0xf5, 0xbd, 0xa1, 0xc5, 0xf9, 0xef, 0x11, 0xbf, - 0x68, 0x8e, 0xc6, 0xc9, 0x38, 0x2f, 0x49, 0xc4, 0x2b, 0xbe, 0x0c, 0x3a, 0x40, 0xbe, 0x0b, 0xf2, - 0x1c, 0xce, 0x6c, 0xc7, 0xe4, 0x79, 0xbe, 0xfd, 0x4d, 0xf2, 0xdc, 0x41, 0x3e, 0xca, 0x93, 0x41, - 0x6e, 0x36, 0xb3, 0x4d, 0xd2, 0xf3, 0x2a, 0x1a, 0xfd, 0x66, 0x6f, 0x42, 0xd5, 0xb7, 0x46, 0x33, - 0x3f, 0xb0, 0x5f, 0x58, 0x7a, 0x60, 0xbb, 0x27, 0xb5, 0x77, 0xa8, 0x1f, 0xd7, 0x63, 0x68, 0xdf, - 0x76, 0x4f, 0x70, 0x72, 0x5a, 0x67, 0xa1, 0xe5, 0xbb, 0x3c, 0x6e, 0xff, 0x5d, 0x79, 0x72, 0xb6, - 0x08, 0x81, 0xd2, 0x45, 0x03, 0x2b, 0xfe, 0x3d, 0x37, 0x39, 0x02, 0x3e, 0x39, 0x1e, 0x7c, 0xad, - 0xc9, 0xd1, 0xa7, 0xc9, 0x71, 0x17, 0x8a, 0xb6, 0x1b, 0x5a, 0xfe, 0x0b, 0xc3, 0xa9, 0xbd, 0xbf, - 0xb0, 0x07, 0xc4, 0x38, 0x76, 0x07, 0x0a, 0x81, 0x63, 0xa3, 0x94, 0xa9, 0x7d, 0xb0, 0x40, 0x16, - 0xa1, 0xd8, 0x3d, 0x28, 0xc5, 0x57, 0xce, 0x6a, 0x1f, 0x2e, 0xd0, 0x25, 0x48, 0x76, 0x13, 0x72, - 0xa7, 0x38, 0xa1, 0x1e, 0x2e, 0x1e, 0xcb, 0x20, 0x1c, 0x95, 0x86, 0x31, 0x6a, 0xf5, 0xa4, 0x34, - 0x3c, 0x5a, 0x50, 0x1a, 0x76, 0x6d, 0xc7, 0xe1, 0x4a, 0xc3, 0x58, 0xfc, 0xc2, 0x2d, 0x97, 0x38, - 0xb0, 0x25, 0x1f, 0x2d, 0x6e, 0xb9, 0x88, 0x7b, 0x46, 0x97, 0xf3, 0xca, 0x01, 0x9d, 0x35, 0xf0, - 0x23, 0x93, 0x8f, 0xe5, 0xbe, 0x4a, 0x1f, 0x42, 0x68, 0x10, 0xc4, 0x69, 0x34, 0x51, 0xc4, 0x49, - 0x8b, 0x6d, 0x9e, 0xd5, 0x3e, 0xe1, 0xb7, 0x3e, 0x38, 0xa4, 0x6d, 0x9e, 0xb1, 0x0f, 0x60, 0x3d, - 0x0a, 0xab, 0xc2, 0xe2, 0x82, 0xda, 0xa7, 0x0b, 0x35, 0x48, 0x13, 0xb0, 0x26, 0x54, 0xc6, 0xa8, - 0xdd, 0x4f, 0xb8, 0xb2, 0x5f, 0x7b, 0x4c, 0x15, 0xd9, 0x8e, 0xb6, 0xf3, 0x8b, 0x8c, 0x01, 0x2d, - 0xc5, 0xc5, 0x1e, 0x00, 0xb3, 0xc7, 0x7c, 0x3c, 0x77, 0x7d, 0x6f, 0xc2, 0x15, 0xfa, 0xda, 0x67, - 0x34, 0xbb, 0x96, 0x60, 0xe8, 0xe0, 0xd5, 0x72, 0x4d, 0x7d, 0x12, 0x08, 0xe5, 0xe4, 0x3b, 0x54, - 0x4f, 0x21, 0x32, 0xe3, 0xab, 0xa9, 0x62, 0x4b, 0x2b, 0x23, 0xed, 0x7e, 0xc0, 0x75, 0x95, 0xcf, - 0x00, 0xa7, 0xeb, 0x8b, 0x84, 0xf5, 0x57, 0x5e, 0xca, 0x8a, 0xb4, 0x11, 0xeb, 0x63, 0xa8, 0x9a, - 0x96, 0x39, 0x9b, 0x92, 0x9e, 0x46, 0x53, 0xf4, 0xbb, 0xb2, 0xf0, 0x93, 0x5d, 0xc6, 0x5a, 0xc5, - 0x94, 0x1d, 0xc8, 0x9f, 0xc2, 0x46, 0xe4, 0xdb, 0x0d, 0x85, 0x1b, 0xf8, 0x7b, 0x72, 0xb1, 0xb1, - 0xeb, 0x56, 0x5b, 0x9f, 0x45, 0x3f, 0xa9, 0xc8, 0x47, 0xb0, 0x4e, 0x7b, 0x77, 0xe0, 0x1a, 0xd3, - 0xe0, 0xd8, 0x0b, 0x6b, 0xbf, 0x2a, 0xab, 0x21, 0x7d, 0x01, 0xd5, 0x2a, 0x48, 0x14, 0xa5, 0x70, - 0xcb, 0x49, 0xd6, 0xe9, 0x28, 0xb4, 0x6a, 0xdf, 0xe7, 0x5b, 0x4e, 0x0c, 0x6c, 0x84, 0x16, 0x7b, - 0x04, 0x60, 0x4c, 0xa7, 0xce, 0x39, 0x9f, 0x9a, 0x3f, 0xa0, 0xa9, 0xb9, 0x25, 0x4d, 0xcd, 0x3a, - 0x22, 0x69, 0x6e, 0x96, 0x8c, 0xe8, 0x27, 0x7b, 0x08, 0x95, 0xa9, 0x17, 0x84, 0xba, 0x39, 0x71, - 0xa8, 0xfd, 0x75, 0x79, 0x6d, 0x1f, 0x78, 0x41, 0xd8, 0x9c, 0x38, 0xb4, 0xf1, 0x4c, 0xe3, 0xdf, - 0xac, 0x03, 0x97, 0x52, 0x72, 0xdb, 0xa0, 0x30, 0x87, 0xda, 0x0e, 0x95, 0x78, 0x43, 0x2a, 0x51, - 0x92, 0xdf, 0x22, 0xc6, 0x6f, 0xd3, 0x9b, 0x07, 0x91, 0x25, 0x4a, 0x63, 0x10, 0x07, 0xba, 0x36, - 0xb8, 0x42, 0x42, 0xd0, 0x28, 0xd2, 0xf5, 0x31, 0x6c, 0x24, 0x54, 0xd8, 0xc0, 0xa0, 0xd6, 0x94, - 0x67, 0xb2, 0x14, 0x8e, 0xbe, 0x1e, 0x31, 0x22, 0x2c, 0xa0, 0xbe, 0xf3, 0x1c, 0x67, 0x36, 0x15, - 0xa2, 0xb4, 0xd6, 0x12, 0x7d, 0x47, 0x40, 0x2e, 0x25, 0x25, 0x63, 0xdd, 0x9a, 0xd4, 0x76, 0x65, - 0x63, 0xdd, 0x9a, 0xa8, 0xff, 0x2c, 0x0f, 0xc5, 0xc8, 0x8a, 0x61, 0x65, 0x28, 0x1c, 0x76, 0x9f, - 0x76, 0x7b, 0xcf, 0xbb, 0xfc, 0x5a, 0x5d, 0xbd, 0xdf, 0x6f, 0x69, 0x03, 0xc5, 0x64, 0x55, 0x00, - 0xba, 0x38, 0xa3, 0xf7, 0x1b, 0xf5, 0x2e, 0xbf, 0x66, 0x47, 0xd7, 0x75, 0x78, 0x7a, 0x95, 0x6d, - 0xc2, 0xfa, 0xee, 0x61, 0x97, 0x82, 0x11, 0x39, 0x28, 0x8b, 0xa0, 0xd6, 0xe7, 0xfc, 0x08, 0x96, - 0x83, 0x72, 0x08, 0xda, 0xaf, 0x0f, 0x5a, 0x5a, 0x3b, 0x02, 0xe5, 0x29, 0xae, 0xb1, 0x77, 0xa8, - 0x35, 0x44, 0x4e, 0x6b, 0xec, 0x32, 0x6c, 0xc6, 0x6c, 0x51, 0x96, 0x4a, 0x01, 0x6b, 0x76, 0xa0, - 0xf5, 0x7e, 0xd8, 0x6a, 0x0c, 0x14, 0xa0, 0xf3, 0xdc, 0x27, 0x4f, 0x94, 0x32, 0xab, 0x40, 0xb1, - 0xd9, 0xee, 0x0f, 0xda, 0xdd, 0xc6, 0x40, 0xa9, 0x60, 0x85, 0x77, 0xdb, 0x9d, 0x41, 0x4b, 0x53, - 0xd6, 0x59, 0x11, 0x72, 0x3f, 0xec, 0xb5, 0xbb, 0x4a, 0x95, 0x2e, 0x10, 0xd5, 0xf7, 0x0f, 0x3a, - 0x2d, 0x65, 0x03, 0xa1, 0xfd, 0x9e, 0x36, 0x50, 0x14, 0x84, 0x3e, 0x6f, 0x77, 0x9b, 0xbd, 0xe7, - 0xca, 0x26, 0x2b, 0x41, 0xfe, 0xb0, 0x8b, 0xc5, 0x30, 0xb6, 0x0e, 0x25, 0xfa, 0xa9, 0xd7, 0x3b, - 0x1d, 0xe5, 0x92, 0x74, 0x08, 0xbc, 0x85, 0x28, 0x3a, 0x52, 0xee, 0x63, 0x1d, 0x2e, 0x63, 0x5b, - 0xe2, 0x24, 0x51, 0x5f, 0xc1, 0x7c, 0xf6, 0xdb, 0xdd, 0xc3, 0xbe, 0x72, 0x15, 0x89, 0xe9, 0x27, - 0x61, 0x6a, 0x98, 0x4f, 0xbb, 0x4b, 0x5d, 0x79, 0x13, 0x7f, 0x37, 0x5b, 0x9d, 0xd6, 0xa0, 0xa5, - 0xdc, 0xc2, 0x56, 0x69, 0xad, 0x83, 0x4e, 0xbd, 0xd1, 0x52, 0xb6, 0x31, 0xd1, 0xe9, 0x35, 0x9e, - 0xea, 0xbd, 0x03, 0xe5, 0x0d, 0xb6, 0x05, 0x4a, 0xaf, 0xab, 0x37, 0x0f, 0x0f, 0x3a, 0xed, 0x46, - 0x7d, 0xd0, 0xd2, 0x9f, 0xb6, 0xbe, 0x50, 0x54, 0xec, 0xf6, 0x03, 0xad, 0xa5, 0x8b, 0xbc, 0x6e, - 0x33, 0x05, 0x2a, 0xbb, 0x87, 0x3f, 0xfe, 0xf1, 0x17, 0xba, 0x68, 0xf7, 0x9b, 0x58, 0xad, 0x84, - 0x42, 0x3f, 0x7c, 0xaa, 0xdc, 0x9d, 0x03, 0xf5, 0x9f, 0x2a, 0x6f, 0x61, 0xbf, 0x45, 0x03, 0xa1, - 0xdc, 0x43, 0x02, 0xad, 0xd5, 0x38, 0xd4, 0xfa, 0xed, 0x67, 0x2d, 0xbd, 0x31, 0x68, 0x29, 0x6f, - 0x53, 0x47, 0xb5, 0xbb, 0x4f, 0x95, 0xfb, 0xd8, 0x12, 0xfc, 0xc5, 0x87, 0xe7, 0x1d, 0xc6, 0xa0, - 0x9a, 0xd0, 0x12, 0xec, 0x5d, 0x24, 0xd9, 0xd1, 0x7a, 0xf5, 0x66, 0xa3, 0xde, 0x1f, 0x28, 0xef, - 0x61, 0x37, 0xf4, 0x0f, 0x3a, 0xed, 0x81, 0xf2, 0x00, 0xdb, 0xfa, 0xa4, 0x3e, 0xd8, 0x6b, 0x69, - 0xca, 0xfb, 0x38, 0xd2, 0x83, 0xf6, 0x7e, 0x4b, 0x17, 0xdd, 0xfe, 0x10, 0xcb, 0xd8, 0x6d, 0x77, - 0x3a, 0xca, 0x23, 0x3a, 0xe7, 0xac, 0x6b, 0x83, 0x36, 0x8d, 0xf5, 0x47, 0x98, 0x41, 0xfd, 0xe0, - 0xa0, 0xf3, 0x85, 0xf2, 0x31, 0x36, 0x70, 0xff, 0xb0, 0x33, 0x68, 0xeb, 0x87, 0x07, 0xcd, 0xfa, - 0xa0, 0xa5, 0x7c, 0x42, 0x13, 0xa1, 0xd7, 0x1f, 0x34, 0xf7, 0x3b, 0xca, 0xa7, 0x94, 0x27, 0x4d, - 0xc3, 0x46, 0xa7, 0xd7, 0x6d, 0x29, 0x8f, 0xd5, 0xdf, 0x80, 0x62, 0x64, 0xd9, 0x62, 0x36, 0xed, - 0x6e, 0xb7, 0xa5, 0x29, 0x2b, 0x58, 0x54, 0xa7, 0xb5, 0x3b, 0x50, 0x32, 0x74, 0xe8, 0xdb, 0x7e, - 0xb2, 0x37, 0x50, 0x56, 0xf1, 0x67, 0xef, 0x10, 0x7b, 0x2d, 0x4b, 0xcd, 0x6d, 0xed, 0xb7, 0x95, - 0x1c, 0xfe, 0xaa, 0x77, 0x07, 0x6d, 0x25, 0x4f, 0xf3, 0xa6, 0xdd, 0x7d, 0xd2, 0x69, 0x29, 0x6b, - 0x08, 0xdd, 0xaf, 0x6b, 0x4f, 0x95, 0x02, 0xcf, 0xb4, 0xd9, 0xfa, 0x5c, 0x29, 0xb2, 0x35, 0x58, - 0xed, 0x3c, 0x54, 0x4a, 0x08, 0x6a, 0xb6, 0x9a, 0x87, 0x07, 0x0a, 0xa8, 0xf7, 0xa0, 0x50, 0x3f, - 0x3a, 0xda, 0xf7, 0x4c, 0x3a, 0x67, 0xde, 0x3d, 0xec, 0x74, 0xf8, 0x3a, 0xda, 0xe9, 0x0d, 0x06, - 0xbd, 0x7d, 0x25, 0x83, 0x33, 0x77, 0xd0, 0x3b, 0x50, 0x56, 0xd5, 0x36, 0x14, 0xa3, 0xdd, 0x54, - 0xba, 0x14, 0x57, 0x84, 0xdc, 0x81, 0xd6, 0x7a, 0xc6, 0x23, 0x15, 0xba, 0xad, 0xcf, 0xb1, 0x9a, - 0xf8, 0x0b, 0x33, 0xca, 0x62, 0x41, 0xfc, 0xf6, 0x1a, 0xdd, 0x8a, 0xeb, 0xb4, 0xbb, 0xad, 0xba, - 0xa6, 0xe4, 0xd5, 0x8f, 0x53, 0x87, 0xc0, 0x42, 0xf0, 0x60, 0xf1, 0xf5, 0xb6, 0x28, 0xbe, 0xfd, - 0xa4, 0xdb, 0xd3, 0x5a, 0xfc, 0x9a, 0x9d, 0xe8, 0xc8, 0x55, 0xf5, 0x1d, 0x28, 0xc5, 0x42, 0x13, - 0x27, 0x56, 0x43, 0xeb, 0xf5, 0xfb, 0xbc, 0xdf, 0x57, 0x30, 0x4d, 0x7d, 0xc3, 0xd3, 0x19, 0xb5, - 0x0f, 0x9b, 0x91, 0xbc, 0xa6, 0x1b, 0x08, 0x64, 0xbe, 0x6c, 0x41, 0xbe, 0x63, 0xbd, 0xb0, 0x9c, - 0x28, 0x94, 0x9e, 0x12, 0x08, 0xed, 0x0d, 0xbf, 0x6c, 0xc7, 0x37, 0xa1, 0x29, 0x81, 0x0a, 0x5a, - 0x57, 0xba, 0x8c, 0x4d, 0x57, 0x38, 0x7e, 0x37, 0x03, 0xc5, 0x78, 0x17, 0xb8, 0x03, 0xab, 0x83, - 0xbe, 0x38, 0x44, 0xda, 0x7a, 0x90, 0xbc, 0x3d, 0x31, 0x88, 0x7e, 0x69, 0xab, 0x83, 0x3e, 0x7b, - 0x17, 0xd6, 0xf8, 0xdd, 0x51, 0xe1, 0x10, 0xda, 0x4a, 0xef, 0x2c, 0x03, 0xc2, 0x69, 0x82, 0x86, - 0x7d, 0x0c, 0xa5, 0xb8, 0xb6, 0xc2, 0xeb, 0x72, 0x35, 0xcd, 0x10, 0xa3, 0xb5, 0x84, 0x52, 0xed, - 0x40, 0x35, 0x9d, 0x21, 0xbb, 0x09, 0xc0, 0xb3, 0x94, 0xdc, 0x80, 0x12, 0x84, 0x5d, 0x87, 0xe8, - 0x4a, 0x6b, 0x93, 0x2a, 0xb6, 0x1e, 0x5f, 0x71, 0x6d, 0xaa, 0x7f, 0x23, 0x0b, 0x90, 0xe8, 0x91, - 0xd8, 0x11, 0xb1, 0x2f, 0x29, 0x2f, 0xe2, 0x07, 0x5e, 0x83, 0x92, 0xe3, 0x19, 0xa6, 0xfc, 0xf4, - 0x44, 0x11, 0x01, 0x34, 0x34, 0xf2, 0xf5, 0xae, 0x12, 0x0f, 0xde, 0x61, 0x57, 0x60, 0x6d, 0xec, - 0xf9, 0x13, 0x23, 0x14, 0xf7, 0x26, 0x44, 0x0a, 0xb7, 0x03, 0x7e, 0xa6, 0x8d, 0xda, 0xb4, 0x4b, - 0x57, 0x27, 0x70, 0x0c, 0x2a, 0x02, 0xd8, 0x41, 0x18, 0x1a, 0x8f, 0x96, 0x3b, 0x72, 0xbc, 0xc0, - 0x32, 0xf5, 0x21, 0x8f, 0x87, 0xaa, 0x68, 0x10, 0x81, 0x76, 0xce, 0x79, 0x6b, 0xfd, 0x89, 0xed, - 0x1a, 0xa1, 0x38, 0xe9, 0xa1, 0xd6, 0x46, 0x10, 0xac, 0xee, 0x97, 0x81, 0x27, 0x5c, 0x4b, 0xfc, - 0x78, 0xbc, 0x88, 0x00, 0xaa, 0xee, 0xeb, 0x00, 0x56, 0x30, 0x32, 0xa6, 0x3c, 0xf3, 0x12, 0x65, - 0x5e, 0x12, 0x90, 0x9d, 0x73, 0xd6, 0x81, 0xea, 0x60, 0x88, 0xdb, 0x97, 0x87, 0x26, 0x7f, 0xc3, - 0x73, 0x84, 0xd3, 0xe7, 0xce, 0xbc, 0xc2, 0xfd, 0x20, 0x4d, 0xc6, 0xcf, 0xf1, 0xe7, 0x78, 0xaf, - 0xd7, 0xe1, 0xd2, 0x12, 0xb2, 0x6f, 0x14, 0xd0, 0xe8, 0x44, 0xa3, 0x53, 0x0f, 0x43, 0xba, 0xaa, - 0x14, 0xef, 0xd4, 0x99, 0xe8, 0xc2, 0x05, 0xdf, 0xa4, 0x5f, 0xa3, 0x90, 0x25, 0x11, 0x0b, 0x2b, - 0x06, 0x29, 0x8e, 0x71, 0xbd, 0x0b, 0x1b, 0x88, 0x1c, 0xdb, 0x96, 0x63, 0x0a, 0x12, 0x7e, 0xd3, - 0x66, 0x7d, 0xe4, 0x39, 0xbb, 0x08, 0x25, 0x3a, 0xf5, 0xaf, 0xe5, 0x01, 0x12, 0x1b, 0x2d, 0x15, - 0x4a, 0x90, 0x49, 0x87, 0x12, 0x3c, 0x84, 0x2b, 0xe2, 0x1e, 0x56, 0x7c, 0x1e, 0x6f, 0xbb, 0xfa, - 0xd0, 0x88, 0xa2, 0x36, 0x98, 0xc0, 0xf2, 0x23, 0xf9, 0xb6, 0xbb, 0x63, 0xa0, 0xc6, 0xb7, 0x21, - 0xf3, 0x84, 0xe7, 0xd3, 0xb4, 0x3b, 0x57, 0xd6, 0x23, 0x12, 0xf6, 0xc1, 0xf9, 0x94, 0x7d, 0x00, - 0x97, 0x7d, 0x6b, 0xec, 0x5b, 0xc1, 0xb1, 0x1e, 0x06, 0x72, 0x61, 0x3c, 0x38, 0x72, 0x53, 0x20, - 0x07, 0x41, 0x5c, 0xd6, 0x07, 0x70, 0x59, 0x58, 0x6f, 0x73, 0xd5, 0xe3, 0x17, 0xf6, 0x37, 0x39, - 0x52, 0xae, 0xdd, 0xeb, 0x00, 0xc2, 0x70, 0x8d, 0x1e, 0x70, 0x29, 0x6a, 0x25, 0x6e, 0xa4, 0x8a, - 0x6b, 0xcd, 0x64, 0x7d, 0x8a, 0x73, 0x56, 0x9e, 0x60, 0x2a, 0xe4, 0x50, 0x9c, 0xd2, 0x99, 0x60, - 0xf5, 0x61, 0xf5, 0x01, 0x3d, 0x50, 0x43, 0xd7, 0xcc, 0x3d, 0xd3, 0xd2, 0x08, 0xc7, 0xde, 0x83, - 0x4b, 0x72, 0xb3, 0xa3, 0x37, 0x16, 0xca, 0x54, 0x11, 0x25, 0x69, 0xa8, 0xc6, 0x5f, 0x5b, 0x78, - 0x07, 0x98, 0x54, 0xf3, 0x88, 0xba, 0x42, 0xd4, 0x1b, 0x71, 0xb5, 0x05, 0xf1, 0x5b, 0x40, 0x55, - 0xe4, 0x47, 0x30, 0xeb, 0x8b, 0xa6, 0x1a, 0x22, 0xe9, 0x2c, 0xe6, 0x03, 0xb8, 0x9c, 0xb4, 0x4e, - 0x37, 0x42, 0x3d, 0x3c, 0xb6, 0x74, 0xcb, 0x35, 0xe9, 0xf2, 0x5c, 0x51, 0xdb, 0x8c, 0x1b, 0x5a, - 0x0f, 0x07, 0xc7, 0x16, 0x1a, 0x5b, 0x92, 0x0b, 0x6e, 0xe3, 0xe5, 0x2e, 0xb8, 0x4f, 0xa0, 0x96, - 0x8a, 0x2f, 0x90, 0xbb, 0x9b, 0x5f, 0x3e, 0xdd, 0x92, 0xa3, 0x0a, 0xe2, 0x1e, 0xbf, 0x0f, 0x9b, - 0xc7, 0x46, 0xa0, 0xa7, 0x78, 0xc9, 0x33, 0x58, 0xd4, 0x36, 0x8e, 0x8d, 0xe0, 0x40, 0xe2, 0x51, - 0x7f, 0x3f, 0x03, 0xd5, 0xb4, 0xd5, 0xca, 0x2f, 0x1f, 0x39, 0xb3, 0x89, 0xcb, 0x43, 0x89, 0xf2, - 0x5a, 0x94, 0xc4, 0xb5, 0x30, 0x3d, 0xd1, 0x79, 0x2a, 0x5a, 0x0b, 0xd3, 0x93, 0x06, 0xa5, 0xd9, - 0xdb, 0x50, 0x98, 0x9e, 0x70, 0xe1, 0x70, 0xd1, 0xec, 0x5b, 0x9b, 0xf2, 0x18, 0xee, 0xb7, 0xa1, - 0x30, 0x13, 0xa4, 0xb9, 0x8b, 0x48, 0x67, 0x44, 0xaa, 0xfe, 0xd9, 0x2a, 0x54, 0x64, 0x7f, 0xcd, - 0xd7, 0x09, 0x3b, 0xf8, 0x46, 0xe1, 0x22, 0xdb, 0x14, 0xd2, 0xa9, 0x53, 0xc0, 0x38, 0xf6, 0x13, - 0x8f, 0x39, 0x80, 0x63, 0x23, 0xa8, 0xcf, 0x42, 0xaf, 0xe1, 0xf1, 0xa3, 0x4e, 0xcf, 0x89, 0x02, - 0xc9, 0xf9, 0xca, 0x40, 0x99, 0x20, 0x62, 0xc8, 0x3f, 0x10, 0xf7, 0x54, 0xe8, 0x66, 0x1a, 0x85, - 0x2a, 0xe5, 0x17, 0xe6, 0x4b, 0x25, 0xba, 0x98, 0x46, 0x51, 0x48, 0x0f, 0x61, 0x23, 0xb9, 0x15, - 0x10, 0x45, 0x37, 0xcd, 0xb3, 0xac, 0xc7, 0x57, 0x02, 0xc4, 0x55, 0xf4, 0x75, 0x3b, 0xd0, 0x3d, - 0xc7, 0x8c, 0xae, 0x1f, 0x15, 0x22, 0x07, 0x7c, 0xcf, 0x31, 0xc5, 0xe5, 0x44, 0x4e, 0xe3, 0x5a, - 0xa7, 0x11, 0x4d, 0xec, 0xa4, 0xef, 0x5a, 0xa7, 0xe2, 0x1a, 0xd2, 0x3f, 0xcf, 0xc0, 0xe6, 0x82, - 0x7f, 0x05, 0x25, 0x67, 0xf2, 0x30, 0x12, 0xfe, 0x64, 0x6f, 0x40, 0x65, 0x62, 0x84, 0xa3, 0x63, - 0x7d, 0xea, 0x5b, 0x63, 0xfb, 0x2c, 0x7a, 0xdd, 0x89, 0x60, 0x07, 0x04, 0xa2, 0x88, 0x2f, 0x3a, - 0x14, 0xe2, 0x7e, 0x6f, 0x2e, 0xf8, 0xf8, 0x41, 0x50, 0x87, 0x1c, 0xde, 0x51, 0x34, 0x68, 0xee, - 0x82, 0x68, 0xd0, 0xeb, 0x50, 0x72, 0xbd, 0x50, 0xf7, 0x5c, 0x7d, 0x7a, 0x22, 0xde, 0x2e, 0x28, - 0xb8, 0x5e, 0xd8, 0x73, 0x0f, 0x4e, 0xd8, 0x3d, 0x50, 0x66, 0x81, 0xa5, 0x0f, 0x1d, 0xcf, 0x9b, - 0x44, 0x46, 0x0e, 0x97, 0x1d, 0xd5, 0x59, 0x60, 0xed, 0x20, 0x98, 0xd7, 0x5f, 0xbd, 0x01, 0x6b, - 0xed, 0xd8, 0x1b, 0x14, 0x07, 0x3e, 0x65, 0xc5, 0x43, 0x28, 0x1e, 0x94, 0x1a, 0xf4, 0xa8, 0xca, - 0xbe, 0x31, 0x65, 0xf7, 0x21, 0x3b, 0x31, 0xa6, 0xe2, 0xfc, 0xa9, 0x16, 0x1f, 0xd2, 0x71, 0xec, - 0x83, 0x7d, 0x63, 0xca, 0xb7, 0x1b, 0x24, 0xba, 0xfe, 0x09, 0x14, 0x23, 0xc0, 0x37, 0xda, 0x58, - 0xfe, 0xd5, 0x2a, 0x94, 0x9a, 0xb2, 0x0f, 0x19, 0x0d, 0xe3, 0xd0, 0x9f, 0xb9, 0xa8, 0xa5, 0x45, - 0xcf, 0x43, 0x8c, 0x0c, 0x77, 0x20, 0x40, 0xd1, 0x84, 0x5e, 0x7d, 0xc9, 0x84, 0xbe, 0x01, 0xe0, - 0x93, 0x33, 0x84, 0xfc, 0x21, 0xd9, 0x38, 0x08, 0xb7, 0x6d, 0xb6, 0xcd, 0xb3, 0xe5, 0x51, 0x36, - 0xb9, 0xaf, 0x1f, 0x65, 0x93, 0x5f, 0x1a, 0x65, 0x73, 0x37, 0xd9, 0x54, 0x70, 0x62, 0x63, 0xc1, - 0x25, 0xbe, 0xb5, 0x4d, 0xe3, 0xbb, 0x38, 0x58, 0xfa, 0x77, 0xa0, 0x1a, 0xb5, 0x4e, 0xe4, 0x07, - 0xa9, 0xeb, 0x3f, 0x02, 0xc7, 0x9d, 0xce, 0xeb, 0xa1, 0x9c, 0x4c, 0x2f, 0xd4, 0xf2, 0x2b, 0xc2, - 0x8f, 0xfe, 0x66, 0x06, 0x98, 0x30, 0xde, 0x77, 0x67, 0x8e, 0x33, 0xb0, 0xce, 0x48, 0x1e, 0xdc, - 0x87, 0x4d, 0xe1, 0x13, 0x97, 0x82, 0xf7, 0xc4, 0x89, 0x2d, 0x47, 0x24, 0x27, 0xb6, 0xcb, 0x6e, - 0x68, 0xae, 0x2e, 0xbd, 0xa1, 0xb9, 0xfc, 0xe6, 0xe7, 0x2d, 0x28, 0xcb, 0xf7, 0x1b, 0xb9, 0x12, - 0x06, 0x46, 0x72, 0xb5, 0xf1, 0xdf, 0xac, 0x02, 0x24, 0x0e, 0x86, 0x5f, 0x76, 0x88, 0xd4, 0x92, - 0x21, 0xc9, 0x2e, 0x1b, 0x92, 0x7b, 0xa0, 0xc8, 0x74, 0xd2, 0x45, 0xdb, 0x6a, 0x42, 0x18, 0x29, - 0x37, 0x76, 0x20, 0x5f, 0x86, 0xa4, 0x78, 0x48, 0x11, 0x06, 0x22, 0x82, 0x25, 0x49, 0xf2, 0x8a, - 0xb5, 0x57, 0xb4, 0x03, 0x2e, 0x89, 0xd9, 0x67, 0x70, 0x2d, 0xe6, 0xd4, 0x4f, 0xed, 0xf0, 0xd8, - 0x9b, 0x85, 0x62, 0x9d, 0x06, 0x42, 0x36, 0x5d, 0x89, 0x72, 0x7a, 0xce, 0xd1, 0x7c, 0xbd, 0x06, - 0xa8, 0x9e, 0x8f, 0x67, 0x8e, 0xa3, 0x87, 0xd6, 0x59, 0x28, 0x5e, 0x9c, 0xa8, 0xa5, 0x7c, 0x33, - 0xd2, 0xf0, 0x6a, 0xc5, 0xb1, 0x48, 0xa8, 0x7f, 0x96, 0x85, 0xfc, 0x8f, 0x66, 0x96, 0x7f, 0xce, - 0x3e, 0x81, 0x52, 0x10, 0x4e, 0x42, 0xf9, 0x70, 0xf6, 0x1a, 0xcf, 0x80, 0xf0, 0x74, 0xb6, 0x6a, - 0x4d, 0x2c, 0x37, 0xe4, 0x4e, 0x4b, 0xa4, 0xa5, 0x6d, 0x67, 0x0b, 0xf2, 0x41, 0x68, 0x4d, 0x03, - 0x11, 0xdc, 0xc8, 0x13, 0x6c, 0x1b, 0xf2, 0xae, 0x67, 0x5a, 0x41, 0x3a, 0x84, 0xb1, 0x8b, 0x7a, - 0x06, 0x47, 0x30, 0x15, 0xd6, 0xe2, 0x11, 0x5f, 0x38, 0x20, 0xe5, 0x18, 0xba, 0x94, 0x62, 0x19, - 0xa6, 0xed, 0x1e, 0x45, 0x17, 0x97, 0xe3, 0x34, 0x6e, 0xa8, 0xa4, 0xd6, 0x1b, 0x47, 0xd1, 0x2b, - 0x02, 0x22, 0xc9, 0xb6, 0xa1, 0x8c, 0x3f, 0x9f, 0xfb, 0x76, 0x68, 0xf5, 0x1f, 0x45, 0x32, 0x5d, - 0x02, 0xa1, 0x52, 0x6e, 0x5a, 0xa1, 0x35, 0x0a, 0xfb, 0x5f, 0x89, 0xb8, 0x44, 0x0a, 0x5f, 0x8b, - 0x20, 0xec, 0x3b, 0xc0, 0x86, 0xc6, 0xe8, 0xe4, 0xc8, 0xa7, 0x00, 0x80, 0xaf, 0x66, 0x96, 0x6f, - 0x5b, 0x51, 0x1c, 0x62, 0x59, 0xea, 0x14, 0x6d, 0x33, 0x21, 0xfb, 0x11, 0xa7, 0x42, 0x73, 0x62, - 0x62, 0x9c, 0x35, 0xbd, 0xa9, 0x08, 0xbd, 0x12, 0x29, 0xd5, 0x84, 0xf5, 0x54, 0x17, 0x2e, 0xf8, - 0x87, 0xfa, 0xad, 0x4e, 0xab, 0x31, 0xe0, 0x86, 0xa5, 0x70, 0x4a, 0xac, 0xca, 0x4e, 0x8d, 0xac, - 0xe4, 0xed, 0xc8, 0x49, 0xd6, 0x67, 0x9e, 0x7c, 0x25, 0x2d, 0xed, 0x49, 0x4b, 0x59, 0x53, 0xff, - 0x60, 0x15, 0x36, 0x07, 0xbe, 0xe1, 0x06, 0x06, 0xd7, 0x45, 0xdc, 0xd0, 0xf7, 0x1c, 0xf6, 0x1d, - 0x28, 0x86, 0x23, 0x47, 0x1e, 0xda, 0x5b, 0x91, 0x20, 0x99, 0x23, 0x7d, 0x30, 0x18, 0x71, 0xaf, - 0x74, 0x21, 0xe4, 0x3f, 0xd8, 0x7b, 0x90, 0x1f, 0x5a, 0x47, 0xb6, 0x2b, 0x64, 0xe9, 0xe5, 0x79, - 0xc6, 0x1d, 0x44, 0xee, 0xad, 0x68, 0x9c, 0x8a, 0x7d, 0x00, 0x6b, 0x23, 0x6f, 0x12, 0x6d, 0x5d, - 0xc9, 0xc5, 0x38, 0xa9, 0x20, 0xc4, 0xee, 0xad, 0x68, 0x82, 0x8e, 0x7d, 0x02, 0x45, 0xdf, 0x73, - 0x1c, 0xec, 0x49, 0xb1, 0xa9, 0xd5, 0xe6, 0x79, 0x34, 0x81, 0xdf, 0x5b, 0xd1, 0x62, 0x5a, 0xf5, - 0x01, 0x14, 0x44, 0x65, 0xb1, 0x03, 0x76, 0x5a, 0x4f, 0xda, 0xa2, 0x23, 0x1b, 0xbd, 0xfd, 0xfd, - 0xf6, 0x80, 0xdf, 0xfa, 0xd5, 0x7a, 0x9d, 0xce, 0x4e, 0xbd, 0xf1, 0x54, 0x59, 0xdd, 0x29, 0xc2, - 0x1a, 0xf7, 0x3f, 0xaa, 0xbf, 0x99, 0x81, 0x8d, 0xb9, 0x06, 0xb0, 0xc7, 0x90, 0x9b, 0xa0, 0x6e, - 0xcc, 0xbb, 0xe7, 0xce, 0xd2, 0x56, 0x4a, 0x69, 0xae, 0x31, 0x23, 0x87, 0xfa, 0x19, 0x54, 0xd3, - 0x70, 0xc9, 0x07, 0xb1, 0x0e, 0x25, 0xad, 0x55, 0x6f, 0xea, 0xbd, 0x2e, 0x5a, 0xfe, 0xac, 0x0a, - 0x40, 0xc9, 0xe7, 0x5a, 0x9b, 0xdc, 0x06, 0xbf, 0x06, 0xca, 0x7c, 0xc7, 0xb0, 0x27, 0x68, 0xfd, - 0x4c, 0xa6, 0x8e, 0x45, 0x4a, 0xa6, 0x34, 0x64, 0x37, 0x97, 0xf4, 0xa4, 0x20, 0xe3, 0xb1, 0x28, - 0xa3, 0x54, 0x5a, 0xfd, 0x75, 0x60, 0x8b, 0x3d, 0xf8, 0xcb, 0xcb, 0xfe, 0x7f, 0x64, 0x20, 0x77, - 0xe0, 0x18, 0x2e, 0xbb, 0x0d, 0x79, 0x7a, 0xad, 0x46, 0x48, 0x64, 0x79, 0x7d, 0xe0, 0xb4, 0x20, - 0x1c, 0x7b, 0x07, 0xb2, 0xe1, 0x28, 0xba, 0x6c, 0x7c, 0xf5, 0x82, 0xc9, 0xb7, 0xb7, 0xa2, 0x21, - 0x15, 0xbb, 0x07, 0x59, 0xd3, 0x8c, 0x82, 0xfc, 0x85, 0x57, 0x02, 0x6d, 0xd2, 0xa6, 0x35, 0xb6, - 0x5d, 0x5b, 0xbc, 0xae, 0x83, 0x24, 0xec, 0x4d, 0xc8, 0x9a, 0x23, 0x27, 0x7d, 0x63, 0x83, 0x5b, - 0xaf, 0x71, 0x86, 0xe6, 0xc8, 0x41, 0x1d, 0x2e, 0xf4, 0xcf, 0x75, 0x7f, 0xe6, 0x52, 0xd4, 0x62, - 0x20, 0xec, 0xaa, 0x32, 0xea, 0x25, 0x33, 0x0a, 0x7d, 0x0c, 0xc4, 0xad, 0xc5, 0xa9, 0x6f, 0x4d, - 0x0d, 0x3f, 0xb6, 0xa8, 0xec, 0xe0, 0x80, 0x03, 0x76, 0xd6, 0x80, 0x1e, 0x01, 0x55, 0xdf, 0xa5, - 0xa7, 0x54, 0x50, 0x35, 0x57, 0xa3, 0x5f, 0x4b, 0xde, 0x8b, 0x13, 0x18, 0xf5, 0x2f, 0xb2, 0x50, - 0x96, 0xea, 0xc3, 0x3e, 0x82, 0xa2, 0x99, 0x5e, 0x88, 0xd7, 0x16, 0x2a, 0xfd, 0xa0, 0x19, 0x2d, - 0x41, 0x53, 0x4c, 0x6f, 0x3a, 0xf2, 0x08, 0xf5, 0x17, 0x86, 0x6f, 0xf3, 0x07, 0xb4, 0x56, 0xe5, - 0xb3, 0x87, 0xbe, 0x15, 0x3e, 0x8b, 0x30, 0x7b, 0x2b, 0x5a, 0x25, 0x90, 0xd2, 0x64, 0x3f, 0x88, - 0x26, 0x65, 0x53, 0x0f, 0x91, 0x71, 0xe0, 0xde, 0x8a, 0x16, 0xe1, 0x91, 0xd4, 0x3a, 0xb3, 0x46, - 0xb3, 0x30, 0xb2, 0x1f, 0xd6, 0xa3, 0x06, 0x11, 0x90, 0x5e, 0x43, 0xe4, 0x3f, 0xd9, 0x43, 0x94, - 0x9f, 0x86, 0xe3, 0x78, 0xa4, 0x7e, 0xe5, 0xe5, 0x93, 0x80, 0x66, 0x0c, 0xe7, 0xaf, 0x2f, 0x46, - 0x29, 0x76, 0x17, 0xf2, 0x5e, 0x78, 0x6c, 0x45, 0x5a, 0x79, 0xf4, 0x28, 0x0b, 0x82, 0x9a, 0x8d, - 0x0e, 0xce, 0x14, 0x42, 0xab, 0x3f, 0xcb, 0x40, 0x41, 0xf4, 0x00, 0xdb, 0x84, 0xf5, 0x7e, 0x6b, - 0xa0, 0x3f, 0xab, 0x6b, 0xed, 0xfa, 0x4e, 0xa7, 0x25, 0x2e, 0x9a, 0x3c, 0xd1, 0xea, 0x5d, 0x21, - 0x27, 0xb5, 0xd6, 0xb3, 0xde, 0xd3, 0x16, 0x77, 0xec, 0x35, 0x5b, 0xdd, 0x2f, 0x94, 0x2c, 0x77, - 0x6e, 0xb7, 0x0e, 0xea, 0x1a, 0x4a, 0xc9, 0x32, 0x14, 0x5a, 0x9f, 0xb7, 0x1a, 0x87, 0x24, 0x26, - 0xab, 0x00, 0xcd, 0x56, 0xbd, 0xd3, 0xe9, 0x35, 0x50, 0x6c, 0xae, 0x31, 0x06, 0xd5, 0x86, 0xd6, - 0xaa, 0x0f, 0x5a, 0x7a, 0xbd, 0xd1, 0xe8, 0x1d, 0x76, 0x07, 0x4a, 0x01, 0x4b, 0xac, 0x77, 0x06, - 0x2d, 0x2d, 0x06, 0xd1, 0x43, 0x59, 0x4d, 0xad, 0x77, 0x10, 0x43, 0x4a, 0x3b, 0x25, 0xb4, 0xe5, - 0x68, 0xac, 0xd4, 0x7f, 0xb4, 0x09, 0xd5, 0xf4, 0xd4, 0x64, 0x9f, 0x42, 0xd1, 0x34, 0x53, 0x63, - 0x7c, 0x63, 0xd9, 0x14, 0x7e, 0xd0, 0x34, 0xa3, 0x61, 0xe6, 0x3f, 0xd8, 0x1b, 0xd1, 0x42, 0x5a, - 0x5d, 0x58, 0x48, 0xd1, 0x32, 0xfa, 0x3e, 0x6c, 0x88, 0x47, 0x4d, 0x4c, 0x23, 0x34, 0x86, 0x46, - 0x60, 0xa5, 0x57, 0x49, 0x83, 0x90, 0x4d, 0x81, 0xdb, 0x5b, 0xd1, 0xaa, 0xa3, 0x14, 0x84, 0x7d, - 0x17, 0xaa, 0x06, 0x99, 0xeb, 0x31, 0x7f, 0x4e, 0x56, 0x2c, 0xeb, 0x88, 0x93, 0xd8, 0xd7, 0x0d, - 0x19, 0x80, 0x13, 0xd1, 0xf4, 0xbd, 0x69, 0xc2, 0x9c, 0x4f, 0x1d, 0x82, 0xf9, 0xde, 0x54, 0xe2, - 0xad, 0x98, 0x52, 0x9a, 0x7d, 0x02, 0x15, 0x51, 0xf3, 0xc4, 0x65, 0x11, 0x2f, 0x59, 0x5e, 0x6d, - 0x52, 0x14, 0xf7, 0x56, 0xb4, 0xf2, 0x28, 0x49, 0xb2, 0x47, 0xa8, 0x1d, 0x26, 0x6a, 0x75, 0x41, - 0x9e, 0x6b, 0x54, 0xdb, 0x88, 0x0b, 0x8c, 0x38, 0xc5, 0x3e, 0x00, 0xa0, 0x7a, 0x72, 0x9e, 0x62, - 0x2a, 0x28, 0xc5, 0xf7, 0xa6, 0x11, 0x4b, 0xc9, 0x8c, 0x12, 0x52, 0xf5, 0xb8, 0xc3, 0xa9, 0xb4, - 0x58, 0x3d, 0x72, 0x3a, 0x25, 0xd5, 0xe3, 0xbe, 0xaa, 0xb8, 0x7a, 0x9c, 0x0d, 0x16, 0xaa, 0x17, - 0x71, 0xf1, 0xea, 0x71, 0xa6, 0xa8, 0x7a, 0x9c, 0xa7, 0x3c, 0x5f, 0xbd, 0x88, 0x85, 0xaa, 0xc7, - 0x39, 0xbe, 0xbb, 0x60, 0x0f, 0x54, 0x2e, 0xb4, 0x07, 0x70, 0xd8, 0xd2, 0x16, 0xc1, 0x77, 0xa1, - 0x1a, 0x1c, 0x7b, 0xa7, 0x92, 0x00, 0x59, 0x97, 0xb9, 0xfb, 0xc7, 0xde, 0xa9, 0x2c, 0x41, 0xd6, - 0x03, 0x19, 0x80, 0xb5, 0xe5, 0x4d, 0xa4, 0xd7, 0x14, 0xaa, 0x72, 0x6d, 0xa9, 0x85, 0xcf, 0x6c, - 0xeb, 0x14, 0x6b, 0x6b, 0x44, 0x09, 0xec, 0x94, 0xc4, 0x7d, 0x13, 0x08, 0x87, 0x4c, 0x2a, 0xa8, - 0x42, 0x94, 0x04, 0xb1, 0x23, 0x27, 0xc0, 0xb9, 0x35, 0x73, 0x65, 0x36, 0x45, 0x9e, 0x5b, 0x87, - 0x6e, 0x8a, 0xb1, 0xc2, 0x49, 0x05, 0x6b, 0xb2, 0x2a, 0x02, 0xeb, 0xab, 0x99, 0xe5, 0x8e, 0x2c, - 0x11, 0xb2, 0x95, 0x5a, 0x15, 0x7d, 0x81, 0x4b, 0x56, 0x45, 0x04, 0x89, 0xe7, 0x75, 0xcc, 0xce, - 0xe6, 0xe7, 0xb5, 0xc4, 0x4c, 0xf3, 0x3a, 0x66, 0x8d, 0x17, 0x54, 0xcc, 0x7b, 0x69, 0x61, 0x41, - 0x49, 0xcc, 0x7c, 0x41, 0xc5, 0xdc, 0x8f, 0x40, 0xcc, 0x26, 0xde, 0xb9, 0xa9, 0xc0, 0x2e, 0x5e, - 0x6b, 0xd1, 0xbb, 0x30, 0x8a, 0x53, 0x38, 0x57, 0x7d, 0x0b, 0xed, 0x0f, 0x31, 0x15, 0x2e, 0xcb, - 0x73, 0x55, 0x23, 0x4c, 0xbc, 0x94, 0xfc, 0x24, 0x29, 0x15, 0x36, 0xb5, 0x43, 0xbf, 0x66, 0x2e, - 0x16, 0x76, 0x60, 0x87, 0x7e, 0x52, 0x18, 0xa6, 0xd8, 0x7b, 0x40, 0xd3, 0x90, 0xb3, 0x58, 0xb2, - 0xe8, 0xc6, 0x6e, 0x11, 0x0c, 0x45, 0x53, 0xfc, 0xc6, 0xc9, 0x22, 0xca, 0x18, 0x99, 0xa3, 0xda, - 0x58, 0x9e, 0x2c, 0xbc, 0x88, 0x46, 0xb3, 0x81, 0x93, 0x85, 0x13, 0x35, 0xcc, 0x11, 0xbb, 0x0f, - 0xc4, 0x4d, 0xf4, 0x47, 0xa9, 0x47, 0xbf, 0x7c, 0x6f, 0xca, 0xa9, 0x0b, 0x48, 0x80, 0xb4, 0xd8, - 0x02, 0xc7, 0x73, 0xa3, 0x86, 0x1f, 0xa7, 0x5a, 0x80, 0x88, 0x58, 0x18, 0x8c, 0xe2, 0x94, 0xfa, - 0xdb, 0x6b, 0x50, 0x10, 0xb2, 0x96, 0x5d, 0x82, 0x0d, 0x21, 0xf2, 0x9b, 0xf5, 0x41, 0x7d, 0xa7, - 0xde, 0x47, 0x25, 0x8d, 0x41, 0x95, 0xcb, 0xfc, 0x18, 0x96, 0xc1, 0x7d, 0x80, 0x84, 0x7e, 0x0c, - 0x5a, 0xc5, 0x7d, 0x40, 0xf0, 0xf2, 0xc7, 0x15, 0xb3, 0x6c, 0x03, 0xca, 0x9c, 0x91, 0x03, 0xe8, - 0xde, 0x2b, 0x71, 0xf1, 0x74, 0x5e, 0x62, 0xe1, 0xe7, 0x5c, 0x6b, 0x09, 0x0b, 0x07, 0x14, 0x62, - 0x96, 0xe8, 0x20, 0x8c, 0x41, 0x75, 0xa0, 0x1d, 0x76, 0x1b, 0x49, 0x39, 0x25, 0xba, 0xab, 0xc8, - 0xb3, 0x79, 0xd6, 0x6e, 0x3d, 0x57, 0x00, 0x99, 0x78, 0x2e, 0x94, 0x2e, 0xa3, 0x9a, 0x49, 0x99, - 0x50, 0xb2, 0xc2, 0xae, 0xc2, 0xa5, 0xfe, 0x5e, 0xef, 0xb9, 0xce, 0x99, 0xe2, 0x26, 0xac, 0xb3, - 0x2d, 0x50, 0x24, 0x04, 0xcf, 0xbe, 0x8a, 0x45, 0x12, 0x34, 0x22, 0xec, 0x2b, 0x1b, 0x74, 0x94, - 0x8c, 0xb0, 0x01, 0xdf, 0x77, 0x15, 0x6c, 0x0a, 0x67, 0xed, 0x75, 0x0e, 0xf7, 0xbb, 0x7d, 0x65, - 0x13, 0x2b, 0x41, 0x10, 0x5e, 0x73, 0x16, 0x67, 0x93, 0xec, 0xd6, 0x97, 0x68, 0x03, 0x47, 0xd8, - 0xf3, 0xba, 0xd6, 0x6d, 0x77, 0x9f, 0xf4, 0x95, 0xad, 0x38, 0xe7, 0x96, 0xa6, 0xf5, 0xb4, 0xbe, - 0x72, 0x39, 0x06, 0xf4, 0x07, 0xf5, 0xc1, 0x61, 0x5f, 0xb9, 0x12, 0xd7, 0xf2, 0x40, 0xeb, 0x35, - 0x5a, 0xfd, 0x7e, 0xa7, 0xdd, 0x1f, 0x28, 0x57, 0xd9, 0x65, 0xd8, 0x4c, 0x6a, 0x14, 0x11, 0xd7, - 0xa4, 0x8a, 0x6a, 0x4f, 0x5a, 0x03, 0xe5, 0x5a, 0x5c, 0x8d, 0x46, 0xaf, 0xd3, 0xa9, 0xd3, 0x21, - 0xe8, 0x75, 0x24, 0xa2, 0xd3, 0x60, 0xd1, 0x9a, 0xd7, 0xb0, 0x5e, 0x87, 0x5d, 0x19, 0x74, 0x43, - 0x9a, 0x1a, 0xfd, 0xd6, 0x8f, 0x0e, 0x5b, 0xdd, 0x46, 0x4b, 0x79, 0x3d, 0x99, 0x1a, 0x31, 0xec, - 0x66, 0x3c, 0x35, 0x62, 0xd0, 0xad, 0xb8, 0xcc, 0x08, 0xd4, 0x57, 0xb6, 0x31, 0x3f, 0x51, 0x8f, - 0x6e, 0xb7, 0xd5, 0x18, 0x60, 0x5b, 0xdf, 0x88, 0x7b, 0xf1, 0xf0, 0xe0, 0x89, 0x56, 0x6f, 0xb6, - 0x14, 0x15, 0x21, 0x5a, 0xab, 0x5b, 0xdf, 0x8f, 0x46, 0xfb, 0xb6, 0x34, 0xda, 0x07, 0xed, 0x81, - 0xa6, 0xdc, 0x89, 0x47, 0x97, 0x92, 0x6f, 0xb2, 0xd7, 0xe0, 0xaa, 0x3c, 0x0f, 0xf5, 0xe7, 0xed, - 0xc1, 0x9e, 0x38, 0xb3, 0xbd, 0xcb, 0xcf, 0x1e, 0x09, 0xd9, 0x68, 0x36, 0xf8, 0xe1, 0x34, 0xf1, - 0x62, 0xea, 0xde, 0x4e, 0x85, 0xde, 0xc8, 0x16, 0x0a, 0x88, 0xfa, 0x43, 0x60, 0xf2, 0x73, 0xb1, - 0x22, 0xf2, 0x95, 0x41, 0x6e, 0xec, 0x7b, 0x93, 0xe8, 0x0d, 0x0a, 0xfc, 0x8d, 0x16, 0xf5, 0x74, - 0x36, 0xa4, 0x33, 0xd1, 0xe4, 0x8e, 0xb9, 0x0c, 0x52, 0xff, 0x5e, 0x06, 0xaa, 0x69, 0xe5, 0x83, - 0x1c, 0xa7, 0x63, 0xdd, 0xf5, 0x42, 0xfe, 0x20, 0x57, 0x10, 0xbf, 0xe2, 0x3a, 0xee, 0x7a, 0x21, - 0xbd, 0xc8, 0x45, 0x06, 0x7e, 0xac, 0x4b, 0xf0, 0x5c, 0xe3, 0x34, 0x6b, 0xc3, 0xa5, 0xd4, 0x8b, - 0xbb, 0xa9, 0xe7, 0xd0, 0x6a, 0xf1, 0x4b, 0x99, 0x73, 0xf5, 0xd7, 0x58, 0xb0, 0xd8, 0x26, 0xf1, - 0x52, 0x40, 0x2e, 0x79, 0x29, 0x60, 0x0f, 0xd6, 0x53, 0xba, 0x0e, 0xf9, 0x65, 0xc6, 0xe9, 0x9a, - 0x16, 0xed, 0xf1, 0xab, 0xab, 0xa9, 0xfe, 0xdd, 0x0c, 0x54, 0x64, 0xcd, 0xe7, 0x5b, 0xe7, 0x44, - 0xb7, 0xea, 0xc4, 0x6f, 0xdd, 0x36, 0xa3, 0x87, 0xb8, 0x22, 0x50, 0x9b, 0xbe, 0x0d, 0xc0, 0x7d, - 0xd0, 0xbb, 0x27, 0xfd, 0xb8, 0x39, 0x32, 0x88, 0xdd, 0x04, 0xa0, 0x3b, 0xc6, 0xbb, 0x4f, 0x91, - 0x40, 0xdc, 0xcb, 0x4b, 0x20, 0xea, 0x2d, 0x28, 0xed, 0x9e, 0x44, 0x91, 0x32, 0xf2, 0xb3, 0x74, - 0x25, 0xfe, 0x30, 0x81, 0xfa, 0xc7, 0x19, 0xa8, 0x26, 0x4f, 0xf8, 0xd0, 0xc9, 0x34, 0x7f, 0xa9, - 0x99, 0x4f, 0x87, 0x55, 0x73, 0x98, 0x7c, 0x36, 0x60, 0x55, 0xfe, 0x6c, 0xc0, 0x6d, 0x91, 0x59, - 0x56, 0x16, 0xf9, 0x71, 0x59, 0xe2, 0xd9, 0x83, 0x47, 0x50, 0xc1, 0xff, 0x9a, 0x35, 0xb6, 0x7c, - 0xdf, 0x32, 0xd3, 0x77, 0x07, 0x12, 0xe2, 0x14, 0x11, 0xd9, 0x78, 0xd6, 0x58, 0xa8, 0x9a, 0x4b, - 0x5f, 0x19, 0xa2, 0xd7, 0xaf, 0xfe, 0x6b, 0x16, 0xca, 0x92, 0x1e, 0xf9, 0xb5, 0xa6, 0xdf, 0x0d, - 0x28, 0x25, 0x6f, 0xde, 0x88, 0xbb, 0xe6, 0x31, 0x20, 0x35, 0x56, 0xd9, 0xb9, 0xb1, 0xaa, 0x41, - 0x41, 0x04, 0xd8, 0x0a, 0xa7, 0x70, 0x94, 0x4c, 0xbb, 0x5f, 0xf3, 0xaf, 0x38, 0x27, 0xf9, 0x10, - 0x2a, 0x92, 0xef, 0x34, 0x10, 0xf7, 0xb1, 0xe7, 0xe9, 0xcb, 0x89, 0x1f, 0x35, 0x60, 0x97, 0x61, - 0x6d, 0x7c, 0xa2, 0x9b, 0x43, 0x7e, 0x09, 0xb7, 0xa4, 0xe5, 0xc7, 0x27, 0xcd, 0x21, 0x9d, 0x22, - 0x8d, 0x63, 0xd5, 0x89, 0x7b, 0xb4, 0x8a, 0xe3, 0x48, 0x41, 0xba, 0x07, 0x85, 0xf1, 0x89, 0x7c, - 0x99, 0x76, 0xa1, 0xcb, 0xd7, 0xc6, 0x27, 0x74, 0xfb, 0xf6, 0x7d, 0xd8, 0x12, 0xfb, 0xb7, 0x11, - 0xe8, 0xfc, 0x59, 0x0f, 0x7a, 0x0b, 0x89, 0x3f, 0x52, 0xb7, 0xc9, 0x71, 0xf5, 0xa0, 0x4f, 0x18, - 0x9c, 0x71, 0x2a, 0x54, 0xa4, 0x09, 0xc8, 0x1f, 0x8d, 0x2a, 0x69, 0x29, 0x18, 0x7b, 0x0c, 0x95, - 0xf1, 0x09, 0x1f, 0xd0, 0x81, 0xb7, 0x6f, 0x89, 0x2b, 0x02, 0x5b, 0xf3, 0x43, 0x49, 0xa1, 0x03, - 0x29, 0x4a, 0x76, 0x05, 0xd6, 0x34, 0xe3, 0xb4, 0xff, 0xa3, 0x0e, 0x29, 0x91, 0x25, 0x4d, 0xa4, - 0x7e, 0x98, 0x2b, 0x56, 0x95, 0x0d, 0xf5, 0x1f, 0x67, 0xa0, 0x9a, 0xd8, 0x00, 0xb8, 0x08, 0xd9, - 0x7d, 0xf9, 0x89, 0xf5, 0xda, 0xbc, 0x99, 0x80, 0x24, 0x0f, 0x06, 0xe7, 0x53, 0xfe, 0x10, 0xe9, - 0xb2, 0x87, 0xbe, 0x96, 0x39, 0xb3, 0xb3, 0x4b, 0x1f, 0x77, 0x7e, 0x02, 0xd9, 0xc1, 0xf9, 0x94, - 0xfb, 0x9b, 0x70, 0x4b, 0xe4, 0xb6, 0x29, 0xdf, 0x0c, 0x29, 0x36, 0xe5, 0x69, 0xeb, 0x0b, 0xfe, - 0x36, 0xc6, 0x81, 0xd6, 0xde, 0xaf, 0x6b, 0x5f, 0x50, 0xd8, 0x11, 0x29, 0x0d, 0xbb, 0x3d, 0xad, - 0xd5, 0x7e, 0xd2, 0x25, 0x40, 0x8e, 0xbc, 0x51, 0x49, 0x15, 0xeb, 0xa6, 0xb9, 0x7b, 0x22, 0xbf, - 0x91, 0x94, 0x49, 0xbd, 0x91, 0x94, 0xbe, 0x4e, 0xbf, 0x3a, 0x7f, 0x9d, 0x9e, 0xc5, 0xab, 0x30, - 0x5e, 0xd2, 0xec, 0x2d, 0xc8, 0x8d, 0x4f, 0xac, 0xf3, 0xb4, 0xa1, 0x97, 0x5e, 0x40, 0x44, 0xa0, - 0xfe, 0x3c, 0x03, 0x2c, 0x55, 0x11, 0x6e, 0x7b, 0x7c, 0xdb, 0xba, 0x7c, 0x0a, 0x35, 0xf1, 0x6a, - 0x27, 0xa7, 0x92, 0xbc, 0xe7, 0xa2, 0x4b, 0x2f, 0x7b, 0x49, 0x90, 0x68, 0xf2, 0x16, 0x19, 0x7b, - 0x1f, 0xf8, 0xb3, 0x89, 0x14, 0x69, 0x92, 0xbb, 0xc0, 0x4e, 0xd4, 0x12, 0x9a, 0xe4, 0x9d, 0x44, - 0xf9, 0xfd, 0x47, 0xee, 0x78, 0xdf, 0x48, 0x46, 0x8d, 0xd6, 0xbc, 0xfa, 0x7b, 0x19, 0xb8, 0x94, - 0x9e, 0x10, 0xbf, 0x58, 0x2b, 0xd3, 0x8f, 0x5d, 0x66, 0xe7, 0x1f, 0xbb, 0x5c, 0x36, 0x9f, 0x72, - 0x4b, 0xe7, 0xd3, 0x6f, 0x65, 0x60, 0x4b, 0xea, 0xfd, 0xc4, 0x5a, 0xfc, 0x4b, 0xaa, 0x99, 0xf4, - 0xe6, 0x65, 0x2e, 0xf5, 0xe6, 0xa5, 0xfa, 0x07, 0x19, 0xb8, 0x32, 0x57, 0x13, 0xcd, 0xfa, 0x4b, - 0xad, 0x4b, 0xfa, 0x6d, 0x4c, 0x72, 0xfe, 0xf3, 0x48, 0x59, 0x7e, 0x0f, 0x9b, 0xa5, 0x1f, 0xbb, - 0xa4, 0x57, 0x0f, 0x3e, 0x82, 0xcd, 0xa4, 0x8e, 0x0d, 0xf1, 0x8e, 0xe7, 0x2d, 0x28, 0xbb, 0xd6, - 0xa9, 0x1e, 0xbd, 0xf2, 0x29, 0x62, 0x8b, 0x5c, 0xeb, 0x54, 0x10, 0xa8, 0xbb, 0xb2, 0xc0, 0x88, - 0x9f, 0xfc, 0x77, 0xcc, 0x54, 0x90, 0x8a, 0xe7, 0x98, 0x11, 0x0a, 0x73, 0x93, 0x5a, 0x54, 0x70, - 0xad, 0x53, 0x1a, 0xac, 0x53, 0x91, 0x4f, 0xdd, 0x34, 0xc5, 0x41, 0xfd, 0xb2, 0xa7, 0xbb, 0xae, - 0x41, 0x71, 0xea, 0xa7, 0xba, 0xa4, 0x30, 0xf5, 0x79, 0xb1, 0x77, 0x44, 0xe4, 0xd2, 0x45, 0x87, - 0xfa, 0x3c, 0x96, 0x49, 0x7c, 0x12, 0x24, 0x97, 0x7c, 0x12, 0xe4, 0x63, 0x21, 0x2b, 0xc8, 0x38, - 0xe2, 0x25, 0x2b, 0x90, 0xb5, 0xcd, 0x33, 0x2a, 0x78, 0x5d, 0xc3, 0x9f, 0xa4, 0xee, 0x58, 0x5f, - 0x89, 0xe0, 0x29, 0xfc, 0xa9, 0xee, 0x40, 0x59, 0x4b, 0x59, 0x82, 0x15, 0xc9, 0xa9, 0x12, 0xa4, - 0x5f, 0x37, 0x4a, 0x3a, 0x48, 0x2b, 0x27, 0x3e, 0x95, 0x40, 0x0d, 0x84, 0x74, 0x78, 0x66, 0xf8, - 0xa3, 0x63, 0xc3, 0xef, 0x58, 0xee, 0x51, 0x78, 0x8c, 0x5d, 0xce, 0x7d, 0x9d, 0x72, 0x17, 0x02, - 0x07, 0x45, 0x43, 0x8f, 0xbd, 0xe8, 0x10, 0x79, 0xf4, 0xb1, 0x01, 0xd7, 0x3a, 0x15, 0xfc, 0xaf, - 0x03, 0x60, 0xff, 0x0b, 0x34, 0x3f, 0x79, 0x2b, 0x79, 0x8e, 0xc9, 0xd1, 0xea, 0xa6, 0x68, 0xaf, - 0xb8, 0xd9, 0xd2, 0xb4, 0xc6, 0xaa, 0x23, 0x46, 0x9e, 0x37, 0x48, 0x74, 0xc2, 0xb7, 0x1a, 0x46, - 0xf6, 0x06, 0x54, 0x22, 0xb3, 0x9d, 0x1e, 0xd4, 0xe2, 0xc5, 0x97, 0x23, 0x58, 0x77, 0x36, 0x51, - 0x7f, 0x3f, 0x0b, 0x95, 0x3a, 0x0f, 0x63, 0x99, 0x9e, 0xf7, 0xa6, 0x21, 0xfb, 0x75, 0xb8, 0x1c, - 0x9c, 0xd8, 0x53, 0xf1, 0x75, 0x00, 0x8a, 0x1e, 0xa1, 0x30, 0x62, 0xd1, 0x89, 0xf7, 0xa5, 0x4e, - 0x14, 0x2c, 0x0f, 0xfa, 0x27, 0xf6, 0x94, 0x47, 0xaf, 0xb7, 0xcd, 0x33, 0x0a, 0x15, 0xe7, 0x47, - 0xe2, 0x2c, 0x58, 0x40, 0xd0, 0x35, 0x71, 0xcc, 0x7e, 0x7a, 0x22, 0xb2, 0x15, 0x31, 0x02, 0x08, - 0x3c, 0x38, 0xe1, 0x34, 0xf7, 0x61, 0x93, 0x5f, 0x58, 0x59, 0xdc, 0xa5, 0x36, 0x38, 0x22, 0x99, - 0xdf, 0x7d, 0xd8, 0xa4, 0xfc, 0xc4, 0xab, 0x8d, 0xfa, 0xc8, 0x9b, 0x9e, 0x8b, 0x13, 0xb7, 0xb7, - 0x2e, 0xa8, 0x6a, 0x9b, 0x93, 0x22, 0x48, 0xbc, 0xf8, 0x12, 0xa4, 0xa1, 0xd7, 0x5b, 0x70, 0xf5, - 0x82, 0x36, 0xbd, 0xea, 0x54, 0xbf, 0x28, 0x9d, 0xea, 0x5f, 0xdf, 0x81, 0xad, 0x65, 0xe5, 0x7d, - 0x93, 0x3c, 0xd4, 0xff, 0x54, 0x01, 0x48, 0x66, 0x6c, 0x4a, 0x67, 0xcb, 0xcc, 0xe9, 0x6c, 0xdf, - 0x28, 0x82, 0xe5, 0x23, 0xa8, 0x62, 0x57, 0xe9, 0x09, 0x47, 0x76, 0x29, 0x47, 0x05, 0xa9, 0x06, - 0xc9, 0x4d, 0xc0, 0xc5, 0x48, 0x80, 0xdc, 0xd2, 0x48, 0x80, 0x0f, 0xa1, 0xc0, 0x4f, 0xa3, 0x02, - 0x71, 0xf9, 0xf4, 0xea, 0xfc, 0xea, 0x7b, 0x20, 0x22, 0xe1, 0x23, 0x3a, 0xd6, 0x82, 0x2a, 0xca, - 0x47, 0xdf, 0x0e, 0x8f, 0x27, 0xf2, 0x55, 0xd4, 0x9b, 0x8b, 0x9c, 0x11, 0x19, 0x7f, 0xeb, 0xd1, - 0x90, 0x93, 0x92, 0x8a, 0x17, 0x4e, 0x84, 0x8b, 0x94, 0x54, 0xbc, 0x82, 0xac, 0xe2, 0x0d, 0x26, - 0xdc, 0x31, 0x8a, 0x2a, 0xde, 0x7b, 0x70, 0x49, 0xdc, 0xce, 0x41, 0x06, 0xec, 0x4e, 0xa2, 0xe7, - 0xc1, 0x8a, 0xe2, 0x21, 0xa4, 0xc1, 0x84, 0x0c, 0x20, 0x24, 0xff, 0x1c, 0xb6, 0x46, 0xc7, 0x86, - 0x7b, 0x64, 0xe9, 0xe1, 0xd0, 0xd1, 0xe9, 0xa5, 0x79, 0x7d, 0x62, 0x4c, 0x85, 0xe6, 0xf9, 0xd6, - 0x42, 0x65, 0x1b, 0x44, 0x3c, 0x18, 0x3a, 0x14, 0x6d, 0x15, 0xc7, 0x8b, 0x6c, 0x8e, 0xe6, 0xe1, - 0x73, 0xc7, 0xb6, 0xb0, 0x70, 0x6c, 0x3b, 0xaf, 0x8b, 0x96, 0x97, 0xe8, 0xa2, 0x89, 0x46, 0x59, - 0x91, 0x35, 0x4a, 0xf6, 0x2e, 0x14, 0xc4, 0x95, 0x46, 0xe1, 0x1c, 0x65, 0x8b, 0xab, 0x43, 0x8b, - 0x48, 0xb0, 0xa4, 0x28, 0x88, 0x80, 0x6e, 0xa8, 0x57, 0x79, 0x49, 0x32, 0x8c, 0xed, 0x08, 0xcf, - 0x60, 0x1c, 0x19, 0x26, 0x1c, 0xa1, 0xd7, 0xa5, 0x8c, 0x63, 0x9c, 0x30, 0x5e, 0xe7, 0x38, 0xae, - 0xff, 0xb7, 0x3c, 0xac, 0x89, 0x20, 0xe4, 0xfb, 0x90, 0x33, 0x7d, 0x6f, 0x1a, 0x47, 0xf5, 0x2e, - 0x51, 0x6d, 0xe9, 0xe3, 0x62, 0xa8, 0x05, 0x3f, 0x80, 0x35, 0xc3, 0x34, 0xf5, 0xf1, 0x49, 0xfa, - 0xd0, 0x76, 0x4e, 0xcb, 0xdc, 0x5b, 0xd1, 0xf2, 0x06, 0xa9, 0x9b, 0x9f, 0x42, 0x09, 0xe9, 0x93, - 0x58, 0xcb, 0xf2, 0xa2, 0xee, 0x1c, 0xe9, 0x83, 0x7b, 0x2b, 0x5a, 0xd1, 0x88, 0x74, 0xc3, 0xef, - 0xa5, 0xdd, 0xdf, 0xb9, 0x85, 0x06, 0xce, 0x29, 0x33, 0x73, 0x8e, 0xf0, 0x5f, 0x05, 0xee, 0x0f, - 0x8d, 0x77, 0xec, 0xbc, 0x7c, 0x3e, 0xb8, 0xb0, 0xbf, 0xef, 0xad, 0x68, 0x7c, 0xdf, 0x8a, 0xf6, - 0xfb, 0x8f, 0x23, 0xd7, 0x74, 0xfc, 0x11, 0x96, 0x25, 0x3d, 0x83, 0x62, 0x30, 0xf6, 0x4f, 0x93, - 0x4c, 0x44, 0x36, 0xd3, 0x8c, 0x42, 0xee, 0x0a, 0x0b, 0x6c, 0xf1, 0xae, 0x4e, 0x6c, 0xf1, 0x16, - 0xff, 0x18, 0xca, 0xdc, 0x53, 0xc9, 0xf9, 0x8a, 0x0b, 0x5d, 0x9b, 0x6c, 0xca, 0x74, 0xf6, 0x95, - 0x6c, 0xd1, 0x8d, 0xa8, 0x9d, 0xbe, 0x25, 0x1f, 0x2f, 0xdc, 0x58, 0xda, 0x51, 0x5a, 0x7c, 0xd2, - 0xc0, 0x1b, 0xab, 0x71, 0x1e, 0xd6, 0x81, 0x2d, 0xe1, 0x87, 0xe7, 0x1b, 0x70, 0xb4, 0x67, 0xc2, - 0xc2, 0x78, 0xa5, 0x76, 0xe8, 0xbd, 0x15, 0x8d, 0x19, 0x8b, 0xfb, 0x76, 0x03, 0x36, 0xa3, 0x2a, - 0xf1, 0xcb, 0xa4, 0x49, 0xb4, 0x90, 0xdc, 0xa4, 0x64, 0xdf, 0xdd, 0x5b, 0xd1, 0x36, 0x8c, 0x34, - 0x88, 0xb5, 0xe1, 0x52, 0x94, 0x09, 0xf9, 0xa3, 0x45, 0xcf, 0x54, 0x16, 0x46, 0x51, 0xde, 0xab, - 0xf7, 0x56, 0xb4, 0x4d, 0x63, 0x1e, 0x98, 0x9c, 0xce, 0x5f, 0xd7, 0xe0, 0xca, 0x72, 0x91, 0x20, - 0xef, 0x0b, 0x39, 0xbe, 0x2f, 0xa8, 0xe9, 0x47, 0xbd, 0xd2, 0x4f, 0x44, 0x48, 0xbb, 0xc4, 0x0f, - 0x60, 0x3d, 0x25, 0x13, 0x59, 0x19, 0x0a, 0xd1, 0xf3, 0xdf, 0x74, 0x53, 0xa0, 0xd1, 0x3b, 0xf8, - 0x42, 0xc9, 0x20, 0xb8, 0xdd, 0xed, 0x0f, 0xea, 0x5d, 0x11, 0x7b, 0xd1, 0xee, 0x8a, 0xd8, 0x0b, - 0xf5, 0xaf, 0x67, 0xa1, 0x14, 0x9f, 0x1d, 0x7d, 0x7b, 0x1f, 0x4f, 0xec, 0x3c, 0xc9, 0xca, 0xce, - 0x93, 0x39, 0x03, 0x86, 0xbf, 0xd4, 0xcf, 0x1f, 0x7b, 0xdb, 0x48, 0x9b, 0x09, 0xc1, 0xe2, 0x6d, - 0xe4, 0xfc, 0xd7, 0xbc, 0x8d, 0x2c, 0xc7, 0x47, 0xaf, 0xa5, 0xe3, 0xa3, 0xe7, 0x9e, 0x80, 0x2f, - 0xd0, 0xe3, 0xcc, 0xf2, 0x13, 0xf0, 0xf4, 0x9d, 0xc6, 0x67, 0xb6, 0x75, 0x2a, 0x02, 0x8a, 0x45, - 0x2a, 0xbd, 0xa5, 0xc2, 0x2b, 0xb6, 0xd4, 0xaf, 0x23, 0x9e, 0x1f, 0xc2, 0xd6, 0xf8, 0x24, 0x7e, - 0x12, 0x3a, 0x71, 0x19, 0x54, 0xa8, 0x4a, 0x4b, 0x71, 0xea, 0x5f, 0xcd, 0x00, 0x24, 0x87, 0x25, - 0xbf, 0xb0, 0xdf, 0x51, 0x72, 0xed, 0x64, 0x5f, 0xe2, 0xda, 0x79, 0xd5, 0xc3, 0x5e, 0x5f, 0x41, - 0x29, 0x3e, 0x1e, 0xfb, 0xf6, 0xf3, 0xe5, 0x1b, 0x15, 0xf9, 0x1b, 0x91, 0x0f, 0x36, 0x3e, 0x5f, - 0xfa, 0x45, 0xfb, 0x22, 0x55, 0x7c, 0xf6, 0x15, 0xc5, 0x9f, 0x71, 0x47, 0x68, 0x5c, 0xf8, 0x2f, - 0x79, 0x91, 0xc8, 0xf3, 0x37, 0x97, 0x9a, 0xbf, 0xea, 0x4c, 0x78, 0x73, 0x7f, 0xf1, 0xa2, 0xbf, - 0x51, 0x83, 0xff, 0x4b, 0x26, 0x72, 0x39, 0xc6, 0x8f, 0x73, 0x5f, 0xa8, 0x7c, 0x2e, 0xf7, 0x9a, - 0x7e, 0x93, 0xe2, 0x5e, 0xea, 0x50, 0xc9, 0xbd, 0xcc, 0xa1, 0xf2, 0x16, 0xe4, 0xf9, 0xb6, 0x93, - 0xbf, 0xc8, 0x99, 0xc2, 0xf1, 0xaf, 0xfc, 0x84, 0x86, 0xaa, 0x0a, 0x65, 0x9b, 0xb7, 0x77, 0x2b, - 0xca, 0x37, 0xfa, 0xfc, 0x07, 0x5d, 0xcb, 0xf8, 0xbf, 0xb8, 0xa0, 0xfc, 0xb6, 0x5d, 0xf2, 0x72, - 0x57, 0x81, 0xfa, 0x3f, 0x33, 0xb0, 0x9e, 0x3a, 0xee, 0xfe, 0x16, 0x45, 0x2c, 0x15, 0xb7, 0xd9, - 0xff, 0x8d, 0xc4, 0x6d, 0x2a, 0x82, 0xb4, 0x98, 0x8e, 0x20, 0x45, 0x71, 0x57, 0x49, 0x99, 0x12, - 0xcb, 0x8c, 0x8e, 0xcc, 0x52, 0xa3, 0xe3, 0x66, 0xfc, 0xe1, 0xbf, 0x76, 0x93, 0x07, 0x6c, 0xae, - 0x6b, 0x12, 0x84, 0x7d, 0x06, 0xd7, 0x84, 0x31, 0xcf, 0xfb, 0xc7, 0x1b, 0xeb, 0xf1, 0x67, 0x01, - 0x85, 0x71, 0x7c, 0x85, 0x13, 0xf0, 0x0f, 0xa0, 0x8c, 0xeb, 0x11, 0x56, 0x6d, 0xc3, 0x7a, 0x2a, - 0x8e, 0x40, 0xfa, 0x0c, 0x69, 0x46, 0xfe, 0x0c, 0x29, 0xdb, 0x86, 0xfc, 0xe9, 0xb1, 0xe5, 0x5b, - 0x4b, 0x1e, 0xef, 0xe5, 0x08, 0xf5, 0xbb, 0x50, 0x91, 0x63, 0x9a, 0xd8, 0xbb, 0x90, 0xb7, 0x43, - 0x6b, 0x12, 0xb9, 0x29, 0xae, 0x2c, 0x86, 0x3d, 0xb5, 0x43, 0x6b, 0xa2, 0x71, 0x22, 0xf5, 0x67, - 0x19, 0x50, 0xe6, 0x71, 0xd2, 0xb7, 0x52, 0x33, 0x17, 0x7c, 0x2b, 0x75, 0x35, 0x55, 0xc9, 0x65, - 0x9f, 0x3b, 0x8d, 0x1f, 0x10, 0xcd, 0x5d, 0xf0, 0x80, 0x28, 0xbb, 0x0b, 0x45, 0xdf, 0xa2, 0x0f, - 0x51, 0x9a, 0x4b, 0xae, 0x2b, 0xc4, 0x38, 0xf5, 0x77, 0x32, 0x50, 0x10, 0x01, 0x58, 0x4b, 0xfd, - 0x46, 0x6f, 0x43, 0x81, 0x7f, 0x94, 0x32, 0x7a, 0xfa, 0x6a, 0x21, 0xca, 0x39, 0xc2, 0xb3, 0x9b, - 0x3c, 0x2c, 0x2d, 0xed, 0x47, 0x3a, 0x70, 0x0c, 0x57, 0x23, 0xb8, 0xf8, 0xae, 0x91, 0x31, 0x11, - 0x37, 0xa1, 0xf9, 0x3b, 0x48, 0x40, 0x20, 0xba, 0xf4, 0xac, 0x7e, 0x0f, 0x0a, 0x22, 0xc0, 0x6b, - 0x69, 0x55, 0x5e, 0xf5, 0x41, 0xc2, 0x6d, 0x80, 0x24, 0xe2, 0x6b, 0x59, 0x0e, 0xea, 0x7d, 0x28, - 0x46, 0x41, 0x5e, 0x38, 0xff, 0x92, 0xa2, 0xc5, 0x3d, 0x18, 0xb9, 0x32, 0x8e, 0x78, 0x10, 0xbf, - 0xe3, 0x8d, 0x4e, 0xc8, 0xb3, 0xfb, 0x3e, 0xd0, 0xa5, 0xa0, 0xc1, 0xc2, 0x83, 0x51, 0xe9, 0xaf, - 0x19, 0xc4, 0x44, 0xec, 0x3e, 0xc4, 0xf2, 0xf2, 0x55, 0x26, 0xbe, 0x5a, 0x8f, 0xae, 0x8f, 0xd1, - 0x2c, 0x7b, 0x24, 0x3c, 0x98, 0x1d, 0x7a, 0x3d, 0x30, 0x23, 0x7f, 0xd3, 0x22, 0x55, 0x27, 0x4d, - 0x22, 0x53, 0xab, 0x50, 0x91, 0x23, 0x53, 0xd4, 0x3a, 0x6c, 0xee, 0x5b, 0xa1, 0x81, 0xf2, 0x27, - 0x7a, 0x46, 0x87, 0xcf, 0x5f, 0xfc, 0x91, 0x9e, 0xbf, 0xf3, 0x74, 0x1a, 0x27, 0x52, 0x7f, 0x96, - 0x03, 0x65, 0x1e, 0xf7, 0xb2, 0xab, 0x74, 0xb7, 0xa0, 0xec, 0xd1, 0xbc, 0x48, 0x7d, 0xb9, 0x8a, - 0x83, 0xa4, 0x70, 0xf4, 0xd4, 0xe7, 0x4b, 0x8a, 0x76, 0xb0, 0xc7, 0x3f, 0x60, 0x72, 0x95, 0xdf, - 0x9b, 0x72, 0xbc, 0x11, 0x4d, 0xeb, 0x0a, 0x5d, 0x93, 0xea, 0x78, 0x23, 0xba, 0xa1, 0x27, 0xbc, - 0x04, 0x3c, 0x5c, 0xb2, 0xa2, 0x15, 0x85, 0x6b, 0x80, 0x0e, 0x9b, 0x44, 0x90, 0x7a, 0x18, 0x88, - 0x3b, 0x8f, 0x45, 0x0e, 0x18, 0x04, 0xd1, 0xb3, 0xeb, 0x23, 0xf1, 0x99, 0xa5, 0x2c, 0x3d, 0xbb, - 0xde, 0x70, 0xe9, 0x82, 0x1e, 0x7d, 0x15, 0x6c, 0x24, 0xbe, 0xda, 0x26, 0x1e, 0xbe, 0x47, 0xd4, - 0x6d, 0xfe, 0x21, 0x2a, 0xdf, 0x0a, 0x02, 0xfe, 0xc6, 0x5c, 0x49, 0xbc, 0x1e, 0x28, 0x80, 0xf1, - 0x1b, 0x9d, 0xe2, 0x33, 0x60, 0x48, 0x02, 0xe2, 0xa5, 0x3b, 0xfe, 0x11, 0x30, 0x24, 0xb8, 0x06, - 0xc5, 0x9f, 0x78, 0xae, 0x45, 0xde, 0x86, 0x32, 0xd5, 0xaa, 0x80, 0xe9, 0x7d, 0x63, 0xaa, 0xfe, - 0xd3, 0x0c, 0x6c, 0xcd, 0xf7, 0x2a, 0x4d, 0x98, 0x0a, 0x14, 0x1b, 0xbd, 0x8e, 0xde, 0xad, 0xef, - 0xb7, 0x94, 0x15, 0xb6, 0x01, 0xe5, 0xde, 0xce, 0x0f, 0x5b, 0x8d, 0x01, 0x07, 0x64, 0xe8, 0xa2, - 0x7a, 0x5f, 0xdf, 0x6b, 0x37, 0x9b, 0xad, 0x2e, 0x37, 0x09, 0x7a, 0x3b, 0x3f, 0xd4, 0x3b, 0xbd, - 0x06, 0xff, 0x6a, 0x50, 0x74, 0x10, 0xdf, 0x57, 0x72, 0x74, 0x4c, 0x4f, 0xd1, 0xd9, 0x98, 0xcc, - 0xf3, 0xe0, 0xe3, 0xe7, 0x7d, 0xbd, 0xd1, 0x1d, 0x28, 0x6b, 0x98, 0xea, 0x1e, 0x76, 0x3a, 0x94, - 0xa2, 0x28, 0xc3, 0x46, 0x6f, 0xff, 0x40, 0x6b, 0xf5, 0xfb, 0x7a, 0xbf, 0xfd, 0xe3, 0x96, 0x52, - 0xa4, 0x92, 0xb5, 0xf6, 0x93, 0x76, 0x97, 0x03, 0x4a, 0xac, 0x00, 0xd9, 0xfd, 0x76, 0x97, 0x5f, - 0xd0, 0xdf, 0xaf, 0x7f, 0xae, 0x94, 0xf1, 0x47, 0xff, 0x70, 0x5f, 0xa9, 0xa8, 0xff, 0x3e, 0x1b, - 0x29, 0xbc, 0x14, 0x73, 0xf3, 0x75, 0x94, 0xbc, 0x65, 0x67, 0x5d, 0x5b, 0x90, 0x77, 0xe8, 0xca, - 0xb1, 0xf8, 0x20, 0x32, 0x25, 0xbe, 0xce, 0x47, 0x5e, 0x6f, 0xc3, 0x7a, 0x7c, 0x50, 0x2d, 0xbd, - 0x84, 0x5e, 0x89, 0x80, 0x4b, 0x4e, 0x04, 0xd6, 0x96, 0x9c, 0x08, 0x4c, 0xed, 0x10, 0x8d, 0x59, - 0x14, 0xa9, 0x7c, 0xa2, 0x94, 0x10, 0xc2, 0x3f, 0xaf, 0xfc, 0x1a, 0x50, 0x42, 0x9f, 0xb9, 0x76, - 0xf4, 0x89, 0xbf, 0x22, 0x02, 0x0e, 0x5d, 0x3b, 0x9c, 0x3f, 0x28, 0x2f, 0x2d, 0x1c, 0x94, 0xcb, - 0x7b, 0x2f, 0xa4, 0xf7, 0xde, 0xf4, 0xb7, 0x6f, 0xf9, 0xb7, 0xfd, 0xa4, 0x6f, 0xdf, 0xbe, 0x0b, - 0x6c, 0x34, 0xf3, 0xe9, 0x85, 0x2e, 0x89, 0xac, 0x42, 0x64, 0x8a, 0xc0, 0xc4, 0x9b, 0x1e, 0x7b, - 0x0b, 0x36, 0xe6, 0xa8, 0xc9, 0x79, 0x54, 0xd2, 0xaa, 0x69, 0x52, 0xf6, 0x00, 0x2e, 0x89, 0xa9, - 0x9b, 0xea, 0x5b, 0x71, 0x9d, 0x91, 0xa3, 0xea, 0x49, 0x0f, 0xab, 0xbf, 0x02, 0xc5, 0x28, 0xbc, - 0xea, 0xe5, 0xba, 0xec, 0x92, 0x71, 0x55, 0xff, 0xe1, 0x2a, 0x94, 0xe2, 0x60, 0xab, 0xaf, 0x35, - 0x3b, 0xe8, 0x93, 0x0f, 0xc1, 0x89, 0x2c, 0x41, 0x8a, 0x08, 0x88, 0x46, 0x4a, 0xdc, 0x05, 0x9a, - 0xf9, 0x76, 0xa4, 0x90, 0x71, 0xc8, 0xa1, 0x6f, 0xd3, 0x83, 0x18, 0xb6, 0x2b, 0x5d, 0x3c, 0x2c, - 0x69, 0x45, 0x04, 0xd0, 0xea, 0xba, 0x06, 0xf4, 0x9b, 0x38, 0xa3, 0xcf, 0x01, 0xdb, 0xee, 0x09, - 0xf2, 0x5d, 0xf0, 0x39, 0x60, 0xfa, 0x60, 0x05, 0x8f, 0xf4, 0xe0, 0xe7, 0xdb, 0xd1, 0xe7, 0xd5, - 0x5e, 0x83, 0xd2, 0x2c, 0xfe, 0x3e, 0x9f, 0x98, 0x11, 0xb3, 0xe8, 0xeb, 0x7c, 0xe9, 0x51, 0x2d, - 0xcd, 0x8f, 0xea, 0xfc, 0x9c, 0x86, 0x85, 0x39, 0xad, 0x86, 0x50, 0x10, 0x01, 0x67, 0x2f, 0xef, - 0xf0, 0x97, 0x76, 0x95, 0x02, 0x59, 0xc3, 0x89, 0x6e, 0x3b, 0xe2, 0xcf, 0xb9, 0x8a, 0xe5, 0xe6, - 0x2a, 0xa6, 0xfe, 0xed, 0x55, 0x80, 0x24, 0x70, 0x8d, 0xbd, 0x37, 0x17, 0x24, 0x9b, 0x59, 0xd8, - 0xd5, 0xe7, 0x62, 0x63, 0xe7, 0x5e, 0x88, 0x59, 0xfd, 0x1a, 0x2f, 0xc4, 0x3c, 0x84, 0xf5, 0xc0, - 0x1f, 0xbd, 0xd2, 0xaf, 0x5d, 0x0e, 0xfc, 0x51, 0xec, 0xd6, 0x7e, 0x1f, 0x30, 0x49, 0x6f, 0xd6, - 0x25, 0x76, 0xe8, 0x82, 0x52, 0x52, 0x0a, 0xfc, 0x51, 0x6f, 0xf8, 0x65, 0x93, 0x5f, 0xc0, 0x32, - 0x83, 0x50, 0x5f, 0x26, 0x25, 0x36, 0xcc, 0x20, 0x6c, 0xca, 0x82, 0xe2, 0x0e, 0x54, 0x91, 0x76, - 0x41, 0x58, 0x54, 0xcc, 0x20, 0x39, 0xc7, 0x50, 0x7f, 0x3b, 0x3a, 0x1e, 0x9d, 0x73, 0x99, 0xb2, - 0x4f, 0x84, 0x9d, 0x2d, 0xe9, 0x08, 0xb5, 0x65, 0x1e, 0x56, 0xfe, 0x9e, 0x4d, 0x4c, 0xba, 0xf8, - 0x55, 0xb6, 0xd5, 0xaf, 0xfb, 0x55, 0xb6, 0x6d, 0x80, 0xe4, 0xd5, 0x40, 0x5c, 0x81, 0xf1, 0xc5, - 0x91, 0x12, 0xbf, 0x12, 0x72, 0xff, 0x0d, 0xa8, 0xc8, 0xdf, 0x46, 0xa5, 0x0b, 0x21, 0x9e, 0x6b, - 0xf1, 0xaf, 0x67, 0x74, 0x7e, 0xf2, 0x91, 0x92, 0xb9, 0xaf, 0x42, 0x59, 0xfa, 0x76, 0x0d, 0x52, - 0xec, 0x19, 0xc1, 0xb1, 0xf8, 0x92, 0x82, 0xe1, 0x1e, 0x59, 0x4a, 0xe6, 0xfe, 0x5d, 0xd4, 0xa9, - 0xe5, 0x2f, 0xc7, 0x00, 0xac, 0x75, 0x3d, 0x7f, 0x62, 0x38, 0x82, 0xce, 0x9a, 0x05, 0x48, 0xf7, - 0x3e, 0x5c, 0x5e, 0xfa, 0x1d, 0x1c, 0xba, 0x55, 0x64, 0x4f, 0xa6, 0x8e, 0xc5, 0x2f, 0xc6, 0xec, - 0x9d, 0x0f, 0x7d, 0xdb, 0x54, 0x32, 0xf7, 0x1f, 0xcf, 0x7d, 0x27, 0xe1, 0xb0, 0xbb, 0xd3, 0x3b, - 0xec, 0x36, 0x5b, 0x4d, 0x7e, 0x65, 0xa5, 0xdd, 0x6d, 0x74, 0x0e, 0xfb, 0xed, 0x67, 0x62, 0x03, - 0x6c, 0x7d, 0x1e, 0x25, 0x57, 0xef, 0x3f, 0x8e, 0x6e, 0xf8, 0x47, 0xb5, 0xee, 0xf4, 0xea, 0x4d, - 0xbe, 0x71, 0xc6, 0x2f, 0xcd, 0x0c, 0x76, 0xf8, 0xf7, 0x15, 0xb4, 0x56, 0xff, 0xb0, 0x33, 0x10, - 0xaf, 0xda, 0xdc, 0xff, 0x01, 0xd4, 0x2e, 0xba, 0x5b, 0x82, 0x6d, 0x69, 0xec, 0xd5, 0xe9, 0xfe, - 0x0e, 0x6e, 0x94, 0x3d, 0x9d, 0xa7, 0x32, 0xfc, 0xfa, 0x53, 0xa7, 0x45, 0x01, 0x98, 0xf7, 0x7f, - 0x9a, 0x91, 0xd4, 0xc3, 0xe8, 0x7e, 0x40, 0x0c, 0x10, 0x1d, 0x2c, 0x83, 0x34, 0xcb, 0x30, 0x95, - 0x0c, 0xbb, 0x02, 0x2c, 0x05, 0xea, 0x78, 0x23, 0xc3, 0x51, 0x56, 0x29, 0xd4, 0x32, 0x82, 0xd3, - 0xcd, 0x30, 0x25, 0xcb, 0x5e, 0x87, 0x6b, 0x31, 0xac, 0xe3, 0x9d, 0x1e, 0xf8, 0xb6, 0xe7, 0xdb, - 0xe1, 0x39, 0x47, 0xe7, 0xee, 0xff, 0xdf, 0xe2, 0x0c, 0x34, 0x35, 0xab, 0xb0, 0x80, 0xba, 0x69, - 0x26, 0x30, 0x12, 0x64, 0xca, 0x0a, 0xbb, 0x0a, 0x97, 0x48, 0x8a, 0xcf, 0x21, 0x32, 0xec, 0x35, - 0xb8, 0x1a, 0xd9, 0xb0, 0xf3, 0xc8, 0x55, 0x44, 0x6a, 0x16, 0x85, 0xe9, 0x2d, 0x20, 0xb3, 0x3b, - 0xdf, 0xff, 0xd3, 0x9f, 0xdf, 0xcc, 0xfc, 0x8b, 0x9f, 0xdf, 0xcc, 0xfc, 0x87, 0x9f, 0xdf, 0x5c, - 0xf9, 0xd9, 0x7f, 0xbc, 0x99, 0xf9, 0xf1, 0x7b, 0x47, 0x76, 0x78, 0x3c, 0x1b, 0x3e, 0x18, 0x79, - 0x93, 0xf7, 0x27, 0x46, 0xe8, 0xdb, 0x67, 0x7c, 0x3b, 0x89, 0x12, 0xae, 0xf5, 0xfe, 0xf4, 0xe4, - 0xe8, 0xfd, 0xe9, 0xf0, 0x7d, 0x9c, 0xd8, 0xc3, 0xb5, 0xa9, 0xef, 0x85, 0xde, 0xa3, 0xff, 0x15, - 0x00, 0x00, 0xff, 0xff, 0x60, 0xc6, 0x8c, 0x82, 0xdf, 0x86, 0x00, 0x00, + 0x3c, 0x05, 0xbb, 0xc9, 0x43, 0x16, 0x98, 0x04, 0x08, 0x12, 0x04, 0x1b, 0x20, 0x09, 0x16, 0xd8, + 0xdd, 0xb7, 0x04, 0x79, 0xd9, 0x24, 0xd8, 0x4d, 0x80, 0x00, 0x09, 0x92, 0x00, 0x9b, 0x60, 0xf2, + 0x1c, 0x24, 0x40, 0xf2, 0x9e, 0xe0, 0x9c, 0x7b, 0xab, 0xea, 0x16, 0x49, 0xd9, 0xdd, 0x3d, 0xb3, + 0x40, 0xf2, 0x22, 0xf1, 0x9e, 0x9f, 0xfb, 0x7f, 0xcf, 0x3d, 0xe7, 0xdc, 0x73, 0x6f, 0x01, 0x4c, + 0x1d, 0xc3, 0x7d, 0x30, 0xf5, 0xbd, 0xd0, 0x63, 0x39, 0xfc, 0x7d, 0xfd, 0xbd, 0x23, 0x3b, 0x3c, + 0x9e, 0x0d, 0x1f, 0x8c, 0xbc, 0xc9, 0xfb, 0x47, 0xde, 0x91, 0xf7, 0x3e, 0x21, 0x87, 0xb3, 0x31, + 0xa5, 0x28, 0x41, 0xbf, 0x38, 0xd3, 0x75, 0x70, 0xbc, 0xd1, 0x89, 0xf8, 0xbd, 0x11, 0xda, 0x13, + 0x2b, 0x08, 0x8d, 0xc9, 0x94, 0x03, 0xd4, 0x3f, 0xca, 0x40, 0x6e, 0x70, 0x3e, 0xb5, 0x58, 0x15, + 0x56, 0x6d, 0xb3, 0x96, 0xd9, 0xce, 0xdc, 0xcb, 0x6b, 0xab, 0xb6, 0xc9, 0xb6, 0xa1, 0xec, 0x7a, + 0x61, 0x77, 0xe6, 0x38, 0xc6, 0xd0, 0xb1, 0x6a, 0xab, 0xdb, 0x99, 0x7b, 0x45, 0x4d, 0x06, 0xb1, + 0xd7, 0xa0, 0x64, 0xcc, 0x42, 0x4f, 0xb7, 0xdd, 0x91, 0x5f, 0xcb, 0x12, 0xbe, 0x88, 0x80, 0xb6, + 0x3b, 0xf2, 0xd9, 0x16, 0xe4, 0x4f, 0x6d, 0x33, 0x3c, 0xae, 0xe5, 0x28, 0x47, 0x9e, 0x40, 0x68, + 0x30, 0x32, 0x1c, 0xab, 0x96, 0xe7, 0x50, 0x4a, 0x20, 0x34, 0xa4, 0x42, 0xd6, 0xb6, 0x33, 0xf7, + 0x4a, 0x1a, 0x4f, 0xb0, 0x9b, 0x00, 0x96, 0x3b, 0x9b, 0xbc, 0x30, 0x9c, 0x99, 0x15, 0xd4, 0x0a, + 0x84, 0x92, 0x20, 0xea, 0xf7, 0xa1, 0x34, 0x09, 0x8e, 0xf6, 0x2c, 0xc3, 0xb4, 0x7c, 0x76, 0x15, + 0x0a, 0x93, 0xe0, 0x48, 0x0f, 0x8d, 0x23, 0xd1, 0x84, 0xb5, 0x49, 0x70, 0x34, 0x30, 0x8e, 0xd8, + 0x35, 0x28, 0x12, 0xe2, 0x7c, 0xca, 0xdb, 0x90, 0xd7, 0x90, 0x10, 0x5b, 0xac, 0xfe, 0xce, 0x1a, + 0x14, 0x3a, 0x76, 0x68, 0xf9, 0x86, 0xc3, 0xae, 0xc0, 0x9a, 0x1d, 0xb8, 0x33, 0xc7, 0x21, 0xf6, + 0xa2, 0x26, 0x52, 0xec, 0x0a, 0xe4, 0xed, 0xc7, 0x2f, 0x0c, 0x87, 0xf3, 0xee, 0xad, 0x68, 0x3c, + 0xc9, 0x6a, 0xb0, 0x66, 0x7f, 0xf8, 0x09, 0x22, 0xb2, 0x02, 0x21, 0xd2, 0x84, 0x79, 0xf4, 0x10, + 0x31, 0xb9, 0x18, 0x43, 0x69, 0xc2, 0x7c, 0xf2, 0x11, 0x62, 0xb0, 0xf5, 0x59, 0xc2, 0x50, 0x1a, + 0x4b, 0x99, 0x51, 0x29, 0xd8, 0x01, 0xeb, 0x58, 0xca, 0x2c, 0x2a, 0x65, 0xc6, 0x4b, 0x29, 0x08, + 0x84, 0x48, 0x13, 0x86, 0x97, 0x52, 0x8c, 0x31, 0x71, 0x29, 0x33, 0x5e, 0x4a, 0x69, 0x3b, 0x73, + 0x2f, 0x47, 0x18, 0x5e, 0xca, 0x16, 0xe4, 0x4c, 0x84, 0xc3, 0x76, 0xe6, 0x5e, 0x66, 0x6f, 0x45, + 0xa3, 0x14, 0x42, 0x03, 0x84, 0x96, 0xb1, 0x83, 0x11, 0x1a, 0x08, 0xe8, 0x10, 0xa1, 0x15, 0xec, + 0x0d, 0x84, 0x0e, 0x05, 0x74, 0x8c, 0xd0, 0xf5, 0xed, 0xcc, 0xbd, 0x55, 0x84, 0x62, 0x8a, 0x5d, + 0x87, 0x82, 0x69, 0x84, 0x16, 0x22, 0xaa, 0xa2, 0xc9, 0x11, 0x00, 0x71, 0x38, 0xe3, 0x10, 0xb7, + 0x21, 0x1a, 0x1d, 0x01, 0x98, 0x0a, 0x65, 0x24, 0x8b, 0xf0, 0x8a, 0xc0, 0xcb, 0x40, 0xf6, 0x31, + 0x54, 0x4c, 0x6b, 0x64, 0x4f, 0x0c, 0x87, 0xb7, 0x69, 0x73, 0x3b, 0x73, 0xaf, 0xfc, 0x70, 0xe3, + 0x01, 0xad, 0x89, 0x18, 0xb3, 0xb7, 0xa2, 0xa5, 0xc8, 0xd8, 0x63, 0x58, 0x17, 0xe9, 0x0f, 0x1f, + 0x52, 0xc7, 0x32, 0xe2, 0x53, 0x52, 0x7c, 0x1f, 0x3e, 0x7c, 0xbc, 0xb7, 0xa2, 0xa5, 0x09, 0xd9, + 0x1d, 0xa8, 0xc4, 0x4b, 0x04, 0x19, 0x2f, 0x89, 0x5a, 0xa5, 0xa0, 0xd8, 0xac, 0x2f, 0x03, 0xcf, + 0x45, 0x82, 0x2d, 0xd1, 0x6f, 0x11, 0x80, 0x6d, 0x03, 0x98, 0xd6, 0xd8, 0x98, 0x39, 0x21, 0xa2, + 0x2f, 0x8b, 0x0e, 0x94, 0x60, 0xec, 0x26, 0x94, 0x66, 0x53, 0x6c, 0xe5, 0x33, 0xc3, 0xa9, 0x5d, + 0x11, 0x04, 0x09, 0x08, 0x73, 0xc7, 0x79, 0x8e, 0xd8, 0xab, 0x62, 0x74, 0x23, 0x00, 0x0e, 0xef, + 0x0b, 0x6b, 0x84, 0xa8, 0x9a, 0x28, 0x58, 0xa4, 0x71, 0x15, 0xd9, 0xc1, 0x8e, 0xed, 0xd6, 0xae, + 0xd1, 0x0c, 0xe6, 0x09, 0x76, 0x03, 0xb2, 0x81, 0x3f, 0xaa, 0x5d, 0xa7, 0xf6, 0x03, 0x6f, 0x7f, + 0xeb, 0x6c, 0xea, 0x6b, 0x08, 0xde, 0x29, 0x40, 0x9e, 0x56, 0x93, 0x7a, 0x03, 0x8a, 0x07, 0x86, + 0x6f, 0x4c, 0x34, 0x6b, 0xcc, 0x14, 0xc8, 0x4e, 0xbd, 0x40, 0xac, 0x23, 0xfc, 0xa9, 0x76, 0x60, + 0xed, 0x99, 0xe1, 0x23, 0x8e, 0x41, 0xce, 0x35, 0x26, 0x16, 0x21, 0x4b, 0x1a, 0xfd, 0xc6, 0xb5, + 0x13, 0x9c, 0x07, 0xa1, 0x35, 0x11, 0x42, 0x42, 0xa4, 0x10, 0x7e, 0xe4, 0x78, 0x43, 0xb1, 0x46, + 0x8a, 0x9a, 0x48, 0xa9, 0xff, 0x4f, 0x06, 0xd6, 0x1a, 0x9e, 0x83, 0xd9, 0x5d, 0x85, 0x82, 0x6f, + 0x39, 0x7a, 0x52, 0xdc, 0x9a, 0x6f, 0x39, 0x07, 0x5e, 0x80, 0x88, 0x91, 0xc7, 0x11, 0x7c, 0xd5, + 0xae, 0x8d, 0x3c, 0x42, 0x44, 0x15, 0xc8, 0x4a, 0x15, 0xb8, 0x06, 0xc5, 0x70, 0xe8, 0xe8, 0x04, + 0xcf, 0x11, 0xbc, 0x10, 0x0e, 0x9d, 0x2e, 0xa2, 0xae, 0x42, 0xc1, 0x1c, 0x72, 0x4c, 0x9e, 0x30, + 0x6b, 0xe6, 0x10, 0x11, 0xea, 0x67, 0x50, 0xd2, 0x8c, 0x53, 0x51, 0x8d, 0xcb, 0xb0, 0x86, 0x19, + 0x08, 0xf9, 0x97, 0xd3, 0xf2, 0xe1, 0xd0, 0x69, 0x9b, 0x08, 0xc6, 0x4a, 0xd8, 0x26, 0xd5, 0x21, + 0xa7, 0xe5, 0x47, 0x9e, 0xd3, 0x36, 0xd5, 0x01, 0x40, 0xc3, 0xf3, 0xfd, 0x6f, 0xdd, 0x84, 0x2d, + 0xc8, 0x9b, 0xd6, 0x34, 0x3c, 0xe6, 0xa2, 0x43, 0xe3, 0x09, 0xf5, 0x3e, 0x14, 0x71, 0x5c, 0x3a, + 0x76, 0x10, 0xb2, 0x9b, 0x90, 0x73, 0xec, 0x20, 0xac, 0x65, 0xb6, 0xb3, 0x73, 0xa3, 0x46, 0x70, + 0x75, 0x1b, 0x8a, 0xfb, 0xc6, 0xd9, 0x33, 0x1c, 0x39, 0xcc, 0x8d, 0x86, 0x50, 0x0c, 0x89, 0x18, + 0xcf, 0x0a, 0xc0, 0xc0, 0xf0, 0x8f, 0xac, 0x90, 0x24, 0xdd, 0x7f, 0xcf, 0x40, 0xb9, 0x3f, 0x1b, + 0x7e, 0x35, 0xb3, 0xfc, 0x73, 0xac, 0xf3, 0x3d, 0xc8, 0x86, 0xe7, 0x53, 0xe2, 0xa8, 0x3e, 0xbc, + 0xc2, 0xb3, 0x97, 0xf0, 0x0f, 0x90, 0x49, 0x43, 0x12, 0x6c, 0x84, 0xeb, 0x99, 0x56, 0xd4, 0x07, + 0x79, 0x6d, 0x0d, 0x93, 0x6d, 0x13, 0xb7, 0x0b, 0x6f, 0x2a, 0x46, 0x61, 0xd5, 0x9b, 0xb2, 0x6d, + 0xc8, 0x8f, 0x8e, 0x6d, 0xc7, 0xa4, 0x01, 0x48, 0xd7, 0x99, 0x23, 0x70, 0x94, 0x7c, 0xef, 0x54, + 0x0f, 0xec, 0x9f, 0x44, 0xe2, 0xbf, 0xe0, 0x7b, 0xa7, 0x7d, 0xfb, 0x27, 0x96, 0x3a, 0x10, 0x7b, + 0x10, 0xc0, 0x5a, 0xbf, 0x51, 0xef, 0xd4, 0x35, 0x65, 0x05, 0x7f, 0xb7, 0x3e, 0x6f, 0xf7, 0x07, + 0x7d, 0x25, 0xc3, 0xaa, 0x00, 0xdd, 0xde, 0x40, 0x17, 0xe9, 0x55, 0xb6, 0x06, 0xab, 0xed, 0xae, + 0x92, 0x45, 0x1a, 0x84, 0xb7, 0xbb, 0x4a, 0x8e, 0x15, 0x20, 0x5b, 0xef, 0x7e, 0xa1, 0xe4, 0xe9, + 0x47, 0xa7, 0xa3, 0xac, 0xa9, 0x7f, 0xbe, 0x0a, 0xa5, 0xde, 0xf0, 0x4b, 0x6b, 0x14, 0x62, 0x9b, + 0x71, 0x96, 0x5a, 0xfe, 0x0b, 0xcb, 0xa7, 0x66, 0x67, 0x35, 0x91, 0xc2, 0x86, 0x98, 0x43, 0x6a, + 0x5c, 0x56, 0x5b, 0x35, 0x87, 0x44, 0x37, 0x3a, 0xb6, 0x26, 0x06, 0x35, 0x0e, 0xe9, 0x28, 0x85, + 0xab, 0xc2, 0x1b, 0x7e, 0x49, 0xcd, 0xcb, 0x6a, 0xf8, 0x93, 0xdd, 0x82, 0x32, 0xcf, 0x43, 0x9e, + 0x5f, 0xc0, 0x41, 0xf3, 0x93, 0x6f, 0x4d, 0x9e, 0x7c, 0xc4, 0x49, 0xb9, 0x72, 0xa4, 0xd8, 0xdb, + 0x38, 0xa8, 0x2b, 0x66, 0xb4, 0x37, 0xfc, 0x92, 0x63, 0x8b, 0x7c, 0x46, 0x7b, 0xc3, 0x2f, 0x09, + 0xf5, 0x0e, 0x6c, 0x06, 0xb3, 0x61, 0x30, 0xf2, 0xed, 0x69, 0x68, 0x7b, 0x2e, 0xa7, 0x29, 0x11, + 0x8d, 0x22, 0x23, 0x88, 0xf8, 0x1e, 0x14, 0xa7, 0xb3, 0xa1, 0x6e, 0xbb, 0x63, 0x8f, 0xc4, 0x7e, + 0xf9, 0xe1, 0x3a, 0x1f, 0x98, 0x83, 0xd9, 0xb0, 0xed, 0x8e, 0x3d, 0xad, 0x30, 0xe5, 0x3f, 0x98, + 0x0a, 0xeb, 0xae, 0x17, 0xea, 0xa8, 0x2a, 0xe8, 0x13, 0x2b, 0x34, 0x68, 0x3f, 0xe0, 0x1b, 0x7e, + 0xc7, 0x1b, 0x9d, 0xec, 0x5b, 0xa1, 0xa1, 0xde, 0x85, 0x82, 0xe0, 0xc3, 0xbd, 0x3f, 0xb4, 0x5c, + 0xc3, 0x0d, 0xf5, 0x58, 0x69, 0x28, 0x72, 0x40, 0xdb, 0x54, 0xff, 0x30, 0x03, 0x4a, 0x5f, 0xaa, + 0x0a, 0x32, 0x2f, 0x95, 0x1c, 0xaf, 0x03, 0x18, 0xa3, 0x91, 0x37, 0xe3, 0xd9, 0xf0, 0x09, 0x56, + 0x12, 0x90, 0xb6, 0x29, 0xf7, 0x5f, 0x36, 0xd5, 0x7f, 0x6f, 0x40, 0x25, 0xe2, 0x93, 0x16, 0x7d, + 0x59, 0xc0, 0xa2, 0x1e, 0x0c, 0x66, 0xa9, 0x95, 0x5f, 0x08, 0x66, 0x9c, 0xfb, 0x0a, 0xac, 0x91, + 0x86, 0x11, 0x44, 0xa3, 0xc2, 0x53, 0xea, 0xbf, 0xcd, 0xc0, 0x7a, 0xdb, 0x35, 0xad, 0xb3, 0xfe, + 0xc8, 0x70, 0xa3, 0x4e, 0xb1, 0x03, 0xdd, 0x46, 0x98, 0x1e, 0x8c, 0x0c, 0x57, 0x28, 0x07, 0x65, + 0x3b, 0x88, 0xe9, 0xb0, 0x0d, 0x9c, 0x80, 0x8a, 0x5a, 0xa5, 0x1c, 0x4b, 0x04, 0xa1, 0xc2, 0xee, + 0xc2, 0xc6, 0xd0, 0x72, 0x3c, 0xf7, 0x48, 0x0f, 0x3d, 0x9d, 0x6b, 0x39, 0xbc, 0x2d, 0xeb, 0x1c, + 0x3c, 0xf0, 0x06, 0xa4, 0xed, 0x6c, 0x41, 0x7e, 0x6a, 0xf8, 0x61, 0x50, 0xcb, 0x6d, 0x67, 0x71, + 0x19, 0x53, 0x02, 0xbb, 0xd9, 0x0e, 0xf4, 0x99, 0x6b, 0x7f, 0x35, 0xe3, 0xcd, 0x28, 0x6a, 0x45, + 0x3b, 0x38, 0xa4, 0x34, 0xbb, 0x07, 0x0a, 0x2f, 0x99, 0xb2, 0x95, 0xe7, 0x59, 0x95, 0xe0, 0x94, + 0x31, 0x09, 0xbb, 0xff, 0x6f, 0x15, 0x8a, 0xbb, 0x33, 0x77, 0x84, 0x83, 0xc1, 0x6e, 0x43, 0x6e, + 0x3c, 0x73, 0x47, 0xd4, 0x96, 0x78, 0x2b, 0x8d, 0xd7, 0x89, 0x46, 0x48, 0x94, 0x40, 0x86, 0x7f, + 0x84, 0x92, 0x6b, 0x41, 0x02, 0x21, 0x5c, 0xfd, 0xe3, 0x0c, 0xcf, 0x71, 0xd7, 0x31, 0x8e, 0x58, + 0x11, 0x72, 0xdd, 0x5e, 0xb7, 0xa5, 0xac, 0xb0, 0x0a, 0x14, 0xdb, 0xdd, 0x41, 0x4b, 0xeb, 0xd6, + 0x3b, 0x4a, 0x86, 0x96, 0xf3, 0xa0, 0xbe, 0xd3, 0x69, 0x29, 0xab, 0x88, 0x79, 0xd6, 0xeb, 0xd4, + 0x07, 0xed, 0x4e, 0x4b, 0xc9, 0x71, 0x8c, 0xd6, 0x6e, 0x0c, 0x94, 0x22, 0x53, 0xa0, 0x72, 0xa0, + 0xf5, 0x9a, 0x87, 0x8d, 0x96, 0xde, 0x3d, 0xec, 0x74, 0x14, 0x85, 0x5d, 0x82, 0x8d, 0x18, 0xd2, + 0xe3, 0xc0, 0x6d, 0x64, 0x79, 0x56, 0xd7, 0xea, 0xda, 0x13, 0xe5, 0x07, 0xac, 0x08, 0xd9, 0xfa, + 0x93, 0x27, 0xca, 0x4f, 0x51, 0x32, 0x94, 0x9e, 0xb7, 0xbb, 0xfa, 0xb3, 0x7a, 0xe7, 0xb0, 0xa5, + 0xfc, 0x74, 0x35, 0x4a, 0xf7, 0xb4, 0x66, 0x4b, 0x53, 0x7e, 0x9a, 0x63, 0x9b, 0x50, 0xf9, 0x71, + 0xaf, 0xdb, 0xda, 0xaf, 0x1f, 0x1c, 0x50, 0x45, 0x7e, 0x5a, 0x54, 0xff, 0x4b, 0x0e, 0x72, 0xd8, + 0x12, 0xa6, 0x26, 0x52, 0x30, 0x6e, 0x22, 0x8a, 0xa1, 0x9d, 0xdc, 0x9f, 0xfe, 0xc5, 0xad, 0x15, + 0x2e, 0xff, 0xde, 0x80, 0xac, 0x63, 0x87, 0x34, 0xac, 0xf1, 0xda, 0x11, 0x3a, 0xe3, 0xde, 0x8a, + 0x86, 0x38, 0x76, 0x13, 0x32, 0x5c, 0x10, 0x96, 0x1f, 0x56, 0xc5, 0xe2, 0x12, 0x3b, 0xe9, 0xde, + 0x8a, 0x96, 0x99, 0xb2, 0x1b, 0x90, 0x79, 0x21, 0xa4, 0x62, 0x85, 0xe3, 0xf9, 0x5e, 0x8a, 0xd8, + 0x17, 0x6c, 0x1b, 0xb2, 0x23, 0x8f, 0x6b, 0x84, 0x31, 0x9e, 0xef, 0x2c, 0x98, 0xff, 0xc8, 0x73, + 0xd8, 0x6d, 0xc8, 0xfa, 0xc6, 0x29, 0x8d, 0x6c, 0x3c, 0x5c, 0xf1, 0xd6, 0x85, 0x44, 0xbe, 0x71, + 0x8a, 0x95, 0x18, 0x93, 0x1c, 0x89, 0x2b, 0x11, 0x8d, 0x37, 0x16, 0x33, 0x66, 0xdb, 0x90, 0x39, + 0x25, 0x49, 0x12, 0x2b, 0x41, 0xcf, 0x6d, 0xd7, 0xf4, 0x4e, 0xfb, 0x53, 0x6b, 0x84, 0x14, 0xa7, + 0xec, 0x4d, 0xc8, 0x06, 0xb3, 0x21, 0x49, 0x92, 0xf2, 0xc3, 0xcd, 0x85, 0x3d, 0x01, 0x0b, 0x0a, + 0x66, 0x43, 0x76, 0x17, 0x72, 0x23, 0xcf, 0xf7, 0x85, 0x34, 0x51, 0xa2, 0x0a, 0x47, 0xdb, 0x21, + 0x2a, 0x85, 0x88, 0xc7, 0x02, 0x43, 0x92, 0x21, 0x31, 0x51, 0xb2, 0x1f, 0x61, 0x81, 0x21, 0xbb, + 0x23, 0x36, 0xb9, 0x8a, 0x5c, 0xeb, 0x68, 0x0b, 0xc4, 0x7c, 0x10, 0x8b, 0x83, 0x34, 0x31, 0xce, + 0x48, 0xe3, 0x8c, 0x89, 0xa2, 0xbd, 0x0f, 0xeb, 0x34, 0x31, 0xce, 0xd8, 0x1d, 0xc8, 0xbe, 0xb0, + 0x46, 0xa4, 0x7c, 0xc6, 0xa5, 0x89, 0x41, 0x7a, 0x46, 0xcd, 0x43, 0x34, 0xcd, 0x7b, 0xcf, 0x31, + 0x49, 0x0f, 0x8d, 0xc7, 0x72, 0xd7, 0x73, 0xcc, 0x67, 0x34, 0x96, 0x84, 0xc4, 0x2d, 0xdf, 0x98, + 0x9d, 0xa1, 0x34, 0x52, 0xf8, 0xe6, 0x6c, 0xcc, 0xce, 0xda, 0x26, 0x0a, 0x7f, 0xd7, 0x7c, 0x41, + 0xda, 0x67, 0x46, 0xc3, 0x9f, 0x68, 0x1e, 0x05, 0x96, 0x63, 0x8d, 0x42, 0xfb, 0x85, 0x1d, 0x9e, + 0x93, 0x7e, 0x99, 0xd1, 0x64, 0xd0, 0xce, 0x1a, 0xe4, 0xac, 0xb3, 0xa9, 0xaf, 0xee, 0x41, 0x41, + 0x94, 0xb2, 0x60, 0x63, 0x5d, 0x83, 0xa2, 0x1d, 0xe8, 0x23, 0xcf, 0x0d, 0x42, 0xa1, 0x3b, 0x15, + 0xec, 0xa0, 0x81, 0x49, 0x14, 0x97, 0xa6, 0x11, 0xf2, 0x4d, 0xa8, 0xa2, 0xd1, 0x6f, 0xf5, 0x21, + 0x40, 0xd2, 0x2c, 0xac, 0x93, 0x63, 0xb9, 0x91, 0x9a, 0xe6, 0x58, 0x6e, 0xcc, 0xb3, 0x2a, 0xf1, + 0x5c, 0x83, 0x52, 0xac, 0x19, 0xb3, 0x0a, 0x64, 0x0c, 0xb1, 0xfd, 0x65, 0x0c, 0xf5, 0x1e, 0x2a, + 0xaa, 0x91, 0xee, 0x9b, 0xc6, 0x61, 0x2a, 0xda, 0x14, 0x33, 0x43, 0xf5, 0xbb, 0x50, 0xd1, 0xac, + 0x60, 0xe6, 0x84, 0x0d, 0xcf, 0x69, 0x5a, 0x63, 0xf6, 0x2e, 0x40, 0x9c, 0x0e, 0x84, 0x96, 0x92, + 0xcc, 0xdd, 0xa6, 0x35, 0xd6, 0x24, 0xbc, 0xfa, 0x77, 0x73, 0xa4, 0xef, 0x35, 0xb9, 0xa2, 0x25, + 0x34, 0xaa, 0x8c, 0xa4, 0x51, 0xc5, 0x7b, 0xc3, 0x6a, 0x5a, 0xab, 0x3c, 0xb6, 0x4d, 0xd3, 0x72, + 0x23, 0xed, 0x91, 0xa7, 0x70, 0xb0, 0x0d, 0xe7, 0x88, 0x16, 0x54, 0xf5, 0x21, 0x8b, 0x0a, 0x9d, + 0x4c, 0x7d, 0x2b, 0x08, 0xb8, 0xde, 0x62, 0x38, 0x47, 0xd1, 0xda, 0xce, 0xbf, 0x6c, 0x6d, 0x5f, + 0x83, 0x22, 0x6e, 0x79, 0x64, 0xf5, 0xad, 0xf1, 0xde, 0x17, 0xe6, 0x2d, 0x7b, 0x0b, 0x0a, 0x42, + 0x5f, 0x17, 0x8b, 0x4a, 0x4c, 0x97, 0x26, 0x07, 0x6a, 0x11, 0x96, 0xd5, 0x50, 0xc9, 0x9b, 0x4c, + 0x2c, 0x37, 0x8c, 0xf6, 0x69, 0x91, 0x64, 0xef, 0x40, 0xc9, 0x73, 0x75, 0xae, 0xd4, 0x8b, 0x55, + 0x25, 0xa6, 0x6f, 0xcf, 0x3d, 0x24, 0xa8, 0x56, 0xf4, 0xc4, 0x2f, 0xac, 0x8a, 0xe3, 0x9d, 0xea, + 0x23, 0xc3, 0x37, 0x69, 0x65, 0x15, 0xb5, 0x82, 0xe3, 0x9d, 0x36, 0x0c, 0xdf, 0xe4, 0x7a, 0xcb, + 0x57, 0xee, 0x6c, 0x42, 0xab, 0x69, 0x5d, 0x13, 0x29, 0x76, 0x03, 0x4a, 0x23, 0x67, 0x16, 0x84, + 0x96, 0xbf, 0x73, 0xce, 0xcd, 0x34, 0x2d, 0x01, 0x60, 0xbd, 0xa6, 0xbe, 0x3d, 0x31, 0xfc, 0x73, + 0x5a, 0x3a, 0x45, 0x2d, 0x4a, 0xd2, 0x46, 0x73, 0x62, 0x9b, 0x67, 0xdc, 0x56, 0xd3, 0x78, 0x02, + 0xe9, 0x8f, 0xc9, 0x92, 0x0e, 0x68, 0x7d, 0x14, 0xb5, 0x28, 0x49, 0xe3, 0x40, 0x3f, 0x69, 0x45, + 0x94, 0x34, 0x91, 0x4a, 0x29, 0xdd, 0x9b, 0x17, 0x2a, 0xdd, 0x6c, 0x5e, 0xef, 0xf1, 0x7c, 0xfb, + 0xc8, 0x16, 0x5a, 0xcb, 0x25, 0xae, 0xf7, 0x70, 0x10, 0x6d, 0x54, 0x5f, 0x41, 0x41, 0x74, 0x31, + 0xee, 0x40, 0xb8, 0x7c, 0xd2, 0xe2, 0x99, 0xef, 0x40, 0x08, 0x67, 0xb7, 0x61, 0x5d, 0xe4, 0x15, + 0x84, 0xbe, 0xed, 0x1e, 0x89, 0xc9, 0x53, 0xe1, 0xc0, 0x3e, 0xc1, 0x50, 0x51, 0xc0, 0xe1, 0xd5, + 0x8d, 0xa1, 0xed, 0xe0, 0x32, 0xcd, 0x0a, 0xa5, 0x66, 0xe6, 0x38, 0x75, 0x0e, 0x52, 0x7b, 0x50, + 0x8c, 0x06, 0xe4, 0x97, 0x52, 0xa6, 0xfa, 0x9b, 0x19, 0x28, 0x93, 0x7a, 0xd0, 0x23, 0xe5, 0x87, + 0xbd, 0x0b, 0x6c, 0xe4, 0x5b, 0x46, 0x68, 0xe9, 0xd6, 0x59, 0xe8, 0x1b, 0x42, 0x09, 0xe0, 0x9a, + 0x84, 0xc2, 0x31, 0x2d, 0x44, 0x70, 0x3d, 0xe0, 0x16, 0x94, 0xa7, 0x86, 0x1f, 0x44, 0x4a, 0x25, + 0x2f, 0x00, 0x38, 0x48, 0xa8, 0x74, 0x8a, 0x7b, 0xe4, 0x1b, 0x13, 0x3d, 0xf4, 0x4e, 0x2c, 0x97, + 0xab, 0xd3, 0xdc, 0x90, 0xa8, 0x12, 0x7c, 0x80, 0x60, 0xd2, 0xaa, 0xff, 0x7d, 0x06, 0xd6, 0x0f, + 0xf8, 0xa8, 0x3f, 0xb5, 0xce, 0x9b, 0xdc, 0x7a, 0x1b, 0x45, 0x2b, 0x36, 0xa7, 0xd1, 0x6f, 0x76, + 0x13, 0xca, 0xd3, 0x13, 0xeb, 0x5c, 0x4f, 0x59, 0x3a, 0x25, 0x04, 0x35, 0x68, 0x6d, 0xbe, 0x0d, + 0x6b, 0x1e, 0x35, 0x44, 0xec, 0x71, 0x62, 0x6b, 0x90, 0x5a, 0xa8, 0x09, 0x02, 0x54, 0x97, 0xe2, + 0xac, 0x64, 0xbd, 0x4c, 0x64, 0x46, 0xd5, 0xdf, 0x82, 0x3c, 0xa2, 0x82, 0x5a, 0x9e, 0xeb, 0x39, + 0x94, 0x60, 0x1f, 0xc0, 0xfa, 0xc8, 0x9b, 0x4c, 0xf5, 0x88, 0x5d, 0xec, 0x76, 0x69, 0x99, 0x52, + 0x46, 0x92, 0x03, 0x9e, 0x97, 0xfa, 0x7b, 0x59, 0x28, 0x52, 0x1d, 0x84, 0x58, 0xb1, 0xcd, 0xb3, + 0x48, 0xac, 0x94, 0xb4, 0xbc, 0x6d, 0xa2, 0xd4, 0x7e, 0x85, 0x6a, 0x16, 0xab, 0x5c, 0x59, 0x59, + 0xe5, 0xba, 0x02, 0x6b, 0x42, 0xdf, 0xca, 0x71, 0xb9, 0x33, 0xbb, 0x58, 0xdb, 0xca, 0x2f, 0xd3, + 0xb6, 0x70, 0x08, 0x39, 0x8d, 0x75, 0x86, 0xfb, 0x1b, 0x17, 0x2d, 0x40, 0xa0, 0x16, 0x42, 0x64, + 0xa1, 0x51, 0x48, 0x0b, 0x8d, 0x1a, 0x14, 0x5e, 0xd8, 0x81, 0x8d, 0x13, 0xa4, 0xc8, 0x97, 0xa1, + 0x48, 0x4a, 0xc3, 0x50, 0x7a, 0xd5, 0x30, 0xc4, 0xcd, 0x36, 0x9c, 0x23, 0xae, 0xf6, 0x47, 0xcd, + 0xae, 0x3b, 0x47, 0x1e, 0xfb, 0x10, 0x2e, 0x27, 0x68, 0xd1, 0x1a, 0x72, 0x8f, 0x91, 0x07, 0x48, + 0x63, 0x31, 0x25, 0xb5, 0x88, 0xec, 0xb2, 0xfb, 0xb0, 0x29, 0xb1, 0x4c, 0x51, 0xbd, 0x09, 0x48, + 0xe6, 0x94, 0xb4, 0x8d, 0x98, 0x9c, 0xb4, 0x9e, 0x40, 0xfd, 0x67, 0xab, 0xb0, 0xbe, 0xeb, 0xf9, + 0x96, 0x7d, 0xe4, 0x26, 0xb3, 0x6e, 0x41, 0xf3, 0x8f, 0x66, 0xe2, 0xaa, 0x34, 0x13, 0x6f, 0x41, + 0x79, 0xcc, 0x19, 0xf5, 0x70, 0xc8, 0x9d, 0x06, 0x39, 0x0d, 0x04, 0x68, 0x30, 0x74, 0x70, 0x35, + 0x47, 0x04, 0xc4, 0x9c, 0x23, 0xe6, 0x88, 0x09, 0xf7, 0x1a, 0xf6, 0x1d, 0x92, 0xba, 0xa6, 0xe5, + 0x58, 0x21, 0x1f, 0x9e, 0xea, 0xc3, 0xd7, 0xa3, 0x9d, 0x5e, 0xaa, 0xd3, 0x03, 0xcd, 0x1a, 0xd7, + 0x49, 0x3d, 0x42, 0x21, 0xdc, 0x24, 0x72, 0xc1, 0x2b, 0x24, 0xf6, 0xda, 0xd7, 0xe4, 0xe5, 0x92, + 0x43, 0x1d, 0x40, 0x29, 0x06, 0xa3, 0xae, 0xab, 0xb5, 0x84, 0x7e, 0xbb, 0xc2, 0xca, 0x50, 0x68, + 0xd4, 0xfb, 0x8d, 0x7a, 0xb3, 0xa5, 0x64, 0x10, 0xd5, 0x6f, 0x0d, 0xb8, 0x4e, 0xbb, 0xca, 0x36, + 0xa0, 0x8c, 0xa9, 0x66, 0x6b, 0xb7, 0x7e, 0xd8, 0x19, 0x28, 0x59, 0xb6, 0x0e, 0xa5, 0x6e, 0x4f, + 0xaf, 0x37, 0x06, 0xed, 0x5e, 0x57, 0xc9, 0xa9, 0x3f, 0x80, 0x62, 0xe3, 0xd8, 0x1a, 0x9d, 0x5c, + 0xd4, 0x8b, 0x64, 0x74, 0x5b, 0xa3, 0x13, 0xa1, 0x9f, 0xce, 0x19, 0xdd, 0xd6, 0xe8, 0x44, 0x6d, + 0x41, 0xe9, 0xc0, 0xf0, 0x43, 0x9b, 0xea, 0xf5, 0x18, 0xd6, 0xe3, 0x44, 0xd3, 0x1a, 0x47, 0x3b, + 0x37, 0x8b, 0xb5, 0xd6, 0x18, 0xa5, 0xa5, 0x09, 0xd5, 0x77, 0xa1, 0x22, 0x03, 0xd8, 0x0d, 0xc8, + 0x9a, 0xd6, 0x78, 0x89, 0x9c, 0x44, 0xb0, 0xfa, 0x0c, 0x2a, 0x8d, 0x68, 0x27, 0xba, 0xa8, 0xea, + 0x0f, 0xa1, 0x4a, 0x2b, 0x7e, 0x34, 0x8c, 0x96, 0xfc, 0xea, 0x92, 0x25, 0x5f, 0x41, 0x9a, 0xc6, + 0x50, 0xac, 0xf9, 0x8f, 0xa1, 0x7c, 0xe0, 0x7b, 0x53, 0xcb, 0x0f, 0x29, 0x5b, 0x05, 0xb2, 0x27, + 0xd6, 0xb9, 0xc8, 0x15, 0x7f, 0x26, 0xbe, 0x90, 0x55, 0xd9, 0x17, 0xf2, 0x10, 0x8a, 0x11, 0xdb, + 0xd7, 0xe6, 0xf9, 0x3e, 0x8a, 0x4e, 0xe2, 0xb1, 0xad, 0x00, 0x0b, 0x7b, 0x00, 0x30, 0x8d, 0x01, + 0xa2, 0xe3, 0x22, 0x75, 0x5f, 0x64, 0xae, 0x49, 0x14, 0xea, 0xeb, 0x50, 0x78, 0x66, 0x5b, 0xa7, + 0xa2, 0xf9, 0x2f, 0x6c, 0xeb, 0x34, 0x6a, 0x3e, 0xfe, 0x56, 0xff, 0xff, 0x12, 0x14, 0x69, 0x7d, + 0x35, 0x2f, 0x76, 0x3f, 0x7d, 0x13, 0xad, 0x68, 0x5b, 0xac, 0xa7, 0xdc, 0x12, 0x5d, 0x8c, 0xaf, + 0xae, 0xd7, 0x01, 0xa4, 0xb5, 0xce, 0x25, 0x57, 0x29, 0x8c, 0x97, 0x38, 0xaa, 0x13, 0xb4, 0x17, + 0x05, 0x5f, 0x39, 0xc2, 0x8a, 0x4c, 0x00, 0xec, 0x01, 0xdf, 0xec, 0xc9, 0x6e, 0xe4, 0x0a, 0xd1, + 0xa5, 0x48, 0xa9, 0x1f, 0x3a, 0x56, 0x64, 0x6a, 0x90, 0x06, 0x80, 0x09, 0x92, 0x63, 0x96, 0x1f, + 0xa0, 0xb8, 0x22, 0xff, 0xb4, 0x16, 0x25, 0xd9, 0x5b, 0x90, 0x43, 0x21, 0x2f, 0x4c, 0x83, 0x4b, + 0x51, 0x0f, 0x4a, 0xbb, 0x94, 0x46, 0x04, 0xec, 0x1e, 0x14, 0x48, 0xb4, 0x58, 0x28, 0x69, 0xa4, + 0xde, 0x8e, 0x84, 0xbe, 0x16, 0xa1, 0xd9, 0xdb, 0x90, 0x1f, 0x9f, 0x58, 0xe7, 0x41, 0x6d, 0x9d, + 0xe8, 0x2e, 0x2d, 0x59, 0xb3, 0x1a, 0xa7, 0x60, 0x77, 0xa0, 0xea, 0x5b, 0x63, 0x9d, 0x1c, 0x52, + 0x28, 0x64, 0x82, 0x5a, 0x95, 0x64, 0x48, 0xc5, 0xb7, 0xc6, 0x0d, 0x04, 0x0e, 0x86, 0x4e, 0xc0, + 0xee, 0xc2, 0x1a, 0xad, 0x1e, 0xd4, 0x85, 0xa4, 0x92, 0xa3, 0xa5, 0xa8, 0x09, 0x2c, 0xfb, 0x10, + 0x40, 0x68, 0x5c, 0xfa, 0xf0, 0x9c, 0x1c, 0xb9, 0xf1, 0x62, 0x92, 0xe7, 0xbf, 0xac, 0x97, 0xbd, + 0x05, 0x79, 0x9c, 0x24, 0x41, 0xed, 0x2a, 0xe5, 0xbc, 0x99, 0x9e, 0x41, 0x54, 0x53, 0xc2, 0xb3, + 0x7b, 0x50, 0xc4, 0x89, 0xa2, 0xe3, 0x70, 0xd4, 0x64, 0x15, 0x54, 0xcc, 0x2a, 0xdc, 0x19, 0xac, + 0xd3, 0xfe, 0x57, 0x0e, 0xbb, 0x0f, 0x39, 0x13, 0x17, 0xf3, 0x35, 0xca, 0xf1, 0x8a, 0x34, 0x2e, + 0x28, 0xac, 0x9a, 0xd6, 0x98, 0xb4, 0x62, 0xa2, 0x61, 0x7b, 0x50, 0xc5, 0x69, 0xf4, 0x90, 0x36, + 0x7b, 0xec, 0xbe, 0xda, 0x75, 0xe2, 0x7a, 0x63, 0x8e, 0xab, 0x2b, 0x88, 0xa8, 0xb3, 0x5b, 0x6e, + 0xe8, 0x9f, 0x6b, 0xeb, 0xae, 0x0c, 0x63, 0xd7, 0xd1, 0x74, 0xe9, 0x78, 0xa3, 0x13, 0xcb, 0xac, + 0xbd, 0x16, 0x39, 0x26, 0x78, 0x9a, 0x7d, 0x06, 0xeb, 0x34, 0xb1, 0x30, 0x89, 0x85, 0xd7, 0x6e, + 0x90, 0x30, 0x95, 0xa7, 0x4c, 0x84, 0xd2, 0xd2, 0x94, 0x28, 0xe2, 0xed, 0x40, 0x0f, 0xad, 0xc9, + 0xd4, 0xf3, 0x51, 0x79, 0x7d, 0x3d, 0x72, 0xb8, 0x0c, 0x22, 0x10, 0x6e, 0xc4, 0xf1, 0xb1, 0x93, + 0xee, 0x8d, 0xc7, 0x81, 0x15, 0xd6, 0x6e, 0xd2, 0xba, 0xa9, 0x46, 0xa7, 0x4f, 0x3d, 0x82, 0xd2, + 0x46, 0x18, 0xe8, 0xe6, 0xb9, 0x6b, 0x4c, 0xec, 0x51, 0xed, 0x16, 0xd7, 0x91, 0xed, 0xa0, 0xc9, + 0x01, 0xb2, 0x9a, 0xba, 0x9d, 0x52, 0x53, 0x2f, 0x41, 0xde, 0x1c, 0xe2, 0x72, 0x7c, 0x83, 0xb2, + 0xcd, 0x99, 0xc3, 0xb6, 0xc9, 0xde, 0x83, 0xd2, 0x34, 0x12, 0x81, 0x35, 0x55, 0x36, 0xc6, 0x63, + 0xc9, 0xa8, 0x25, 0x14, 0x68, 0x1f, 0xee, 0x5a, 0x46, 0x38, 0xf3, 0xad, 0x5d, 0xc7, 0x38, 0xaa, + 0xdd, 0xa6, 0x9c, 0x64, 0xd0, 0xf5, 0x27, 0xa4, 0xeb, 0x52, 0xab, 0x3f, 0x9e, 0x13, 0x2e, 0xa9, + 0xa5, 0x21, 0x49, 0xa1, 0xbd, 0x15, 0x59, 0xc6, 0xec, 0xe4, 0x49, 0x0a, 0x5f, 0xff, 0x01, 0xb0, + 0xc5, 0xf1, 0x7a, 0x95, 0xa4, 0xcb, 0x0b, 0x49, 0xf7, 0x9d, 0xd5, 0xc7, 0x19, 0xf5, 0x19, 0xac, + 0xa7, 0x16, 0xf2, 0x52, 0x89, 0xcd, 0xd5, 0x25, 0x63, 0x22, 0xcc, 0x4b, 0x9e, 0x10, 0x1e, 0xaa, + 0xc0, 0x76, 0x8f, 0x84, 0x67, 0x8b, 0x26, 0x42, 0x9f, 0xd2, 0xea, 0x9f, 0x67, 0xa1, 0xb2, 0x67, + 0x04, 0xc7, 0xfb, 0xc6, 0xb4, 0x1f, 0x1a, 0x61, 0x80, 0xc3, 0x7b, 0x6c, 0x04, 0xc7, 0x13, 0x63, + 0xca, 0x15, 0xd7, 0x0c, 0x37, 0x9b, 0x05, 0x0c, 0xb5, 0x56, 0x9c, 0x58, 0x98, 0xec, 0xb9, 0x07, + 0x4f, 0x85, 0x4d, 0x1c, 0xa7, 0x51, 0xac, 0x04, 0xc7, 0xb3, 0xf1, 0x38, 0x2e, 0x2a, 0x4a, 0xb2, + 0x3b, 0xb0, 0x2e, 0x7e, 0x92, 0xd6, 0x7a, 0x26, 0x8e, 0x1d, 0xd3, 0x40, 0xf6, 0x08, 0xca, 0x02, + 0x30, 0x88, 0x84, 0x60, 0x35, 0xf6, 0x75, 0x24, 0x08, 0x4d, 0xa6, 0x62, 0x3f, 0x82, 0xcb, 0x52, + 0x72, 0xd7, 0xf3, 0xf7, 0x67, 0x4e, 0x68, 0x37, 0xba, 0x42, 0x45, 0x78, 0x6d, 0x81, 0x3d, 0x21, + 0xd1, 0x96, 0x73, 0xa6, 0x6b, 0xbb, 0x6f, 0xbb, 0x24, 0x53, 0xb3, 0x5a, 0x1a, 0x38, 0x47, 0x65, + 0x9c, 0x91, 0x28, 0x4d, 0x53, 0x19, 0x67, 0xb8, 0xd8, 0x04, 0x60, 0xdf, 0x0a, 0x8f, 0x3d, 0x93, + 0xf4, 0xc3, 0x78, 0xb1, 0xf5, 0x65, 0x94, 0x96, 0xa6, 0xc4, 0xee, 0x44, 0x4b, 0x68, 0xe4, 0x86, + 0xa4, 0x25, 0x66, 0xb5, 0x28, 0x89, 0xdb, 0x8c, 0x6f, 0xb8, 0x47, 0x56, 0x50, 0x2b, 0x6f, 0x67, + 0xef, 0x65, 0x34, 0x91, 0x52, 0xff, 0xf6, 0x2a, 0xe4, 0xf9, 0x48, 0xbe, 0x06, 0xa5, 0x21, 0x39, + 0x8b, 0xd1, 0x32, 0x15, 0x0e, 0x60, 0x02, 0x74, 0x67, 0x13, 0xae, 0xdd, 0x09, 0x9f, 0x46, 0x46, + 0xa3, 0xdf, 0x98, 0xa5, 0x37, 0x0b, 0xb1, 0xac, 0x2c, 0x41, 0x45, 0x0a, 0x2b, 0xe1, 0x7b, 0xa7, + 0x34, 0x1b, 0x72, 0x84, 0x88, 0x92, 0xe4, 0x63, 0xa6, 0x1d, 0x0b, 0x99, 0xf2, 0x84, 0x2b, 0x12, + 0xa0, 0xe1, 0x86, 0xf3, 0xfe, 0x97, 0xb5, 0x05, 0xff, 0x0b, 0xbb, 0x09, 0xa8, 0x3b, 0x8e, 0xac, + 0x9e, 0x6b, 0x35, 0xba, 0xd4, 0xc3, 0x45, 0x4d, 0x82, 0xe0, 0x02, 0x31, 0xbd, 0x29, 0x75, 0x6a, + 0x5e, 0xc3, 0x9f, 0xec, 0x93, 0x78, 0x76, 0x52, 0x1b, 0x85, 0xa6, 0x2d, 0x24, 0xba, 0x3c, 0x8f, + 0xb5, 0x14, 0x1d, 0xe6, 0x84, 0x62, 0x9a, 0x6b, 0xda, 0xf8, 0x53, 0x6d, 0x01, 0x68, 0xde, 0x69, + 0x60, 0x85, 0xe4, 0x68, 0xbc, 0x4a, 0x4d, 0x4c, 0x1d, 0x11, 0x79, 0xa7, 0x07, 0x5e, 0x10, 0xdb, + 0x9b, 0xab, 0xcb, 0xed, 0x4d, 0xf5, 0x7d, 0x28, 0xe0, 0x1e, 0x6e, 0x84, 0x06, 0xbb, 0x23, 0x7c, + 0x3b, 0x5c, 0xf3, 0x10, 0x4e, 0xae, 0xa4, 0x0c, 0xe1, 0xed, 0xe9, 0x44, 0xe5, 0x12, 0xcf, 0x1b, + 0x92, 0xb9, 0x17, 0xef, 0x1f, 0x22, 0x43, 0xa1, 0x15, 0xbc, 0x06, 0x25, 0xac, 0x1a, 0xf9, 0xcd, + 0x85, 0x5c, 0x28, 0xfa, 0xde, 0x69, 0x03, 0xd3, 0xea, 0x7f, 0xc8, 0x40, 0xb9, 0xe7, 0x9b, 0xb8, + 0x71, 0xf5, 0xa7, 0xd6, 0xe8, 0x95, 0xe6, 0x31, 0xea, 0x10, 0x9e, 0xe3, 0x18, 0x24, 0x22, 0x85, + 0xb9, 0x15, 0x03, 0xd8, 0x87, 0x90, 0x1b, 0xa3, 0x28, 0xcc, 0xca, 0x9a, 0xb5, 0x94, 0x7d, 0xf4, + 0x1b, 0x85, 0xa3, 0x46, 0xa4, 0xea, 0xaf, 0xc5, 0xe5, 0x93, 0x9f, 0x59, 0xf6, 0x2e, 0xaf, 0xd0, + 0x39, 0x4f, 0xbf, 0xa1, 0x64, 0x58, 0x11, 0x72, 0xcd, 0x56, 0xbf, 0xc1, 0xf5, 0x69, 0xd4, 0xac, + 0xfb, 0xfa, 0x6e, 0x5b, 0xeb, 0x0f, 0x94, 0x1c, 0x1d, 0x1c, 0x11, 0xa0, 0x53, 0xef, 0x0f, 0x94, + 0x22, 0x03, 0x58, 0x3b, 0xec, 0xb6, 0x7f, 0x74, 0xd8, 0x52, 0x14, 0xf5, 0x5f, 0x67, 0x00, 0x12, + 0x27, 0x28, 0x7b, 0x07, 0xca, 0xa7, 0x94, 0xd2, 0x25, 0xef, 0xb8, 0xdc, 0x46, 0xe0, 0x68, 0xd2, + 0x6f, 0xde, 0x83, 0x4a, 0x2c, 0xea, 0x71, 0xef, 0x5f, 0x74, 0x93, 0x97, 0x63, 0xfc, 0xce, 0x39, + 0x7b, 0x17, 0x8a, 0x1e, 0xb6, 0x03, 0x49, 0xb3, 0xf2, 0xc6, 0x2f, 0x35, 0x5f, 0x2b, 0x78, 0x3c, + 0x81, 0x3a, 0xc2, 0xd8, 0x8f, 0xcc, 0xe7, 0x98, 0x74, 0x17, 0x41, 0x0d, 0xc7, 0x98, 0x05, 0x96, + 0xc6, 0xf1, 0xb1, 0x94, 0xce, 0x27, 0x52, 0x5a, 0xfd, 0x31, 0x54, 0xfb, 0xc6, 0x64, 0xca, 0x65, + 0x39, 0x35, 0x8c, 0x41, 0x0e, 0xe7, 0x84, 0x98, 0x7a, 0xf4, 0x1b, 0x17, 0xdd, 0x81, 0xe5, 0x8f, + 0x2c, 0x37, 0x5a, 0xa3, 0x51, 0x12, 0xc5, 0xef, 0x21, 0x4a, 0x73, 0xcd, 0x3b, 0x8d, 0xc4, 0x79, + 0x94, 0x56, 0xff, 0x20, 0x03, 0x65, 0xa9, 0x1a, 0xec, 0x7d, 0xc8, 0x91, 0x32, 0x99, 0x91, 0x05, + 0xa1, 0x44, 0xc0, 0x7f, 0x73, 0xf5, 0x03, 0x09, 0xd9, 0x5d, 0xc8, 0x07, 0xa1, 0xe1, 0x47, 0xfe, + 0x74, 0x45, 0xe2, 0xd8, 0xf1, 0x66, 0xae, 0xa9, 0x71, 0x34, 0x53, 0x21, 0x6b, 0xb9, 0xa6, 0x70, + 0x38, 0x2c, 0x52, 0x21, 0x52, 0xdd, 0x86, 0x52, 0x9c, 0x3d, 0x4e, 0x01, 0xad, 0xf7, 0xbc, 0xaf, + 0xac, 0xb0, 0x12, 0xe4, 0xb5, 0x7a, 0xf7, 0x49, 0x4b, 0xc9, 0xa8, 0x7f, 0x98, 0x01, 0x48, 0xb8, + 0xd8, 0x83, 0x54, 0x6d, 0xaf, 0xcf, 0xe7, 0xfa, 0x80, 0xfe, 0x4a, 0x95, 0xbd, 0x01, 0xa5, 0x99, + 0x4b, 0x40, 0xcb, 0x14, 0x3b, 0x51, 0x02, 0x40, 0x0b, 0x28, 0x8a, 0xfe, 0x98, 0xb3, 0x80, 0x5e, + 0x18, 0x8e, 0xfa, 0x1d, 0x28, 0xc5, 0xd9, 0xa1, 0x51, 0xb7, 0xdb, 0xeb, 0x74, 0x7a, 0xcf, 0xdb, + 0xdd, 0x27, 0xca, 0x0a, 0x26, 0x0f, 0xb4, 0x56, 0xa3, 0xd5, 0xc4, 0x64, 0x06, 0xe7, 0x6c, 0xe3, + 0x50, 0xd3, 0x5a, 0xdd, 0x81, 0xae, 0xf5, 0x9e, 0x2b, 0xab, 0xea, 0xff, 0x9b, 0x83, 0xcd, 0x9e, + 0xdb, 0x9c, 0x4d, 0x1d, 0x7b, 0x64, 0x84, 0xd6, 0x53, 0xeb, 0xbc, 0x11, 0x9e, 0xe1, 0xee, 0x6b, + 0x84, 0xa1, 0xcf, 0x17, 0x73, 0x49, 0xe3, 0x09, 0xee, 0x94, 0x08, 0x2c, 0x3f, 0x24, 0x9f, 0x8b, + 0xbc, 0x8a, 0xab, 0x1c, 0xde, 0xf0, 0x1c, 0x5a, 0xcb, 0xec, 0x7b, 0x70, 0x99, 0x3b, 0x32, 0x38, + 0x25, 0x2a, 0xb0, 0x3a, 0x2d, 0xe6, 0xec, 0xc2, 0xd4, 0x65, 0x9c, 0x10, 0x59, 0x91, 0x8c, 0x44, + 0xd8, 0x2d, 0x28, 0x27, 0xec, 0xd1, 0x21, 0x15, 0xc4, 0x84, 0x54, 0x13, 0x34, 0xbc, 0xa3, 0x5a, + 0xeb, 0xb6, 0x79, 0x46, 0x2e, 0x9e, 0xbc, 0x56, 0xf5, 0x92, 0xc6, 0xe0, 0x26, 0xfc, 0x39, 0x6c, + 0xa6, 0x28, 0xa9, 0x16, 0x6b, 0x54, 0x8b, 0x77, 0x23, 0x07, 0xe9, 0x5c, 0xeb, 0x65, 0x08, 0x56, + 0x87, 0x6b, 0xa4, 0x1b, 0x5e, 0x1a, 0x2a, 0x74, 0x11, 0xfb, 0xc8, 0xf5, 0x7c, 0x4b, 0x08, 0xfc, + 0xa2, 0x1d, 0xb4, 0x29, 0x9d, 0xd8, 0x3f, 0xd2, 0xa1, 0x2a, 0xdf, 0x5f, 0xa2, 0xf3, 0x42, 0x8e, + 0xb6, 0xf9, 0x0e, 0x9a, 0xd3, 0x0a, 0x94, 0x6e, 0x9b, 0xec, 0xb6, 0x50, 0x67, 0xf5, 0xc8, 0xa4, + 0x01, 0x32, 0x69, 0x2a, 0x04, 0x7c, 0xc6, 0x61, 0xd7, 0xbb, 0xb0, 0xb5, 0xac, 0x92, 0x4b, 0xd4, + 0xb0, 0x6d, 0x59, 0x0d, 0x9b, 0x33, 0xda, 0x13, 0x95, 0xec, 0x1f, 0x64, 0xa0, 0xd2, 0xb4, 0xcc, + 0xd9, 0xf4, 0x87, 0x9e, 0xed, 0xe2, 0x04, 0xf8, 0x08, 0x2a, 0x9e, 0x63, 0xd2, 0xe8, 0x49, 0xb1, + 0x01, 0xa9, 0x13, 0x23, 0xe1, 0xdc, 0x06, 0xcf, 0x31, 0x1b, 0x9e, 0x43, 0x91, 0x04, 0xef, 0xc1, + 0x25, 0xee, 0xd0, 0x10, 0xfe, 0xbd, 0x33, 0xce, 0xbc, 0x4a, 0x23, 0xa3, 0x70, 0x14, 0x57, 0x8e, + 0x88, 0xfc, 0x57, 0x60, 0x4b, 0x22, 0xc7, 0x91, 0xe1, 0xf4, 0x8b, 0x93, 0x64, 0x33, 0xe6, 0x8d, + 0x8e, 0x6c, 0xd4, 0xdf, 0x5a, 0x85, 0x12, 0x77, 0x87, 0x60, 0x7d, 0xef, 0x41, 0xc1, 0x1b, 0x7e, + 0xa9, 0xfb, 0xb1, 0x9b, 0x60, 0xe1, 0xa4, 0x71, 0xcd, 0x1b, 0x7e, 0xa9, 0x59, 0x63, 0xf6, 0x4e, + 0xb4, 0xcf, 0x9b, 0xd6, 0x58, 0x74, 0x4a, 0x35, 0x6d, 0x8f, 0x88, 0x7d, 0x1f, 0x6d, 0xe5, 0x47, + 0x50, 0x4e, 0x66, 0x7c, 0x50, 0x2b, 0x5c, 0xdc, 0x0b, 0xf1, 0x02, 0x08, 0x90, 0x89, 0xbb, 0x84, + 0x38, 0x53, 0xf1, 0x62, 0x26, 0x4e, 0x46, 0x4c, 0x9f, 0x41, 0x35, 0x91, 0xf1, 0xc4, 0x57, 0xba, + 0x90, 0x6f, 0x3d, 0xa6, 0xa4, 0x13, 0x8f, 0x7f, 0x98, 0x81, 0x52, 0x9b, 0x17, 0x1f, 0x9e, 0xb1, + 0x37, 0x20, 0xfb, 0x92, 0x5e, 0x40, 0x1c, 0xbb, 0x0f, 0x9b, 0x86, 0x69, 0xea, 0xc6, 0x78, 0x6c, + 0x8d, 0x42, 0xcb, 0xd4, 0x51, 0x05, 0x12, 0x32, 0x67, 0xc3, 0x30, 0xcd, 0xba, 0x80, 0x93, 0xec, + 0xc6, 0x35, 0x1f, 0xe8, 0x91, 0xe1, 0x99, 0x1c, 0x29, 0x17, 0xb5, 0xaa, 0x1d, 0x08, 0xbb, 0x93, + 0xfb, 0x92, 0x53, 0x1d, 0x9b, 0x7b, 0x79, 0xc7, 0xaa, 0xbf, 0xbb, 0x0a, 0xa0, 0x59, 0x53, 0xc7, + 0x18, 0x59, 0xff, 0xc7, 0x54, 0x1a, 0xc5, 0x52, 0x3c, 0xb0, 0xae, 0x19, 0x85, 0x60, 0x44, 0x83, + 0xe8, 0x9a, 0xec, 0x07, 0xf0, 0xba, 0x6f, 0x9d, 0xfa, 0x76, 0x68, 0xe9, 0x63, 0xdf, 0x9b, 0xe8, + 0x29, 0xc9, 0x83, 0x0b, 0xb3, 0x44, 0x95, 0xb8, 0x26, 0x88, 0x76, 0x7d, 0x6f, 0x92, 0x96, 0x3e, + 0xea, 0x1f, 0x94, 0xa1, 0x5c, 0x77, 0x0d, 0xe7, 0xfc, 0x27, 0x16, 0xc5, 0x04, 0x90, 0x77, 0x75, + 0x3a, 0x0b, 0x79, 0x73, 0xf9, 0x81, 0x59, 0x89, 0x20, 0xd4, 0xd0, 0x5b, 0x50, 0xf6, 0x66, 0x61, + 0x8c, 0xe7, 0x47, 0x68, 0xc0, 0x41, 0x44, 0x10, 0xf3, 0xc7, 0x9e, 0xfb, 0x88, 0x9f, 0xcc, 0x9f, + 0x84, 0x3f, 0x56, 0x89, 0x63, 0x7e, 0x22, 0x40, 0x69, 0x64, 0x4f, 0xa8, 0xc1, 0xc1, 0x6c, 0x62, + 0xf1, 0x46, 0x67, 0x79, 0x7c, 0x5a, 0x43, 0xc0, 0x30, 0x97, 0x89, 0x35, 0xf1, 0xfc, 0x73, 0x9e, + 0xcb, 0x1a, 0xcf, 0x85, 0x83, 0x28, 0x97, 0x77, 0x81, 0x9d, 0x1a, 0x76, 0xa8, 0xa7, 0xb3, 0xe2, + 0x66, 0x88, 0x82, 0x98, 0x81, 0x9c, 0xdd, 0x15, 0x58, 0x33, 0xed, 0xe0, 0xa4, 0xdd, 0x13, 0x26, + 0x88, 0x48, 0x61, 0x5b, 0x82, 0x91, 0x81, 0x1a, 0x50, 0x68, 0x71, 0x75, 0x39, 0xab, 0x95, 0x10, + 0xb2, 0x83, 0x00, 0xdc, 0x41, 0x5d, 0x2b, 0x3c, 0xf5, 0x7c, 0xe4, 0xe4, 0x16, 0x46, 0x02, 0x40, + 0x4d, 0x03, 0x49, 0xb1, 0x20, 0xf2, 0x06, 0x65, 0xb5, 0x38, 0x8d, 0xba, 0x3b, 0x5f, 0xbe, 0x84, + 0xad, 0xf0, 0xea, 0x27, 0x10, 0x76, 0x07, 0xaa, 0x54, 0x7d, 0xb2, 0x40, 0xb0, 0x0d, 0x74, 0xca, + 0x95, 0xd5, 0x2a, 0x08, 0x25, 0x67, 0x02, 0x52, 0x7d, 0x06, 0xd7, 0x52, 0xed, 0xd3, 0x0d, 0xdf, + 0x37, 0xce, 0xf5, 0x89, 0xf1, 0xa5, 0xe7, 0x93, 0xe3, 0x27, 0xab, 0x5d, 0x91, 0xbb, 0xad, 0x8e, + 0xe8, 0x7d, 0xc4, 0x5e, 0xc8, 0x6a, 0xbb, 0x9e, 0x4f, 0x5e, 0xa1, 0xa5, 0xac, 0x88, 0x25, 0x17, + 0x06, 0x0d, 0x30, 0x99, 0x43, 0x01, 0x8f, 0x6b, 0xd4, 0xca, 0x04, 0xdb, 0x21, 0x10, 0x1a, 0x04, + 0xc1, 0x23, 0x2e, 0x59, 0x37, 0x45, 0x90, 0xd1, 0x23, 0x92, 0xbf, 0x1c, 0x71, 0x6c, 0x19, 0x26, + 0x9d, 0x9c, 0x11, 0x62, 0xcf, 0x32, 0xe8, 0x5c, 0x3a, 0x78, 0xa4, 0x4f, 0x67, 0x21, 0x0f, 0x48, + 0xd4, 0xf2, 0xc1, 0xa3, 0x83, 0x59, 0x28, 0xc0, 0x47, 0x56, 0x48, 0x61, 0x88, 0x04, 0x7e, 0x62, + 0x85, 0xb8, 0x11, 0x06, 0x8f, 0x22, 0x2f, 0xf8, 0x65, 0xd1, 0xb7, 0x8f, 0x84, 0x9b, 0x5b, 0x85, + 0xf5, 0x18, 0xa9, 0x4f, 0x66, 0x3c, 0x02, 0x31, 0xab, 0x95, 0x23, 0x82, 0xfd, 0x99, 0x83, 0x03, + 0x3b, 0x32, 0x46, 0xc7, 0x96, 0xee, 0x63, 0x55, 0xae, 0xf2, 0xa1, 0x23, 0x88, 0x86, 0xb5, 0x79, + 0x0d, 0x78, 0x42, 0x3f, 0xb6, 0x43, 0xf2, 0x4e, 0x65, 0xb5, 0x22, 0x01, 0xf6, 0xec, 0x10, 0xc5, + 0x02, 0x47, 0x8a, 0x19, 0x48, 0x59, 0x5c, 0x23, 0xa2, 0x0d, 0x42, 0xec, 0x13, 0x9c, 0x32, 0xba, + 0x07, 0x4a, 0x8a, 0x16, 0xf3, 0xbb, 0x4e, 0xa4, 0x55, 0x89, 0x14, 0x73, 0xbd, 0x0b, 0x9c, 0x59, + 0xc7, 0xa9, 0xc7, 0xf3, 0x7c, 0x8d, 0x9b, 0xc3, 0x04, 0x6e, 0xda, 0xc1, 0x09, 0xe5, 0x78, 0x07, + 0xaa, 0x12, 0x1d, 0xe6, 0x77, 0x83, 0xcf, 0x8c, 0x98, 0x2c, 0x55, 0x47, 0xdf, 0x9a, 0x78, 0xa1, + 0x68, 0xe6, 0xeb, 0x52, 0x1d, 0x35, 0x82, 0xa7, 0xeb, 0x28, 0x68, 0x31, 0xcf, 0x9b, 0x52, 0x1d, + 0x39, 0x29, 0xe6, 0xfa, 0x06, 0x54, 0x50, 0x8a, 0x84, 0x96, 0xcb, 0x17, 0xff, 0x2d, 0xde, 0xb1, + 0x02, 0x46, 0xab, 0xff, 0x0d, 0xa8, 0xf0, 0x9e, 0x17, 0xe2, 0x72, 0x9b, 0x93, 0x08, 0x58, 0x24, + 0x20, 0x44, 0x6f, 0x4c, 0x6c, 0x97, 0x5c, 0x50, 0x59, 0xad, 0xc4, 0x21, 0xfb, 0xb6, 0x2b, 0xa3, + 0x8d, 0x33, 0x72, 0x44, 0x25, 0x68, 0xe3, 0x8c, 0x96, 0xe4, 0xd4, 0x76, 0x1c, 0xbe, 0xf0, 0x6f, + 0x8b, 0x25, 0x89, 0x90, 0xbe, 0xb0, 0xa9, 0x39, 0x1a, 0xf3, 0xbe, 0x23, 0x66, 0x06, 0x02, 0x30, + 0xeb, 0x04, 0x69, 0x9c, 0xd5, 0xde, 0x94, 0x91, 0xc6, 0x99, 0x10, 0x4c, 0x58, 0x69, 0xe2, 0xbd, + 0x1b, 0x0b, 0x26, 0x04, 0x21, 0xb7, 0x4c, 0x60, 0x9c, 0xd5, 0xde, 0x4a, 0x13, 0x18, 0x67, 0x64, + 0x6b, 0x5a, 0x86, 0xc9, 0x6b, 0x76, 0x8f, 0x67, 0x8f, 0x00, 0xaa, 0xd8, 0x36, 0x54, 0x82, 0x47, + 0x7a, 0x82, 0x7f, 0x9b, 0xb3, 0x07, 0x8f, 0xb4, 0x88, 0xe2, 0x0e, 0x54, 0xe3, 0xb1, 0xe7, 0x34, + 0xf7, 0xf9, 0xc8, 0x9a, 0x62, 0xec, 0xe9, 0xd0, 0xf3, 0xa7, 0x19, 0xb8, 0xde, 0xa3, 0xe3, 0x58, + 0xda, 0x2e, 0xf6, 0xad, 0x20, 0x30, 0x8e, 0xac, 0x5d, 0xcf, 0xdf, 0x9d, 0xfd, 0xe4, 0x27, 0xe7, + 0xec, 0x1e, 0x6c, 0x1c, 0x18, 0xbe, 0xe5, 0x86, 0xf1, 0x71, 0x9d, 0x50, 0xcd, 0xe6, 0xc1, 0xec, + 0x31, 0x28, 0x1c, 0x74, 0x18, 0x2b, 0xb9, 0xc2, 0xcc, 0x4b, 0x7b, 0xd7, 0x17, 0xa8, 0xd0, 0x6c, + 0x2e, 0x35, 0xed, 0x20, 0xd4, 0x0c, 0xf7, 0x08, 0x85, 0x90, 0xe2, 0x78, 0xa7, 0x68, 0xfb, 0xa1, + 0x41, 0xa0, 0x4b, 0x26, 0x88, 0xd8, 0x55, 0x13, 0xbb, 0xa3, 0x4a, 0x84, 0x89, 0xe1, 0xf0, 0x19, + 0x28, 0xb3, 0xe9, 0x34, 0xcd, 0xba, 0x7a, 0x01, 0x2b, 0x11, 0x26, 0xac, 0xef, 0x40, 0x59, 0x2a, + 0x75, 0x89, 0x99, 0x02, 0x49, 0x59, 0x48, 0x2c, 0x95, 0xb3, 0x24, 0x82, 0x13, 0x92, 0xdc, 0xd5, + 0x3f, 0xce, 0x80, 0x42, 0x6e, 0x46, 0x8d, 0xe2, 0x00, 0xe8, 0xd4, 0x2f, 0x65, 0xe0, 0x66, 0x5e, + 0x69, 0xe0, 0x6e, 0x43, 0xde, 0xb1, 0x27, 0x71, 0x58, 0x55, 0x4a, 0x03, 0x26, 0x04, 0x8e, 0xb5, + 0xe7, 0xdb, 0x47, 0x64, 0x8a, 0xcb, 0x01, 0x80, 0x74, 0xd2, 0x8e, 0x96, 0x2d, 0x0d, 0xd1, 0x03, + 0x00, 0xd3, 0x0e, 0x42, 0x9d, 0x9c, 0x53, 0xa2, 0xda, 0xa2, 0x67, 0xe2, 0xfe, 0xd7, 0x4a, 0x66, + 0xf4, 0x53, 0xfd, 0x2b, 0x2a, 0xe4, 0xba, 0x9e, 0x69, 0xb1, 0x0f, 0xa0, 0x44, 0x51, 0xad, 0xd2, + 0x60, 0x08, 0x7f, 0x19, 0xa2, 0xe9, 0x0f, 0xf5, 0x6a, 0xd1, 0x15, 0xbf, 0x2e, 0x8e, 0x83, 0x7d, + 0x83, 0x4c, 0x5a, 0x3a, 0x44, 0xc6, 0xe2, 0xcb, 0xc2, 0xed, 0x46, 0x5e, 0x22, 0x8e, 0xc1, 0x8d, + 0x8e, 0x0e, 0x1c, 0x7c, 0xcb, 0x25, 0xc3, 0x29, 0xaf, 0xc5, 0x69, 0x72, 0x24, 0xf8, 0x1e, 0xaa, + 0x55, 0x7c, 0x3b, 0xc8, 0x2f, 0x71, 0x24, 0x70, 0x3c, 0xed, 0x0f, 0x1f, 0x40, 0xe9, 0x4b, 0xcf, + 0x76, 0x79, 0xc5, 0xd7, 0x16, 0x2a, 0x8e, 0xb6, 0x02, 0xaf, 0xf8, 0x97, 0xe2, 0x17, 0xbb, 0x0d, + 0x05, 0xcf, 0xe5, 0x79, 0x17, 0x16, 0xf2, 0x5e, 0xf3, 0xdc, 0x0e, 0x0f, 0xb2, 0x5a, 0xb7, 0x03, + 0xdd, 0xb7, 0x8f, 0x8e, 0x43, 0x1d, 0x39, 0xc5, 0xe1, 0x73, 0xd9, 0x0e, 0x34, 0x84, 0x61, 0xb6, + 0x38, 0x49, 0xc6, 0xb6, 0x83, 0xda, 0x1b, 0x65, 0x56, 0x5a, 0xc8, 0x0c, 0x38, 0x9a, 0x32, 0x7c, + 0x13, 0x8a, 0x47, 0xbe, 0x37, 0x9b, 0xe2, 0x7c, 0x80, 0x05, 0xca, 0x02, 0xe1, 0x76, 0xce, 0x51, + 0x97, 0xa1, 0x9f, 0xb6, 0x7b, 0xa4, 0x93, 0x6f, 0xa8, 0xbc, 0x9d, 0xbd, 0x57, 0xd4, 0x2a, 0x11, + 0x90, 0xbc, 0x3e, 0x6f, 0x42, 0xd1, 0x38, 0x3a, 0xd2, 0x45, 0xac, 0xd8, 0x42, 0x5e, 0xc6, 0xd1, + 0x11, 0x15, 0xf9, 0x00, 0xd6, 0x4f, 0x6d, 0x57, 0x0f, 0xa6, 0xd6, 0x88, 0xd3, 0xae, 0x2f, 0x76, + 0xe5, 0xa9, 0xed, 0xe2, 0x4c, 0x24, 0x7a, 0x79, 0xca, 0x56, 0xbf, 0xfe, 0x94, 0xdd, 0xb8, 0x68, + 0xca, 0xaa, 0xb0, 0x26, 0x0e, 0x23, 0x94, 0x05, 0x12, 0x81, 0x61, 0x1f, 0x42, 0xd9, 0x37, 0xdc, + 0x13, 0x5d, 0x9c, 0xe4, 0x7f, 0x21, 0xfb, 0x37, 0x34, 0xc3, 0x3d, 0x11, 0x07, 0xf9, 0xe0, 0xc7, + 0xbf, 0xd3, 0xea, 0xf0, 0xe6, 0x2b, 0xd4, 0x61, 0xc9, 0xe6, 0x62, 0x2f, 0xb7, 0xb9, 0x3e, 0x26, + 0xe3, 0xc6, 0x72, 0x43, 0x3d, 0x62, 0xb8, 0xb4, 0x9c, 0xa1, 0xc2, 0xc9, 0x7a, 0x9c, 0x0d, 0x1b, + 0x40, 0xfe, 0x45, 0x9d, 0x9c, 0x91, 0x5b, 0xa9, 0x06, 0xc4, 0x8e, 0x47, 0x0d, 0xfc, 0xc4, 0x09, + 0x59, 0x87, 0x8d, 0x24, 0x80, 0x96, 0x47, 0x22, 0x5f, 0x96, 0x0f, 0x38, 0x52, 0x11, 0xb7, 0x91, + 0x39, 0x65, 0xa7, 0xc2, 0x70, 0x6f, 0xc3, 0x3a, 0x0f, 0x9d, 0xe1, 0xfd, 0x16, 0x90, 0xc6, 0x52, + 0xd2, 0x2a, 0x04, 0xe4, 0xfd, 0x14, 0x90, 0x30, 0x10, 0xa6, 0x40, 0x78, 0x46, 0x2a, 0x4b, 0x22, + 0x0c, 0xb8, 0x3d, 0x10, 0x9e, 0x69, 0x25, 0x33, 0xfa, 0x89, 0x3b, 0xf1, 0xd0, 0x76, 0x4d, 0x9c, + 0x7a, 0xa1, 0x71, 0x14, 0xd4, 0x6a, 0xb4, 0x32, 0xcb, 0x02, 0x36, 0x30, 0x8e, 0x02, 0x34, 0xb9, + 0x0d, 0xae, 0xf9, 0xf3, 0x7a, 0x5f, 0x93, 0xfd, 0x71, 0x92, 0x4d, 0xa0, 0x95, 0x0d, 0xc9, 0x40, + 0xf8, 0x14, 0x58, 0x74, 0x56, 0x2a, 0x59, 0xd0, 0xd7, 0x17, 0x66, 0xe3, 0x86, 0x38, 0x2c, 0x8d, + 0xa3, 0xfe, 0x6f, 0x41, 0x39, 0xf0, 0x66, 0xfe, 0xc8, 0xd2, 0x83, 0xd0, 0x9a, 0xd6, 0x5e, 0xa3, + 0x0a, 0x01, 0x07, 0xf5, 0x43, 0x6b, 0xca, 0x3e, 0x85, 0xf5, 0xb4, 0x05, 0x75, 0x63, 0xc9, 0x91, + 0x23, 0x4d, 0x0b, 0xad, 0x32, 0x92, 0x6d, 0xaa, 0xdb, 0x3c, 0xb8, 0x9b, 0xd4, 0x15, 0x62, 0xe4, + 0xc7, 0x6a, 0x15, 0xd7, 0x0b, 0x1b, 0x11, 0x0c, 0x3b, 0x30, 0xb2, 0xac, 0xc3, 0x33, 0xd2, 0x70, + 0xe2, 0x0e, 0x8c, 0x6d, 0x59, 0xb4, 0x54, 0x22, 0xb3, 0x16, 0xe7, 0x02, 0xb7, 0x17, 0x89, 0xe1, + 0x56, 0x6a, 0x2e, 0xc4, 0x86, 0xa4, 0x06, 0x7e, 0x62, 0x54, 0x36, 0x81, 0x47, 0x97, 0xd0, 0x1e, + 0x6e, 0xf9, 0x3c, 0x92, 0x84, 0x74, 0xa0, 0xf8, 0xe0, 0x72, 0x7e, 0x6b, 0xd1, 0x78, 0xd4, 0x8d, + 0xbc, 0xd9, 0x3c, 0x86, 0xea, 0xd4, 0xc7, 0x21, 0x89, 0x2b, 0xab, 0xca, 0xfd, 0x70, 0xe0, 0x5b, + 0x49, 0x7d, 0x2b, 0x53, 0x29, 0xc5, 0xbe, 0x0f, 0x9b, 0x12, 0xe7, 0xec, 0x84, 0x98, 0x6f, 0x13, + 0xf3, 0xd6, 0x1c, 0xf3, 0xe1, 0x09, 0xb2, 0x57, 0xa7, 0xa9, 0x34, 0xab, 0xcf, 0x79, 0xb9, 0xd0, + 0x82, 0xbc, 0x43, 0xfc, 0x57, 0x2f, 0x70, 0x5d, 0xa5, 0xdc, 0x5f, 0x4f, 0xf9, 0x29, 0x5c, 0x3b, + 0x68, 0xb9, 0x26, 0x29, 0x58, 0x45, 0x8d, 0x27, 0xd8, 0x23, 0xa8, 0x70, 0x5b, 0x86, 0x82, 0x64, + 0x83, 0xda, 0x5d, 0xd9, 0xcd, 0x4f, 0x06, 0x0d, 0x21, 0xb4, 0xb2, 0x13, 0xff, 0x0e, 0xd8, 0x27, + 0xb0, 0xc9, 0xcf, 0x60, 0x64, 0xc1, 0xfc, 0xd6, 0xe2, 0x44, 0x23, 0xa2, 0xdd, 0x44, 0x3a, 0x6b, + 0x70, 0xcd, 0x9f, 0xb9, 0x64, 0xdf, 0x08, 0xce, 0xa9, 0xef, 0x0d, 0x2d, 0xce, 0x7f, 0x8f, 0xf8, + 0x45, 0x73, 0x34, 0x4e, 0xc6, 0x79, 0x49, 0x22, 0x5e, 0xf1, 0x65, 0xd0, 0x01, 0xf2, 0x5d, 0x90, + 0xe7, 0x70, 0x66, 0x3b, 0x26, 0xcf, 0xf3, 0xed, 0x6f, 0x92, 0xe7, 0x0e, 0xf2, 0x51, 0x9e, 0x0c, + 0x72, 0xb3, 0x99, 0x6d, 0x92, 0x9e, 0x57, 0xd1, 0xe8, 0x37, 0x7b, 0x13, 0xaa, 0xbe, 0x35, 0x9a, + 0xf9, 0x81, 0xfd, 0xc2, 0xd2, 0x03, 0xdb, 0x3d, 0xa9, 0xbd, 0x43, 0xfd, 0xb8, 0x1e, 0x43, 0xfb, + 0xb6, 0x7b, 0x82, 0x93, 0xd3, 0x3a, 0x0b, 0x2d, 0xdf, 0xe5, 0x71, 0xfb, 0xef, 0xca, 0x93, 0xb3, + 0x45, 0x08, 0x94, 0x2e, 0x1a, 0x58, 0xf1, 0xef, 0xb9, 0xc9, 0x11, 0xf0, 0xc9, 0xf1, 0xe0, 0x6b, + 0x4d, 0x8e, 0x3e, 0x4d, 0x8e, 0xbb, 0x50, 0xb4, 0xdd, 0xd0, 0xf2, 0x5f, 0x18, 0x4e, 0xed, 0xfd, + 0x85, 0x3d, 0x20, 0xc6, 0xb1, 0x3b, 0x50, 0x08, 0x1c, 0x1b, 0xa5, 0x4c, 0xed, 0x83, 0x05, 0xb2, + 0x08, 0xc5, 0xee, 0x41, 0x29, 0xbe, 0x72, 0x56, 0xfb, 0x70, 0x81, 0x2e, 0x41, 0xb2, 0x9b, 0x90, + 0x3b, 0xc5, 0x09, 0xf5, 0x70, 0xf1, 0x58, 0x06, 0xe1, 0xa8, 0x34, 0x8c, 0x51, 0xab, 0x27, 0xa5, + 0xe1, 0xd1, 0x82, 0xd2, 0xb0, 0x6b, 0x3b, 0x0e, 0x57, 0x1a, 0xc6, 0xe2, 0x17, 0x6e, 0xb9, 0xc4, + 0x81, 0x2d, 0xf9, 0x68, 0x71, 0xcb, 0x45, 0xdc, 0x33, 0xba, 0x9c, 0x57, 0x0e, 0xe8, 0xac, 0x81, + 0x1f, 0x99, 0x7c, 0x2c, 0xf7, 0x55, 0xfa, 0x10, 0x42, 0x83, 0x20, 0x4e, 0xa3, 0x89, 0x22, 0x4e, + 0x5a, 0x6c, 0xf3, 0xac, 0xf6, 0x09, 0xbf, 0xf5, 0xc1, 0x21, 0x6d, 0xf3, 0x8c, 0x7d, 0x00, 0xeb, + 0x51, 0x58, 0x15, 0x16, 0x17, 0xd4, 0x3e, 0x5d, 0xa8, 0x41, 0x9a, 0x80, 0x35, 0xa1, 0x32, 0x46, + 0xed, 0x7e, 0xc2, 0x95, 0xfd, 0xda, 0x63, 0xaa, 0xc8, 0x76, 0xb4, 0x9d, 0x5f, 0x64, 0x0c, 0x68, + 0x29, 0x2e, 0xf6, 0x00, 0x98, 0x3d, 0xe6, 0xe3, 0xb9, 0xeb, 0x7b, 0x13, 0xae, 0xd0, 0xd7, 0x3e, + 0xa3, 0xd9, 0xb5, 0x04, 0x43, 0x07, 0xaf, 0x96, 0x6b, 0xea, 0x93, 0x40, 0x28, 0x27, 0xdf, 0xa1, + 0x7a, 0x0a, 0x91, 0x19, 0x5f, 0x4d, 0x15, 0x5b, 0x5a, 0x19, 0x69, 0xf7, 0x03, 0xae, 0xab, 0x7c, + 0x06, 0x38, 0x5d, 0x5f, 0x24, 0xac, 0xbf, 0xf2, 0x52, 0x56, 0xa4, 0x8d, 0x58, 0x1f, 0x43, 0xd5, + 0xb4, 0xcc, 0xd9, 0x94, 0xf4, 0x34, 0x9a, 0xa2, 0xdf, 0x95, 0x85, 0x9f, 0xec, 0x32, 0xd6, 0x2a, + 0xa6, 0xec, 0x40, 0xfe, 0x14, 0x36, 0x22, 0xdf, 0x6e, 0x28, 0xdc, 0xc0, 0xdf, 0x93, 0x8b, 0x8d, + 0x5d, 0xb7, 0xda, 0xfa, 0x2c, 0xfa, 0x49, 0x45, 0x3e, 0x82, 0x75, 0xda, 0xbb, 0x03, 0xd7, 0x98, + 0x06, 0xc7, 0x5e, 0x58, 0xfb, 0x55, 0x59, 0x0d, 0xe9, 0x0b, 0xa8, 0x56, 0x41, 0xa2, 0x28, 0x85, + 0x5b, 0x4e, 0xb2, 0x4e, 0x47, 0xa1, 0x55, 0xfb, 0x3e, 0xdf, 0x72, 0x62, 0x60, 0x23, 0xb4, 0xd8, + 0x23, 0x00, 0x63, 0x3a, 0x75, 0xce, 0xf9, 0xd4, 0xfc, 0x01, 0x4d, 0xcd, 0x2d, 0x69, 0x6a, 0xd6, + 0x11, 0x49, 0x73, 0xb3, 0x64, 0x44, 0x3f, 0xd9, 0x43, 0xa8, 0x4c, 0xbd, 0x20, 0xd4, 0xcd, 0x89, + 0x43, 0xed, 0xaf, 0xcb, 0x6b, 0xfb, 0xc0, 0x0b, 0xc2, 0xe6, 0xc4, 0xa1, 0x8d, 0x67, 0x1a, 0xff, + 0x66, 0x1d, 0xb8, 0x94, 0x92, 0xdb, 0x06, 0x85, 0x39, 0xd4, 0x76, 0xa8, 0xc4, 0x1b, 0x52, 0x89, + 0x92, 0xfc, 0x16, 0x31, 0x7e, 0x9b, 0xde, 0x3c, 0x88, 0x2c, 0x51, 0x1a, 0x83, 0x38, 0xd0, 0xb5, + 0xc1, 0x15, 0x12, 0x82, 0x46, 0x91, 0xae, 0x8f, 0x61, 0x23, 0xa1, 0xc2, 0x06, 0x06, 0xb5, 0xa6, + 0x3c, 0x93, 0xa5, 0x70, 0xf4, 0xf5, 0x88, 0x11, 0x61, 0x01, 0xf5, 0x9d, 0xe7, 0x38, 0xb3, 0xa9, + 0x10, 0xa5, 0xb5, 0x96, 0xe8, 0x3b, 0x02, 0x72, 0x29, 0x29, 0x19, 0xeb, 0xd6, 0xa4, 0xb6, 0x2b, + 0x1b, 0xeb, 0xd6, 0x44, 0xfd, 0x17, 0x79, 0x28, 0x46, 0x56, 0x0c, 0x2b, 0x43, 0xe1, 0xb0, 0xfb, + 0xb4, 0xdb, 0x7b, 0xde, 0xe5, 0xd7, 0xea, 0xea, 0xfd, 0x7e, 0x4b, 0x1b, 0x28, 0x26, 0xab, 0x02, + 0xd0, 0xc5, 0x19, 0xbd, 0xdf, 0xa8, 0x77, 0xf9, 0x35, 0x3b, 0xba, 0xae, 0xc3, 0xd3, 0xab, 0x6c, + 0x13, 0xd6, 0x77, 0x0f, 0xbb, 0x14, 0x8c, 0xc8, 0x41, 0x59, 0x04, 0xb5, 0x3e, 0xe7, 0x47, 0xb0, + 0x1c, 0x94, 0x43, 0xd0, 0x7e, 0x7d, 0xd0, 0xd2, 0xda, 0x11, 0x28, 0x4f, 0x71, 0x8d, 0xbd, 0x43, + 0xad, 0x21, 0x72, 0x5a, 0x63, 0x97, 0x61, 0x33, 0x66, 0x8b, 0xb2, 0x54, 0x0a, 0x58, 0xb3, 0x03, + 0xad, 0xf7, 0xc3, 0x56, 0x63, 0xa0, 0x00, 0x9d, 0xe7, 0x3e, 0x79, 0xa2, 0x94, 0x59, 0x05, 0x8a, + 0xcd, 0x76, 0x7f, 0xd0, 0xee, 0x36, 0x06, 0x4a, 0x05, 0x2b, 0xbc, 0xdb, 0xee, 0x0c, 0x5a, 0x9a, + 0xb2, 0xce, 0x8a, 0x90, 0xfb, 0x61, 0xaf, 0xdd, 0x55, 0xaa, 0x74, 0x81, 0xa8, 0xbe, 0x7f, 0xd0, + 0x69, 0x29, 0x1b, 0x08, 0xed, 0xf7, 0xb4, 0x81, 0xa2, 0x20, 0xf4, 0x79, 0xbb, 0xdb, 0xec, 0x3d, + 0x57, 0x36, 0x59, 0x09, 0xf2, 0x87, 0x5d, 0x2c, 0x86, 0xb1, 0x75, 0x28, 0xd1, 0x4f, 0xbd, 0xde, + 0xe9, 0x28, 0x97, 0xa4, 0x43, 0xe0, 0x2d, 0x44, 0xd1, 0x91, 0x72, 0x1f, 0xeb, 0x70, 0x19, 0xdb, + 0x12, 0x27, 0x89, 0xfa, 0x0a, 0xe6, 0xb3, 0xdf, 0xee, 0x1e, 0xf6, 0x95, 0xab, 0x48, 0x4c, 0x3f, + 0x09, 0x53, 0xc3, 0x7c, 0xda, 0x5d, 0xea, 0xca, 0x9b, 0xf8, 0xbb, 0xd9, 0xea, 0xb4, 0x06, 0x2d, + 0xe5, 0x16, 0xb6, 0x4a, 0x6b, 0x1d, 0x74, 0xea, 0x8d, 0x96, 0xb2, 0x8d, 0x89, 0x4e, 0xaf, 0xf1, + 0x54, 0xef, 0x1d, 0x28, 0x6f, 0xb0, 0x2d, 0x50, 0x7a, 0x5d, 0xbd, 0x79, 0x78, 0xd0, 0x69, 0x37, + 0xea, 0x83, 0x96, 0xfe, 0xb4, 0xf5, 0x85, 0xa2, 0x62, 0xb7, 0x1f, 0x68, 0x2d, 0x5d, 0xe4, 0x75, + 0x9b, 0x29, 0x50, 0xd9, 0x3d, 0xfc, 0xf1, 0x8f, 0xbf, 0xd0, 0x45, 0xbb, 0xdf, 0xc4, 0x6a, 0x25, + 0x14, 0xfa, 0xe1, 0x53, 0xe5, 0xee, 0x1c, 0xa8, 0xff, 0x54, 0x79, 0x0b, 0xfb, 0x2d, 0x1a, 0x08, + 0xe5, 0x1e, 0x12, 0x68, 0xad, 0xc6, 0xa1, 0xd6, 0x6f, 0x3f, 0x6b, 0xe9, 0x8d, 0x41, 0x4b, 0x79, + 0x9b, 0x3a, 0xaa, 0xdd, 0x7d, 0xaa, 0xdc, 0xc7, 0x96, 0xe0, 0x2f, 0x3e, 0x3c, 0xef, 0x30, 0x06, + 0xd5, 0x84, 0x96, 0x60, 0xef, 0x22, 0xc9, 0x8e, 0xd6, 0xab, 0x37, 0x1b, 0xf5, 0xfe, 0x40, 0x79, + 0x0f, 0xbb, 0xa1, 0x7f, 0xd0, 0x69, 0x0f, 0x94, 0x07, 0xd8, 0xd6, 0x27, 0xf5, 0xc1, 0x5e, 0x4b, + 0x53, 0xde, 0xc7, 0x91, 0x1e, 0xb4, 0xf7, 0x5b, 0xba, 0xe8, 0xf6, 0x87, 0x58, 0xc6, 0x6e, 0xbb, + 0xd3, 0x51, 0x1e, 0xd1, 0x39, 0x67, 0x5d, 0x1b, 0xb4, 0x69, 0xac, 0x3f, 0xc2, 0x0c, 0xea, 0x07, + 0x07, 0x9d, 0x2f, 0x94, 0x8f, 0xb1, 0x81, 0xfb, 0x87, 0x9d, 0x41, 0x5b, 0x3f, 0x3c, 0x68, 0xd6, + 0x07, 0x2d, 0xe5, 0x13, 0x9a, 0x08, 0xbd, 0xfe, 0xa0, 0xb9, 0xdf, 0x51, 0x3e, 0xa5, 0x3c, 0x69, + 0x1a, 0x36, 0x3a, 0xbd, 0x6e, 0x4b, 0x79, 0xac, 0xfe, 0x06, 0x14, 0x23, 0xcb, 0x16, 0xb3, 0x69, + 0x77, 0xbb, 0x2d, 0x4d, 0x59, 0xc1, 0xa2, 0x3a, 0xad, 0xdd, 0x81, 0x92, 0xa1, 0x43, 0xdf, 0xf6, + 0x93, 0xbd, 0x81, 0xb2, 0x8a, 0x3f, 0x7b, 0x87, 0xd8, 0x6b, 0x59, 0x6a, 0x6e, 0x6b, 0xbf, 0xad, + 0xe4, 0xf0, 0x57, 0xbd, 0x3b, 0x68, 0x2b, 0x79, 0x9a, 0x37, 0xed, 0xee, 0x93, 0x4e, 0x4b, 0x59, + 0x43, 0xe8, 0x7e, 0x5d, 0x7b, 0xaa, 0x14, 0x78, 0xa6, 0xcd, 0xd6, 0xe7, 0x4a, 0x91, 0xad, 0xc1, + 0x6a, 0xe7, 0xa1, 0x52, 0x42, 0x50, 0xb3, 0xd5, 0x3c, 0x3c, 0x50, 0x40, 0xbd, 0x07, 0x85, 0xfa, + 0xd1, 0xd1, 0xbe, 0x67, 0xd2, 0x39, 0xf3, 0xee, 0x61, 0xa7, 0xc3, 0xd7, 0xd1, 0x4e, 0x6f, 0x30, + 0xe8, 0xed, 0x2b, 0x19, 0x9c, 0xb9, 0x83, 0xde, 0x81, 0xb2, 0xaa, 0xb6, 0xa1, 0x18, 0xed, 0xa6, + 0xd2, 0xa5, 0xb8, 0x22, 0xe4, 0x0e, 0xb4, 0xd6, 0x33, 0x1e, 0xa9, 0xd0, 0x6d, 0x7d, 0x8e, 0xd5, + 0xc4, 0x5f, 0x98, 0x51, 0x16, 0x0b, 0xe2, 0xb7, 0xd7, 0xe8, 0x56, 0x5c, 0xa7, 0xdd, 0x6d, 0xd5, + 0x35, 0x25, 0xaf, 0x7e, 0x9c, 0x3a, 0x04, 0x16, 0x82, 0x07, 0x8b, 0xaf, 0xb7, 0x45, 0xf1, 0xed, + 0x27, 0xdd, 0x9e, 0xd6, 0xe2, 0xd7, 0xec, 0x44, 0x47, 0xae, 0xaa, 0xef, 0x40, 0x29, 0x16, 0x9a, + 0x38, 0xb1, 0x1a, 0x5a, 0xaf, 0xdf, 0xe7, 0xfd, 0xbe, 0x82, 0x69, 0xea, 0x1b, 0x9e, 0xce, 0xa8, + 0x7d, 0xd8, 0x8c, 0xe4, 0x35, 0xdd, 0x40, 0x20, 0xf3, 0x65, 0x0b, 0xf2, 0x1d, 0xeb, 0x85, 0xe5, + 0x44, 0xa1, 0xf4, 0x94, 0x40, 0x68, 0x6f, 0xf8, 0x65, 0x3b, 0xbe, 0x09, 0x4d, 0x09, 0x54, 0xd0, + 0xba, 0xd2, 0x65, 0x6c, 0xba, 0xc2, 0xf1, 0xbb, 0x19, 0x28, 0xc6, 0xbb, 0xc0, 0x1d, 0x58, 0x1d, + 0xf4, 0xc5, 0x21, 0xd2, 0xd6, 0x83, 0xe4, 0xed, 0x89, 0x41, 0xf4, 0x4b, 0x5b, 0x1d, 0xf4, 0xd9, + 0xbb, 0xb0, 0xc6, 0xef, 0x8e, 0x0a, 0x87, 0xd0, 0x56, 0x7a, 0x67, 0x19, 0x10, 0x4e, 0x13, 0x34, + 0xec, 0x63, 0x28, 0xc5, 0xb5, 0x15, 0x5e, 0x97, 0xab, 0x69, 0x86, 0x18, 0xad, 0x25, 0x94, 0x6a, + 0x07, 0xaa, 0xe9, 0x0c, 0xd9, 0x4d, 0x00, 0x9e, 0xa5, 0xe4, 0x06, 0x94, 0x20, 0xec, 0x3a, 0x44, + 0x57, 0x5a, 0x9b, 0x54, 0xb1, 0xf5, 0xf8, 0x8a, 0x6b, 0x53, 0xfd, 0x1b, 0x59, 0x80, 0x44, 0x8f, + 0xc4, 0x8e, 0x88, 0x7d, 0x49, 0x79, 0x11, 0x3f, 0xf0, 0x1a, 0x94, 0x1c, 0xcf, 0x30, 0xe5, 0xa7, + 0x27, 0x8a, 0x08, 0xa0, 0xa1, 0x91, 0xaf, 0x77, 0x95, 0x78, 0xf0, 0x0e, 0xbb, 0x02, 0x6b, 0x63, + 0xcf, 0x9f, 0x18, 0xa1, 0xb8, 0x37, 0x21, 0x52, 0xb8, 0x1d, 0xf0, 0x33, 0x6d, 0xd4, 0xa6, 0x5d, + 0xba, 0x3a, 0x81, 0x63, 0x50, 0x11, 0xc0, 0x0e, 0xc2, 0xd0, 0x78, 0xb4, 0xdc, 0x91, 0xe3, 0x05, + 0x96, 0xa9, 0x0f, 0x79, 0x3c, 0x54, 0x45, 0x83, 0x08, 0xb4, 0x73, 0xce, 0x5b, 0xeb, 0x4f, 0x6c, + 0xd7, 0x08, 0xc5, 0x49, 0x0f, 0xb5, 0x36, 0x82, 0x60, 0x75, 0xbf, 0x0c, 0x3c, 0xe1, 0x5a, 0xe2, + 0xc7, 0xe3, 0x45, 0x04, 0x50, 0x75, 0x5f, 0x07, 0xb0, 0x82, 0x91, 0x31, 0xe5, 0x99, 0x97, 0x28, + 0xf3, 0x92, 0x80, 0xec, 0x9c, 0xb3, 0x0e, 0x54, 0x07, 0x43, 0xdc, 0xbe, 0x3c, 0x34, 0xf9, 0x1b, + 0x9e, 0x23, 0x9c, 0x3e, 0x77, 0xe6, 0x15, 0xee, 0x07, 0x69, 0x32, 0x7e, 0x8e, 0x3f, 0xc7, 0x7b, + 0xbd, 0x0e, 0x97, 0x96, 0x90, 0x7d, 0xa3, 0x80, 0x46, 0x27, 0x1a, 0x9d, 0x7a, 0x18, 0xd2, 0x55, + 0xa5, 0x78, 0xa7, 0xce, 0x44, 0x17, 0x2e, 0xf8, 0x26, 0xfd, 0x1a, 0x85, 0x2c, 0x89, 0x58, 0x58, + 0x31, 0x48, 0x71, 0x8c, 0xeb, 0x5d, 0xd8, 0x40, 0xe4, 0xd8, 0xb6, 0x1c, 0x53, 0x90, 0xf0, 0x9b, + 0x36, 0xeb, 0x23, 0xcf, 0xd9, 0x45, 0x28, 0xd1, 0xa9, 0x7f, 0x2d, 0x0f, 0x90, 0xd8, 0x68, 0xa9, + 0x50, 0x82, 0x4c, 0x3a, 0x94, 0xe0, 0x21, 0x5c, 0x11, 0xf7, 0xb0, 0xe2, 0xf3, 0x78, 0xdb, 0xd5, + 0x87, 0x46, 0x14, 0xb5, 0xc1, 0x04, 0x96, 0x1f, 0xc9, 0xb7, 0xdd, 0x1d, 0x03, 0x35, 0xbe, 0x0d, + 0x99, 0x27, 0x3c, 0x9f, 0xa6, 0xdd, 0xb9, 0xb2, 0x1e, 0x91, 0xb0, 0x0f, 0xce, 0xa7, 0xec, 0x03, + 0xb8, 0xec, 0x5b, 0x63, 0xdf, 0x0a, 0x8e, 0xf5, 0x30, 0x90, 0x0b, 0xe3, 0xc1, 0x91, 0x9b, 0x02, + 0x39, 0x08, 0xe2, 0xb2, 0x3e, 0x80, 0xcb, 0xc2, 0x7a, 0x9b, 0xab, 0x1e, 0xbf, 0xb0, 0xbf, 0xc9, + 0x91, 0x72, 0xed, 0x5e, 0x07, 0x10, 0x86, 0x6b, 0xf4, 0x80, 0x4b, 0x51, 0x2b, 0x71, 0x23, 0x55, + 0x5c, 0x6b, 0x26, 0xeb, 0x53, 0x9c, 0xb3, 0xf2, 0x04, 0x53, 0x21, 0x87, 0xe2, 0x94, 0xce, 0x04, + 0xab, 0x0f, 0xab, 0x0f, 0xe8, 0x81, 0x1a, 0xba, 0x66, 0xee, 0x99, 0x96, 0x46, 0x38, 0xf6, 0x1e, + 0x5c, 0x92, 0x9b, 0x1d, 0xbd, 0xb1, 0x50, 0xa6, 0x8a, 0x28, 0x49, 0x43, 0x35, 0xfe, 0xda, 0xc2, + 0x3b, 0xc0, 0xa4, 0x9a, 0x47, 0xd4, 0x15, 0xa2, 0xde, 0x88, 0xab, 0x2d, 0x88, 0xdf, 0x02, 0xaa, + 0x22, 0x3f, 0x82, 0x59, 0x5f, 0x34, 0xd5, 0x10, 0x49, 0x67, 0x31, 0x1f, 0xc0, 0xe5, 0xa4, 0x75, + 0xba, 0x11, 0xea, 0xe1, 0xb1, 0xa5, 0x5b, 0xae, 0x49, 0x97, 0xe7, 0x8a, 0xda, 0x66, 0xdc, 0xd0, + 0x7a, 0x38, 0x38, 0xb6, 0xd0, 0xd8, 0x92, 0x5c, 0x70, 0x1b, 0x2f, 0x77, 0xc1, 0x7d, 0x02, 0xb5, + 0x54, 0x7c, 0x81, 0xdc, 0xdd, 0xfc, 0xf2, 0xe9, 0x96, 0x1c, 0x55, 0x10, 0xf7, 0xf8, 0x7d, 0xd8, + 0x3c, 0x36, 0x02, 0x3d, 0xc5, 0x4b, 0x9e, 0xc1, 0xa2, 0xb6, 0x71, 0x6c, 0x04, 0x07, 0x12, 0x8f, + 0xfa, 0xfb, 0x19, 0xa8, 0xa6, 0xad, 0x56, 0x7e, 0xf9, 0xc8, 0x99, 0x4d, 0x5c, 0x1e, 0x4a, 0x94, + 0xd7, 0xa2, 0x24, 0xae, 0x85, 0xe9, 0x89, 0xce, 0x53, 0xd1, 0x5a, 0x98, 0x9e, 0x34, 0x28, 0xcd, + 0xde, 0x86, 0xc2, 0xf4, 0x84, 0x0b, 0x87, 0x8b, 0x66, 0xdf, 0xda, 0x94, 0xc7, 0x70, 0xbf, 0x0d, + 0x85, 0x99, 0x20, 0xcd, 0x5d, 0x44, 0x3a, 0x23, 0x52, 0xf5, 0xcf, 0x56, 0xa1, 0x22, 0xfb, 0x6b, + 0xbe, 0x4e, 0xd8, 0xc1, 0x37, 0x0a, 0x17, 0xd9, 0xa6, 0x90, 0x4e, 0x9d, 0x02, 0xc6, 0xb1, 0x9f, + 0x78, 0xcc, 0x01, 0x1c, 0x1b, 0x41, 0x7d, 0x16, 0x7a, 0x0d, 0x8f, 0x1f, 0x75, 0x7a, 0x4e, 0x14, + 0x48, 0xce, 0x57, 0x06, 0xca, 0x04, 0x11, 0x43, 0xfe, 0x81, 0xb8, 0xa7, 0x42, 0x37, 0xd3, 0x28, + 0x54, 0x29, 0xbf, 0x30, 0x5f, 0x2a, 0xd1, 0xc5, 0x34, 0x8a, 0x42, 0x7a, 0x08, 0x1b, 0xc9, 0xad, + 0x80, 0x28, 0xba, 0x69, 0x9e, 0x65, 0x3d, 0xbe, 0x12, 0x20, 0xae, 0xa2, 0xaf, 0xdb, 0x81, 0xee, + 0x39, 0x66, 0x74, 0xfd, 0xa8, 0x10, 0x39, 0xe0, 0x7b, 0x8e, 0x29, 0x2e, 0x27, 0x72, 0x1a, 0xd7, + 0x3a, 0x8d, 0x68, 0x62, 0x27, 0x7d, 0xd7, 0x3a, 0x15, 0xd7, 0x90, 0xfe, 0x65, 0x06, 0x36, 0x17, + 0xfc, 0x2b, 0x28, 0x39, 0x93, 0x87, 0x91, 0xf0, 0x27, 0x7b, 0x03, 0x2a, 0x13, 0x23, 0x1c, 0x1d, + 0xeb, 0x53, 0xdf, 0x1a, 0xdb, 0x67, 0xd1, 0xeb, 0x4e, 0x04, 0x3b, 0x20, 0x10, 0x45, 0x7c, 0xd1, + 0xa1, 0x10, 0xf7, 0x7b, 0x73, 0xc1, 0xc7, 0x0f, 0x82, 0x3a, 0xe4, 0xf0, 0x8e, 0xa2, 0x41, 0x73, + 0x17, 0x44, 0x83, 0x5e, 0x87, 0x92, 0xeb, 0x85, 0xba, 0xe7, 0xea, 0xd3, 0x13, 0xf1, 0x76, 0x41, + 0xc1, 0xf5, 0xc2, 0x9e, 0x7b, 0x70, 0xc2, 0xee, 0x81, 0x32, 0x0b, 0x2c, 0x7d, 0xe8, 0x78, 0xde, + 0x24, 0x32, 0x72, 0xb8, 0xec, 0xa8, 0xce, 0x02, 0x6b, 0x07, 0xc1, 0xbc, 0xfe, 0xea, 0x0d, 0x58, + 0x6b, 0xc7, 0xde, 0xa0, 0x38, 0xf0, 0x29, 0x2b, 0x1e, 0x42, 0xf1, 0xa0, 0xd4, 0xa0, 0x47, 0x55, + 0xf6, 0x8d, 0x29, 0xbb, 0x0f, 0xd9, 0x89, 0x31, 0x15, 0xe7, 0x4f, 0xb5, 0xf8, 0x90, 0x8e, 0x63, + 0x1f, 0xec, 0x1b, 0x53, 0xbe, 0xdd, 0x20, 0xd1, 0xf5, 0x4f, 0xa0, 0x18, 0x01, 0xbe, 0xd1, 0xc6, + 0xf2, 0x6f, 0x56, 0xa1, 0xd4, 0x94, 0x7d, 0xc8, 0x68, 0x18, 0x87, 0xfe, 0xcc, 0x45, 0x2d, 0x2d, + 0x7a, 0x1e, 0x62, 0x64, 0xb8, 0x03, 0x01, 0x8a, 0x26, 0xf4, 0xea, 0x4b, 0x26, 0xf4, 0x0d, 0x00, + 0x9f, 0x9c, 0x21, 0xe4, 0x0f, 0xc9, 0xc6, 0x41, 0xb8, 0x6d, 0xb3, 0x6d, 0x9e, 0x2d, 0x8f, 0xb2, + 0xc9, 0x7d, 0xfd, 0x28, 0x9b, 0xfc, 0xd2, 0x28, 0x9b, 0xbb, 0xc9, 0xa6, 0x82, 0x13, 0x1b, 0x0b, + 0x2e, 0xf1, 0xad, 0x6d, 0x1a, 0xdf, 0xc5, 0xc1, 0xd2, 0xbf, 0x03, 0xd5, 0xa8, 0x75, 0x22, 0x3f, + 0x48, 0x5d, 0xff, 0x11, 0x38, 0xee, 0x74, 0x5e, 0x0f, 0xe5, 0x64, 0x7a, 0xa1, 0x96, 0x5f, 0x11, + 0x7e, 0xf4, 0x37, 0x33, 0xc0, 0x84, 0xf1, 0xbe, 0x3b, 0x73, 0x9c, 0x81, 0x75, 0x46, 0xf2, 0xe0, + 0x3e, 0x6c, 0x0a, 0x9f, 0xb8, 0x14, 0xbc, 0x27, 0x4e, 0x6c, 0x39, 0x22, 0x39, 0xb1, 0x5d, 0x76, + 0x43, 0x73, 0x75, 0xe9, 0x0d, 0xcd, 0xe5, 0x37, 0x3f, 0x6f, 0x41, 0x59, 0xbe, 0xdf, 0xc8, 0x95, + 0x30, 0x30, 0x92, 0xab, 0x8d, 0xff, 0x6e, 0x15, 0x20, 0x71, 0x30, 0xfc, 0xb2, 0x43, 0xa4, 0x96, + 0x0c, 0x49, 0x76, 0xd9, 0x90, 0xdc, 0x03, 0x45, 0xa6, 0x93, 0x2e, 0xda, 0x56, 0x13, 0xc2, 0x48, + 0xb9, 0xb1, 0x03, 0xf9, 0x32, 0x24, 0xc5, 0x43, 0x8a, 0x30, 0x10, 0x11, 0x2c, 0x49, 0x92, 0x57, + 0xac, 0xbd, 0xa2, 0x1d, 0x70, 0x49, 0xcc, 0x3e, 0x83, 0x6b, 0x31, 0xa7, 0x7e, 0x6a, 0x87, 0xc7, + 0xde, 0x2c, 0x14, 0xeb, 0x34, 0x10, 0xb2, 0xe9, 0x4a, 0x94, 0xd3, 0x73, 0x8e, 0xe6, 0xeb, 0x35, + 0x40, 0xf5, 0x7c, 0x3c, 0x73, 0x1c, 0x3d, 0xb4, 0xce, 0x42, 0xf1, 0xe2, 0x44, 0x2d, 0xe5, 0x9b, + 0x91, 0x86, 0x57, 0x2b, 0x8e, 0x45, 0x42, 0xfd, 0xb3, 0x2c, 0xe4, 0x7f, 0x34, 0xb3, 0xfc, 0x73, + 0xf6, 0x09, 0x94, 0x82, 0x70, 0x12, 0xca, 0x87, 0xb3, 0xd7, 0x78, 0x06, 0x84, 0xa7, 0xb3, 0x55, + 0x6b, 0x62, 0xb9, 0x21, 0x77, 0x5a, 0x22, 0x2d, 0x6d, 0x3b, 0x5b, 0x90, 0x0f, 0x42, 0x6b, 0x1a, + 0x88, 0xe0, 0x46, 0x9e, 0x60, 0xdb, 0x90, 0x77, 0x3d, 0xd3, 0x0a, 0xd2, 0x21, 0x8c, 0x5d, 0xd4, + 0x33, 0x38, 0x82, 0xa9, 0xb0, 0x16, 0x8f, 0xf8, 0xc2, 0x01, 0x29, 0xc7, 0xd0, 0xa5, 0x14, 0xcb, + 0x30, 0x6d, 0xf7, 0x28, 0xba, 0xb8, 0x1c, 0xa7, 0x71, 0x43, 0x25, 0xb5, 0xde, 0x38, 0x8a, 0x5e, + 0x11, 0x10, 0x49, 0xb6, 0x0d, 0x65, 0xfc, 0xf9, 0xdc, 0xb7, 0x43, 0xab, 0xff, 0x28, 0x92, 0xe9, + 0x12, 0x08, 0x95, 0x72, 0xd3, 0x0a, 0xad, 0x51, 0xd8, 0xff, 0x4a, 0xc4, 0x25, 0x52, 0xf8, 0x5a, + 0x04, 0x61, 0xdf, 0x01, 0x36, 0x34, 0x46, 0x27, 0x47, 0x3e, 0x05, 0x00, 0x7c, 0x35, 0xb3, 0x7c, + 0xdb, 0x8a, 0xe2, 0x10, 0xcb, 0x52, 0xa7, 0x68, 0x9b, 0x09, 0xd9, 0x8f, 0x38, 0x15, 0x9a, 0x13, + 0x13, 0xe3, 0xac, 0xe9, 0x4d, 0x45, 0xe8, 0x95, 0x48, 0xa9, 0x26, 0xac, 0xa7, 0xba, 0x70, 0xc1, + 0x3f, 0xd4, 0x6f, 0x75, 0x5a, 0x8d, 0x01, 0x37, 0x2c, 0x85, 0x53, 0x62, 0x55, 0x76, 0x6a, 0x64, + 0x25, 0x6f, 0x47, 0x4e, 0xb2, 0x3e, 0xf3, 0xe4, 0x2b, 0x69, 0x69, 0x4f, 0x5a, 0xca, 0x9a, 0xfa, + 0xb7, 0x56, 0x61, 0x73, 0xe0, 0x1b, 0x6e, 0x60, 0x70, 0x5d, 0xc4, 0x0d, 0x7d, 0xcf, 0x61, 0xdf, + 0x81, 0x62, 0x38, 0x72, 0xe4, 0xa1, 0xbd, 0x15, 0x09, 0x92, 0x39, 0xd2, 0x07, 0x83, 0x11, 0xf7, + 0x4a, 0x17, 0x42, 0xfe, 0x83, 0xbd, 0x07, 0xf9, 0xa1, 0x75, 0x64, 0xbb, 0x42, 0x96, 0x5e, 0x9e, + 0x67, 0xdc, 0x41, 0xe4, 0xde, 0x8a, 0xc6, 0xa9, 0xd8, 0x07, 0xb0, 0x36, 0xf2, 0x26, 0xd1, 0xd6, + 0x95, 0x5c, 0x8c, 0x93, 0x0a, 0x42, 0xec, 0xde, 0x8a, 0x26, 0xe8, 0xd8, 0x27, 0x50, 0xf4, 0x3d, + 0xc7, 0xc1, 0x9e, 0x14, 0x9b, 0x5a, 0x6d, 0x9e, 0x47, 0x13, 0xf8, 0xbd, 0x15, 0x2d, 0xa6, 0x55, + 0x1f, 0x40, 0x41, 0x54, 0x16, 0x3b, 0x60, 0xa7, 0xf5, 0xa4, 0x2d, 0x3a, 0xb2, 0xd1, 0xdb, 0xdf, + 0x6f, 0x0f, 0xf8, 0xad, 0x5f, 0xad, 0xd7, 0xe9, 0xec, 0xd4, 0x1b, 0x4f, 0x95, 0xd5, 0x9d, 0x22, + 0xac, 0x71, 0xff, 0xa3, 0xfa, 0x9b, 0x19, 0xd8, 0x98, 0x6b, 0x00, 0x7b, 0x0c, 0xb9, 0x09, 0xea, + 0xc6, 0xbc, 0x7b, 0xee, 0x2c, 0x6d, 0xa5, 0x94, 0xe6, 0x1a, 0x33, 0x72, 0xa8, 0x9f, 0x41, 0x35, + 0x0d, 0x97, 0x7c, 0x10, 0xeb, 0x50, 0xd2, 0x5a, 0xf5, 0xa6, 0xde, 0xeb, 0xa2, 0xe5, 0xcf, 0xaa, + 0x00, 0x94, 0x7c, 0xae, 0xb5, 0xc9, 0x6d, 0xf0, 0x6b, 0xa0, 0xcc, 0x77, 0x0c, 0x7b, 0x82, 0xd6, + 0xcf, 0x64, 0xea, 0x58, 0xa4, 0x64, 0x4a, 0x43, 0x76, 0x73, 0x49, 0x4f, 0x0a, 0x32, 0x1e, 0x8b, + 0x32, 0x4a, 0xa5, 0xd5, 0x5f, 0x07, 0xb6, 0xd8, 0x83, 0xbf, 0xbc, 0xec, 0xff, 0x47, 0x06, 0x72, + 0x07, 0x8e, 0xe1, 0xb2, 0xdb, 0x90, 0xa7, 0xd7, 0x6a, 0x84, 0x44, 0x96, 0xd7, 0x07, 0x4e, 0x0b, + 0xc2, 0xb1, 0x77, 0x20, 0x1b, 0x8e, 0xa2, 0xcb, 0xc6, 0x57, 0x2f, 0x98, 0x7c, 0x7b, 0x2b, 0x1a, + 0x52, 0xb1, 0x7b, 0x90, 0x35, 0xcd, 0x28, 0xc8, 0x5f, 0x78, 0x25, 0xd0, 0x26, 0x6d, 0x5a, 0x63, + 0xdb, 0xb5, 0xc5, 0xeb, 0x3a, 0x48, 0xc2, 0xde, 0x84, 0xac, 0x39, 0x72, 0xd2, 0x37, 0x36, 0xb8, + 0xf5, 0x1a, 0x67, 0x68, 0x8e, 0x1c, 0xd4, 0xe1, 0x42, 0xff, 0x5c, 0xf7, 0x67, 0x2e, 0x45, 0x2d, + 0x06, 0xc2, 0xae, 0x2a, 0xa3, 0x5e, 0x32, 0xa3, 0xd0, 0xc7, 0x40, 0xdc, 0x5a, 0x9c, 0xfa, 0xd6, + 0xd4, 0xf0, 0x63, 0x8b, 0xca, 0x0e, 0x0e, 0x38, 0x60, 0x67, 0x0d, 0xe8, 0x11, 0x50, 0xf5, 0x5d, + 0x7a, 0x4a, 0x05, 0x55, 0x73, 0x35, 0xfa, 0xb5, 0xe4, 0xbd, 0x38, 0x81, 0x51, 0xff, 0x22, 0x0b, + 0x65, 0xa9, 0x3e, 0xec, 0x23, 0x28, 0x9a, 0xe9, 0x85, 0x78, 0x6d, 0xa1, 0xd2, 0x0f, 0x9a, 0xd1, + 0x12, 0x34, 0xc5, 0xf4, 0xa6, 0x23, 0x8f, 0x50, 0x7f, 0x61, 0xf8, 0x36, 0x7f, 0x40, 0x6b, 0x55, + 0x3e, 0x7b, 0xe8, 0x5b, 0xe1, 0xb3, 0x08, 0xb3, 0xb7, 0xa2, 0x55, 0x02, 0x29, 0x4d, 0xf6, 0x83, + 0x68, 0x52, 0x36, 0xf5, 0x10, 0x19, 0x07, 0xee, 0xad, 0x68, 0x11, 0x1e, 0x49, 0xad, 0x33, 0x6b, + 0x34, 0x0b, 0x23, 0xfb, 0x61, 0x3d, 0x6a, 0x10, 0x01, 0xe9, 0x35, 0x44, 0xfe, 0x93, 0x3d, 0x44, + 0xf9, 0x69, 0x38, 0x8e, 0x47, 0xea, 0x57, 0x5e, 0x3e, 0x09, 0x68, 0xc6, 0x70, 0xfe, 0xfa, 0x62, + 0x94, 0x62, 0x77, 0x21, 0xef, 0x85, 0xc7, 0x56, 0xa4, 0x95, 0x47, 0x8f, 0xb2, 0x20, 0xa8, 0xd9, + 0xe8, 0xe0, 0x4c, 0x21, 0xb4, 0xfa, 0xb3, 0x0c, 0x14, 0x44, 0x0f, 0xb0, 0x4d, 0x58, 0xef, 0xb7, + 0x06, 0xfa, 0xb3, 0xba, 0xd6, 0xae, 0xef, 0x74, 0x5a, 0xe2, 0xa2, 0xc9, 0x13, 0xad, 0xde, 0x15, + 0x72, 0x52, 0x6b, 0x3d, 0xeb, 0x3d, 0x6d, 0x71, 0xc7, 0x5e, 0xb3, 0xd5, 0xfd, 0x42, 0xc9, 0x72, + 0xe7, 0x76, 0xeb, 0xa0, 0xae, 0xa1, 0x94, 0x2c, 0x43, 0xa1, 0xf5, 0x79, 0xab, 0x71, 0x48, 0x62, + 0xb2, 0x0a, 0xd0, 0x6c, 0xd5, 0x3b, 0x9d, 0x5e, 0x03, 0xc5, 0xe6, 0x1a, 0x63, 0x50, 0x6d, 0x68, + 0xad, 0xfa, 0xa0, 0xa5, 0xd7, 0x1b, 0x8d, 0xde, 0x61, 0x77, 0xa0, 0x14, 0xb0, 0xc4, 0x7a, 0x67, + 0xd0, 0xd2, 0x62, 0x10, 0x3d, 0x94, 0xd5, 0xd4, 0x7a, 0x07, 0x31, 0xa4, 0xb4, 0x53, 0x42, 0x5b, + 0x8e, 0xc6, 0x4a, 0xfd, 0x93, 0x4d, 0xa8, 0xa6, 0xa7, 0x26, 0xfb, 0x14, 0x8a, 0xa6, 0x99, 0x1a, + 0xe3, 0x1b, 0xcb, 0xa6, 0xf0, 0x83, 0xa6, 0x19, 0x0d, 0x33, 0xff, 0xc1, 0xde, 0x88, 0x16, 0xd2, + 0xea, 0xc2, 0x42, 0x8a, 0x96, 0xd1, 0xf7, 0x61, 0x43, 0x3c, 0x6a, 0x62, 0x1a, 0xa1, 0x31, 0x34, + 0x02, 0x2b, 0xbd, 0x4a, 0x1a, 0x84, 0x6c, 0x0a, 0xdc, 0xde, 0x8a, 0x56, 0x1d, 0xa5, 0x20, 0xec, + 0xbb, 0x50, 0x35, 0xc8, 0x5c, 0x8f, 0xf9, 0x73, 0xb2, 0x62, 0x59, 0x47, 0x9c, 0xc4, 0xbe, 0x6e, + 0xc8, 0x00, 0x9c, 0x88, 0xa6, 0xef, 0x4d, 0x13, 0xe6, 0x7c, 0xea, 0x10, 0xcc, 0xf7, 0xa6, 0x12, + 0x6f, 0xc5, 0x94, 0xd2, 0xec, 0x13, 0xa8, 0x88, 0x9a, 0x27, 0x2e, 0x8b, 0x78, 0xc9, 0xf2, 0x6a, + 0x93, 0xa2, 0xb8, 0xb7, 0xa2, 0x95, 0x47, 0x49, 0x92, 0x3d, 0x42, 0xed, 0x30, 0x51, 0xab, 0x0b, + 0xf2, 0x5c, 0xa3, 0xda, 0x46, 0x5c, 0x60, 0xc4, 0x29, 0xf6, 0x01, 0x00, 0xd5, 0x93, 0xf3, 0x14, + 0x53, 0x41, 0x29, 0xbe, 0x37, 0x8d, 0x58, 0x4a, 0x66, 0x94, 0x90, 0xaa, 0xc7, 0x1d, 0x4e, 0xa5, + 0xc5, 0xea, 0x91, 0xd3, 0x29, 0xa9, 0x1e, 0xf7, 0x55, 0xc5, 0xd5, 0xe3, 0x6c, 0xb0, 0x50, 0xbd, + 0x88, 0x8b, 0x57, 0x8f, 0x33, 0x45, 0xd5, 0xe3, 0x3c, 0xe5, 0xf9, 0xea, 0x45, 0x2c, 0x54, 0x3d, + 0xce, 0xf1, 0xdd, 0x05, 0x7b, 0xa0, 0x72, 0xa1, 0x3d, 0x80, 0xc3, 0x96, 0xb6, 0x08, 0xbe, 0x0b, + 0xd5, 0xe0, 0xd8, 0x3b, 0x95, 0x04, 0xc8, 0xba, 0xcc, 0xdd, 0x3f, 0xf6, 0x4e, 0x65, 0x09, 0xb2, + 0x1e, 0xc8, 0x00, 0xac, 0x2d, 0x6f, 0x22, 0xbd, 0xa6, 0x50, 0x95, 0x6b, 0x4b, 0x2d, 0x7c, 0x66, + 0x5b, 0xa7, 0x58, 0x5b, 0x23, 0x4a, 0x60, 0xa7, 0x24, 0xee, 0x9b, 0x40, 0x38, 0x64, 0x52, 0x41, + 0x15, 0xa2, 0x24, 0x88, 0x1d, 0x39, 0x01, 0xce, 0xad, 0x99, 0x2b, 0xb3, 0x29, 0xf2, 0xdc, 0x3a, + 0x74, 0x53, 0x8c, 0x15, 0x4e, 0x2a, 0x58, 0x93, 0x55, 0x11, 0x58, 0x5f, 0xcd, 0x2c, 0x77, 0x64, + 0x89, 0x90, 0xad, 0xd4, 0xaa, 0xe8, 0x0b, 0x5c, 0xb2, 0x2a, 0x22, 0x48, 0x3c, 0xaf, 0x63, 0x76, + 0x36, 0x3f, 0xaf, 0x25, 0x66, 0x9a, 0xd7, 0x31, 0x6b, 0xbc, 0xa0, 0x62, 0xde, 0x4b, 0x0b, 0x0b, + 0x4a, 0x62, 0xe6, 0x0b, 0x2a, 0xe6, 0x7e, 0x04, 0x62, 0x36, 0xf1, 0xce, 0x4d, 0x05, 0x76, 0xf1, + 0x5a, 0x8b, 0xde, 0x85, 0x51, 0x9c, 0xc2, 0xb9, 0xea, 0x5b, 0x68, 0x7f, 0x88, 0xa9, 0x70, 0x59, + 0x9e, 0xab, 0x1a, 0x61, 0xe2, 0xa5, 0xe4, 0x27, 0x49, 0xa9, 0xb0, 0xa9, 0x1d, 0xfa, 0x35, 0x73, + 0xb1, 0xb0, 0x03, 0x3b, 0xf4, 0x93, 0xc2, 0x30, 0xc5, 0xde, 0x03, 0x9a, 0x86, 0x9c, 0xc5, 0x92, + 0x45, 0x37, 0x76, 0x8b, 0x60, 0x28, 0x9a, 0xe2, 0x37, 0x4e, 0x16, 0x51, 0xc6, 0xc8, 0x1c, 0xd5, + 0xc6, 0xf2, 0x64, 0xe1, 0x45, 0x34, 0x9a, 0x0d, 0x9c, 0x2c, 0x9c, 0xa8, 0x61, 0x8e, 0xd8, 0x7d, + 0x20, 0x6e, 0xa2, 0x3f, 0x4a, 0x3d, 0xfa, 0xe5, 0x7b, 0x53, 0x4e, 0x5d, 0x40, 0x02, 0xa4, 0xc5, + 0x16, 0x38, 0x9e, 0x1b, 0x35, 0xfc, 0x38, 0xd5, 0x02, 0x44, 0xc4, 0xc2, 0x60, 0x14, 0xa7, 0xd4, + 0xdf, 0x5e, 0x83, 0x82, 0x90, 0xb5, 0xec, 0x12, 0x6c, 0x08, 0x91, 0xdf, 0xac, 0x0f, 0xea, 0x3b, + 0xf5, 0x3e, 0x2a, 0x69, 0x0c, 0xaa, 0x5c, 0xe6, 0xc7, 0xb0, 0x0c, 0xee, 0x03, 0x24, 0xf4, 0x63, + 0xd0, 0x2a, 0xee, 0x03, 0x82, 0x97, 0x3f, 0xae, 0x98, 0x65, 0x1b, 0x50, 0xe6, 0x8c, 0x1c, 0x40, + 0xf7, 0x5e, 0x89, 0x8b, 0xa7, 0xf3, 0x12, 0x0b, 0x3f, 0xe7, 0x5a, 0x4b, 0x58, 0x38, 0xa0, 0x10, + 0xb3, 0x44, 0x07, 0x61, 0x0c, 0xaa, 0x03, 0xed, 0xb0, 0xdb, 0x48, 0xca, 0x29, 0xd1, 0x5d, 0x45, + 0x9e, 0xcd, 0xb3, 0x76, 0xeb, 0xb9, 0x02, 0xc8, 0xc4, 0x73, 0xa1, 0x74, 0x19, 0xd5, 0x4c, 0xca, + 0x84, 0x92, 0x15, 0x76, 0x15, 0x2e, 0xf5, 0xf7, 0x7a, 0xcf, 0x75, 0xce, 0x14, 0x37, 0x61, 0x9d, + 0x6d, 0x81, 0x22, 0x21, 0x78, 0xf6, 0x55, 0x2c, 0x92, 0xa0, 0x11, 0x61, 0x5f, 0xd9, 0xa0, 0xa3, + 0x64, 0x84, 0x0d, 0xf8, 0xbe, 0xab, 0x60, 0x53, 0x38, 0x6b, 0xaf, 0x73, 0xb8, 0xdf, 0xed, 0x2b, + 0x9b, 0x58, 0x09, 0x82, 0xf0, 0x9a, 0xb3, 0x38, 0x9b, 0x64, 0xb7, 0xbe, 0x44, 0x1b, 0x38, 0xc2, + 0x9e, 0xd7, 0xb5, 0x6e, 0xbb, 0xfb, 0xa4, 0xaf, 0x6c, 0xc5, 0x39, 0xb7, 0x34, 0xad, 0xa7, 0xf5, + 0x95, 0xcb, 0x31, 0xa0, 0x3f, 0xa8, 0x0f, 0x0e, 0xfb, 0xca, 0x95, 0xb8, 0x96, 0x07, 0x5a, 0xaf, + 0xd1, 0xea, 0xf7, 0x3b, 0xed, 0xfe, 0x40, 0xb9, 0xca, 0x2e, 0xc3, 0x66, 0x52, 0xa3, 0x88, 0xb8, + 0x26, 0x55, 0x54, 0x7b, 0xd2, 0x1a, 0x28, 0xd7, 0xe2, 0x6a, 0x34, 0x7a, 0x9d, 0x4e, 0x9d, 0x0e, + 0x41, 0xaf, 0x23, 0x11, 0x9d, 0x06, 0x8b, 0xd6, 0xbc, 0x86, 0xf5, 0x3a, 0xec, 0xca, 0xa0, 0x1b, + 0xd2, 0xd4, 0xe8, 0xb7, 0x7e, 0x74, 0xd8, 0xea, 0x36, 0x5a, 0xca, 0xeb, 0xc9, 0xd4, 0x88, 0x61, + 0x37, 0xe3, 0xa9, 0x11, 0x83, 0x6e, 0xc5, 0x65, 0x46, 0xa0, 0xbe, 0xb2, 0x8d, 0xf9, 0x89, 0x7a, + 0x74, 0xbb, 0xad, 0xc6, 0x00, 0xdb, 0xfa, 0x46, 0xdc, 0x8b, 0x87, 0x07, 0x4f, 0xb4, 0x7a, 0xb3, + 0xa5, 0xa8, 0x08, 0xd1, 0x5a, 0xdd, 0xfa, 0x7e, 0x34, 0xda, 0xb7, 0xa5, 0xd1, 0x3e, 0x68, 0x0f, + 0x34, 0xe5, 0x4e, 0x3c, 0xba, 0x94, 0x7c, 0x93, 0xbd, 0x06, 0x57, 0xe5, 0x79, 0xa8, 0x3f, 0x6f, + 0x0f, 0xf6, 0xc4, 0x99, 0xed, 0x5d, 0x7e, 0xf6, 0x48, 0xc8, 0x46, 0xb3, 0xc1, 0x0f, 0xa7, 0x89, + 0x17, 0x53, 0xf7, 0x76, 0x2a, 0xf4, 0x46, 0xb6, 0x50, 0x40, 0xd4, 0x1f, 0x02, 0x93, 0x9f, 0x8b, + 0x15, 0x91, 0xaf, 0x0c, 0x72, 0x63, 0xdf, 0x9b, 0x44, 0x6f, 0x50, 0xe0, 0x6f, 0xb4, 0xa8, 0xa7, + 0xb3, 0x21, 0x9d, 0x89, 0x26, 0x77, 0xcc, 0x65, 0x90, 0xfa, 0xf7, 0x33, 0x50, 0x4d, 0x2b, 0x1f, + 0xe4, 0x38, 0x1d, 0xeb, 0xae, 0x17, 0xf2, 0x07, 0xb9, 0x82, 0xf8, 0x15, 0xd7, 0x71, 0xd7, 0x0b, + 0xe9, 0x45, 0x2e, 0x32, 0xf0, 0x63, 0x5d, 0x82, 0xe7, 0x1a, 0xa7, 0x59, 0x1b, 0x2e, 0xa5, 0x5e, + 0xdc, 0x4d, 0x3d, 0x87, 0x56, 0x8b, 0x5f, 0xca, 0x9c, 0xab, 0xbf, 0xc6, 0x82, 0xc5, 0x36, 0x89, + 0x97, 0x02, 0x72, 0xc9, 0x4b, 0x01, 0x7b, 0xb0, 0x9e, 0xd2, 0x75, 0xc8, 0x2f, 0x33, 0x4e, 0xd7, + 0xb4, 0x68, 0x8f, 0x5f, 0x5d, 0x4d, 0xf5, 0xef, 0x65, 0xa0, 0x22, 0x6b, 0x3e, 0xdf, 0x3a, 0x27, + 0xba, 0x55, 0x27, 0x7e, 0xeb, 0xb6, 0x19, 0x3d, 0xc4, 0x15, 0x81, 0xda, 0xf4, 0x6d, 0x00, 0xee, + 0x83, 0xde, 0x3d, 0xe9, 0xc7, 0xcd, 0x91, 0x41, 0xec, 0x26, 0x00, 0xdd, 0x31, 0xde, 0x7d, 0x8a, + 0x04, 0xe2, 0x5e, 0x5e, 0x02, 0x51, 0x6f, 0x41, 0x69, 0xf7, 0x24, 0x8a, 0x94, 0x91, 0x9f, 0xa5, + 0x2b, 0xf1, 0x87, 0x09, 0xd4, 0x3f, 0xca, 0x40, 0x35, 0x79, 0xc2, 0x87, 0x4e, 0xa6, 0xf9, 0x4b, + 0xcd, 0x7c, 0x3a, 0xac, 0x9a, 0xc3, 0xe4, 0xb3, 0x01, 0xab, 0xf2, 0x67, 0x03, 0x6e, 0x8b, 0xcc, + 0xb2, 0xb2, 0xc8, 0x8f, 0xcb, 0x12, 0xcf, 0x1e, 0x3c, 0x82, 0x0a, 0xfe, 0xd7, 0xac, 0xb1, 0xe5, + 0xfb, 0x96, 0x99, 0xbe, 0x3b, 0x90, 0x10, 0xa7, 0x88, 0xc8, 0xc6, 0xb3, 0xc6, 0x42, 0xd5, 0x5c, + 0xfa, 0xca, 0x10, 0xbd, 0x7e, 0xf5, 0xdf, 0xb2, 0x50, 0x96, 0xf4, 0xc8, 0xaf, 0x35, 0xfd, 0x6e, + 0x40, 0x29, 0x79, 0xf3, 0x46, 0xdc, 0x35, 0x8f, 0x01, 0xa9, 0xb1, 0xca, 0xce, 0x8d, 0x55, 0x0d, + 0x0a, 0x22, 0xc0, 0x56, 0x38, 0x85, 0xa3, 0x64, 0xda, 0xfd, 0x9a, 0x7f, 0xc5, 0x39, 0xc9, 0x87, + 0x50, 0x91, 0x7c, 0xa7, 0x81, 0xb8, 0x8f, 0x3d, 0x4f, 0x5f, 0x4e, 0xfc, 0xa8, 0x01, 0xbb, 0x0c, + 0x6b, 0xe3, 0x13, 0xdd, 0x1c, 0xf2, 0x4b, 0xb8, 0x25, 0x2d, 0x3f, 0x3e, 0x69, 0x0e, 0xe9, 0x14, + 0x69, 0x1c, 0xab, 0x4e, 0xdc, 0xa3, 0x55, 0x1c, 0x47, 0x0a, 0xd2, 0x3d, 0x28, 0x8c, 0x4f, 0xe4, + 0xcb, 0xb4, 0x0b, 0x5d, 0xbe, 0x36, 0x3e, 0xa1, 0xdb, 0xb7, 0xef, 0xc3, 0x96, 0xd8, 0xbf, 0x8d, + 0x40, 0xe7, 0xcf, 0x7a, 0xd0, 0x5b, 0x48, 0xfc, 0x91, 0xba, 0x4d, 0x8e, 0xab, 0x07, 0x7d, 0xc2, + 0xe0, 0x8c, 0x53, 0xa1, 0x22, 0x4d, 0x40, 0xfe, 0x68, 0x54, 0x49, 0x4b, 0xc1, 0xd8, 0x63, 0xa8, + 0x8c, 0x4f, 0xf8, 0x80, 0x0e, 0xbc, 0x7d, 0x4b, 0x5c, 0x11, 0xd8, 0x9a, 0x1f, 0x4a, 0x0a, 0x1d, + 0x48, 0x51, 0xb2, 0x2b, 0xb0, 0xa6, 0x19, 0xa7, 0xfd, 0x1f, 0x75, 0x48, 0x89, 0x2c, 0x69, 0x22, + 0xf5, 0xc3, 0x5c, 0xb1, 0xaa, 0x6c, 0xa8, 0xff, 0x34, 0x03, 0xd5, 0xc4, 0x06, 0xc0, 0x45, 0xc8, + 0xee, 0xcb, 0x4f, 0xac, 0xd7, 0xe6, 0xcd, 0x04, 0x24, 0x79, 0x30, 0x38, 0x9f, 0xf2, 0x87, 0x48, + 0x97, 0x3d, 0xf4, 0xb5, 0xcc, 0x99, 0x9d, 0x5d, 0xfa, 0xb8, 0xf3, 0x13, 0xc8, 0x0e, 0xce, 0xa7, + 0xdc, 0xdf, 0x84, 0x5b, 0x22, 0xb7, 0x4d, 0xf9, 0x66, 0x48, 0xb1, 0x29, 0x4f, 0x5b, 0x5f, 0xf0, + 0xb7, 0x31, 0x0e, 0xb4, 0xf6, 0x7e, 0x5d, 0xfb, 0x82, 0xc2, 0x8e, 0x48, 0x69, 0xd8, 0xed, 0x69, + 0xad, 0xf6, 0x93, 0x2e, 0x01, 0x72, 0xe4, 0x8d, 0x4a, 0xaa, 0x58, 0x37, 0xcd, 0xdd, 0x13, 0xf9, + 0x8d, 0xa4, 0x4c, 0xea, 0x8d, 0xa4, 0xf4, 0x75, 0xfa, 0xd5, 0xf9, 0xeb, 0xf4, 0x2c, 0x5e, 0x85, + 0xf1, 0x92, 0x66, 0x6f, 0x41, 0x6e, 0x7c, 0x62, 0x9d, 0xa7, 0x0d, 0xbd, 0xf4, 0x02, 0x22, 0x02, + 0xf5, 0xe7, 0x19, 0x60, 0xa9, 0x8a, 0x70, 0xdb, 0xe3, 0xdb, 0xd6, 0xe5, 0x53, 0xa8, 0x89, 0x57, + 0x3b, 0x39, 0x95, 0xe4, 0x3d, 0x17, 0x5d, 0x7a, 0xd9, 0x4b, 0x82, 0x44, 0x93, 0xb7, 0xc8, 0xd8, + 0xfb, 0xc0, 0x9f, 0x4d, 0xa4, 0x48, 0x93, 0xdc, 0x05, 0x76, 0xa2, 0x96, 0xd0, 0x24, 0xef, 0x24, + 0xca, 0xef, 0x3f, 0x72, 0xc7, 0xfb, 0x46, 0x32, 0x6a, 0xb4, 0xe6, 0xd5, 0xdf, 0xcb, 0xc0, 0xa5, + 0xf4, 0x84, 0xf8, 0xc5, 0x5a, 0x99, 0x7e, 0xec, 0x32, 0x3b, 0xff, 0xd8, 0xe5, 0xb2, 0xf9, 0x94, + 0x5b, 0x3a, 0x9f, 0x7e, 0x2b, 0x03, 0x5b, 0x52, 0xef, 0x27, 0xd6, 0xe2, 0x5f, 0x52, 0xcd, 0xa4, + 0x37, 0x2f, 0x73, 0xa9, 0x37, 0x2f, 0xd5, 0x7f, 0x92, 0x81, 0x2b, 0x73, 0x35, 0xd1, 0xac, 0xbf, + 0xd4, 0xba, 0xa4, 0xdf, 0xc6, 0x24, 0xe7, 0x3f, 0x8f, 0x94, 0xe5, 0xf7, 0xb0, 0x59, 0xfa, 0xb1, + 0x4b, 0x3a, 0x96, 0x7c, 0x5d, 0x3c, 0x33, 0xa4, 0x07, 0xe7, 0xee, 0x48, 0x0c, 0x76, 0x89, 0x20, + 0xfd, 0x73, 0x77, 0xa4, 0xfe, 0x49, 0x06, 0xae, 0xcd, 0xb5, 0xa1, 0x3e, 0x0b, 0x3d, 0x71, 0xa6, + 0xfb, 0x97, 0xd4, 0x8c, 0x5b, 0x50, 0xa6, 0x13, 0x6f, 0x71, 0x50, 0xcc, 0xbb, 0x15, 0x8c, 0xa4, + 0x5c, 0x05, 0xb2, 0xa6, 0x71, 0x2e, 0xae, 0x8e, 0xe3, 0x4f, 0x5c, 0xb0, 0xc7, 0xde, 0xcc, 0x17, + 0x57, 0xc5, 0xe9, 0xb7, 0xfa, 0x11, 0x6c, 0x26, 0x55, 0x6f, 0x88, 0x27, 0x4a, 0x6f, 0x41, 0xd9, + 0xb5, 0x4e, 0xf5, 0xe8, 0x01, 0x53, 0x11, 0x36, 0xe5, 0x5a, 0xa7, 0x82, 0x40, 0xdd, 0x95, 0x65, + 0x61, 0xfc, 0x35, 0x03, 0xc7, 0x4c, 0xc5, 0xdf, 0x78, 0x8e, 0x19, 0xa1, 0x30, 0x37, 0xa9, 0x95, + 0x05, 0xd7, 0x3a, 0xa5, 0x79, 0x78, 0x2a, 0xf2, 0xa9, 0x9b, 0xa6, 0x88, 0x41, 0x58, 0xf6, 0x2a, + 0xd9, 0x35, 0x28, 0x4e, 0xfd, 0x54, 0x37, 0x15, 0xa6, 0x3e, 0x2f, 0xf6, 0x8e, 0x08, 0xca, 0xba, + 0x28, 0x5e, 0x81, 0x87, 0x69, 0x89, 0xaf, 0x9d, 0xe4, 0x92, 0xaf, 0x9d, 0x7c, 0x2c, 0xc4, 0x20, + 0xd9, 0x7d, 0xbc, 0x64, 0x05, 0xb2, 0xb6, 0x79, 0x46, 0x05, 0xaf, 0x6b, 0xf8, 0x93, 0x34, 0x39, + 0xeb, 0x2b, 0x11, 0x17, 0x86, 0x3f, 0xd5, 0x1d, 0x28, 0x6b, 0x29, 0x23, 0xb7, 0x22, 0xf9, 0x8b, + 0x82, 0xf4, 0xc3, 0x4d, 0x49, 0x07, 0x69, 0xe5, 0xc4, 0x5d, 0x14, 0xa8, 0x81, 0x10, 0x7c, 0xcf, + 0x0c, 0x7f, 0x74, 0x6c, 0xf8, 0x1d, 0xcb, 0x3d, 0x0a, 0x8f, 0xb1, 0xcb, 0xb9, 0x1b, 0x57, 0xee, + 0x42, 0xe0, 0xa0, 0x68, 0x3a, 0x60, 0x2f, 0x3a, 0x44, 0x1e, 0x7d, 0x47, 0xc1, 0xb5, 0x4e, 0x05, + 0xff, 0xeb, 0x00, 0xd8, 0xff, 0x02, 0xcd, 0x0f, 0x15, 0x4b, 0x9e, 0x63, 0x72, 0xb4, 0xba, 0x29, + 0xda, 0x2b, 0x2e, 0xed, 0x34, 0xad, 0xb1, 0xea, 0x88, 0x91, 0xe7, 0x0d, 0x12, 0x9d, 0xf0, 0xad, + 0x86, 0x91, 0xbd, 0x01, 0x95, 0xc8, 0x23, 0x41, 0x6f, 0x85, 0xf1, 0xe2, 0xcb, 0x11, 0xac, 0x3b, + 0x9b, 0xa8, 0xbf, 0x9f, 0x85, 0x4a, 0x9d, 0x47, 0xe8, 0x4c, 0xcf, 0x7b, 0xd3, 0x90, 0xfd, 0x3a, + 0x5c, 0x0e, 0x4e, 0xec, 0xa9, 0xf8, 0xf0, 0x01, 0x05, 0xc6, 0x50, 0x84, 0xb4, 0xe8, 0xc4, 0xfb, + 0x52, 0x27, 0x0a, 0x96, 0x07, 0xfd, 0x13, 0x7b, 0xca, 0x03, 0xf3, 0xdb, 0xe6, 0x19, 0x45, 0xc1, + 0xf3, 0xd3, 0x7e, 0x16, 0x2c, 0x20, 0xe8, 0x06, 0x3c, 0x66, 0x3f, 0x3d, 0x11, 0xd9, 0x8a, 0xf0, + 0x07, 0x04, 0x1e, 0x9c, 0x70, 0x9a, 0xfb, 0xb0, 0xc9, 0xef, 0xe2, 0x2c, 0x6e, 0xc0, 0x1b, 0x1c, + 0x91, 0xcc, 0xef, 0x3e, 0x6c, 0x52, 0x7e, 0xe2, 0x41, 0x4a, 0x7d, 0xe4, 0x4d, 0xcf, 0xc5, 0x61, + 0xe2, 0x5b, 0x17, 0x54, 0xb5, 0xcd, 0x49, 0x11, 0x24, 0x1e, 0xb3, 0x09, 0xd2, 0xd0, 0xeb, 0x2d, + 0xb8, 0x7a, 0x41, 0x9b, 0x5e, 0x15, 0xb0, 0x50, 0x94, 0x02, 0x16, 0xae, 0xef, 0xc0, 0xd6, 0xb2, + 0xf2, 0xbe, 0x49, 0x1e, 0xea, 0x1f, 0xae, 0x03, 0x24, 0x33, 0x36, 0xa5, 0x8e, 0x66, 0xe6, 0xd4, + 0xd1, 0x6f, 0x14, 0x9c, 0xf3, 0x11, 0x54, 0xb1, 0xab, 0xf4, 0x84, 0x23, 0xbb, 0x94, 0xa3, 0x82, + 0x54, 0x83, 0xe4, 0x92, 0xe3, 0x62, 0x90, 0x43, 0x6e, 0x69, 0x90, 0xc3, 0x87, 0x50, 0xe0, 0x07, + 0x6d, 0x81, 0xb8, 0x57, 0x7b, 0x75, 0x7e, 0xf5, 0x3d, 0x10, 0x41, 0xfe, 0x11, 0x1d, 0x6b, 0x41, + 0x15, 0x45, 0xbf, 0x6f, 0x87, 0xc7, 0x13, 0xf9, 0x96, 0xed, 0xcd, 0x45, 0xce, 0x88, 0x8c, 0x3f, + 0x63, 0x69, 0xc8, 0x49, 0x49, 0x7b, 0x0d, 0x27, 0xc2, 0xfb, 0x4b, 0xda, 0x6b, 0x41, 0xd6, 0x5e, + 0x07, 0x13, 0xee, 0xf3, 0x45, 0xed, 0xf5, 0x3d, 0xb8, 0x24, 0x2e, 0x1e, 0x21, 0x03, 0x76, 0x27, + 0xd1, 0xf3, 0x38, 0x4c, 0xf1, 0xc6, 0xd3, 0x60, 0x42, 0xb6, 0x1d, 0x92, 0x7f, 0x0e, 0x5b, 0xa3, + 0x63, 0xc3, 0x3d, 0xb2, 0xf4, 0x70, 0xe8, 0xe8, 0xf4, 0x88, 0xbe, 0x3e, 0x31, 0xa6, 0x42, 0xa9, + 0x7e, 0x6b, 0xa1, 0xb2, 0x0d, 0x22, 0x1e, 0x0c, 0x1d, 0x0a, 0x24, 0x8b, 0x43, 0x61, 0x36, 0x47, + 0xf3, 0xf0, 0xb9, 0x13, 0x69, 0x58, 0x38, 0x91, 0x9e, 0x57, 0xb3, 0xcb, 0x4b, 0xd4, 0xec, 0x44, + 0x59, 0xae, 0xc8, 0xca, 0x32, 0x7b, 0x17, 0x0a, 0xe2, 0xb6, 0xa6, 0xf0, 0xfb, 0xb2, 0xc5, 0xd5, + 0xa1, 0x45, 0x24, 0x58, 0x52, 0x14, 0x1f, 0x41, 0x97, 0xef, 0xab, 0xbc, 0x24, 0x19, 0xc6, 0x76, + 0x84, 0xd3, 0x33, 0x0e, 0x7a, 0x13, 0x3e, 0xde, 0xeb, 0x52, 0xc6, 0x31, 0x4e, 0xd8, 0xe5, 0x73, + 0x1c, 0xd7, 0xff, 0xf1, 0x1a, 0xac, 0x89, 0xf8, 0xea, 0xfb, 0x90, 0x33, 0x7d, 0x6f, 0x1a, 0x07, + 0x2c, 0x2f, 0xd1, 0xda, 0xe9, 0xbb, 0x69, 0xa8, 0xe0, 0x3f, 0x80, 0x35, 0xc3, 0x34, 0xf5, 0xf1, + 0x49, 0xfa, 0x3c, 0x7a, 0x4e, 0x81, 0xde, 0x5b, 0xd1, 0xf2, 0x06, 0x69, 0xd2, 0x9f, 0x42, 0x09, + 0xe9, 0x93, 0x30, 0xd2, 0xf2, 0xa2, 0x59, 0x10, 0xa9, 0xba, 0x7b, 0x2b, 0x5a, 0xd1, 0x88, 0xd4, + 0xde, 0xef, 0xa5, 0x3d, 0xfb, 0xb9, 0x85, 0x06, 0xce, 0xe9, 0x69, 0x73, 0x3e, 0xfe, 0x5f, 0x05, + 0xee, 0xea, 0x8d, 0x77, 0xec, 0xbc, 0x7c, 0xf4, 0xb9, 0xb0, 0xbf, 0xef, 0xad, 0x68, 0x7c, 0xdf, + 0x8a, 0xf6, 0xfb, 0x8f, 0x23, 0xaf, 0x7b, 0xfc, 0x7d, 0x99, 0x25, 0x3d, 0x83, 0x62, 0x30, 0x76, + 0xbd, 0x93, 0x4c, 0x44, 0x36, 0xd3, 0x8c, 0xa2, 0x09, 0x0b, 0x0b, 0x6c, 0xf1, 0xae, 0x4e, 0x6c, + 0xf1, 0x16, 0xff, 0x18, 0xca, 0xdc, 0x09, 0xcb, 0xf9, 0x8a, 0x0b, 0x5d, 0x9b, 0x6c, 0xca, 0x74, + 0xac, 0x97, 0x6c, 0xd1, 0x8d, 0xa8, 0x9d, 0xbe, 0x25, 0x9f, 0x9c, 0xdc, 0x58, 0xda, 0x51, 0x5a, + 0x7c, 0x88, 0xc2, 0x1b, 0xab, 0x71, 0x1e, 0xd6, 0x81, 0x2d, 0x71, 0xc4, 0xc0, 0x37, 0xe0, 0x68, + 0xcf, 0x84, 0x85, 0xf1, 0x4a, 0xed, 0xd0, 0x7b, 0x2b, 0x1a, 0x33, 0x16, 0xf7, 0xed, 0x06, 0x6c, + 0x46, 0x55, 0xe2, 0xf7, 0x64, 0x93, 0x40, 0x28, 0xb9, 0x49, 0xc9, 0xbe, 0xbb, 0xb7, 0xa2, 0x6d, + 0x18, 0x69, 0x10, 0x6b, 0xc3, 0xa5, 0x28, 0x13, 0x72, 0xb5, 0x8b, 0x9e, 0xa9, 0x2c, 0x8c, 0xa2, + 0xbc, 0x57, 0xef, 0xad, 0x68, 0x9b, 0xc6, 0xc2, 0x06, 0xbe, 0x1f, 0xd5, 0x47, 0x56, 0x0e, 0xf9, + 0x4a, 0xbc, 0xb5, 0xb4, 0x9b, 0x12, 0x4d, 0x35, 0xae, 0x59, 0x02, 0x4a, 0xe2, 0x18, 0xae, 0x6b, + 0x70, 0x65, 0xb9, 0x84, 0x91, 0xb7, 0x99, 0x1c, 0xdf, 0x66, 0xd4, 0xf4, 0xf3, 0x67, 0xe9, 0xc7, + 0x34, 0xa4, 0x4d, 0xe7, 0x07, 0xb0, 0x9e, 0x12, 0xb1, 0xac, 0x0c, 0x85, 0xe8, 0xa1, 0x74, 0xba, + 0x53, 0xd1, 0xe8, 0x1d, 0x7c, 0xa1, 0x64, 0x10, 0xdc, 0xee, 0xf6, 0x07, 0xf5, 0xae, 0x88, 0x52, + 0x69, 0x77, 0x45, 0x94, 0x8a, 0xfa, 0xd7, 0xb3, 0x50, 0x8a, 0x4f, 0xd9, 0xbe, 0xbd, 0x37, 0x2c, + 0x76, 0x33, 0x65, 0x65, 0x37, 0xd3, 0x9c, 0xa9, 0xc7, 0xbf, 0x69, 0xc0, 0x9f, 0xc5, 0xdb, 0x48, + 0x1b, 0x54, 0xc1, 0xe2, 0xbd, 0xed, 0xfc, 0xd7, 0xbc, 0xb7, 0x2d, 0x47, 0x92, 0xaf, 0xa5, 0x23, + 0xc9, 0xe7, 0x1e, 0xcb, 0x2f, 0xd0, 0x33, 0xd6, 0xf2, 0x63, 0xf9, 0xf4, 0x45, 0xcb, 0x67, 0xb6, + 0x75, 0x2a, 0x42, 0xaf, 0x45, 0x2a, 0xbd, 0x43, 0xc3, 0x2b, 0x76, 0xe8, 0xaf, 0x23, 0xed, 0x1f, + 0xc2, 0xd6, 0xf8, 0x24, 0x7e, 0x3c, 0x3b, 0x71, 0xae, 0x54, 0xa8, 0x4a, 0x4b, 0x71, 0xea, 0x5f, + 0xcd, 0x00, 0x24, 0xc7, 0x4a, 0xbf, 0xb0, 0x87, 0x56, 0x72, 0x82, 0x65, 0x5f, 0xe2, 0x04, 0x7b, + 0xd5, 0x13, 0x68, 0x5f, 0x41, 0x29, 0x3e, 0x48, 0xfc, 0xf6, 0xf3, 0xe5, 0x1b, 0x15, 0xf9, 0x1b, + 0x91, 0xb7, 0x3a, 0x3e, 0x89, 0xfb, 0x45, 0xfb, 0x22, 0x55, 0x7c, 0xf6, 0x15, 0xc5, 0x9f, 0x71, + 0x97, 0x71, 0x5c, 0xf8, 0x2f, 0x79, 0x91, 0xc8, 0xf3, 0x37, 0x97, 0x9a, 0xbf, 0xea, 0x4c, 0xf8, + 0xbd, 0x7f, 0xf1, 0xa2, 0xbf, 0x51, 0x83, 0xff, 0x6b, 0x26, 0x72, 0xce, 0xc6, 0xcf, 0x98, 0x5f, + 0xa8, 0xcb, 0x2e, 0xf7, 0x2f, 0x7f, 0x93, 0xe2, 0x5e, 0xea, 0x7a, 0xca, 0xbd, 0xcc, 0xf5, 0xf4, + 0x16, 0xe4, 0xf9, 0x2e, 0x96, 0xbf, 0xc8, 0xed, 0xc4, 0xf1, 0xaf, 0xfc, 0xd8, 0x88, 0xaa, 0x0a, + 0xdd, 0x9d, 0xb7, 0x77, 0x2b, 0xca, 0x37, 0xfa, 0x50, 0x0a, 0x5d, 0x60, 0xf9, 0xbf, 0xb8, 0xa0, + 0xfc, 0xb6, 0x5d, 0xf2, 0x72, 0x6f, 0x84, 0xfa, 0x3f, 0x33, 0xb0, 0x9e, 0x0a, 0x0c, 0xf8, 0x16, + 0x45, 0x2c, 0x15, 0xb7, 0xd9, 0xff, 0x8d, 0xc4, 0x6d, 0x2a, 0xd6, 0xb6, 0x98, 0x8e, 0xb5, 0x45, + 0x71, 0x57, 0x49, 0x59, 0x26, 0xcb, 0x6c, 0x98, 0xcc, 0x52, 0x1b, 0xe6, 0x66, 0xfc, 0x89, 0xc4, + 0x76, 0x93, 0x87, 0xb6, 0xae, 0x6b, 0x12, 0x84, 0x7d, 0x06, 0xd7, 0x84, 0x6f, 0x80, 0xf7, 0x8f, + 0x37, 0xd6, 0xe3, 0x0f, 0x28, 0x0a, 0x5b, 0xfb, 0x0a, 0x27, 0xe0, 0x9f, 0x8a, 0x19, 0xd7, 0x23, + 0xac, 0xda, 0x86, 0xf5, 0x54, 0xc4, 0x85, 0xf4, 0xc1, 0xd6, 0x8c, 0xfc, 0xc1, 0x56, 0xb6, 0x0d, + 0xf9, 0xd3, 0x63, 0xcb, 0xb7, 0x96, 0x3c, 0x73, 0xcc, 0x11, 0xea, 0x77, 0xa1, 0x22, 0x47, 0x7f, + 0xb1, 0x77, 0x21, 0x6f, 0x87, 0xd6, 0x24, 0xf2, 0x7a, 0x5c, 0x59, 0x0c, 0x10, 0x6b, 0x87, 0xd6, + 0x44, 0xe3, 0x44, 0xea, 0xcf, 0x32, 0xa0, 0xcc, 0xe3, 0xa4, 0xaf, 0xca, 0x66, 0x2e, 0xf8, 0xaa, + 0xec, 0x6a, 0xaa, 0x92, 0xcb, 0x3e, 0x0c, 0x1b, 0x3f, 0xb5, 0x9a, 0xbb, 0xe0, 0xa9, 0x55, 0x76, + 0x17, 0x8a, 0xbe, 0x45, 0x9f, 0xec, 0x34, 0x97, 0x5c, 0xec, 0x88, 0x71, 0xea, 0xef, 0x64, 0xa0, + 0x20, 0x42, 0xd5, 0x96, 0xba, 0xa1, 0xde, 0x86, 0x02, 0xff, 0x7c, 0x67, 0xf4, 0x48, 0xd8, 0x42, + 0x3c, 0x78, 0x84, 0x67, 0x37, 0x79, 0x00, 0x5f, 0xda, 0x2d, 0x75, 0xe0, 0x18, 0xae, 0x46, 0x70, + 0xf1, 0x05, 0x28, 0x63, 0x22, 0xee, 0x8c, 0xf3, 0x17, 0xa3, 0x80, 0x40, 0x74, 0x3d, 0x5c, 0xfd, + 0x1e, 0x14, 0x44, 0x28, 0xdc, 0xd2, 0xaa, 0xbc, 0xea, 0xd3, 0x8d, 0xdb, 0x00, 0x49, 0x6c, 0xdc, + 0xb2, 0x1c, 0xd4, 0xfb, 0x50, 0x8c, 0xc2, 0xe1, 0x70, 0xfe, 0x25, 0x45, 0x8b, 0x1b, 0x43, 0x72, + 0x65, 0x1c, 0xf1, 0xe9, 0x80, 0x8e, 0x37, 0x3a, 0x21, 0x1f, 0xf8, 0xfb, 0x40, 0xd7, 0xa7, 0x06, + 0x0b, 0x4f, 0x6b, 0xa5, 0xbf, 0xfb, 0x10, 0x13, 0xb1, 0xfb, 0x10, 0xcb, 0xcb, 0x57, 0x79, 0x0c, + 0xd4, 0x7a, 0x74, 0xd1, 0x8e, 0x66, 0xd9, 0x23, 0xe1, 0x24, 0xed, 0xd0, 0x3b, 0x8b, 0x19, 0xf9, + 0xeb, 0x1f, 0xa9, 0x3a, 0x69, 0x12, 0x99, 0x5a, 0x85, 0x8a, 0x1c, 0xc3, 0xa3, 0xd6, 0x61, 0x73, + 0xdf, 0x0a, 0x0d, 0x94, 0x3f, 0xd1, 0x83, 0x43, 0x7c, 0xfe, 0xe2, 0x8f, 0xf4, 0xfc, 0x9d, 0xa7, + 0xd3, 0x38, 0x91, 0xfa, 0xb3, 0x1c, 0x28, 0xf3, 0xb8, 0x97, 0x5d, 0x3a, 0xbc, 0x05, 0x65, 0x8f, + 0xe6, 0x45, 0xea, 0x1b, 0x5f, 0x1c, 0x24, 0x05, 0xee, 0xa7, 0x3e, 0xf4, 0x52, 0xb4, 0x83, 0x3d, + 0xfe, 0xa9, 0x97, 0xab, 0xfc, 0x86, 0x99, 0xe3, 0x8d, 0x68, 0x5a, 0x57, 0xe8, 0x42, 0x59, 0xc7, + 0x1b, 0xd1, 0x5d, 0x46, 0xe1, 0x74, 0xe0, 0x81, 0xa5, 0x15, 0xad, 0x28, 0x3c, 0x0d, 0x74, 0x2c, + 0x27, 0xc2, 0xf9, 0xc3, 0x40, 0xdc, 0x0e, 0x2d, 0x72, 0xc0, 0x20, 0x88, 0x1e, 0xa8, 0x1f, 0x89, + 0x0f, 0x52, 0x65, 0xe9, 0x81, 0xfa, 0x86, 0x4b, 0x57, 0x19, 0xe9, 0xfb, 0x69, 0x23, 0xf1, 0x7d, + 0x3b, 0xf1, 0x89, 0x00, 0x44, 0xdd, 0xe6, 0x9f, 0xec, 0xf2, 0xad, 0x20, 0xe0, 0xaf, 0xf1, 0x95, + 0xc4, 0x3b, 0x8b, 0x02, 0x18, 0xbf, 0x66, 0x2a, 0x3e, 0x98, 0x86, 0x24, 0x20, 0xde, 0x04, 0xe4, + 0x9f, 0x4b, 0x43, 0x82, 0x6b, 0x50, 0xfc, 0x89, 0xe7, 0x5a, 0xe4, 0xbc, 0x28, 0x53, 0xad, 0x0a, + 0x98, 0xde, 0x37, 0xa6, 0xea, 0x3f, 0xcf, 0xc0, 0xd6, 0x7c, 0xaf, 0xd2, 0x84, 0xa9, 0x40, 0xb1, + 0xd1, 0xeb, 0xe8, 0xdd, 0xfa, 0x7e, 0x4b, 0x59, 0x61, 0x1b, 0x50, 0xee, 0xed, 0xfc, 0xb0, 0xd5, + 0x18, 0x70, 0x40, 0x86, 0xae, 0xf4, 0xf7, 0xf5, 0xbd, 0x76, 0xb3, 0xd9, 0xea, 0x72, 0x93, 0xa0, + 0xb7, 0xf3, 0x43, 0xbd, 0xd3, 0x6b, 0xf0, 0xef, 0x2b, 0x45, 0x21, 0x0b, 0x7d, 0x25, 0x47, 0x01, + 0x0d, 0x14, 0xc7, 0x8e, 0xc9, 0x3c, 0x0f, 0xd3, 0x7e, 0xde, 0xd7, 0x1b, 0xdd, 0x81, 0xb2, 0x86, + 0xa9, 0xee, 0x61, 0xa7, 0x43, 0x29, 0x8a, 0xc7, 0x6c, 0xf4, 0xf6, 0x0f, 0xb4, 0x56, 0xbf, 0xaf, + 0xf7, 0xdb, 0x3f, 0x6e, 0x29, 0x45, 0x2a, 0x59, 0x6b, 0x3f, 0x69, 0x77, 0x39, 0xa0, 0xc4, 0x0a, + 0x90, 0xdd, 0x6f, 0x77, 0xf9, 0x53, 0x06, 0xfb, 0xf5, 0xcf, 0x95, 0x32, 0xfe, 0xe8, 0x1f, 0xee, + 0x2b, 0x15, 0xf5, 0x3f, 0x66, 0x23, 0x85, 0x97, 0xa2, 0x93, 0xbe, 0x8e, 0x92, 0xb7, 0xec, 0x54, + 0x70, 0x0b, 0xf2, 0x0e, 0x5d, 0xce, 0x16, 0x9f, 0x8e, 0xa6, 0xc4, 0xd7, 0xf9, 0x1c, 0xee, 0x6d, + 0x58, 0x8f, 0x8f, 0xf4, 0xa5, 0x37, 0xe3, 0x2b, 0x11, 0x70, 0xc9, 0xa1, 0xc3, 0xda, 0x92, 0x43, + 0x87, 0xa9, 0x1d, 0xa2, 0x6d, 0x8c, 0x22, 0x95, 0x4f, 0x94, 0x12, 0x42, 0xf8, 0x87, 0xa8, 0x5f, + 0x03, 0x4a, 0xe8, 0x33, 0xd7, 0x8e, 0x3e, 0x86, 0x58, 0x44, 0xc0, 0xa1, 0x6b, 0x87, 0xf3, 0x21, + 0x05, 0xa5, 0x85, 0x90, 0x02, 0x79, 0xef, 0x85, 0xf4, 0xde, 0x9b, 0xfe, 0x4a, 0x30, 0xff, 0x0a, + 0xa2, 0xf4, 0x95, 0xe0, 0x77, 0x81, 0x8d, 0x66, 0x3e, 0xbd, 0x65, 0x26, 0x91, 0x55, 0x88, 0x4c, + 0x11, 0x98, 0x78, 0xd3, 0x63, 0x6f, 0xc1, 0xc6, 0x1c, 0x35, 0x59, 0xc0, 0x25, 0xad, 0x9a, 0x26, + 0x65, 0x0f, 0xe0, 0x92, 0x98, 0xba, 0xa9, 0xbe, 0x15, 0x17, 0x3f, 0x39, 0xaa, 0x9e, 0xf4, 0xb0, + 0xfa, 0x2b, 0x50, 0x8c, 0x02, 0xd1, 0x5e, 0xae, 0xcb, 0x2e, 0x19, 0x57, 0xf5, 0x1f, 0xad, 0x42, + 0x29, 0x0e, 0x4b, 0xfb, 0x5a, 0xb3, 0x83, 0x3e, 0x8e, 0x11, 0x9c, 0xc8, 0x12, 0xa4, 0x88, 0x80, + 0x68, 0xa4, 0xc4, 0xad, 0xa9, 0x99, 0x6f, 0x47, 0x0a, 0x19, 0x87, 0x1c, 0xfa, 0x36, 0x3d, 0x1d, + 0x62, 0xbb, 0xd2, 0x15, 0xcd, 0x92, 0x56, 0x44, 0x00, 0xad, 0xae, 0x6b, 0x40, 0xbf, 0x89, 0x33, + 0xfa, 0x70, 0xb2, 0xed, 0x9e, 0x20, 0xdf, 0x05, 0x1f, 0x4e, 0xa6, 0x4f, 0x7b, 0xf0, 0x98, 0x18, + 0x1e, 0x09, 0x10, 0x7d, 0x88, 0xee, 0x35, 0x28, 0xcd, 0xe2, 0x2f, 0x19, 0x8a, 0x19, 0x31, 0x8b, + 0xbe, 0x63, 0x98, 0x1e, 0xd5, 0xd2, 0xfc, 0xa8, 0xce, 0xcf, 0x69, 0x58, 0x98, 0xd3, 0x6a, 0x08, + 0x05, 0x11, 0x9a, 0xf7, 0xf2, 0x0e, 0x7f, 0x69, 0x57, 0x29, 0x90, 0x35, 0x9c, 0xe8, 0x5e, 0x28, + 0xfe, 0x9c, 0xab, 0x58, 0x6e, 0xae, 0x62, 0xea, 0xdf, 0x59, 0x05, 0x48, 0x42, 0xfc, 0xd8, 0x7b, + 0x73, 0xe1, 0xc4, 0x99, 0x85, 0x5d, 0x7d, 0x2e, 0x8a, 0x78, 0xee, 0x2d, 0x9d, 0xd5, 0xaf, 0xf1, + 0x96, 0xce, 0x43, 0x58, 0x0f, 0xfc, 0xd1, 0x2b, 0xdd, 0xe4, 0xe5, 0xc0, 0x1f, 0xc5, 0x5e, 0xf2, + 0xf7, 0x01, 0x93, 0xf4, 0xba, 0x5f, 0x62, 0x87, 0x2e, 0x28, 0x25, 0xa5, 0xc0, 0x1f, 0xf5, 0x86, + 0x5f, 0x36, 0xf9, 0x55, 0x35, 0x33, 0x08, 0xf5, 0x65, 0x52, 0x62, 0xc3, 0x0c, 0xc2, 0xa6, 0x2c, + 0x28, 0xee, 0x40, 0x15, 0x69, 0x17, 0x84, 0x45, 0xc5, 0x0c, 0x92, 0x63, 0x11, 0xf5, 0xb7, 0xa3, + 0x83, 0xe4, 0x39, 0x0f, 0x2c, 0xfb, 0x44, 0xd8, 0xd9, 0x92, 0x8e, 0x50, 0x5b, 0xe6, 0xb0, 0xe5, + 0x2f, 0xff, 0xc4, 0xa4, 0x8b, 0xdf, 0xaf, 0x5b, 0xfd, 0xba, 0xdf, 0xaf, 0xdb, 0x06, 0x48, 0xde, + 0x57, 0xc4, 0x15, 0x18, 0x5f, 0xb1, 0x29, 0xf1, 0xcb, 0x33, 0xf7, 0xdf, 0x80, 0x8a, 0xfc, 0x15, + 0x59, 0xba, 0x3a, 0xe3, 0xb9, 0x16, 0xff, 0xce, 0x48, 0xe7, 0x27, 0x1f, 0x29, 0x99, 0xfb, 0x2a, + 0x94, 0xa5, 0xaf, 0xfc, 0x20, 0xc5, 0x9e, 0x11, 0x1c, 0x8b, 0x6f, 0x4e, 0x18, 0xee, 0x91, 0xa5, + 0x64, 0xee, 0xdf, 0x45, 0x9d, 0x5a, 0xfe, 0xc6, 0x0e, 0xc0, 0x5a, 0xd7, 0xf3, 0x27, 0x86, 0x23, + 0xe8, 0xac, 0x59, 0x80, 0x74, 0xef, 0xc3, 0xe5, 0xa5, 0x5f, 0x0c, 0xa2, 0xfb, 0x57, 0xf6, 0x64, + 0xea, 0x58, 0xfc, 0x0a, 0xd1, 0xde, 0xf9, 0xd0, 0xb7, 0x4d, 0x25, 0x73, 0xff, 0xf1, 0xdc, 0x17, + 0x25, 0x0e, 0xbb, 0x3b, 0xbd, 0xc3, 0x6e, 0xb3, 0xd5, 0xe4, 0x97, 0x7b, 0xda, 0xdd, 0x46, 0xe7, + 0xb0, 0xdf, 0x7e, 0x26, 0x36, 0xc0, 0xd6, 0xe7, 0x51, 0x72, 0xf5, 0xfe, 0xe3, 0xe8, 0x2d, 0x84, + 0xa8, 0xd6, 0x9d, 0x5e, 0xbd, 0xc9, 0x37, 0xce, 0xf8, 0x4d, 0x9e, 0xc1, 0x0e, 0xff, 0x12, 0x85, + 0xd6, 0xea, 0x1f, 0x76, 0x06, 0xe2, 0xfd, 0x9f, 0xfb, 0x3f, 0x80, 0xda, 0x45, 0xb7, 0x70, 0xb0, + 0x2d, 0x8d, 0xbd, 0x3a, 0xdd, 0x74, 0xc2, 0x8d, 0xb2, 0xa7, 0xf3, 0x54, 0x86, 0x5f, 0x14, 0xeb, + 0xb4, 0x28, 0x54, 0xf5, 0xfe, 0x4f, 0x33, 0x92, 0x7a, 0x18, 0xdd, 0xa4, 0x88, 0x01, 0xa2, 0x83, + 0x65, 0x90, 0x66, 0x19, 0xa6, 0x92, 0x61, 0x57, 0x80, 0xa5, 0x40, 0x1d, 0x6f, 0x64, 0x38, 0xca, + 0x2a, 0x05, 0xa5, 0x46, 0x70, 0xba, 0x43, 0xa7, 0x64, 0xd9, 0xeb, 0x70, 0x2d, 0x86, 0x75, 0xbc, + 0xd3, 0x03, 0xdf, 0xf6, 0x7c, 0x3b, 0x3c, 0xe7, 0xe8, 0xdc, 0xfd, 0xff, 0x5b, 0x1c, 0xa9, 0xa6, + 0x66, 0x15, 0x16, 0x50, 0x37, 0xcd, 0x04, 0x46, 0x82, 0x4c, 0x59, 0x61, 0x57, 0xe1, 0x12, 0x49, + 0xf1, 0x39, 0x44, 0x86, 0xbd, 0x06, 0x57, 0x23, 0x1b, 0x76, 0x1e, 0xb9, 0x8a, 0x48, 0xcd, 0xa2, + 0x80, 0xc6, 0x05, 0x64, 0x76, 0xe7, 0xfb, 0x7f, 0xfa, 0xf3, 0x9b, 0x99, 0x7f, 0xf5, 0xf3, 0x9b, + 0x99, 0xff, 0xf4, 0xf3, 0x9b, 0x2b, 0x3f, 0xfb, 0xcf, 0x37, 0x33, 0x3f, 0x7e, 0xef, 0xc8, 0x0e, + 0x8f, 0x67, 0xc3, 0x07, 0x23, 0x6f, 0xf2, 0xfe, 0xc4, 0x08, 0x7d, 0xfb, 0x8c, 0x6f, 0x27, 0x51, + 0xc2, 0xb5, 0xde, 0x9f, 0x9e, 0x1c, 0xbd, 0x3f, 0x1d, 0xbe, 0x8f, 0x13, 0x7b, 0xb8, 0x36, 0xf5, + 0xbd, 0xd0, 0x7b, 0xf4, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xec, 0xe2, 0x0d, 0xe0, 0x09, 0x88, + 0x00, 0x00, } func (m *Type) Marshal() (dAtA []byte, err error) { @@ -23170,6 +23285,16 @@ func (m *AlterTableAlterReIndex) MarshalToSizedBuffer(dAtA []byte) (int, error) i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.ForceSync { + i-- + if m.ForceSync { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } if m.IndexAlgoParamList != 0 { i = encodeVarintPlan(dAtA, i, uint64(m.IndexAlgoParamList)) i-- @@ -23199,6 +23324,74 @@ func (m *AlterTableAlterReIndex) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *AlterTableAlterAutoUpdate) Marshal() (dAtA []byte, err error) { + size := m.ProtoSize() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AlterTableAlterAutoUpdate) MarshalTo(dAtA []byte) (int, error) { + size := m.ProtoSize() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AlterTableAlterAutoUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.Hour != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.Hour)) + i-- + dAtA[i] = 0x30 + } + if m.Day != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.Day)) + i-- + dAtA[i] = 0x28 + } + if m.AutoUpdate { + i-- + if m.AutoUpdate { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if len(m.IndexName) > 0 { + i -= len(m.IndexName) + copy(dAtA[i:], m.IndexName) + i = encodeVarintPlan(dAtA, i, uint64(len(m.IndexName))) + i-- + dAtA[i] = 0x1a + } + if len(m.TableName) > 0 { + i -= len(m.TableName) + copy(dAtA[i:], m.TableName) + i = encodeVarintPlan(dAtA, i, uint64(len(m.TableName))) + i-- + dAtA[i] = 0x12 + } + if len(m.DbName) > 0 { + i -= len(m.DbName) + copy(dAtA[i:], m.DbName) + i = encodeVarintPlan(dAtA, i, uint64(len(m.DbName))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *AlterTableComment) Marshal() (dAtA []byte, err error) { size := m.ProtoSize() dAtA = make([]byte, size) @@ -24084,6 +24277,27 @@ func (m *AlterTable_Action_AlterRenameColumn) MarshalToSizedBuffer(dAtA []byte) } return len(dAtA) - i, nil } +func (m *AlterTable_Action_AlterAutoUpdate) MarshalTo(dAtA []byte) (int, error) { + size := m.ProtoSize() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AlterTable_Action_AlterAutoUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.AlterAutoUpdate != nil { + { + size, err := m.AlterAutoUpdate.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPlan(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + } + return len(dAtA) - i, nil +} func (m *DropTable) Marshal() (dAtA []byte, err error) { size := m.ProtoSize() dAtA = make([]byte, size) @@ -24109,20 +24323,20 @@ func (m *DropTable) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if len(m.FkChildTblsReferToMe) > 0 { - dAtA197 := make([]byte, len(m.FkChildTblsReferToMe)*10) - var j196 int + dAtA198 := make([]byte, len(m.FkChildTblsReferToMe)*10) + var j197 int for _, num := range m.FkChildTblsReferToMe { for num >= 1<<7 { - dAtA197[j196] = uint8(uint64(num)&0x7f | 0x80) + dAtA198[j197] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j196++ + j197++ } - dAtA197[j196] = uint8(num) - j196++ + dAtA198[j197] = uint8(num) + j197++ } - i -= j196 - copy(dAtA[i:], dAtA197[:j196]) - i = encodeVarintPlan(dAtA, i, uint64(j196)) + i -= j197 + copy(dAtA[i:], dAtA198[:j197]) + i = encodeVarintPlan(dAtA, i, uint64(j197)) i-- dAtA[i] = 0x62 } @@ -24158,20 +24372,20 @@ func (m *DropTable) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x48 } if len(m.ForeignTbl) > 0 { - dAtA200 := make([]byte, len(m.ForeignTbl)*10) - var j199 int + dAtA201 := make([]byte, len(m.ForeignTbl)*10) + var j200 int for _, num := range m.ForeignTbl { for num >= 1<<7 { - dAtA200[j199] = uint8(uint64(num)&0x7f | 0x80) + dAtA201[j200] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j199++ + j200++ } - dAtA200[j199] = uint8(num) - j199++ + dAtA201[j200] = uint8(num) + j200++ } - i -= j199 - copy(dAtA[i:], dAtA200[:j199]) - i = encodeVarintPlan(dAtA, i, uint64(j199)) + i -= j200 + copy(dAtA[i:], dAtA201[:j200]) + i = encodeVarintPlan(dAtA, i, uint64(j200)) i-- dAtA[i] = 0x3a } @@ -24717,20 +24931,20 @@ func (m *TruncateTable) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x40 } if len(m.ForeignTbl) > 0 { - dAtA209 := make([]byte, len(m.ForeignTbl)*10) - var j208 int + dAtA210 := make([]byte, len(m.ForeignTbl)*10) + var j209 int for _, num := range m.ForeignTbl { for num >= 1<<7 { - dAtA209[j208] = uint8(uint64(num)&0x7f | 0x80) + dAtA210[j209] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j208++ + j209++ } - dAtA209[j208] = uint8(num) - j208++ + dAtA210[j209] = uint8(num) + j209++ } - i -= j208 - copy(dAtA[i:], dAtA209[:j208]) - i = encodeVarintPlan(dAtA, i, uint64(j208)) + i -= j209 + copy(dAtA[i:], dAtA210[:j209]) + i = encodeVarintPlan(dAtA, i, uint64(j209)) i-- dAtA[i] = 0x3a } @@ -24807,20 +25021,20 @@ func (m *ClusterTable) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x18 } if len(m.AccountIDs) > 0 { - dAtA212 := make([]byte, len(m.AccountIDs)*10) - var j211 int + dAtA213 := make([]byte, len(m.AccountIDs)*10) + var j212 int for _, num := range m.AccountIDs { for num >= 1<<7 { - dAtA212[j211] = uint8(uint64(num)&0x7f | 0x80) + dAtA213[j212] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j211++ + j212++ } - dAtA212[j211] = uint8(num) - j211++ + dAtA213[j212] = uint8(num) + j212++ } - i -= j211 - copy(dAtA[i:], dAtA212[:j211]) - i = encodeVarintPlan(dAtA, i, uint64(j211)) + i -= j212 + copy(dAtA[i:], dAtA213[:j212]) + i = encodeVarintPlan(dAtA, i, uint64(j212)) i-- dAtA[i] = 0x12 } @@ -25032,21 +25246,21 @@ func (m *Prepare) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if len(m.ParamTypes) > 0 { - dAtA216 := make([]byte, len(m.ParamTypes)*10) - var j215 int + dAtA217 := make([]byte, len(m.ParamTypes)*10) + var j216 int for _, num1 := range m.ParamTypes { num := uint64(num1) for num >= 1<<7 { - dAtA216[j215] = uint8(uint64(num)&0x7f | 0x80) + dAtA217[j216] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j215++ + j216++ } - dAtA216[j215] = uint8(num) - j215++ + dAtA217[j216] = uint8(num) + j216++ } - i -= j215 - copy(dAtA[i:], dAtA216[:j215]) - i = encodeVarintPlan(dAtA, i, uint64(j215)) + i -= j216 + copy(dAtA[i:], dAtA217[:j216]) + i = encodeVarintPlan(dAtA, i, uint64(j216)) i-- dAtA[i] = 0x22 } @@ -25193,21 +25407,21 @@ func (m *OtherDCL) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if len(m.ParamTypes) > 0 { - dAtA219 := make([]byte, len(m.ParamTypes)*10) - var j218 int + dAtA220 := make([]byte, len(m.ParamTypes)*10) + var j219 int for _, num1 := range m.ParamTypes { num := uint64(num1) for num >= 1<<7 { - dAtA219[j218] = uint8(uint64(num)&0x7f | 0x80) + dAtA220[j219] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j218++ + j219++ } - dAtA219[j218] = uint8(num) - j218++ + dAtA220[j219] = uint8(num) + j219++ } - i -= j218 - copy(dAtA[i:], dAtA219[:j218]) - i = encodeVarintPlan(dAtA, i, uint64(j218)) + i -= j219 + copy(dAtA[i:], dAtA220[:j219]) + i = encodeVarintPlan(dAtA, i, uint64(j219)) i-- dAtA[i] = 0xa } @@ -29956,6 +30170,42 @@ func (m *AlterTableAlterReIndex) ProtoSize() (n int) { if m.IndexAlgoParamList != 0 { n += 1 + sovPlan(uint64(m.IndexAlgoParamList)) } + if m.ForceSync { + n += 2 + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *AlterTableAlterAutoUpdate) ProtoSize() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DbName) + if l > 0 { + n += 1 + l + sovPlan(uint64(l)) + } + l = len(m.TableName) + if l > 0 { + n += 1 + l + sovPlan(uint64(l)) + } + l = len(m.IndexName) + if l > 0 { + n += 1 + l + sovPlan(uint64(l)) + } + if m.AutoUpdate { + n += 2 + } + if m.Day != 0 { + n += 1 + sovPlan(uint64(m.Day)) + } + if m.Hour != 0 { + n += 1 + sovPlan(uint64(m.Hour)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -30397,6 +30647,18 @@ func (m *AlterTable_Action_AlterRenameColumn) ProtoSize() (n int) { } return n } +func (m *AlterTable_Action_AlterAutoUpdate) ProtoSize() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AlterAutoUpdate != nil { + l = m.AlterAutoUpdate.ProtoSize() + n += 1 + l + sovPlan(uint64(l)) + } + return n +} func (m *DropTable) ProtoSize() (n int) { if m == nil { return 0 @@ -53289,6 +53551,231 @@ func (m *AlterTableAlterReIndex) Unmarshal(dAtA []byte) error { break } } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ForceSync", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ForceSync = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipPlan(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPlan + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AlterTableAlterAutoUpdate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AlterTableAlterAutoUpdate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AlterTableAlterAutoUpdate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DbName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DbName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TableName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TableName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IndexName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IndexName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdate", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AutoUpdate = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Day", wireType) + } + m.Day = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Day |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Hour", wireType) + } + m.Hour = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Hour |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipPlan(dAtA[iNdEx:]) @@ -55545,6 +56032,41 @@ func (m *AlterTable_Action) Unmarshal(dAtA []byte) error { } m.Action = &AlterTable_Action_AlterRenameColumn{v} iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AlterAutoUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AlterTableAlterAutoUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Action = &AlterTable_Action_AlterAutoUpdate{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipPlan(dAtA[iNdEx:]) diff --git a/pkg/pb/task/task.pb.go b/pkg/pb/task/task.pb.go index ce35f403e1529..bed5e819f23f2 100644 --- a/pkg/pb/task/task.pb.go +++ b/pkg/pb/task/task.pb.go @@ -115,30 +115,34 @@ const ( TaskCode_MOTableStats TaskCode = 8 // ISCP task TaskCode_ISCPExecutor TaskCode = 9 + // Index Update task + TaskCode_IndexUpdateTaskExecutor TaskCode = 10 ) var TaskCode_name = map[int32]string{ - 0: "TestOnly", - 1: "SystemInit", - 2: "MetricLogMerge", - 3: "MetricStorageUsage", - 4: "ConnectorKafkaSink", - 5: "MergeObject", - 7: "InitCdc", - 8: "MOTableStats", - 9: "ISCPExecutor", + 0: "TestOnly", + 1: "SystemInit", + 2: "MetricLogMerge", + 3: "MetricStorageUsage", + 4: "ConnectorKafkaSink", + 5: "MergeObject", + 7: "InitCdc", + 8: "MOTableStats", + 9: "ISCPExecutor", + 10: "IndexUpdateTaskExecutor", } var TaskCode_value = map[string]int32{ - "TestOnly": 0, - "SystemInit": 1, - "MetricLogMerge": 2, - "MetricStorageUsage": 3, - "ConnectorKafkaSink": 4, - "MergeObject": 5, - "InitCdc": 7, - "MOTableStats": 8, - "ISCPExecutor": 9, + "TestOnly": 0, + "SystemInit": 1, + "MetricLogMerge": 2, + "MetricStorageUsage": 3, + "ConnectorKafkaSink": 4, + "MergeObject": 5, + "InitCdc": 7, + "MOTableStats": 8, + "ISCPExecutor": 9, + "IndexUpdateTaskExecutor": 10, } func (x TaskCode) String() string { @@ -1309,96 +1313,96 @@ func init() { func init() { proto.RegisterFile("task.proto", fileDescriptor_ce5d8dd45b4a91ff) } var fileDescriptor_ce5d8dd45b4a91ff = []byte{ - // 1410 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4b, 0x6f, 0x1b, 0x47, - 0x12, 0xe6, 0x90, 0x43, 0x72, 0x58, 0x24, 0xe5, 0xde, 0xb6, 0x21, 0x0c, 0x08, 0xaf, 0x4c, 0x70, - 0xbd, 0xb0, 0x56, 0x80, 0xa9, 0x8d, 0xe2, 0x04, 0xb1, 0x81, 0x04, 0x96, 0x48, 0x05, 0x96, 0x6d, - 0x59, 0x42, 0x4b, 0xba, 0xe4, 0xd6, 0x1c, 0xb6, 0x69, 0x46, 0x64, 0x0f, 0xdd, 0xd3, 0xe3, 0x88, - 0x7f, 0x41, 0xa7, 0x1c, 0x02, 0xe4, 0x24, 0x20, 0xf7, 0x00, 0x39, 0xe5, 0x9e, 0xab, 0x8f, 0xfe, - 0x05, 0x79, 0x38, 0xf9, 0x09, 0xb9, 0x06, 0x08, 0xfa, 0x31, 0x0f, 0xd2, 0x49, 0x10, 0x21, 0xbe, - 0x4d, 0x7d, 0x55, 0xd5, 0x5d, 0xf5, 0xd5, 0x83, 0x4d, 0x00, 0x49, 0xa3, 0xd3, 0xee, 0x4c, 0x84, - 0x32, 0xc4, 0xae, 0xfa, 0x6e, 0xdd, 0x1e, 0x8d, 0xe5, 0xb3, 0x78, 0xd0, 0x0d, 0xc2, 0xe9, 0xe6, - 0x28, 0x1c, 0x85, 0x9b, 0x5a, 0x39, 0x88, 0x9f, 0x6a, 0x49, 0x0b, 0xfa, 0xcb, 0x38, 0xb5, 0x6e, - 0x8c, 0xc2, 0x70, 0x34, 0x61, 0x99, 0x95, 0x1c, 0x4f, 0x59, 0x24, 0xe9, 0x74, 0x66, 0x0d, 0x56, - 0xa6, 0x4c, 0xd2, 0x21, 0x95, 0xd4, 0xc8, 0x9d, 0x2f, 0x1d, 0x68, 0x1c, 0xd3, 0xe8, 0x74, 0xdf, - 0xc2, 0x78, 0x05, 0x8a, 0x7b, 0x7d, 0xdf, 0x69, 0x3b, 0xeb, 0x35, 0x52, 0xdc, 0xeb, 0xe3, 0x0d, - 0xf0, 0x76, 0xcf, 0x58, 0x10, 0xcb, 0x50, 0xf8, 0xc5, 0xb6, 0xb3, 0xbe, 0xb2, 0xb5, 0xd2, 0xd5, - 0x51, 0x2a, 0xaf, 0x5e, 0x38, 0x64, 0x24, 0xd5, 0x63, 0x1f, 0xaa, 0xbd, 0x90, 0x4b, 0x76, 0x26, - 0xfd, 0x52, 0xdb, 0x59, 0x6f, 0x90, 0x44, 0xc4, 0xef, 0x40, 0xf5, 0x60, 0x26, 0xc7, 0x21, 0x8f, - 0x7c, 0xb7, 0xed, 0xac, 0xd7, 0xb7, 0xfe, 0x95, 0x1d, 0x62, 0x15, 0x3b, 0xee, 0xcb, 0xef, 0x6f, - 0x14, 0x48, 0x62, 0xd7, 0xf9, 0xae, 0x08, 0xf5, 0x9c, 0x1a, 0xdf, 0x84, 0xe6, 0x3e, 0x3d, 0x23, - 0x4c, 0x8a, 0xf9, 0xb1, 0x4a, 0x4a, 0xc7, 0xd8, 0x24, 0x8b, 0xa0, 0xb2, 0xd2, 0xd2, 0x1e, 0x97, - 0x4c, 0xbc, 0xa0, 0x13, 0x1d, 0x73, 0x89, 0x2c, 0x82, 0xca, 0xaa, 0xcf, 0x26, 0x74, 0xde, 0x8f, - 0x05, 0x55, 0xa7, 0xeb, 0x70, 0x4b, 0x64, 0x11, 0xc4, 0x6d, 0xa8, 0xf7, 0x42, 0x1e, 0xc4, 0x42, - 0x30, 0x1e, 0xcc, 0x75, 0xe0, 0x4d, 0x92, 0x87, 0xf0, 0x7b, 0x50, 0x79, 0x4c, 0x07, 0x6c, 0x12, - 0xf9, 0xe5, 0x76, 0x69, 0xbd, 0xbe, 0xf5, 0xef, 0x37, 0xb2, 0xea, 0x1a, 0xfd, 0x2e, 0x97, 0x62, - 0x4e, 0xac, 0xb1, 0xe2, 0x94, 0xb0, 0x28, 0x8c, 0x45, 0xc0, 0xfc, 0x8a, 0xa6, 0xc3, 0x72, 0x9a, - 0xa0, 0x24, 0xd5, 0xb7, 0xee, 0x42, 0x3d, 0x77, 0x04, 0x46, 0x50, 0x3a, 0x65, 0x73, 0x5b, 0x1f, - 0xf5, 0x89, 0xaf, 0x41, 0xf9, 0x05, 0x9d, 0xc4, 0x4c, 0x67, 0x5a, 0x23, 0x46, 0xb8, 0x57, 0xfc, - 0xc0, 0xe9, 0xdc, 0xc9, 0xae, 0x51, 0x7e, 0xbd, 0xc3, 0x13, 0xed, 0xe7, 0x12, 0xf5, 0x89, 0x57, - 0xa1, 0xb2, 0xcf, 0xa6, 0xa1, 0x98, 0x6b, 0x47, 0x97, 0x58, 0xa9, 0xf3, 0x08, 0x9a, 0xa6, 0xa0, - 0x8c, 0xb0, 0x28, 0x9e, 0x48, 0x7c, 0x13, 0x5c, 0x55, 0x67, 0xed, 0xbb, 0xb2, 0x85, 0xd2, 0x48, - 0xe3, 0x89, 0xd4, 0xf5, 0xd7, 0x5a, 0x15, 0xc6, 0xae, 0x10, 0xb6, 0x49, 0x6a, 0xc4, 0x08, 0x9d, - 0x5f, 0x8b, 0x50, 0xdb, 0x8e, 0xe6, 0x3c, 0x50, 0x94, 0xe4, 0x7a, 0xcb, 0xd5, 0xbd, 0x75, 0x07, - 0xbc, 0xa4, 0xef, 0xb4, 0x5b, 0x7d, 0x0b, 0x67, 0x04, 0x26, 0x1a, 0xdb, 0x17, 0xa9, 0x25, 0xee, - 0x40, 0xe3, 0x90, 0x0a, 0xc6, 0xa5, 0xb2, 0xda, 0xeb, 0xeb, 0xda, 0xd5, 0xc8, 0x02, 0x86, 0xd7, - 0xa1, 0x72, 0x24, 0xa9, 0x8c, 0x4d, 0xbb, 0xa5, 0x51, 0x2b, 0xad, 0xc1, 0x89, 0xd5, 0xe3, 0x35, - 0x00, 0x85, 0x92, 0x98, 0x73, 0x26, 0xfc, 0xb2, 0x3e, 0x2b, 0x87, 0xe8, 0xbc, 0x66, 0x61, 0xf0, - 0x4c, 0x17, 0xaa, 0x49, 0x8c, 0xa0, 0x1a, 0xe8, 0x31, 0x8d, 0xe4, 0x03, 0x46, 0x85, 0x1c, 0x30, - 0x2a, 0xfd, 0xaa, 0x69, 0xa0, 0x05, 0x10, 0xb7, 0xc0, 0xeb, 0x09, 0x46, 0x25, 0xdb, 0x96, 0xbe, - 0xa7, 0x0d, 0x52, 0xd9, 0x34, 0xd7, 0x74, 0x36, 0x61, 0x92, 0x0d, 0xb7, 0xa5, 0x5f, 0xd3, 0xea, - 0x3c, 0x84, 0xef, 0x2e, 0x15, 0xc2, 0x07, 0x4d, 0xd1, 0x55, 0x93, 0xca, 0x82, 0x8a, 0x2c, 0x5a, - 0x76, 0x7e, 0x71, 0xd4, 0xcd, 0x21, 0x7f, 0x8b, 0xac, 0xb7, 0xcc, 0x89, 0xbb, 0x67, 0x33, 0x61, - 0x19, 0x4f, 0x65, 0xa5, 0x7b, 0xc2, 0xce, 0xa4, 0x9a, 0x40, 0xcd, 0x77, 0x89, 0xa4, 0xb2, 0xaa, - 0xd6, 0xb1, 0x18, 0x8f, 0x46, 0x4c, 0x98, 0xa9, 0x2d, 0xeb, 0x38, 0x16, 0xb0, 0x05, 0x9e, 0x2a, - 0x4b, 0x3c, 0xb5, 0xc0, 0x3b, 0x99, 0x0d, 0x8d, 0xce, 0x90, 0x9c, 0xca, 0x9d, 0xaf, 0x1d, 0x40, - 0xbd, 0x90, 0x73, 0x16, 0xc8, 0x50, 0xf4, 0x99, 0xa4, 0xe3, 0x49, 0x84, 0xaf, 0x43, 0xed, 0x98, - 0x0e, 0x26, 0xec, 0x09, 0x9d, 0x32, 0x3b, 0x27, 0x19, 0x80, 0x3f, 0xcc, 0x16, 0x51, 0x51, 0x8f, - 0xec, 0x7f, 0x4c, 0xee, 0xcb, 0xc7, 0x74, 0xad, 0x95, 0x19, 0xdc, 0xc4, 0xa7, 0x75, 0x0f, 0x1a, - 0x79, 0xc5, 0xa5, 0xc6, 0xf1, 0x36, 0x54, 0xb7, 0x83, 0x20, 0x8c, 0xb9, 0xd4, 0x25, 0x19, 0xa6, - 0x25, 0x19, 0x62, 0x0c, 0xae, 0x0e, 0xd7, 0xf8, 0xe8, 0xef, 0xce, 0x73, 0x40, 0x86, 0x84, 0xde, - 0x30, 0x48, 0x72, 0x5b, 0x85, 0x8a, 0x6e, 0xf0, 0xa1, 0xbd, 0xd1, 0x4a, 0x8a, 0x24, 0xf5, 0x95, - 0x3b, 0x23, 0x95, 0xf1, 0xff, 0xc0, 0xb3, 0xd7, 0x46, 0x7e, 0x49, 0xa7, 0xdc, 0x34, 0x29, 0x5b, - 0x94, 0xa4, 0xea, 0x0e, 0x06, 0x44, 0x98, 0x64, 0x5c, 0x25, 0x68, 0xaf, 0xec, 0x6c, 0x43, 0x7d, - 0xef, 0xa8, 0x77, 0xf8, 0x0f, 0x22, 0x50, 0x9b, 0xbc, 0x9a, 0xf8, 0xb7, 0xa1, 0xde, 0x67, 0x51, - 0x20, 0xc6, 0x9a, 0x45, 0x7b, 0x48, 0x1e, 0x52, 0xf5, 0xb3, 0x01, 0xed, 0xf5, 0xf5, 0x51, 0x4d, - 0x92, 0x01, 0xea, 0x27, 0xc6, 0x0a, 0xb6, 0x0b, 0x53, 0x4e, 0x55, 0xa3, 0x44, 0x4c, 0x70, 0x6a, - 0x9b, 0xb0, 0x46, 0x52, 0x39, 0x5b, 0x4e, 0xe5, 0xdc, 0x72, 0xc2, 0xef, 0x43, 0x2d, 0x2d, 0xbb, - 0x1d, 0xae, 0xd5, 0x3f, 0xee, 0x86, 0x07, 0x05, 0x92, 0x99, 0x6a, 0xbf, 0xa4, 0x32, 0x7e, 0x63, - 0xc1, 0x6f, 0xa9, 0x60, 0xda, 0x2f, 0xc1, 0xf0, 0x2d, 0x70, 0x15, 0x95, 0x7e, 0x33, 0xff, 0x0b, - 0x98, 0x23, 0xf7, 0x41, 0x81, 0x68, 0x83, 0x9d, 0x5a, 0xca, 0xd7, 0x43, 0xd7, 0xab, 0xa3, 0x46, - 0xe7, 0x37, 0x17, 0xa0, 0x4f, 0xd9, 0xf4, 0xad, 0x4e, 0xf4, 0x02, 0xd1, 0xa5, 0xbf, 0x20, 0xda, - 0x5d, 0x24, 0x7a, 0xc3, 0x94, 0xfa, 0x78, 0x3e, 0x63, 0x9a, 0xcf, 0x85, 0x17, 0x81, 0x42, 0x49, - 0xaa, 0x5f, 0xda, 0xae, 0x95, 0x37, 0xb6, 0xeb, 0xff, 0x8d, 0xde, 0xee, 0xea, 0xea, 0x9f, 0xec, - 0xea, 0x9c, 0x0d, 0x7e, 0xb8, 0xbc, 0x79, 0x3d, 0x9d, 0x70, 0xab, 0x6b, 0x5e, 0x3e, 0xdd, 0xe4, - 0xe5, 0xd3, 0x3d, 0x4e, 0x5e, 0x3e, 0x3b, 0x9e, 0x4a, 0xfc, 0xf3, 0x1f, 0x6e, 0x38, 0xcb, 0xfb, - 0xf9, 0x56, 0xca, 0xb3, 0xde, 0xbf, 0xe9, 0x64, 0x58, 0x90, 0xa4, 0x5d, 0x7b, 0x3f, 0xb7, 0xa0, - 0xe0, 0x12, 0xf7, 0x65, 0x6b, 0xec, 0x7e, 0x6e, 0x8d, 0xd5, 0x2f, 0x73, 0x42, 0xe2, 0x85, 0xef, - 0x41, 0x79, 0x97, 0xab, 0x9f, 0x8a, 0xc6, 0x25, 0xdc, 0x8d, 0x0b, 0xfe, 0x08, 0xaa, 0x2a, 0x73, - 0x12, 0x73, 0xdb, 0x7c, 0x7f, 0xcf, 0x3b, 0x71, 0xda, 0xf8, 0xc6, 0xc9, 0xd7, 0x09, 0xd7, 0xa1, - 0x6a, 0x12, 0x1b, 0xa2, 0x82, 0x12, 0x54, 0x31, 0xc7, 0x7c, 0x84, 0x1c, 0xdc, 0x54, 0x23, 0x65, - 0x7f, 0xc2, 0x50, 0x11, 0x03, 0x54, 0x0e, 0x69, 0x1c, 0xb1, 0x21, 0x2a, 0xe1, 0x9a, 0x9d, 0x41, - 0xe4, 0xe2, 0x06, 0x78, 0x3d, 0xca, 0x03, 0x36, 0x61, 0x43, 0x54, 0xc6, 0x57, 0xe1, 0x8a, 0xfa, - 0xd9, 0x9a, 0x32, 0xc2, 0x9e, 0xc7, 0x2c, 0x52, 0x9e, 0x15, 0x8c, 0x61, 0x45, 0x7b, 0x66, 0x58, - 0x55, 0x19, 0x1a, 0xb7, 0x0c, 0xf4, 0xf0, 0x35, 0xb5, 0xb3, 0x22, 0x49, 0x85, 0xcc, 0xd0, 0xda, - 0xc6, 0xb7, 0x8e, 0x69, 0x52, 0xfd, 0x34, 0x69, 0x80, 0x77, 0xcc, 0x22, 0x79, 0xc0, 0x27, 0x73, - 0x54, 0xc0, 0x2b, 0x00, 0x47, 0xf3, 0x48, 0xb2, 0xe9, 0x1e, 0x1f, 0x4b, 0xe4, 0xa8, 0x9b, 0xf6, - 0x99, 0x14, 0xe3, 0xe0, 0x71, 0x38, 0xda, 0x67, 0x62, 0xc4, 0x50, 0x11, 0xaf, 0x02, 0x36, 0xd8, - 0x91, 0x0c, 0x05, 0x1d, 0xb1, 0x93, 0x88, 0x8e, 0x18, 0x2a, 0x29, 0x3c, 0x5d, 0x03, 0x8f, 0xe8, - 0xd3, 0x53, 0x7a, 0x34, 0xe6, 0xa7, 0xc8, 0xc5, 0x57, 0xa0, 0xae, 0x5d, 0x0f, 0x06, 0x9f, 0xb2, - 0x40, 0xa2, 0xb2, 0x22, 0x45, 0x1d, 0xdf, 0x1b, 0x06, 0xa8, 0x8a, 0x11, 0x34, 0xf6, 0x0f, 0xf4, - 0x4f, 0x90, 0xe2, 0x2f, 0x42, 0x9e, 0x42, 0xd4, 0xa0, 0x27, 0x0f, 0x67, 0x54, 0xeb, 0xb8, 0x5e, - 0x05, 0x55, 0x36, 0xfe, 0x0b, 0x90, 0x3d, 0xac, 0xd4, 0x21, 0x47, 0x71, 0x10, 0xb0, 0x28, 0x42, - 0x05, 0x45, 0xe5, 0xc7, 0x74, 0xac, 0x18, 0x73, 0x36, 0xbe, 0x70, 0xb2, 0x11, 0xc4, 0xd7, 0xa1, - 0x7a, 0xc2, 0x4f, 0x79, 0xf8, 0x19, 0x47, 0x85, 0xd6, 0x95, 0xf3, 0x8b, 0x76, 0x5d, 0xc1, 0x16, - 0xc2, 0x5b, 0x80, 0xd3, 0x40, 0xd3, 0xd0, 0x91, 0xd3, 0x6a, 0x9d, 0x5f, 0xb4, 0x57, 0x95, 0xe1, - 0x9b, 0x5a, 0xb5, 0x18, 0xd2, 0xa5, 0x85, 0x4a, 0xad, 0xe6, 0xf9, 0x45, 0x3b, 0xb7, 0xc5, 0xb0, - 0xd9, 0x62, 0xc8, 0x6d, 0x79, 0xe7, 0x17, 0x6d, 0xfd, 0xdd, 0x71, 0xbd, 0x22, 0x2a, 0xee, 0xf4, - 0x5e, 0xfd, 0xb4, 0xe6, 0xbc, 0x7c, 0xbd, 0xe6, 0xbc, 0x7a, 0xbd, 0xe6, 0xfc, 0xf8, 0x7a, 0xad, - 0xf0, 0xd5, 0xcf, 0x6b, 0xce, 0x27, 0xf9, 0x7f, 0x30, 0x53, 0x2a, 0xc5, 0xf8, 0x2c, 0x14, 0xe3, - 0xd1, 0x98, 0x27, 0x02, 0x67, 0x9b, 0xb3, 0xd3, 0xd1, 0xe6, 0x6c, 0xb0, 0xa9, 0x66, 0x6f, 0x50, - 0xd1, 0x1d, 0xf9, 0xee, 0xef, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb5, 0xcf, 0xc0, 0x3b, 0x0b, 0x0d, - 0x00, 0x00, + // 1422 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdd, 0x6e, 0x1b, 0xc5, + 0x17, 0xf7, 0xda, 0x6b, 0x7b, 0x7d, 0x6c, 0xa7, 0xf3, 0x9f, 0x56, 0xf9, 0xaf, 0x4c, 0x49, 0x2d, + 0x53, 0xd4, 0x10, 0xa9, 0x0e, 0x84, 0x82, 0x68, 0x25, 0x50, 0x13, 0x3b, 0xa8, 0x6e, 0x9b, 0x26, + 0x9a, 0x24, 0x37, 0xdc, 0x8d, 0xd7, 0x53, 0x77, 0x89, 0x3d, 0xeb, 0xee, 0xce, 0x96, 0xf8, 0x15, + 0x72, 0xc5, 0x05, 0x12, 0x57, 0x91, 0xb8, 0x47, 0xe2, 0x15, 0xb8, 0xed, 0x65, 0x79, 0x01, 0x3e, + 0x0a, 0x8f, 0xc0, 0x2d, 0x12, 0x9a, 0x8f, 0xfd, 0xb0, 0x0b, 0x88, 0x88, 0xde, 0xcd, 0xf9, 0x9d, + 0x73, 0x66, 0xe6, 0xfc, 0xce, 0xc7, 0xce, 0x02, 0x08, 0x1a, 0x9d, 0x74, 0x67, 0x61, 0x20, 0x02, + 0x6c, 0xcb, 0x75, 0xeb, 0xe6, 0xd8, 0x17, 0x4f, 0xe2, 0x61, 0xd7, 0x0b, 0xa6, 0x9b, 0xe3, 0x60, + 0x1c, 0x6c, 0x2a, 0xe5, 0x30, 0x7e, 0xac, 0x24, 0x25, 0xa8, 0x95, 0x76, 0x6a, 0x5d, 0x1b, 0x07, + 0xc1, 0x78, 0xc2, 0x32, 0x2b, 0xe1, 0x4f, 0x59, 0x24, 0xe8, 0x74, 0x66, 0x0c, 0x56, 0xa6, 0x4c, + 0xd0, 0x11, 0x15, 0x54, 0xcb, 0x9d, 0xaf, 0x2d, 0x68, 0x1c, 0xd1, 0xe8, 0x64, 0xcf, 0xc0, 0x78, + 0x05, 0x8a, 0x83, 0xbe, 0x6b, 0xb5, 0xad, 0xf5, 0x1a, 0x29, 0x0e, 0xfa, 0x78, 0x03, 0x9c, 0xdd, + 0x53, 0xe6, 0xc5, 0x22, 0x08, 0xdd, 0x62, 0xdb, 0x5a, 0x5f, 0xd9, 0x5a, 0xe9, 0xaa, 0x5b, 0x4a, + 0xaf, 0x5e, 0x30, 0x62, 0x24, 0xd5, 0x63, 0x17, 0xaa, 0xbd, 0x80, 0x0b, 0x76, 0x2a, 0xdc, 0x52, + 0xdb, 0x5a, 0x6f, 0x90, 0x44, 0xc4, 0xef, 0x41, 0x75, 0x7f, 0x26, 0xfc, 0x80, 0x47, 0xae, 0xdd, + 0xb6, 0xd6, 0xeb, 0x5b, 0xff, 0xcb, 0x36, 0x31, 0x8a, 0x1d, 0xfb, 0xf9, 0x8f, 0xd7, 0x0a, 0x24, + 0xb1, 0xeb, 0x7c, 0x5f, 0x84, 0x7a, 0x4e, 0x8d, 0xaf, 0x43, 0x73, 0x8f, 0x9e, 0x12, 0x26, 0xc2, + 0xf9, 0x91, 0x0c, 0x4a, 0xdd, 0xb1, 0x49, 0x16, 0x41, 0x69, 0xa5, 0xa4, 0x01, 0x17, 0x2c, 0x7c, + 0x46, 0x27, 0xea, 0xce, 0x25, 0xb2, 0x08, 0x4a, 0xab, 0x3e, 0x9b, 0xd0, 0x79, 0x3f, 0x0e, 0xa9, + 0xdc, 0x5d, 0x5d, 0xb7, 0x44, 0x16, 0x41, 0xdc, 0x86, 0x7a, 0x2f, 0xe0, 0x5e, 0x1c, 0x86, 0x8c, + 0x7b, 0x73, 0x75, 0xf1, 0x26, 0xc9, 0x43, 0xf8, 0x03, 0xa8, 0x3c, 0xa4, 0x43, 0x36, 0x89, 0xdc, + 0x72, 0xbb, 0xb4, 0x5e, 0xdf, 0x7a, 0xf3, 0x95, 0xa8, 0xba, 0x5a, 0xbf, 0xcb, 0x45, 0x38, 0x27, + 0xc6, 0x58, 0x72, 0x4a, 0x58, 0x14, 0xc4, 0xa1, 0xc7, 0xdc, 0x8a, 0xa2, 0xc3, 0x70, 0x9a, 0xa0, + 0x24, 0xd5, 0xb7, 0x6e, 0x43, 0x3d, 0xb7, 0x05, 0x46, 0x50, 0x3a, 0x61, 0x73, 0x93, 0x1f, 0xb9, + 0xc4, 0x57, 0xa0, 0xfc, 0x8c, 0x4e, 0x62, 0xa6, 0x22, 0xad, 0x11, 0x2d, 0xdc, 0x29, 0x7e, 0x64, + 0x75, 0x6e, 0x65, 0xc7, 0x48, 0xbf, 0xde, 0xc1, 0xb1, 0xf2, 0xb3, 0x89, 0x5c, 0xe2, 0x55, 0xa8, + 0xec, 0xb1, 0x69, 0x10, 0xce, 0x95, 0xa3, 0x4d, 0x8c, 0xd4, 0x79, 0x00, 0x4d, 0x9d, 0x50, 0x46, + 0x58, 0x14, 0x4f, 0x04, 0xbe, 0x0e, 0xb6, 0xcc, 0xb3, 0xf2, 0x5d, 0xd9, 0x42, 0xe9, 0x4d, 0xe3, + 0x89, 0x50, 0xf9, 0x57, 0x5a, 0x79, 0x8d, 0xdd, 0x30, 0x34, 0x45, 0x52, 0x23, 0x5a, 0xe8, 0xfc, + 0x5e, 0x84, 0xda, 0x76, 0x34, 0xe7, 0x9e, 0xa4, 0x24, 0x57, 0x5b, 0xb6, 0xaa, 0xad, 0x5b, 0xe0, + 0x24, 0x75, 0xa7, 0xdc, 0xea, 0x5b, 0x38, 0x23, 0x30, 0xd1, 0x98, 0xba, 0x48, 0x2d, 0x71, 0x07, + 0x1a, 0x07, 0x34, 0x64, 0x5c, 0x48, 0xab, 0x41, 0x5f, 0xe5, 0xae, 0x46, 0x16, 0x30, 0xbc, 0x0e, + 0x95, 0x43, 0x41, 0x45, 0xac, 0xcb, 0x2d, 0xbd, 0xb5, 0xd4, 0x6a, 0x9c, 0x18, 0x3d, 0x5e, 0x03, + 0x90, 0x28, 0x89, 0x39, 0x67, 0xa1, 0x5b, 0x56, 0x7b, 0xe5, 0x10, 0x15, 0xd7, 0x2c, 0xf0, 0x9e, + 0xa8, 0x44, 0x35, 0x89, 0x16, 0x64, 0x01, 0x3d, 0xa4, 0x91, 0xb8, 0xc7, 0x68, 0x28, 0x86, 0x8c, + 0x0a, 0xb7, 0xaa, 0x0b, 0x68, 0x01, 0xc4, 0x2d, 0x70, 0x7a, 0x21, 0xa3, 0x82, 0x6d, 0x0b, 0xd7, + 0x51, 0x06, 0xa9, 0xac, 0x8b, 0x6b, 0x3a, 0x9b, 0x30, 0xc1, 0x46, 0xdb, 0xc2, 0xad, 0x29, 0x75, + 0x1e, 0xc2, 0xb7, 0x97, 0x12, 0xe1, 0x82, 0xa2, 0xe8, 0xb2, 0x0e, 0x65, 0x41, 0x45, 0x16, 0x2d, + 0x3b, 0xbf, 0x59, 0xf2, 0xe4, 0x80, 0xbf, 0x46, 0xd6, 0x5b, 0x7a, 0xc7, 0xdd, 0xd3, 0x59, 0x68, + 0x18, 0x4f, 0x65, 0xa9, 0x7b, 0xc4, 0x4e, 0x85, 0xec, 0x40, 0xc5, 0x77, 0x89, 0xa4, 0xb2, 0xcc, + 0xd6, 0x51, 0xe8, 0x8f, 0xc7, 0x2c, 0xd4, 0x5d, 0x5b, 0x56, 0xf7, 0x58, 0xc0, 0x16, 0x78, 0xaa, + 0x2c, 0xf1, 0xd4, 0x02, 0xe7, 0x78, 0x36, 0xd2, 0x3a, 0x4d, 0x72, 0x2a, 0x77, 0xbe, 0xb5, 0x00, + 0xf5, 0x02, 0xce, 0x99, 0x27, 0x82, 0xb0, 0xcf, 0x04, 0xf5, 0x27, 0x11, 0xbe, 0x0a, 0xb5, 0x23, + 0x3a, 0x9c, 0xb0, 0x47, 0x74, 0xca, 0x4c, 0x9f, 0x64, 0x00, 0xfe, 0x38, 0x1b, 0x44, 0x45, 0xd5, + 0xb2, 0x6f, 0xe9, 0xd8, 0x97, 0xb7, 0xe9, 0x1a, 0x2b, 0xdd, 0xb8, 0x89, 0x4f, 0xeb, 0x0e, 0x34, + 0xf2, 0x8a, 0x0b, 0xb5, 0xe3, 0x4d, 0xa8, 0x6e, 0x7b, 0x5e, 0x10, 0x73, 0xa1, 0x52, 0x32, 0x4a, + 0x53, 0x32, 0xc2, 0x18, 0x6c, 0x75, 0x5d, 0xed, 0xa3, 0xd6, 0x9d, 0xa7, 0x80, 0x34, 0x09, 0xbd, + 0x91, 0x97, 0xc4, 0xb6, 0x0a, 0x15, 0x55, 0xe0, 0x23, 0x73, 0xa2, 0x91, 0x24, 0x49, 0x72, 0x95, + 0xdb, 0x23, 0x95, 0xf1, 0x3b, 0xe0, 0x98, 0x63, 0x23, 0xb7, 0xa4, 0x42, 0x6e, 0xea, 0x90, 0x0d, + 0x4a, 0x52, 0x75, 0x07, 0x03, 0x22, 0x4c, 0x30, 0x2e, 0x03, 0x34, 0x47, 0x76, 0xb6, 0xa1, 0x3e, + 0x38, 0xec, 0x1d, 0xfc, 0x87, 0x1b, 0xc8, 0x49, 0x5e, 0x4d, 0xfc, 0xdb, 0x50, 0xef, 0xb3, 0xc8, + 0x0b, 0x7d, 0xc5, 0xa2, 0xd9, 0x24, 0x0f, 0xc9, 0xfc, 0x99, 0x0b, 0x0d, 0xfa, 0x6a, 0xab, 0x26, + 0xc9, 0x00, 0xf9, 0x89, 0x31, 0x82, 0xa9, 0xc2, 0x94, 0x53, 0x59, 0x28, 0x11, 0x0b, 0x39, 0x35, + 0x45, 0x58, 0x23, 0xa9, 0x9c, 0x0d, 0xa7, 0x72, 0x6e, 0x38, 0xe1, 0x0f, 0xa1, 0x96, 0xa6, 0xdd, + 0x34, 0xd7, 0xea, 0x5f, 0x57, 0xc3, 0xbd, 0x02, 0xc9, 0x4c, 0x95, 0x5f, 0x92, 0x19, 0xb7, 0xb1, + 0xe0, 0xb7, 0x94, 0x30, 0xe5, 0x97, 0x60, 0xf8, 0x06, 0xd8, 0x92, 0x4a, 0xb7, 0x99, 0xff, 0x02, + 0xe6, 0xc8, 0xbd, 0x57, 0x20, 0xca, 0x60, 0xa7, 0x96, 0xf2, 0x75, 0xdf, 0x76, 0xea, 0xa8, 0xd1, + 0xf9, 0xc3, 0x06, 0xe8, 0x53, 0x36, 0x7d, 0xad, 0x1d, 0xbd, 0x40, 0x74, 0xe9, 0x1f, 0x88, 0xb6, + 0x17, 0x89, 0xde, 0xd0, 0xa9, 0x3e, 0x9a, 0xcf, 0x98, 0xe2, 0x73, 0xe1, 0x45, 0x20, 0x51, 0x92, + 0xea, 0x97, 0xa6, 0x6b, 0xe5, 0x95, 0xe9, 0xfa, 0xae, 0xd6, 0x9b, 0x59, 0x5d, 0xfd, 0x9b, 0x59, + 0x9d, 0xb3, 0xc1, 0xf7, 0x97, 0x27, 0xaf, 0xa3, 0x02, 0x6e, 0x75, 0xf5, 0xcb, 0xa7, 0x9b, 0xbc, + 0x7c, 0xba, 0x47, 0xc9, 0xcb, 0x67, 0xc7, 0x91, 0x81, 0x7f, 0xf9, 0xd3, 0x35, 0x6b, 0x79, 0x3e, + 0xdf, 0x48, 0x79, 0x56, 0xf3, 0x37, 0xed, 0x0c, 0x03, 0x92, 0xb4, 0x6a, 0xef, 0xe6, 0x06, 0x14, + 0x5c, 0xe0, 0xbc, 0x6c, 0x8c, 0xdd, 0xcd, 0x8d, 0xb1, 0xfa, 0x45, 0x76, 0x48, 0xbc, 0xf0, 0x1d, + 0x28, 0xef, 0x72, 0xf9, 0xa9, 0x68, 0x5c, 0xc0, 0x5d, 0xbb, 0xe0, 0x4f, 0xa0, 0x2a, 0x23, 0x27, + 0x31, 0x37, 0xc5, 0xf7, 0xef, 0xbc, 0x13, 0xa7, 0x8d, 0xef, 0xac, 0x7c, 0x9e, 0x70, 0x1d, 0xaa, + 0x3a, 0xb0, 0x11, 0x2a, 0x48, 0x41, 0x26, 0xd3, 0xe7, 0x63, 0x64, 0xe1, 0xa6, 0x6c, 0x29, 0xf3, + 0x09, 0x43, 0x45, 0x0c, 0x50, 0x39, 0xa0, 0x71, 0xc4, 0x46, 0xa8, 0x84, 0x6b, 0xa6, 0x07, 0x91, + 0x8d, 0x1b, 0xe0, 0xf4, 0x28, 0xf7, 0xd8, 0x84, 0x8d, 0x50, 0x19, 0x5f, 0x86, 0x4b, 0xf2, 0xb3, + 0x35, 0x65, 0x84, 0x3d, 0x8d, 0x59, 0x24, 0x3d, 0x2b, 0x18, 0xc3, 0x8a, 0xf2, 0xcc, 0xb0, 0xaa, + 0x34, 0xd4, 0x6e, 0x19, 0xe8, 0xe0, 0x2b, 0x72, 0x66, 0x45, 0x82, 0x86, 0x22, 0x43, 0x6b, 0x1b, + 0x3f, 0x58, 0xba, 0x48, 0xd5, 0xd3, 0xa4, 0x01, 0xce, 0x11, 0x8b, 0xc4, 0x3e, 0x9f, 0xcc, 0x51, + 0x01, 0xaf, 0x00, 0x1c, 0xce, 0x23, 0xc1, 0xa6, 0x03, 0xee, 0x0b, 0x64, 0xc9, 0x93, 0xf6, 0x98, + 0x08, 0x7d, 0xef, 0x61, 0x30, 0xde, 0x63, 0xe1, 0x98, 0xa1, 0x22, 0x5e, 0x05, 0xac, 0xb1, 0x43, + 0x11, 0x84, 0x74, 0xcc, 0x8e, 0x23, 0x3a, 0x66, 0xa8, 0x24, 0xf1, 0x74, 0x0c, 0x3c, 0xa0, 0x8f, + 0x4f, 0xe8, 0xa1, 0xcf, 0x4f, 0x90, 0x8d, 0x2f, 0x41, 0x5d, 0xb9, 0xee, 0x0f, 0x3f, 0x67, 0x9e, + 0x40, 0x65, 0x49, 0x8a, 0xdc, 0xbe, 0x37, 0xf2, 0x50, 0x15, 0x23, 0x68, 0xec, 0xed, 0xab, 0x4f, + 0x90, 0xe4, 0x2f, 0x42, 0x8e, 0x44, 0x64, 0xa3, 0x27, 0x0f, 0x67, 0x54, 0xc3, 0x6f, 0xc0, 0xff, + 0x07, 0x7c, 0xc4, 0x4e, 0x75, 0xba, 0xe5, 0xd5, 0x53, 0x25, 0x74, 0x6c, 0xa7, 0x82, 0x2a, 0x1b, + 0x6f, 0x03, 0x64, 0xaf, 0x2e, 0x79, 0xc2, 0x61, 0xec, 0x79, 0x2c, 0x8a, 0x50, 0x41, 0xf2, 0xfc, + 0x29, 0xf5, 0x25, 0x9d, 0xd6, 0xc6, 0x57, 0x56, 0xd6, 0x9f, 0xf8, 0x2a, 0x54, 0x8f, 0xf9, 0x09, + 0x0f, 0xbe, 0xe0, 0xa8, 0xd0, 0xba, 0x74, 0x76, 0xde, 0xae, 0x4b, 0xd8, 0x40, 0x78, 0x0b, 0x70, + 0x1a, 0x45, 0x1a, 0x17, 0xb2, 0x5a, 0xad, 0xb3, 0xf3, 0xf6, 0xaa, 0x34, 0x7c, 0x55, 0x2b, 0xa7, + 0x46, 0x3a, 0xd1, 0x50, 0xa9, 0xd5, 0x3c, 0x3b, 0x6f, 0xe7, 0x46, 0x1c, 0xd6, 0x23, 0x0e, 0xd9, + 0x2d, 0xe7, 0xec, 0xbc, 0xad, 0xd6, 0x1d, 0xdb, 0x29, 0xa2, 0xe2, 0x4e, 0xef, 0xc5, 0x2f, 0x6b, + 0xd6, 0xf3, 0x97, 0x6b, 0xd6, 0x8b, 0x97, 0x6b, 0xd6, 0xcf, 0x2f, 0xd7, 0x0a, 0xdf, 0xfc, 0xba, + 0x66, 0x7d, 0x96, 0xff, 0xbd, 0x99, 0x52, 0x11, 0xfa, 0xa7, 0x41, 0xe8, 0x8f, 0x7d, 0x9e, 0x08, + 0x9c, 0x6d, 0xce, 0x4e, 0xc6, 0x9b, 0xb3, 0xe1, 0xa6, 0x6c, 0xcc, 0x61, 0x45, 0x95, 0xeb, 0xfb, + 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x65, 0x2e, 0xae, 0x28, 0x0d, 0x00, 0x00, } func (m *TaskMetadata) Marshal() (dAtA []byte, err error) { diff --git a/pkg/predefine/predefine.go b/pkg/predefine/predefine.go index 1b8cae46c0e2e..8c13c0db4fb6c 100644 --- a/pkg/predefine/predefine.go +++ b/pkg/predefine/predefine.go @@ -25,6 +25,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/pb/task" "github.com/matrixorigin/matrixone/pkg/util/export" "github.com/matrixorigin/matrixone/pkg/util/metric/mometric" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" "github.com/robfig/cron/v3" ) @@ -63,7 +64,7 @@ func GenInitCronTaskSQL(codes ...int32) (string, error) { }, nil } - cronTasks := make([]*task.CronTask, 0, 3) + cronTasks := make([]*task.CronTask, 0, 4) task1, err := createCronTask(export.MergeTaskMetadata(task.TaskCode_MetricLogMerge), export.MergeTaskCronExprEvery05Min) if err != nil { return "", err @@ -87,9 +88,14 @@ func GenInitCronTaskSQL(codes ...int32) (string, error) { if err != nil { return "", err } - cronTasks = append(cronTasks, task4) + task5, err := createCronTask(idxcron.IndexUpdateTaskMetadata(task.TaskCode_IndexUpdateTaskExecutor), idxcron.IndexUpdateTaskCronExpr) + if err != nil { + return "", err + } + cronTasks = append(cronTasks, task5) + sql := fmt.Sprintf(`insert into %s.sys_cron_task ( task_metadata_id, task_metadata_executor, diff --git a/pkg/sql/compile/alter.go b/pkg/sql/compile/alter.go index e4234a5fdf434..b04fedd0f0f7f 100644 --- a/pkg/sql/compile/alter.go +++ b/pkg/sql/compile/alter.go @@ -34,6 +34,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/sql/parsers/tree" plan2 "github.com/matrixorigin/matrixone/pkg/sql/plan" "github.com/matrixorigin/matrixone/pkg/util/executor" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" "github.com/matrixorigin/matrixone/pkg/vm/engine" "go.uber.org/zap" ) @@ -169,6 +170,12 @@ func (s *Scope) AlterTableCopy(c *Compile) error { return err } + // Idxcron: remove index update tasks with temp table id + err = DropAllIndexUpdateTasks(c, newTmpTableDef, dbName, qry.CopyTableDef.Name) + if err != nil { + return err + } + // 6. copy the original table data to the temporary replica table err = c.runSqlWithOptions(qry.InsertTmpDataSql, opt) if err != nil { @@ -267,22 +274,50 @@ func (s *Scope) AlterTableCopy(c *Compile) error { continue } - valid, err := checkValidIndexCdc(newTableDef, indexDef.IndexName) - if err != nil { - return err + { + // ISCP + valid, err := checkValidIndexCdc(newTableDef, indexDef.IndexName) + if err != nil { + return err + } + + if valid { + // index table may not be fully sync'd with source table via ISCP during alter table + // clone index table (with ISCP) may not be a complete clone + // so register ISCP job with startFromNow = false + sinker_type := getSinkerTypeFromAlgo(indexDef.IndexAlgo) + err = CreateIndexCdcTask(c, dbName, newTableDef.Name, indexDef.IndexName, sinker_type, false, "") + if err != nil { + return err + } + + logutil.Infof("ISCP register unaffected index db=%s, table=%s, index=%s", dbName, newTableDef.Name, indexDef.IndexName) + } } - if valid { - // index table may not be fully sync'd with source table via ISCP during alter table - // clone index table (with ISCP) may not be a complete clone - // so register ISCP job with startFromNow = false - sinker_type := getSinkerTypeFromAlgo(indexDef.IndexAlgo) - err = CreateIndexCdcTask(c, dbName, newTableDef.Name, indexDef.IndexName, sinker_type, false, "") + { + // idxcron + metadata, _, err := getIvfflatMetadata(c) if err != nil { return err } - logutil.Infof("ISCP register unaffected index db=%s, table=%s, index=%s", dbName, newTableDef.Name, indexDef.IndexName) + if catalog.IsIvfIndexAlgo(indexDef.IndexAlgo) { + + err = idxcron.RegisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + id, + dbName, + newTableDef.Name, + indexDef.IndexName, + idxcron.Action_Ivfflat_Reindex, + string(metadata)) + + if err != nil { + return err + } + } } unaffectedIndexProcessed[indexDef.IndexName] = true @@ -326,7 +361,7 @@ func (s *Scope) AlterTableCopy(c *Compile) error { case catalog.MoIndexIvfFlatAlgo.ToString(): err = s.handleVectorIvfFlatIndex( c, id, extra, dbSource, multiTableIndex.IndexDefs, - qry.Database, newTableDef, nil, + qry.Database, newTableDef, nil, false, ) case catalog.MoIndexHnswAlgo.ToString(): err = s.handleVectorHnswIndex( diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index fb3de6d46cc37..8fda08c304fc6 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -59,6 +59,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/util/trace" "github.com/matrixorigin/matrixone/pkg/vectorindex/cache" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" "github.com/matrixorigin/matrixone/pkg/vm/engine" "github.com/matrixorigin/matrixone/pkg/vm/process" "go.uber.org/zap" @@ -251,6 +252,12 @@ func (s *Scope) DropDatabase(c *Compile) error { return err } + // 6.unregister index update + err = idxcron.UnregisterUpdateByDbName(c.proc.Ctx, c.proc.GetService(), c.proc.GetTxnOperator(), dbName) + if err != nil { + return err + } + return err } @@ -612,6 +619,17 @@ func (s *Scope) AlterTableInplace(c *Compile) error { return err } + // unregister index update + err = idxcron.UnregisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + oTableDef.TblId, + constraintName, + idxcron.Action_Wildcard) + if err != nil { + return err + } + // Avoid modifying slice directly during iteration oTableDef.Indexes = notDroppedIndex extra.IndexTables = newIndexes @@ -683,7 +701,7 @@ func (s *Scope) AlterTableInplace(c *Compile) error { for _, multiTableIndex := range multiTableIndexes { switch multiTableIndex.IndexAlgo { // no need for catalog.ToLower() here case catalog.MoIndexIvfFlatAlgo.ToString(): - err = s.handleVectorIvfFlatIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, indexInfo) + err = s.handleVectorIvfFlatIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, indexInfo, false) case catalog.MoIndexHnswAlgo.ToString(): err = s.handleVectorHnswIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, indexInfo) } @@ -730,14 +748,12 @@ func (s *Scope) AlterTableInplace(c *Compile) error { break } } - case *plan.AlterTable_Action_AlterReindex: - // NOTE: We hold lock (with retry) during alter reindex, as "alter table" takes an exclusive lock - //in the beginning for pessimistic mode. We need to see how to reduce the critical section. + case *plan.AlterTable_Action_AlterAutoUpdate: hasUpdateConstraints = true - tableAlterIndex := act.AlterReindex + tableAlterIndex := act.AlterAutoUpdate constraintName := tableAlterIndex.IndexName - multiTableIndexes := make(map[string]*MultiTableIndex) + // simply update the index configuration for i, indexDef := range oTableDef.Indexes { if indexDef.IndexName == constraintName { alterIndex = indexDef @@ -753,8 +769,9 @@ func (s *Scope) AlterTableInplace(c *Compile) error { // 2.a update AlgoParams for the index to be re-indexed // NOTE: this will throw error if the algo type is not supported for reindex. // So Step 4. will not be executed if error is thrown here. - newAlgoParamsMap[catalog.IndexAlgoParamLists] = fmt.Sprintf("%d", tableAlterIndex.IndexAlgoParamList) - + newAlgoParamsMap[catalog.AutoUpdate] = fmt.Sprintf("%v", tableAlterIndex.AutoUpdate) + newAlgoParamsMap[catalog.Day] = fmt.Sprintf("%d", tableAlterIndex.Day) + newAlgoParamsMap[catalog.Hour] = fmt.Sprintf("%d", tableAlterIndex.Hour) // 2.b generate new AlgoParams string newAlgoParams, err := catalog.IndexParamsMapToJsonString(newAlgoParamsMap) if err != nil { @@ -772,6 +789,61 @@ func (s *Scope) AlterTableInplace(c *Compile) error { ); err != nil { return err } + + // 4. register auto update again + err = s.handleIvfIndexRegisterUpdate(c, indexDef, qry.Database, oTableDef) + if err != nil { + return err + } + default: + return moerr.NewInternalError(c.proc.Ctx, "invalid index algo type for alter reindex") + } + } + } + + case *plan.AlterTable_Action_AlterReindex: + // NOTE: We hold lock (with retry) during alter reindex, as "alter table" takes an exclusive lock + //in the beginning for pessimistic mode. We need to see how to reduce the critical section. + hasUpdateConstraints = true + tableAlterIndex := act.AlterReindex + constraintName := tableAlterIndex.IndexName + multiTableIndexes := make(map[string]*MultiTableIndex) + + for i, indexDef := range oTableDef.Indexes { + if indexDef.IndexName == constraintName { + alterIndex = indexDef + + indexAlgo := catalog.ToLower(alterIndex.IndexAlgo) + switch catalog.ToLower(indexAlgo) { + case catalog.MoIndexIvfFlatAlgo.ToString(): + // 1. Get old AlgoParams + newAlgoParamsMap, err := catalog.IndexParamsStringToMap(alterIndex.IndexAlgoParams) + if err != nil { + return err + } + // 2.a update AlgoParams for the index to be re-indexed + // NOTE: this will throw error if the algo type is not supported for reindex. + // So Step 4. will not be executed if error is thrown here. + if tableAlterIndex.IndexAlgoParamList > 0 { + newAlgoParamsMap[catalog.IndexAlgoParamLists] = fmt.Sprintf("%d", tableAlterIndex.IndexAlgoParamList) + // 2.b generate new AlgoParams string + newAlgoParams, err := catalog.IndexParamsMapToJsonString(newAlgoParamsMap) + if err != nil { + return err + } + + // 3.a Update IndexDef and TableDef + alterIndex.IndexAlgoParams = newAlgoParams + oTableDef.Indexes[i].IndexAlgoParams = newAlgoParams + + // 3.b Update mo_catalog.mo_indexes + updateSql := fmt.Sprintf(updateMoIndexesAlgoParams, newAlgoParams, oTableDef.TblId, alterIndex.IndexName) + if err = c.runSqlWithOptions( + updateSql, executor.StatementOption{}.WithDisableLog(), + ); err != nil { + return err + } + } case catalog.MoIndexHnswAlgo.ToString(): // PASS default: @@ -793,7 +865,7 @@ func (s *Scope) AlterTableInplace(c *Compile) error { for _, multiTableIndex := range multiTableIndexes { switch multiTableIndex.IndexAlgo { case catalog.MoIndexIvfFlatAlgo.ToString(): - err = s.handleVectorIvfFlatIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, nil) + err = s.handleVectorIvfFlatIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, nil, tableAlterIndex.ForceSync) case catalog.MoIndexHnswAlgo.ToString(): // TODO: we should call refresh Hnsw Index function instead of CreateHnswIndex function err = s.handleVectorHnswIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, nil) @@ -920,6 +992,7 @@ func (s *Scope) AlterTableInplace(c *Compile) error { if req.Kind == api.AlterKind_RenameTable { op, ok := req.Operation.(*api.AlterTableReq_RenameTable) if ok { + // iscp err = iscp.RenameSrcTable(c.proc.Ctx, c.proc.GetService(), c.proc.GetTxnOperator(), @@ -930,6 +1003,18 @@ func (s *Scope) AlterTableInplace(c *Compile) error { if err != nil { return err } + + // idxcron + err = idxcron.RenameSrcTable(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + req.DbId, + req.TableId, + op.RenameTable.OldName, + op.RenameTable.NewName) + if err != nil { + return err + } } } } @@ -1529,6 +1614,12 @@ func (s *Scope) CreateTable(c *Compile) error { if err != nil { return err } + + // register index update for IVFFLAT + err = CreateAllIndexUpdateTasks(c, idxdef.Indexes, dbName, tblName, newRelation.GetTableID(c.proc.Ctx)) + if err != nil { + return err + } } } @@ -1961,7 +2052,7 @@ func (s *Scope) doCreateIndex( for _, multiTableIndex := range multiTableIndexes { switch multiTableIndex.IndexAlgo { case catalog.MoIndexIvfFlatAlgo.ToString(): - err = s.handleVectorIvfFlatIndex(c, tableId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, originalTableDef, indexInfo) + err = s.handleVectorIvfFlatIndex(c, tableId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, originalTableDef, indexInfo, false) case catalog.MoIndexHnswAlgo.ToString(): err = s.handleVectorHnswIndex(c, tableId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, originalTableDef, indexInfo) } @@ -2082,6 +2173,7 @@ func (s *Scope) handleVectorIvfFlatIndex( qryDatabase string, originalTableDef *plan.TableDef, indexInfo *plan.CreateTable, + forceSync bool, ) error { // 1. static check if len(indexDefs) != 3 { @@ -2123,12 +2215,13 @@ func (s *Scope) handleVectorIvfFlatIndex( // 4.b populate centroids table err = s.handleIvfIndexCentroidsTable(c, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Centroids], qryDatabase, originalTableDef, totalCnt, - indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexTableName) + indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexTableName, + forceSync) if err != nil { return err } - if !async { + if !async || forceSync { // 4.c populate entries table err = s.handleIvfIndexEntriesTable(c, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Entries], qryDatabase, originalTableDef, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexTableName, @@ -2148,24 +2241,12 @@ func (s *Scope) handleVectorIvfFlatIndex( return err } - /* - // create ISCP job when Async is true - if async { - // unregister ISCP job so that it can restart index update from ts=0 - err = DropIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexName) - if err != nil { - return err - } + // 4.e register auto index update (reindex) + err = s.handleIvfIndexRegisterUpdate(c, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata], qryDatabase, originalTableDef) + if err != nil { + return err + } - logutil.Infof("Ivfflat index Async is true") - sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexIvfFlatAlgo.ToString()) - err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, - indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexName, sinker_type, false) - if err != nil { - return err - } - } - */ return nil } @@ -2228,6 +2309,18 @@ func (s *Scope) DropIndex(c *Compile) error { return err } + // 4. unregister index update + err = idxcron.UnregisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + oldTableDef.TblId, + qry.IndexName, + idxcron.Action_Wildcard) + if err != nil { + return err + } + + //5. delete index object from mo_catalog.mo_indexes deleteSql := fmt.Sprintf(deleteMoIndexesWithTableIdAndIndexNameFormat, r.GetTableID(c.proc.Ctx), qry.IndexName) err = c.runSqlWithOptions( deleteSql, executor.StatementOption{}.WithDisableLog(), @@ -2762,6 +2855,12 @@ func (s *Scope) DropTable(c *Compile) error { return err } + // unregister index update by Table Id + err = DropAllIndexUpdateTasks(c, rel.GetTableDef(c.proc.Ctx), qry.Database, qry.Table) + if err != nil { + return err + } + // delete all index objects record of the table in mo_catalog.mo_indexes if !qry.IsView && qry.Database != catalog.MO_CATALOG && qry.Table != catalog.MO_INDEXES { if qry.GetTableDef().Pkey != nil || len(qry.GetTableDef().Indexes) > 0 { diff --git a/pkg/sql/compile/ddl_index_algo.go b/pkg/sql/compile/ddl_index_algo.go index df0cd811696f7..7f9cae3efba2a 100644 --- a/pkg/sql/compile/ddl_index_algo.go +++ b/pkg/sql/compile/ddl_index_algo.go @@ -30,6 +30,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vectorindex/cache" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" "github.com/matrixorigin/matrixone/pkg/vm/engine" ) @@ -232,7 +233,7 @@ func (s *Scope) handleIvfIndexMetaTable(c *Compile, indexDef *plan.IndexDef, qry } func (s *Scope) handleIvfIndexCentroidsTable(c *Compile, indexDef *plan.IndexDef, - qryDatabase string, originalTableDef *plan.TableDef, totalCnt int64, metadataTableName string) error { + qryDatabase string, originalTableDef *plan.TableDef, totalCnt int64, metadataTableName string, forceSync bool) error { var cfg vectorindex.IndexTableConfig src_alias := "src" @@ -292,7 +293,7 @@ func (s *Scope) handleIvfIndexCentroidsTable(c *Compile, indexDef *plan.IndexDef if err != nil { return err } - cfg.KmeansTrainPercent = val.(int64) + cfg.KmeansTrainPercent = val.(float64) val, err = c.proc.GetResolveVariableFunc()("kmeans_max_iteration", true, false) if err != nil { @@ -323,18 +324,54 @@ func (s *Scope) handleIvfIndexCentroidsTable(c *Compile, indexDef *plan.IndexDef } if async { - // create ISCP job when Async is true - // unregister ISCP job so that it can restart index update from ts=0 - err = DropIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDef.IndexName) - if err != nil { - return err - } + if forceSync { + // background reindex must use force_sync = true so build index to run in single transaction - logutil.Infof("Ivfflat index Async is true") - sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexIvfFlatAlgo.ToString()) - err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, indexDef.IndexName, sinker_type, false, sql) - if err != nil { - return err + // build centroid in synchronous mode + err = s.logTimestamp(c, qryDatabase, metadataTableName, "clustering_start") + if err != nil { + return err + } + + err = c.runSql(sql) + if err != nil { + return err + } + + err = s.logTimestamp(c, qryDatabase, metadataTableName, "clustering_end") + if err != nil { + return err + } + + // if forceSync == true, start index update from ts = transaction start time + err = DropIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDef.IndexName) + if err != nil { + return err + } + + logutil.Infof("Ivfflat index Async = true, forceSync = true") + sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexIvfFlatAlgo.ToString()) + err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, indexDef.IndexName, sinker_type, true, "") + if err != nil { + return err + } + + } else { + // if forceSync == false, start index update from ts = 0 + + // create ISCP job when Async is true + // unregister ISCP job so that it can restart index update from ts=0 + err = DropIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDef.IndexName) + if err != nil { + return err + } + + logutil.Infof("Ivfflat index Async is true") + sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexIvfFlatAlgo.ToString()) + err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, indexDef.IndexName, sinker_type, false, sql) + if err != nil { + return err + } } } else { @@ -452,6 +489,30 @@ func (s *Scope) handleIvfIndexEntriesTable(c *Compile, indexDef *plan.IndexDef, return nil } +func (s *Scope) handleIvfIndexRegisterUpdate(c *Compile, indexDef *plan.IndexDef, qryDatabase string, originalTableDef *plan.TableDef) error { + + metadata, frontend, err := getIvfflatMetadata(c) + if err != nil { + return err + } + + if !frontend { + // this function call is from background so ignore it + logutil.Infof("Background invoke reindex and ignore register index update function call") + return nil + } + + return idxcron.RegisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + originalTableDef.TblId, + qryDatabase, + originalTableDef.Name, + indexDef.IndexName, + idxcron.Action_Ivfflat_Reindex, + string(metadata)) +} + func (s *Scope) logTimestamp(c *Compile, qryDatabase, metadataTableName, metrics string) error { return c.runSql(fmt.Sprintf("INSERT INTO `%s`.`%s` (%s, %s) "+ " VALUES ('%s', NOW()) "+ diff --git a/pkg/sql/compile/iscp_util.go b/pkg/sql/compile/iscp_util.go index 8a4b4d4287185..6f307376bb865 100644 --- a/pkg/sql/compile/iscp_util.go +++ b/pkg/sql/compile/iscp_util.go @@ -22,6 +22,8 @@ import ( "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/txn/client" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" + "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" ) var ( @@ -207,3 +209,167 @@ func CreateAllIndexCdcTasks(c *Compile, indexes []*plan.IndexDef, dbname string, } return nil } + +func getIvfflatMetadata(c *Compile) (metadata []byte, frontend bool, err error) { + var val any + + // only frontend has ivf_threads_search variable declared + _, err = c.proc.GetResolveVariableFunc()("ivf_threads_search", true, false) + if err == nil { + frontend = true + } + + // When Clone, variables are nil. Set variable to default value + val, err = c.proc.GetResolveVariableFunc()("ivf_threads_build", true, false) + if err != nil { + return + } + threadsBuild := int64(0) + if val != nil { + threadsBuild = val.(int64) + } + + val, err = c.proc.GetResolveVariableFunc()("kmeans_train_percent", true, false) + if err != nil { + return + } + kmeansTrainPercent := float64(10) + if val != nil { + kmeansTrainPercent = val.(float64) + } + + val, err = c.proc.GetResolveVariableFunc()("kmeans_max_iteration", true, false) + if err != nil { + return + } + kmeansMaxIteration := int64(20) + if val != nil { + kmeansMaxIteration = val.(int64) + } + + val, err = c.proc.GetResolveVariableFunc()("lower_case_table_names", true, false) + if err != nil { + return + } + lowerCaseTableNames := int64(1) + if val != nil { + lowerCaseTableNames = val.(int64) + } + + val, err = c.proc.GetResolveVariableFunc()("experimental_ivf_index", true, false) + if err != nil { + return + } + experimentalIvfIndex := int8(1) + if val != nil { + experimentalIvfIndex = val.(int8) + } + + w := sqlexec.NewMetadataWriter() + w.AddInt("ivf_threads_build", threadsBuild) + w.AddFloat("kmeans_train_percent", kmeansTrainPercent) + w.AddInt("kmeans_max_iteration", kmeansMaxIteration) + w.AddInt("lower_case_table_names", lowerCaseTableNames) + w.AddInt8("experimental_ivf_index", experimentalIvfIndex) + + metadata, err = w.Marshal() + if err != nil { + return + } + + return +} + +func checkValidIndexUpdateByIndexdef(idx *plan.IndexDef) (bool, error) { + if idx.TableExist && catalog.IsIvfIndexAlgo(idx.IndexAlgo) { + return true, nil + } + return false, nil +} + +// idxcron function +func CreateAllIndexUpdateTasks(c *Compile, indexes []*plan.IndexDef, dbname string, tablename string, tableid uint64) (err error) { + var ( + ivf_metadata []byte + ) + + if c.proc.GetResolveVariableFunc() == nil { + return + } + + idxmap := make(map[string]bool) + for _, idx := range indexes { + _, ok := idxmap[idx.IndexName] + if ok { + continue + } + + valid := false + valid, err = checkValidIndexUpdateByIndexdef(idx) + if err != nil { + return + } + if valid { + idxmap[idx.IndexName] = true + + if len(idx.IndexName) == 0 { + // skip empty index name because alter reindex sql don't support empty index name + continue + } + + if ivf_metadata == nil { + ivf_metadata, _, err = getIvfflatMetadata(c) + if err != nil { + return + } + } + + err = idxcron.RegisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + tableid, + dbname, + tablename, + idx.IndexName, + idxcron.Action_Ivfflat_Reindex, + string(ivf_metadata)) + if err != nil { + return + } + } + } + return +} + +// drop all cdc tasks according to tableDef +func DropAllIndexUpdateTasks(c *Compile, tabledef *plan.TableDef, dbname string, tablename string) (err error) { + idxmap := make(map[string]bool) + for _, idx := range tabledef.Indexes { + + _, ok := idxmap[idx.IndexName] + if ok { + continue + } + + valid := false + valid, err = checkValidIndexUpdateByIndexdef(idx) + if err != nil { + return + } + if valid { + idxmap[idx.IndexName] = true + //hasindex = true + + err = idxcron.UnregisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + tabledef.TblId, + idx.IndexName, + idxcron.Action_Ivfflat_Reindex) + if err != nil { + return + } + } + } + return +} diff --git a/pkg/sql/parsers/dialect/mysql/keywords.go b/pkg/sql/parsers/dialect/mysql/keywords.go index c9432f82cd38a..e33940405561b 100644 --- a/pkg/sql/parsers/dialect/mysql/keywords.go +++ b/pkg/sql/parsers/dialect/mysql/keywords.go @@ -40,6 +40,7 @@ func init() { "auto_increment": AUTO_INCREMENT, "autoextend_size": AUTOEXTEND_SIZE, "auto_random": AUTO_RANDOM, + "auto_update": AUTO_UPDATE, "avg_row_length": AVG_ROW_LENGTH, "avg": AVG, "bsi": BSI, @@ -199,6 +200,7 @@ func init() { "for": FOR, "of": OF, "force": FORCE, + "force_sync": FORCE_SYNC, "foreign": FOREIGN, "format": FORMAT, "from": FROM, diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.go b/pkg/sql/parsers/dialect/mysql/mysql_sql.go index 758be50d8222e..97c11faa4660f 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.go @@ -382,302 +382,304 @@ const EF_SEARCH = 57705 const EF_CONSTRUCTION = 57706 const M = 57707 const ASYNC = 57708 -const EXPIRE = 57709 -const ACCOUNT = 57710 -const ACCOUNTS = 57711 -const UNLOCK = 57712 -const DAY = 57713 -const NEVER = 57714 -const PUMP = 57715 -const MYSQL_COMPATIBILITY_MODE = 57716 -const UNIQUE_CHECK_ON_AUTOINCR = 57717 -const MODIFY = 57718 -const CHANGE = 57719 -const SECOND = 57720 -const ASCII = 57721 -const COALESCE = 57722 -const COLLATION = 57723 -const HOUR = 57724 -const MICROSECOND = 57725 -const MINUTE = 57726 -const MONTH = 57727 -const QUARTER = 57728 -const REPEAT = 57729 -const REVERSE = 57730 -const ROW_COUNT = 57731 -const WEEK = 57732 -const REVOKE = 57733 -const FUNCTION = 57734 -const PRIVILEGES = 57735 -const TABLESPACE = 57736 -const EXECUTE = 57737 -const SUPER = 57738 -const GRANT = 57739 -const OPTION = 57740 -const REFERENCES = 57741 -const REPLICATION = 57742 -const SLAVE = 57743 -const CLIENT = 57744 -const USAGE = 57745 -const RELOAD = 57746 -const FILE = 57747 -const TEMPORARY = 57748 -const ROUTINE = 57749 -const EVENT = 57750 -const SHUTDOWN = 57751 -const NULLX = 57752 -const AUTO_INCREMENT = 57753 -const APPROXNUM = 57754 -const ENGINES = 57755 -const LOW_CARDINALITY = 57756 -const AUTOEXTEND_SIZE = 57757 -const ADMIN_NAME = 57758 -const RANDOM = 57759 -const SUSPEND = 57760 -const ATTRIBUTE = 57761 -const HISTORY = 57762 -const REUSE = 57763 -const CURRENT = 57764 -const OPTIONAL = 57765 -const FAILED_LOGIN_ATTEMPTS = 57766 -const PASSWORD_LOCK_TIME = 57767 -const UNBOUNDED = 57768 -const SECONDARY = 57769 -const RESTRICTED = 57770 -const USER = 57771 -const IDENTIFIED = 57772 -const CIPHER = 57773 -const ISSUER = 57774 -const X509 = 57775 -const SUBJECT = 57776 -const SAN = 57777 -const REQUIRE = 57778 -const SSL = 57779 -const NONE = 57780 -const PASSWORD = 57781 -const SHARED = 57782 -const EXCLUSIVE = 57783 -const MAX_QUERIES_PER_HOUR = 57784 -const MAX_UPDATES_PER_HOUR = 57785 -const MAX_CONNECTIONS_PER_HOUR = 57786 -const MAX_USER_CONNECTIONS = 57787 -const FORMAT = 57788 -const VERBOSE = 57789 -const CONNECTION = 57790 -const TRIGGERS = 57791 -const PROFILES = 57792 -const LOAD = 57793 -const INLINE = 57794 -const INFILE = 57795 -const TERMINATED = 57796 -const OPTIONALLY = 57797 -const ENCLOSED = 57798 -const ESCAPED = 57799 -const STARTING = 57800 -const LINES = 57801 -const ROWS = 57802 -const IMPORT = 57803 -const DISCARD = 57804 -const JSONTYPE = 57805 -const MODUMP = 57806 -const OVER = 57807 -const PRECEDING = 57808 -const FOLLOWING = 57809 -const GROUPS = 57810 -const DATABASES = 57811 -const TABLES = 57812 -const SEQUENCES = 57813 -const EXTENDED = 57814 -const FULL = 57815 -const PROCESSLIST = 57816 -const FIELDS = 57817 -const COLUMNS = 57818 -const OPEN = 57819 -const ERRORS = 57820 -const WARNINGS = 57821 -const INDEXES = 57822 -const SCHEMAS = 57823 -const NODE = 57824 -const LOCKS = 57825 -const ROLES = 57826 -const TABLE_NUMBER = 57827 -const COLUMN_NUMBER = 57828 -const TABLE_VALUES = 57829 -const TABLE_SIZE = 57830 -const NAMES = 57831 -const GLOBAL = 57832 -const PERSIST = 57833 -const SESSION = 57834 -const ISOLATION = 57835 -const LEVEL = 57836 -const READ = 57837 -const WRITE = 57838 -const ONLY = 57839 -const REPEATABLE = 57840 -const COMMITTED = 57841 -const UNCOMMITTED = 57842 -const SERIALIZABLE = 57843 -const LOCAL = 57844 -const EVENTS = 57845 -const PLUGINS = 57846 -const CURRENT_TIMESTAMP = 57847 -const DATABASE = 57848 -const CURRENT_TIME = 57849 -const LOCALTIME = 57850 -const LOCALTIMESTAMP = 57851 -const UTC_DATE = 57852 -const UTC_TIME = 57853 -const UTC_TIMESTAMP = 57854 -const REPLACE = 57855 -const CONVERT = 57856 -const SEPARATOR = 57857 -const TIMESTAMPDIFF = 57858 -const TIMESTAMPADD = 57859 -const CURRENT_DATE = 57860 -const CURRENT_USER = 57861 -const CURRENT_ROLE = 57862 -const SECOND_MICROSECOND = 57863 -const MINUTE_MICROSECOND = 57864 -const MINUTE_SECOND = 57865 -const HOUR_MICROSECOND = 57866 -const HOUR_SECOND = 57867 -const HOUR_MINUTE = 57868 -const DAY_MICROSECOND = 57869 -const DAY_SECOND = 57870 -const DAY_MINUTE = 57871 -const DAY_HOUR = 57872 -const YEAR_MONTH = 57873 -const SQL_TSI_HOUR = 57874 -const SQL_TSI_DAY = 57875 -const SQL_TSI_WEEK = 57876 -const SQL_TSI_MONTH = 57877 -const SQL_TSI_QUARTER = 57878 -const SQL_TSI_YEAR = 57879 -const SQL_TSI_SECOND = 57880 -const SQL_TSI_MINUTE = 57881 -const RECURSIVE = 57882 -const CONFIG = 57883 -const DRAINER = 57884 -const SOURCE = 57885 -const STREAM = 57886 -const HEADERS = 57887 -const CONNECTOR = 57888 -const CONNECTORS = 57889 -const DAEMON = 57890 -const PAUSE = 57891 -const CANCEL = 57892 -const TASK = 57893 -const RESUME = 57894 -const MATCH = 57895 -const AGAINST = 57896 -const BOOLEAN = 57897 -const LANGUAGE = 57898 -const QUERY = 57899 -const EXPANSION = 57900 -const WITHOUT = 57901 -const VALIDATION = 57902 -const UPGRADE = 57903 -const RETRY = 57904 -const ADDDATE = 57905 -const BIT_AND = 57906 -const BIT_OR = 57907 -const BIT_XOR = 57908 -const CAST = 57909 -const COUNT = 57910 -const APPROX_COUNT = 57911 -const APPROX_COUNT_DISTINCT = 57912 -const SERIAL_EXTRACT = 57913 -const APPROX_PERCENTILE = 57914 -const CURDATE = 57915 -const CURTIME = 57916 -const DATE_ADD = 57917 -const DATE_SUB = 57918 -const EXTRACT = 57919 -const GROUP_CONCAT = 57920 -const MAX = 57921 -const MID = 57922 -const MIN = 57923 -const NOW = 57924 -const POSITION = 57925 -const SESSION_USER = 57926 -const STD = 57927 -const STDDEV = 57928 -const MEDIAN = 57929 -const CLUSTER_CENTERS = 57930 -const KMEANS = 57931 -const STDDEV_POP = 57932 -const STDDEV_SAMP = 57933 -const SUBDATE = 57934 -const SUBSTR = 57935 -const SUBSTRING = 57936 -const SUM = 57937 -const SYSDATE = 57938 -const SYSTEM_USER = 57939 -const TRANSLATE = 57940 -const TRIM = 57941 -const VARIANCE = 57942 -const VAR_POP = 57943 -const VAR_SAMP = 57944 -const AVG = 57945 -const RANK = 57946 -const ROW_NUMBER = 57947 -const DENSE_RANK = 57948 -const BIT_CAST = 57949 -const BITMAP_BIT_POSITION = 57950 -const BITMAP_BUCKET_NUMBER = 57951 -const BITMAP_COUNT = 57952 -const BITMAP_CONSTRUCT_AGG = 57953 -const BITMAP_OR_AGG = 57954 -const NEXTVAL = 57955 -const SETVAL = 57956 -const CURRVAL = 57957 -const LASTVAL = 57958 -const ARROW = 57959 -const ROW = 57960 -const OUTFILE = 57961 -const HEADER = 57962 -const MAX_FILE_SIZE = 57963 -const FORCE_QUOTE = 57964 -const PARALLEL = 57965 -const STRICT = 57966 -const UNUSED = 57967 -const BINDINGS = 57968 -const DO = 57969 -const DECLARE = 57970 -const LOOP = 57971 -const WHILE = 57972 -const LEAVE = 57973 -const ITERATE = 57974 -const UNTIL = 57975 -const CALL = 57976 -const PREV = 57977 -const SLIDING = 57978 -const FILL = 57979 -const SPBEGIN = 57980 -const BACKEND = 57981 -const SERVERS = 57982 -const HANDLER = 57983 -const PERCENT = 57984 -const SAMPLE = 57985 -const MO_TS = 57986 -const PITR = 57987 -const RECOVERY_WINDOW = 57988 -const INTERNAL = 57989 -const CDC = 57990 -const GROUPING = 57991 -const SETS = 57992 -const CUBE = 57993 -const ROLLUP = 57994 -const LOGSERVICE = 57995 -const REPLICAS = 57996 -const STORES = 57997 -const SETTINGS = 57998 -const KILL = 57999 -const BACKUP = 58000 -const FILESYSTEM = 58001 -const PARALLELISM = 58002 -const RESTORE = 58003 -const QUERY_RESULT = 58004 +const FORCE_SYNC = 57709 +const AUTO_UPDATE = 57710 +const EXPIRE = 57711 +const ACCOUNT = 57712 +const ACCOUNTS = 57713 +const UNLOCK = 57714 +const DAY = 57715 +const NEVER = 57716 +const PUMP = 57717 +const MYSQL_COMPATIBILITY_MODE = 57718 +const UNIQUE_CHECK_ON_AUTOINCR = 57719 +const MODIFY = 57720 +const CHANGE = 57721 +const SECOND = 57722 +const ASCII = 57723 +const COALESCE = 57724 +const COLLATION = 57725 +const HOUR = 57726 +const MICROSECOND = 57727 +const MINUTE = 57728 +const MONTH = 57729 +const QUARTER = 57730 +const REPEAT = 57731 +const REVERSE = 57732 +const ROW_COUNT = 57733 +const WEEK = 57734 +const REVOKE = 57735 +const FUNCTION = 57736 +const PRIVILEGES = 57737 +const TABLESPACE = 57738 +const EXECUTE = 57739 +const SUPER = 57740 +const GRANT = 57741 +const OPTION = 57742 +const REFERENCES = 57743 +const REPLICATION = 57744 +const SLAVE = 57745 +const CLIENT = 57746 +const USAGE = 57747 +const RELOAD = 57748 +const FILE = 57749 +const TEMPORARY = 57750 +const ROUTINE = 57751 +const EVENT = 57752 +const SHUTDOWN = 57753 +const NULLX = 57754 +const AUTO_INCREMENT = 57755 +const APPROXNUM = 57756 +const ENGINES = 57757 +const LOW_CARDINALITY = 57758 +const AUTOEXTEND_SIZE = 57759 +const ADMIN_NAME = 57760 +const RANDOM = 57761 +const SUSPEND = 57762 +const ATTRIBUTE = 57763 +const HISTORY = 57764 +const REUSE = 57765 +const CURRENT = 57766 +const OPTIONAL = 57767 +const FAILED_LOGIN_ATTEMPTS = 57768 +const PASSWORD_LOCK_TIME = 57769 +const UNBOUNDED = 57770 +const SECONDARY = 57771 +const RESTRICTED = 57772 +const USER = 57773 +const IDENTIFIED = 57774 +const CIPHER = 57775 +const ISSUER = 57776 +const X509 = 57777 +const SUBJECT = 57778 +const SAN = 57779 +const REQUIRE = 57780 +const SSL = 57781 +const NONE = 57782 +const PASSWORD = 57783 +const SHARED = 57784 +const EXCLUSIVE = 57785 +const MAX_QUERIES_PER_HOUR = 57786 +const MAX_UPDATES_PER_HOUR = 57787 +const MAX_CONNECTIONS_PER_HOUR = 57788 +const MAX_USER_CONNECTIONS = 57789 +const FORMAT = 57790 +const VERBOSE = 57791 +const CONNECTION = 57792 +const TRIGGERS = 57793 +const PROFILES = 57794 +const LOAD = 57795 +const INLINE = 57796 +const INFILE = 57797 +const TERMINATED = 57798 +const OPTIONALLY = 57799 +const ENCLOSED = 57800 +const ESCAPED = 57801 +const STARTING = 57802 +const LINES = 57803 +const ROWS = 57804 +const IMPORT = 57805 +const DISCARD = 57806 +const JSONTYPE = 57807 +const MODUMP = 57808 +const OVER = 57809 +const PRECEDING = 57810 +const FOLLOWING = 57811 +const GROUPS = 57812 +const DATABASES = 57813 +const TABLES = 57814 +const SEQUENCES = 57815 +const EXTENDED = 57816 +const FULL = 57817 +const PROCESSLIST = 57818 +const FIELDS = 57819 +const COLUMNS = 57820 +const OPEN = 57821 +const ERRORS = 57822 +const WARNINGS = 57823 +const INDEXES = 57824 +const SCHEMAS = 57825 +const NODE = 57826 +const LOCKS = 57827 +const ROLES = 57828 +const TABLE_NUMBER = 57829 +const COLUMN_NUMBER = 57830 +const TABLE_VALUES = 57831 +const TABLE_SIZE = 57832 +const NAMES = 57833 +const GLOBAL = 57834 +const PERSIST = 57835 +const SESSION = 57836 +const ISOLATION = 57837 +const LEVEL = 57838 +const READ = 57839 +const WRITE = 57840 +const ONLY = 57841 +const REPEATABLE = 57842 +const COMMITTED = 57843 +const UNCOMMITTED = 57844 +const SERIALIZABLE = 57845 +const LOCAL = 57846 +const EVENTS = 57847 +const PLUGINS = 57848 +const CURRENT_TIMESTAMP = 57849 +const DATABASE = 57850 +const CURRENT_TIME = 57851 +const LOCALTIME = 57852 +const LOCALTIMESTAMP = 57853 +const UTC_DATE = 57854 +const UTC_TIME = 57855 +const UTC_TIMESTAMP = 57856 +const REPLACE = 57857 +const CONVERT = 57858 +const SEPARATOR = 57859 +const TIMESTAMPDIFF = 57860 +const TIMESTAMPADD = 57861 +const CURRENT_DATE = 57862 +const CURRENT_USER = 57863 +const CURRENT_ROLE = 57864 +const SECOND_MICROSECOND = 57865 +const MINUTE_MICROSECOND = 57866 +const MINUTE_SECOND = 57867 +const HOUR_MICROSECOND = 57868 +const HOUR_SECOND = 57869 +const HOUR_MINUTE = 57870 +const DAY_MICROSECOND = 57871 +const DAY_SECOND = 57872 +const DAY_MINUTE = 57873 +const DAY_HOUR = 57874 +const YEAR_MONTH = 57875 +const SQL_TSI_HOUR = 57876 +const SQL_TSI_DAY = 57877 +const SQL_TSI_WEEK = 57878 +const SQL_TSI_MONTH = 57879 +const SQL_TSI_QUARTER = 57880 +const SQL_TSI_YEAR = 57881 +const SQL_TSI_SECOND = 57882 +const SQL_TSI_MINUTE = 57883 +const RECURSIVE = 57884 +const CONFIG = 57885 +const DRAINER = 57886 +const SOURCE = 57887 +const STREAM = 57888 +const HEADERS = 57889 +const CONNECTOR = 57890 +const CONNECTORS = 57891 +const DAEMON = 57892 +const PAUSE = 57893 +const CANCEL = 57894 +const TASK = 57895 +const RESUME = 57896 +const MATCH = 57897 +const AGAINST = 57898 +const BOOLEAN = 57899 +const LANGUAGE = 57900 +const QUERY = 57901 +const EXPANSION = 57902 +const WITHOUT = 57903 +const VALIDATION = 57904 +const UPGRADE = 57905 +const RETRY = 57906 +const ADDDATE = 57907 +const BIT_AND = 57908 +const BIT_OR = 57909 +const BIT_XOR = 57910 +const CAST = 57911 +const COUNT = 57912 +const APPROX_COUNT = 57913 +const APPROX_COUNT_DISTINCT = 57914 +const SERIAL_EXTRACT = 57915 +const APPROX_PERCENTILE = 57916 +const CURDATE = 57917 +const CURTIME = 57918 +const DATE_ADD = 57919 +const DATE_SUB = 57920 +const EXTRACT = 57921 +const GROUP_CONCAT = 57922 +const MAX = 57923 +const MID = 57924 +const MIN = 57925 +const NOW = 57926 +const POSITION = 57927 +const SESSION_USER = 57928 +const STD = 57929 +const STDDEV = 57930 +const MEDIAN = 57931 +const CLUSTER_CENTERS = 57932 +const KMEANS = 57933 +const STDDEV_POP = 57934 +const STDDEV_SAMP = 57935 +const SUBDATE = 57936 +const SUBSTR = 57937 +const SUBSTRING = 57938 +const SUM = 57939 +const SYSDATE = 57940 +const SYSTEM_USER = 57941 +const TRANSLATE = 57942 +const TRIM = 57943 +const VARIANCE = 57944 +const VAR_POP = 57945 +const VAR_SAMP = 57946 +const AVG = 57947 +const RANK = 57948 +const ROW_NUMBER = 57949 +const DENSE_RANK = 57950 +const BIT_CAST = 57951 +const BITMAP_BIT_POSITION = 57952 +const BITMAP_BUCKET_NUMBER = 57953 +const BITMAP_COUNT = 57954 +const BITMAP_CONSTRUCT_AGG = 57955 +const BITMAP_OR_AGG = 57956 +const NEXTVAL = 57957 +const SETVAL = 57958 +const CURRVAL = 57959 +const LASTVAL = 57960 +const ARROW = 57961 +const ROW = 57962 +const OUTFILE = 57963 +const HEADER = 57964 +const MAX_FILE_SIZE = 57965 +const FORCE_QUOTE = 57966 +const PARALLEL = 57967 +const STRICT = 57968 +const UNUSED = 57969 +const BINDINGS = 57970 +const DO = 57971 +const DECLARE = 57972 +const LOOP = 57973 +const WHILE = 57974 +const LEAVE = 57975 +const ITERATE = 57976 +const UNTIL = 57977 +const CALL = 57978 +const PREV = 57979 +const SLIDING = 57980 +const FILL = 57981 +const SPBEGIN = 57982 +const BACKEND = 57983 +const SERVERS = 57984 +const HANDLER = 57985 +const PERCENT = 57986 +const SAMPLE = 57987 +const MO_TS = 57988 +const PITR = 57989 +const RECOVERY_WINDOW = 57990 +const INTERNAL = 57991 +const CDC = 57992 +const GROUPING = 57993 +const SETS = 57994 +const CUBE = 57995 +const ROLLUP = 57996 +const LOGSERVICE = 57997 +const REPLICAS = 57998 +const STORES = 57999 +const SETTINGS = 58000 +const KILL = 58001 +const BACKUP = 58002 +const FILESYSTEM = 58003 +const PARALLELISM = 58004 +const RESTORE = 58005 +const QUERY_RESULT = 58006 var yyToknames = [...]string{ "$end", @@ -1063,6 +1065,8 @@ var yyToknames = [...]string{ "EF_CONSTRUCTION", "M", "ASYNC", + "FORCE_SYNC", + "AUTO_UPDATE", "EXPIRE", "ACCOUNT", "ACCOUNTS", @@ -1372,7 +1376,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line mysql_sql.y:13261 +//line mysql_sql.y:13339 //line yacctab:1 var yyExca = [...]int{ @@ -1380,4368 +1384,2225 @@ var yyExca = [...]int{ 1, -1, -2, 0, -1, 144, - 11, 825, - 24, 825, - -2, 818, + 11, 828, + 24, 828, + -2, 821, -1, 170, - 256, 1284, - 258, 1157, - -2, 1212, + 256, 1292, + 258, 1160, + -2, 1220, -1, 197, - 46, 648, - 258, 648, - 285, 655, - 286, 655, - 497, 648, - -2, 683, + 46, 651, + 258, 651, + 285, 658, + 286, 658, + 499, 651, + -2, 686, -1, 237, - 683, 2071, - -2, 547, + 685, 2079, + -2, 550, -1, 560, - 683, 2195, + 685, 2203, -2, 422, -1, 617, - 683, 2253, + 685, 2261, -2, 420, -1, 618, - 683, 2254, + 685, 2262, -2, 421, -1, 619, - 683, 2255, + 685, 2263, -2, 423, -1, 760, 337, 189, - 469, 189, - 470, 189, - -2, 1967, + 471, 189, + 472, 189, + -2, 1975, -1, 827, - 88, 1745, - -2, 2131, + 88, 1753, + -2, 2139, -1, 828, - 88, 1764, - -2, 2102, + 88, 1772, + -2, 2110, -1, 832, - 88, 1765, - -2, 2130, + 88, 1773, + -2, 2138, -1, 867, - 88, 1671, - -2, 2333, + 88, 1679, + -2, 2341, -1, 868, - 88, 1672, - -2, 2332, + 88, 1680, + -2, 2340, -1, 869, - 88, 1673, - -2, 2322, + 88, 1681, + -2, 2330, -1, 870, - 88, 2294, - -2, 2315, + 88, 2302, + -2, 2323, -1, 871, - 88, 2295, - -2, 2316, - -1, 872, - 88, 2296, + 88, 2303, -2, 2324, + -1, 872, + 88, 2304, + -2, 2332, -1, 873, - 88, 2297, - -2, 2304, + 88, 2305, + -2, 2312, -1, 874, - 88, 2298, - -2, 2313, + 88, 2306, + -2, 2321, -1, 875, - 88, 2299, - -2, 2325, + 88, 2307, + -2, 2333, -1, 876, - 88, 2300, - -2, 2326, + 88, 2308, + -2, 2334, -1, 877, - 88, 2301, - -2, 2331, + 88, 2309, + -2, 2339, -1, 878, - 88, 2302, - -2, 2336, + 88, 2310, + -2, 2344, -1, 879, - 88, 2303, - -2, 2337, + 88, 2311, + -2, 2345, -1, 880, - 88, 1741, - -2, 2169, + 88, 1749, + -2, 2177, -1, 881, - 88, 1742, - -2, 1947, + 88, 1750, + -2, 1955, -1, 882, - 88, 1743, - -2, 2178, + 88, 1751, + -2, 2186, -1, 883, - 88, 1744, - -2, 1960, + 88, 1752, + -2, 1968, -1, 885, - 88, 1747, - -2, 1969, + 88, 1755, + -2, 1977, -1, 887, - 88, 1749, - -2, 2202, + 88, 1757, + -2, 2210, -1, 889, - 88, 1752, - -2, 1990, + 88, 1760, + -2, 1998, -1, 891, - 88, 1754, - -2, 2214, + 88, 1762, + -2, 2222, -1, 892, - 88, 1755, - -2, 2213, + 88, 1763, + -2, 2221, -1, 893, - 88, 1756, - -2, 2037, + 88, 1764, + -2, 2045, -1, 894, - 88, 1757, - -2, 2126, + 88, 1765, + -2, 2134, -1, 897, - 88, 1760, - -2, 2225, + 88, 1768, + -2, 2233, -1, 899, - 88, 1762, - -2, 2228, + 88, 1770, + -2, 2236, -1, 900, - 88, 1763, - -2, 2230, + 88, 1771, + -2, 2238, -1, 901, - 88, 1766, - -2, 2237, + 88, 1774, + -2, 2245, -1, 902, - 88, 1767, - -2, 2111, + 88, 1775, + -2, 2119, -1, 903, - 88, 1768, - -2, 2156, + 88, 1776, + -2, 2164, -1, 904, - 88, 1769, - -2, 2121, + 88, 1777, + -2, 2129, -1, 905, - 88, 1770, - -2, 2146, + 88, 1778, + -2, 2154, -1, 916, - 88, 1649, - -2, 2327, + 88, 1657, + -2, 2335, -1, 917, - 88, 1650, - -2, 2328, + 88, 1658, + -2, 2336, -1, 918, - 88, 1651, - -2, 2329, + 88, 1659, + -2, 2337, -1, 1024, - 492, 683, - 493, 683, - -2, 649, + 494, 686, + 495, 686, + -2, 652, -1, 1076, - 130, 1947, - 141, 1947, - 171, 1947, - -2, 1918, + 130, 1955, + 141, 1955, + 171, 1955, + -2, 1926, -1, 1197, - 24, 854, - -2, 801, + 24, 857, + -2, 804, -1, 1309, - 11, 825, - 24, 825, - -2, 1525, + 11, 828, + 24, 828, + -2, 1533, -1, 1394, - 24, 854, - -2, 801, + 24, 857, + -2, 804, -1, 1765, - 88, 1817, - -2, 2128, + 88, 1825, + -2, 2136, -1, 1766, - 88, 1818, - -2, 2129, + 88, 1826, + -2, 2137, -1, 2407, - 89, 1027, - -2, 1033, + 89, 1030, + -2, 1036, -1, 2423, - 113, 1204, - 158, 1204, - 205, 1204, - 208, 1204, - 298, 1204, - -2, 1197, + 113, 1212, + 158, 1212, + 205, 1212, + 208, 1212, + 298, 1212, + -2, 1205, -1, 2589, - 11, 825, - 24, 825, - -2, 968, + 11, 828, + 24, 828, + -2, 971, -1, 2623, - 89, 1904, - 172, 1904, - -2, 2113, + 89, 1912, + 172, 1912, + -2, 2121, -1, 2624, - 89, 1904, - 172, 1904, - -2, 2112, + 89, 1912, + 172, 1912, + -2, 2120, -1, 2625, - 89, 1880, - 172, 1880, - -2, 2099, + 89, 1888, + 172, 1888, + -2, 2107, -1, 2626, - 89, 1881, - 172, 1881, - -2, 2104, + 89, 1889, + 172, 1889, + -2, 2112, -1, 2627, - 89, 1882, - 172, 1882, - -2, 2025, + 89, 1890, + 172, 1890, + -2, 2033, -1, 2628, - 89, 1883, - 172, 1883, - -2, 2018, + 89, 1891, + 172, 1891, + -2, 2026, -1, 2629, - 89, 1884, - 172, 1884, - -2, 1935, + 89, 1892, + 172, 1892, + -2, 1943, -1, 2630, - 89, 1885, - 172, 1885, - -2, 2101, + 89, 1893, + 172, 1893, + -2, 2109, -1, 2631, - 89, 1886, - 172, 1886, - -2, 2023, + 89, 1894, + 172, 1894, + -2, 2031, -1, 2632, - 89, 1887, - 172, 1887, - -2, 2017, + 89, 1895, + 172, 1895, + -2, 2025, -1, 2633, - 89, 1888, - 172, 1888, - -2, 2005, + 89, 1896, + 172, 1896, + -2, 2013, -1, 2634, - 89, 1904, - 172, 1904, - -2, 2006, + 89, 1912, + 172, 1912, + -2, 2014, -1, 2635, - 89, 1904, - 172, 1904, - -2, 2007, + 89, 1912, + 172, 1912, + -2, 2015, -1, 2637, - 89, 1893, - 172, 1893, - -2, 2146, + 89, 1901, + 172, 1901, + -2, 2154, -1, 2638, - 89, 1870, - 172, 1870, - -2, 2131, + 89, 1878, + 172, 1878, + -2, 2139, -1, 2639, - 89, 1902, - 172, 1902, - -2, 2102, + 89, 1910, + 172, 1910, + -2, 2110, -1, 2640, - 89, 1902, - 172, 1902, - -2, 2130, + 89, 1910, + 172, 1910, + -2, 2138, -1, 2641, - 89, 1902, - 172, 1902, - -2, 1970, + 89, 1910, + 172, 1910, + -2, 1978, -1, 2642, - 89, 1900, - 172, 1900, - -2, 2121, + 89, 1908, + 172, 1908, + -2, 2129, -1, 2643, - 89, 1897, - 172, 1897, - -2, 1995, + 89, 1905, + 172, 1905, + -2, 2003, -1, 2644, - 88, 1851, - 89, 1851, - 161, 1851, - 162, 1851, - 164, 1851, - 172, 1851, - -2, 1934, - -1, 2645, - 88, 1852, - 89, 1852, - 161, 1852, - 162, 1852, - 164, 1852, - 172, 1852, - -2, 1936, - -1, 2646, - 88, 1853, - 89, 1853, - 161, 1853, - 162, 1853, - 164, 1853, - 172, 1853, - -2, 2174, - -1, 2647, - 88, 1855, - 89, 1855, - 161, 1855, - 162, 1855, - 164, 1855, - 172, 1855, - -2, 2103, - -1, 2648, - 88, 1857, - 89, 1857, - 161, 1857, - 162, 1857, - 164, 1857, - 172, 1857, - -2, 2081, - -1, 2649, 88, 1859, 89, 1859, 161, 1859, 162, 1859, 164, 1859, 172, 1859, - -2, 2024, - -1, 2650, + -2, 1942, + -1, 2645, + 88, 1860, + 89, 1860, + 161, 1860, + 162, 1860, + 164, 1860, + 172, 1860, + -2, 1944, + -1, 2646, 88, 1861, 89, 1861, 161, 1861, 162, 1861, 164, 1861, 172, 1861, - -2, 2001, + -2, 2182, + -1, 2647, + 88, 1863, + 89, 1863, + 161, 1863, + 162, 1863, + 164, 1863, + 172, 1863, + -2, 2111, + -1, 2648, + 88, 1865, + 89, 1865, + 161, 1865, + 162, 1865, + 164, 1865, + 172, 1865, + -2, 2089, + -1, 2649, + 88, 1867, + 89, 1867, + 161, 1867, + 162, 1867, + 164, 1867, + 172, 1867, + -2, 2032, + -1, 2650, + 88, 1869, + 89, 1869, + 161, 1869, + 162, 1869, + 164, 1869, + 172, 1869, + -2, 2009, -1, 2651, - 88, 1862, - 89, 1862, - 161, 1862, - 162, 1862, - 164, 1862, - 172, 1862, - -2, 2002, + 88, 1870, + 89, 1870, + 161, 1870, + 162, 1870, + 164, 1870, + 172, 1870, + -2, 2010, -1, 2652, - 88, 1864, - 89, 1864, - 161, 1864, - 162, 1864, - 164, 1864, - 172, 1864, - -2, 1933, + 88, 1872, + 89, 1872, + 161, 1872, + 162, 1872, + 164, 1872, + 172, 1872, + -2, 1941, -1, 2653, - 89, 1907, - 161, 1907, - 162, 1907, - 164, 1907, - 172, 1907, - -2, 1975, + 89, 1915, + 161, 1915, + 162, 1915, + 164, 1915, + 172, 1915, + -2, 1983, -1, 2654, - 89, 1907, - 161, 1907, - 162, 1907, - 164, 1907, - 172, 1907, - -2, 1991, + 89, 1915, + 161, 1915, + 162, 1915, + 164, 1915, + 172, 1915, + -2, 1999, -1, 2655, - 89, 1910, - 161, 1910, - 162, 1910, - 164, 1910, - 172, 1910, - -2, 1971, + 89, 1918, + 161, 1918, + 162, 1918, + 164, 1918, + 172, 1918, + -2, 1979, -1, 2656, - 89, 1910, - 161, 1910, - 162, 1910, - 164, 1910, - 172, 1910, - -2, 2040, + 89, 1918, + 161, 1918, + 162, 1918, + 164, 1918, + 172, 1918, + -2, 2048, -1, 2657, - 89, 1907, - 161, 1907, - 162, 1907, - 164, 1907, - 172, 1907, - -2, 2063, + 89, 1915, + 161, 1915, + 162, 1915, + 164, 1915, + 172, 1915, + -2, 2071, -1, 2890, - 113, 1204, - 158, 1204, - 205, 1204, - 208, 1204, - 298, 1204, - -2, 1198, + 113, 1212, + 158, 1212, + 205, 1212, + 208, 1212, + 298, 1212, + -2, 1206, -1, 2910, - 86, 745, - 172, 745, - -2, 1399, + 86, 748, + 172, 748, + -2, 1407, -1, 3347, - 208, 1204, - 322, 1488, - -2, 1460, - -1, 3551, - 113, 1204, - 158, 1204, - 205, 1204, - 208, 1204, - -2, 1340, - -1, 3554, - 113, 1204, - 158, 1204, - 205, 1204, - 208, 1204, - -2, 1340, - -1, 3566, - 86, 745, - 172, 745, - -2, 1399, - -1, 3587, - 208, 1204, - 322, 1488, - -2, 1461, - -1, 3752, - 113, 1204, - 158, 1204, - 205, 1204, - 208, 1204, - -2, 1341, - -1, 3778, - 89, 1302, - 172, 1302, - -2, 1204, - -1, 3926, - 89, 1302, - 172, 1302, - -2, 1204, - -1, 4099, - 89, 1306, - 172, 1306, - -2, 1204, - -1, 4154, - 89, 1307, - 172, 1307, - -2, 1204, + 208, 1212, + 322, 1496, + -2, 1468, + -1, 3552, + 113, 1212, + 158, 1212, + 205, 1212, + 208, 1212, + -2, 1348, + -1, 3555, + 113, 1212, + 158, 1212, + 205, 1212, + 208, 1212, + -2, 1348, + -1, 3567, + 86, 748, + 172, 748, + -2, 1407, + -1, 3588, + 208, 1212, + 322, 1496, + -2, 1469, + -1, 3755, + 113, 1212, + 158, 1212, + 205, 1212, + 208, 1212, + -2, 1349, + -1, 3781, + 89, 1310, + 172, 1310, + -2, 1212, + -1, 3946, + 89, 1310, + 172, 1310, + -2, 1212, + -1, 4129, + 89, 1314, + 172, 1314, + -2, 1212, + -1, 4176, + 89, 1315, + 172, 1315, + -2, 1212, } const yyPrivate = 57344 -const yyLast = 57171 +const yyLast = 57474 var yyAct = [...]int{ - 794, 770, 796, 4176, 4207, 2941, 226, 4199, 4103, 2044, - 1745, 1665, 3572, 3672, 4109, 3367, 3995, 4110, 4102, 3926, - 3333, 3973, 4018, 779, 2156, 4053, 3806, 3445, 3601, 3904, - 2935, 3871, 3964, 1345, 3446, 3925, 3996, 1508, 3740, 1809, - 3840, 824, 772, 1577, 2938, 2847, 1075, 659, 3895, 3974, - 3677, 1198, 3667, 3976, 3532, 1514, 1796, 3537, 2474, 3588, - 3759, 2913, 1989, 37, 678, 3342, 684, 684, 3749, 3754, - 1748, 3288, 684, 702, 711, 1192, 3303, 711, 3722, 3443, - 3264, 3030, 3555, 3054, 2143, 211, 3055, 2140, 3497, 3291, - 3524, 2964, 809, 144, 2158, 3053, 3362, 3557, 144, 1793, - 3344, 2181, 2105, 3050, 3351, 768, 2852, 2583, 3491, 1811, - 1792, 69, 1814, 2256, 723, 3122, 2213, 3428, 2619, 3083, - 2878, 2477, 3041, 3407, 3271, 2004, 1570, 3269, 3350, 719, - 3313, 2715, 3267, 2435, 3262, 728, 708, 3266, 1188, 2891, - 767, 762, 3265, 2375, 1483, 3228, 2290, 2252, 2374, 2240, - 2691, 1650, 1908, 2221, 2222, 1654, 955, 2673, 2136, 2214, - 2186, 2251, 690, 1687, 143, 144, 1658, 2584, 2109, 2567, - 36, 2106, 2966, 995, 1666, 1741, 2867, 2862, 1473, 2475, - 1655, 1643, 2034, 2562, 2905, 2434, 2946, 222, 8, 6, - 1440, 221, 7, 1069, 2423, 1965, 1136, 2617, 2286, 1739, - 2253, 1810, 659, 1617, 771, 2237, 1549, 1555, 2414, 1803, - 761, 677, 1214, 2377, 1744, 2470, 1586, 2003, 1497, 2785, - 780, 1779, 1730, 2417, 2220, 23, 226, 2217, 226, 1669, - 1127, 1128, 2202, 1961, 1517, 1624, 1068, 684, 716, 2591, - 658, 1738, 2563, 1554, 1033, 693, 769, 1493, 1964, 725, - 920, 1509, 212, 1815, 24, 1608, 1107, 994, 971, 25, - 1421, 17, 992, 710, 27, 10, 1518, 1551, 208, 204, - 16, 1019, 977, 1346, 726, 1416, 722, 922, 3983, 3892, - 14, 1392, 2260, 923, 2822, 2507, 2822, 2822, 15, 2593, - 1124, 3569, 2784, 1276, 1277, 1278, 1275, 3454, 1082, 3238, - 3320, 680, 3237, 144, 1276, 1277, 1278, 1275, 33, 3139, - 3138, 1123, 2270, 1125, 3711, 1193, 763, 1084, 144, 3540, - 144, 1276, 1277, 1278, 1275, 1194, 3438, 1931, 1417, 2738, - 2676, 2679, 1418, 2677, 1921, 1631, 2674, 707, 1627, 689, - 714, 1119, 1120, 703, 696, 210, 679, 2373, 1411, 1476, - 1477, 1478, 1553, 705, 1385, 3951, 2157, 943, 1102, 941, - 1120, 706, 1054, 3235, 2387, 1120, 2380, 1928, 685, 1420, - 1081, 3221, 1193, 3218, 3223, 3220, 1083, 4188, 1680, 2814, - 2812, 704, 1531, 1915, 1407, 1629, 1276, 1277, 1278, 1275, - 1276, 1277, 1278, 1275, 3665, 3118, 3116, 2191, 8, 3959, - 1118, 3847, 7, 3841, 3668, 3444, 2236, 1340, 3978, 2216, - 921, 2713, 3197, 2208, 763, 2515, 4213, 3972, 932, 4185, - 3855, 3970, 3879, 2816, 3502, 3853, 3515, 2765, 2394, 172, - 209, 65, 200, 171, 4029, 1594, 1426, 1425, 3500, 1424, - 1103, 943, 1422, 941, 1085, 1448, 721, 3195, 2268, 201, - 1465, 1939, 985, 1937, 986, 3048, 192, 942, 1997, 940, - 202, 911, 2612, 910, 912, 913, 2418, 914, 915, 1446, - 2611, 1246, 1527, 2846, 1248, 1528, 3881, 1731, 1273, 142, - 1735, 2842, 1079, 3090, 2598, 3091, 3092, 2597, 1080, 1253, - 2599, 2153, 1254, 966, 128, 939, 2120, 2121, 1943, 1944, - 1835, 2119, 1249, 205, 1734, 1432, 1556, 980, 1558, 976, - 1515, 1516, 2692, 1097, 1092, 1087, 1091, 1095, 1048, 1046, - 1256, 1047, 1678, 1042, 1513, 3337, 2864, 933, 1512, 1515, - 1516, 172, 209, 65, 200, 171, 2865, 3335, 2018, 1747, - 1505, 1100, 1677, 1266, 1271, 1090, 1078, 1077, 2844, 1050, - 3981, 4113, 4114, 3222, 3694, 3219, 2839, 3981, 4067, 3980, - 4066, 172, 209, 65, 200, 171, 172, 209, 65, 200, - 171, 3979, 4065, 3980, 1530, 958, 3979, 2362, 172, 209, - 65, 200, 171, 4137, 3447, 2863, 4074, 1995, 4055, 3447, - 151, 152, 3962, 153, 154, 1447, 1098, 3123, 155, 4055, - 1242, 156, 2843, 4180, 4181, 205, 1736, 4058, 3844, 866, - 2840, 1711, 3965, 3966, 3967, 3968, 1101, 3124, 1251, 3125, - 1055, 2719, 1203, 2272, 2985, 3992, 1244, 1630, 1628, 3463, - 1733, 2127, 1696, 3732, 1726, 205, 2137, 4076, 1247, 1250, - 205, 2817, 1751, 1088, 1209, 3525, 3530, 1051, 982, 983, - 975, 2849, 205, 172, 209, 65, 200, 171, 3613, 979, - 978, 1243, 170, 198, 207, 199, 126, 1099, 2870, 172, - 209, 65, 200, 171, 2264, 3284, 3282, 2131, 3161, 1252, - 967, 3042, 684, 684, 1831, 197, 191, 190, 2550, 2557, - 2413, 1828, 71, 684, 1202, 1830, 1827, 1829, 1833, 1834, - 974, 1269, 1270, 1832, 1089, 3883, 3884, 3693, 1053, 3458, - 150, 196, 3159, 711, 711, 3695, 684, 2269, 1940, 984, - 1938, 4112, 1268, 1241, 973, 1996, 2729, 205, 972, 3279, - 3280, 2513, 936, 757, 960, 1206, 759, 3666, 1245, 1529, - 2845, 758, 1542, 205, 1732, 3281, 1449, 3117, 2841, 2553, - 2554, 965, 1503, 193, 194, 195, 1255, 1130, 3036, 2151, - 2152, 708, 708, 708, 170, 198, 207, 199, 2552, 2815, - 1264, 1265, 3278, 3888, 1750, 1749, 3729, 3289, 963, 1317, - 3703, 1096, 2824, 1217, 1220, 1052, 1410, 197, 3982, 3891, - 144, 144, 144, 1082, 3466, 2560, 3165, 2821, 1212, 2614, - 3628, 1194, 203, 1201, 1263, 676, 3863, 937, 3864, 1479, - 1194, 3301, 1084, 2493, 4146, 3365, 983, 3366, 1093, 2473, - 2496, 1094, 3501, 138, 1195, 1194, 1202, 196, 3625, 139, - 3339, 1757, 1760, 1761, 3916, 1233, 2275, 2277, 2278, 964, - 3363, 3364, 1758, 3314, 4011, 1838, 1839, 1840, 1841, 1842, - 1843, 1836, 1837, 4006, 1221, 2906, 3908, 3243, 3504, 3140, - 944, 938, 3863, 2425, 3864, 1081, 1309, 713, 1349, 712, - 3137, 1083, 3866, 3046, 2259, 172, 209, 2495, 2420, 1120, - 3858, 3618, 1194, 140, 1120, 1084, 1120, 2295, 1120, 3229, - 3997, 1120, 4013, 3334, 1120, 3573, 64, 4019, 3276, 2271, - 2936, 2937, 3865, 2940, 2940, 3580, 3290, 3708, 3709, 3710, - 1492, 1428, 1258, 3369, 2675, 1259, 981, 2404, 1632, 3854, - 1104, 3877, 3717, 1086, 1049, 142, 3508, 1222, 3866, 1515, - 1516, 3252, 3882, 3835, 2494, 1350, 1413, 1415, 1081, 1419, - 2547, 1515, 1516, 1261, 1083, 66, 2525, 3629, 1311, 205, - 1430, 3991, 3797, 1436, 921, 2480, 970, 1439, 3865, 4219, - 3786, 1445, 707, 707, 707, 3511, 2813, 1196, 703, 703, - 703, 1390, 1197, 1080, 1395, 1423, 1226, 1227, 705, 705, - 705, 148, 206, 1190, 149, 3503, 706, 706, 706, 1418, - 1418, 1504, 1230, 62, 995, 1219, 1218, 1232, 2138, 935, - 2524, 1679, 1318, 1431, 3014, 3917, 704, 704, 704, 3680, - 2869, 1211, 3290, 1224, 3285, 709, 1397, 2876, 3162, 3043, - 709, 1313, 1314, 1315, 1316, 2614, 4075, 3909, 1208, 3733, - 1566, 2556, 709, 3510, 1565, 2986, 1231, 2987, 2988, 3792, - 1490, 1257, 1205, 1207, 1210, 3885, 985, 4202, 986, 684, - 1489, 2128, 4020, 1544, 1727, 959, 1511, 684, 957, 141, - 46, 659, 659, 1488, 2873, 2874, 63, 2545, 2546, 3896, - 5, 659, 659, 1507, 1506, 1581, 1581, 66, 684, 2872, - 1262, 3340, 66, 1721, 206, 3930, 1722, 3343, 1189, 145, - 146, 2264, 4101, 147, 66, 3217, 2516, 2130, 1759, 711, - 1609, 678, 1260, 2276, 2479, 3558, 1620, 709, 3663, 2481, - 1361, 1362, 1217, 1220, 1308, 1307, 3368, 3277, 2490, 1583, - 2473, 226, 1441, 709, 3085, 3087, 721, 4052, 1552, 3498, - 659, 1588, 3807, 3808, 3809, 3813, 3811, 3812, 3814, 3810, - 1427, 3859, 3450, 3359, 3033, 3975, 1485, 3363, 3364, 1442, - 1443, 949, 2725, 1457, 1452, 1453, 1454, 1455, 1456, 2603, - 1458, 1238, 2511, 2482, 2378, 2261, 1464, 2126, 2103, 66, - 3101, 3102, 1438, 1590, 2483, 3398, 1924, 690, 1543, 3164, - 1463, 1462, 1662, 1221, 1461, 66, 1460, 1667, 2424, 1056, - 715, 3518, 1396, 3360, 1676, 3492, 2548, 3859, 4203, 1575, - 1576, 3860, 2273, 2274, 1394, 2882, 2886, 2887, 2888, 2883, - 2885, 2884, 953, 144, 3799, 2405, 2983, 951, 950, 989, - 990, 991, 2707, 3788, 1709, 1470, 3929, 3787, 1712, 2836, - 2287, 1499, 1500, 987, 2397, 1451, 2399, 2398, 1581, 1435, - 1581, 1202, 1429, 1946, 1043, 1947, 1450, 956, 1686, 1237, - 1579, 1579, 1671, 2396, 1560, 1562, 1472, 1475, 1929, 1683, - 1945, 172, 209, 945, 1573, 1574, 2425, 3015, 3017, 3018, - 3019, 3016, 708, 3005, 3006, 708, 708, 1494, 1498, 1498, - 1498, 144, 4100, 1532, 1533, 2898, 3793, 3794, 144, 1720, - 2537, 1638, 952, 1519, 1433, 1434, 1522, 946, 949, 1706, - 1084, 144, 1494, 1494, 144, 144, 3086, 1084, 3760, 1581, - 1652, 1653, 1610, 984, 4221, 1703, 1704, 2484, 144, 1641, - 1199, 1644, 1645, 1633, 1219, 1218, 1202, 1813, 1923, 1675, - 4200, 4201, 4215, 1646, 1647, 2896, 1045, 3319, 1564, 1044, - 2489, 1862, 1844, 1845, 2487, 1848, 1660, 1595, 2855, 1589, - 1746, 1601, 1484, 1863, 689, 1115, 1116, 1117, 1657, 948, - 4062, 1661, 1607, 1621, 951, 950, 1870, 2581, 1872, 3834, - 1873, 1874, 1875, 1622, 1043, 1043, 2329, 2258, 1484, 2328, - 4209, 2856, 2857, 2258, 1274, 2899, 3451, 1743, 4197, 1114, - 3404, 4156, 1111, 2614, 1199, 1767, 1768, 1769, 1770, 1771, - 1772, 1773, 1774, 1775, 1776, 1777, 1778, 3400, 3361, 1202, - 3004, 1790, 1791, 1925, 1238, 2266, 1708, 2258, 2694, 3298, - 2510, 1932, 1762, 2912, 1933, 1707, 1935, 2911, 1906, 1728, - 684, 684, 1694, 1724, 1057, 1697, 3521, 1235, 1948, 1950, - 3465, 1951, 4124, 1953, 1954, 1847, 2367, 678, 1609, 4121, - 1689, 2416, 1740, 1962, 1581, 1967, 1968, 2724, 1970, 1544, - 684, 1871, 1274, 4210, 3373, 684, 1045, 1045, 1581, 1044, - 1044, 4157, 995, 707, 4157, 1990, 707, 707, 1909, 703, - 1718, 1274, 703, 703, 1797, 1714, 1737, 1717, 1581, 705, - 1719, 1713, 705, 705, 1544, 1861, 1716, 706, 4082, 702, - 706, 706, 2453, 3371, 2582, 2582, 1715, 3258, 2180, 4115, - 1852, 1853, 1854, 1742, 1729, 3227, 1236, 704, 1917, 2017, - 704, 704, 1781, 1868, 1236, 4125, 1869, 1274, 2024, 2024, - 3404, 1544, 4122, 1544, 1544, 1238, 4097, 684, 684, 4046, - 2091, 2724, 1962, 2096, 1883, 1884, 1581, 2100, 2101, 4045, - 1788, 1789, 2116, 1695, 659, 1391, 1698, 1699, 1912, 3299, - 1108, 1109, 1110, 1113, 1905, 1112, 3225, 4039, 659, 2582, - 1581, 1969, 4014, 797, 807, 2257, 4002, 3949, 2021, 2415, - 2912, 3104, 4081, 798, 1971, 799, 803, 806, 802, 800, - 801, 2901, 2305, 1276, 1277, 1278, 1275, 684, 1962, 1581, - 3948, 2163, 2818, 684, 684, 684, 719, 719, 2046, 925, - 926, 927, 928, 2173, 2174, 2175, 2176, 1876, 1877, 4098, - 2182, 3943, 1274, 3942, 1991, 2714, 2154, 226, 3941, 2699, - 226, 226, 1274, 226, 2257, 2118, 2466, 2372, 2094, 1958, - 1959, 1960, 1907, 2366, 2115, 2365, 2009, 1913, 804, 2452, - 2305, 1973, 1974, 1975, 1976, 2266, 2027, 3940, 1956, 4003, - 3950, 2178, 2016, 2146, 2147, 2019, 2020, 1238, 1966, 2337, - 2336, 3920, 2248, 1862, 1862, 2224, 2092, 2304, 3919, 805, - 2149, 2132, 1982, 2439, 3894, 1862, 1862, 2123, 1922, 2125, - 1926, 3634, 2242, 3582, 2102, 1930, 3547, 2165, 2166, 2167, - 2144, 2145, 1998, 1957, 2305, 1471, 2305, 1276, 1277, 1278, - 1275, 2305, 2190, 1800, 2162, 2193, 2194, 2139, 2196, 144, - 2026, 2010, 144, 144, 2235, 144, 1990, 1992, 1993, 1987, - 1581, 2255, 2005, 2015, 2007, 2008, 2000, 1986, 1567, 1671, - 2305, 4228, 3484, 3480, 2006, 3381, 4211, 2117, 2014, 3569, - 2028, 2029, 2226, 4078, 2266, 1494, 1276, 1277, 1278, 1275, - 2099, 2266, 3529, 2303, 708, 1082, 3824, 2305, 144, 1498, - 2023, 2025, 3108, 930, 2614, 2093, 3583, 1082, 2199, 3548, - 3080, 1498, 2914, 2827, 1084, 2803, 2727, 1084, 2249, 2791, - 2783, 2104, 2726, 144, 2098, 2740, 1084, 2722, 2708, 2231, - 2718, 2460, 2324, 2122, 2133, 2124, 2701, 2696, 2688, 1482, - 2309, 1291, 3193, 1740, 2686, 2684, 2682, 1491, 1276, 1277, - 1278, 1275, 2247, 2185, 1501, 3485, 3481, 2219, 3382, 2480, - 2483, 2160, 1520, 1521, 2438, 1523, 1524, 1081, 1525, 2219, - 2161, 2171, 2368, 1083, 2168, 2169, 1927, 4083, 4084, 1081, - 1276, 1277, 1278, 1275, 2344, 1083, 1691, 764, 1326, 2187, - 2343, 4079, 4080, 2582, 4087, 4086, 4085, 4088, 2439, 2480, - 2483, 2327, 1274, 1274, 3192, 1309, 1223, 3315, 1274, 2318, - 2439, 2697, 2204, 925, 926, 927, 928, 2317, 3632, 2702, - 2697, 2689, 2284, 2285, 1084, 1186, 2148, 2687, 2683, 2683, - 1181, 1990, 2316, 2306, 947, 2225, 2301, 2265, 1700, 3910, - 2234, 4007, 2232, 3324, 2246, 2292, 2291, 2439, 1637, 1636, - 1308, 1307, 2244, 3156, 2379, 2367, 2381, 1526, 2383, 2384, - 1294, 1295, 1296, 1297, 1298, 1291, 1495, 1274, 684, 1544, - 684, 1544, 2293, 1274, 1851, 1850, 4222, 1081, 1851, 1850, - 2400, 2250, 3684, 1083, 1274, 4008, 762, 2280, 3316, 684, - 684, 684, 1274, 2360, 3761, 707, 1592, 2307, 2263, 4184, - 1274, 703, 3561, 2484, 684, 684, 684, 684, 2479, 2473, - 2478, 705, 2476, 2481, 2279, 1274, 2305, 2436, 2288, 706, - 2266, 1701, 3559, 2508, 2468, 2674, 2440, 2441, 2442, 3911, - 2445, 1544, 3317, 1480, 1781, 2281, 1571, 1481, 3762, 704, - 3984, 3893, 2297, 2484, 1569, 3851, 3562, 1572, 2479, 2473, - 2478, 3790, 2476, 2481, 3789, 3245, 3775, 1544, 3736, 3539, - 1480, 2282, 2283, 3405, 1481, 3396, 3560, 2482, 3388, 1276, - 1277, 1278, 1275, 3912, 2502, 2245, 3383, 930, 3293, 3039, - 3439, 3038, 2188, 2338, 2339, 2880, 2341, 1496, 1889, 954, - 2823, 2737, 1882, 2348, 2391, 2700, 2393, 1299, 1300, 1292, - 1293, 1294, 1295, 1296, 1297, 1298, 1291, 2482, 3683, 2605, - 2385, 1121, 1122, 2229, 2228, 2227, 1126, 1467, 1466, 1787, - 2761, 2762, 1204, 2509, 1804, 2457, 3436, 2755, 2747, 2459, - 2668, 2461, 3109, 684, 2024, 1784, 1786, 1783, 1804, 1785, - 2298, 1952, 2586, 2586, 2116, 2586, 1278, 1275, 1568, 2369, - 4064, 2361, 2363, 2364, 1180, 1176, 1177, 1178, 1179, 1625, - 2760, 2188, 2759, 2758, 2756, 659, 659, 1275, 3802, 3801, - 2382, 3126, 2975, 1202, 2386, 2973, 2447, 2448, 2952, 1581, - 684, 2950, 2462, 3737, 3738, 1328, 2450, 2451, 1276, 1277, - 1278, 1275, 3781, 4218, 3730, 684, 2406, 3527, 1327, 2678, - 2472, 1202, 2658, 678, 2805, 2471, 2806, 4194, 3026, 1620, - 4193, 2116, 3024, 4192, 2664, 1349, 2666, 3022, 1866, 226, - 1289, 1299, 1300, 1292, 1293, 1294, 1295, 1296, 1297, 1298, - 1291, 2660, 2757, 1867, 4190, 4189, 2589, 4128, 3011, 4096, - 2465, 2600, 4095, 2601, 4009, 2848, 2590, 3945, 2446, 3933, - 2588, 3923, 2592, 3171, 3731, 1084, 3913, 3528, 4217, 2704, - 3842, 3764, 2606, 2607, 1276, 1277, 1278, 1275, 3025, 3763, - 2458, 3707, 3023, 3437, 2594, 2449, 3533, 3021, 2720, 3574, - 2455, 2255, 1350, 2456, 2485, 2486, 3563, 2491, 1581, 2616, - 1581, 3526, 1581, 1276, 1277, 1278, 1275, 1202, 3010, 3283, - 2621, 3152, 2749, 2115, 2669, 2739, 3121, 3120, 1081, 3009, - 2622, 144, 3008, 2663, 1083, 3007, 2999, 2993, 1498, 1292, - 1293, 1294, 1295, 1296, 1297, 1298, 1291, 2992, 2991, 2001, - 2002, 1276, 1277, 1278, 1275, 1581, 1202, 2555, 2990, 2561, - 2768, 1276, 1277, 1278, 1275, 3185, 2011, 2012, 2819, 2879, - 2670, 2690, 2661, 2602, 2609, 2775, 2595, 2371, 1560, 1562, - 1581, 1276, 1277, 1278, 1275, 2207, 2022, 2514, 2206, 1625, - 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2320, 2763, 2526, - 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, - 2613, 2538, 2539, 2540, 2541, 2542, 2610, 2543, 1276, 1277, - 1278, 1275, 2205, 2776, 2201, 2200, 2734, 1626, 3184, 2155, - 1936, 2825, 2662, 1934, 2659, 1692, 2829, 1409, 2831, 3538, - 2780, 2781, 3270, 3886, 3887, 684, 684, 2716, 2717, 1184, - 4214, 2712, 4212, 3673, 4182, 1276, 1277, 1278, 1275, 1202, - 4145, 2750, 4144, 2752, 4141, 4071, 1581, 2319, 4070, 1544, - 2736, 757, 1563, 2731, 759, 1544, 2096, 3872, 4050, 758, - 2745, 3994, 3741, 3988, 2910, 2730, 3969, 2777, 3960, 2766, - 2916, 2710, 3937, 2917, 1276, 1277, 1278, 1275, 3932, 3931, - 3890, 2723, 2809, 2721, 3876, 3874, 3843, 2728, 1183, 3783, - 3745, 2927, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1280, - 3734, 1202, 1740, 1276, 1277, 1278, 1275, 3719, 3718, 2949, - 1579, 2741, 2742, 4106, 3714, 3712, 1202, 1202, 1202, 2024, - 3706, 2897, 1202, 2892, 2959, 2960, 2961, 2962, 1202, 2969, - 2754, 2970, 2971, 3702, 2972, 1579, 2974, 2764, 2621, 3701, - 1276, 1277, 1278, 1275, 3698, 3697, 3671, 2969, 2622, 3699, - 144, 2894, 1276, 1277, 1278, 1275, 3669, 3687, 3641, 2586, - 144, 3638, 2907, 2810, 2744, 2774, 2046, 3636, 2928, 1084, - 3031, 3523, 3505, 3027, 2877, 3686, 1276, 1277, 1278, 1275, - 2893, 3493, 3477, 659, 1276, 1277, 1278, 1275, 3475, 2918, - 3469, 2096, 3416, 3394, 2930, 1202, 2116, 2116, 2116, 2116, - 2116, 2116, 1276, 1277, 1278, 1275, 3393, 3391, 3390, 3384, - 2944, 3379, 1202, 2116, 3378, 3294, 2586, 3256, 2859, 3255, - 2861, 3246, 3239, 3032, 2920, 2944, 2955, 2956, 2947, 2923, - 3234, 2958, 2947, 3232, 1581, 3088, 2858, 2965, 2376, 3166, - 4220, 2875, 3163, 2943, 3141, 684, 684, 3685, 3119, 2909, - 3095, 3020, 2900, 1279, 3012, 8, 3002, 2915, 2954, 7, - 1966, 1310, 1276, 1277, 1278, 1275, 2786, 2787, 3000, 2996, - 1320, 2995, 2792, 2994, 1276, 1277, 1278, 1275, 2929, 2932, - 2837, 2828, 2820, 2711, 2945, 2302, 3622, 2401, 2115, 2115, - 2115, 2115, 2115, 2115, 2389, 3076, 1329, 2951, 2948, 866, - 865, 226, 2957, 2388, 3056, 2115, 226, 3471, 2210, 2203, - 3044, 1920, 3089, 1276, 1277, 1278, 1275, 3188, 1919, 2989, - 1693, 3056, 2942, 2926, 1357, 1353, 3001, 1352, 1862, 2866, - 1862, 1187, 934, 3136, 1276, 1277, 1278, 1275, 4170, 2114, - 209, 4026, 200, 171, 1276, 1277, 1278, 1275, 4022, 3151, - 3868, 3867, 3105, 3856, 2300, 1581, 3852, 3034, 3158, 3700, - 3681, 3651, 3040, 1276, 1277, 1278, 1275, 3057, 3058, 3059, - 3060, 3061, 3062, 3554, 172, 209, 3037, 3553, 3073, 3551, - 3520, 3077, 3489, 3079, 3487, 3486, 3110, 172, 209, 3483, - 3131, 3114, 3078, 144, 3096, 3093, 3482, 3476, 144, 3474, - 3187, 2312, 3143, 3452, 3442, 683, 683, 3097, 3441, 3427, - 1909, 691, 3426, 205, 4169, 3135, 172, 209, 3325, 144, - 3260, 3257, 1652, 1653, 3142, 2981, 2982, 1276, 1277, 1278, - 1275, 144, 1276, 1277, 1278, 1275, 1645, 3130, 1084, 3224, - 2997, 2998, 3190, 3181, 3173, 3133, 1646, 1647, 205, 4127, - 1084, 3172, 3170, 1660, 2454, 3233, 3144, 3103, 3236, 3186, - 3112, 205, 3111, 684, 1544, 1657, 3035, 2685, 1661, 2681, - 3155, 3247, 3248, 3249, 3251, 3160, 3253, 3254, 3129, 2680, - 2349, 2802, 3132, 3134, 3127, 1202, 1276, 1277, 1278, 1275, - 205, 1202, 3146, 2801, 3148, 4038, 2342, 3273, 1276, 1277, - 1278, 1275, 3154, 2335, 3145, 2334, 2333, 3287, 1276, 1277, - 1278, 1275, 684, 2332, 3168, 2330, 2326, 3167, 2325, 2323, - 1276, 1277, 1278, 1275, 2314, 2311, 3304, 1202, 2310, 3183, - 684, 2209, 684, 1202, 1202, 172, 209, 1903, 3179, 3180, - 1902, 3177, 2116, 2436, 3176, 3323, 3178, 1901, 1865, 1290, + 794, 770, 4223, 796, 4198, 2941, 226, 4215, 1665, 2044, + 4133, 1745, 3573, 3675, 4139, 3631, 3368, 4140, 4132, 3946, + 779, 3333, 4050, 4005, 4095, 3602, 3446, 2156, 1577, 3809, + 3924, 2935, 3996, 1809, 3447, 772, 1345, 3891, 1741, 3945, + 3743, 3860, 4028, 2847, 824, 1198, 1508, 659, 1075, 3915, + 2938, 3670, 3680, 4006, 3538, 1514, 69, 1989, 3533, 4008, + 1796, 3342, 2913, 2474, 678, 1192, 684, 684, 3762, 3589, + 3752, 3288, 684, 702, 711, 3725, 1748, 711, 3303, 3757, + 3264, 3444, 1793, 3498, 3556, 211, 37, 3054, 3030, 3291, + 2143, 3525, 3055, 2964, 2140, 3362, 768, 3558, 3053, 2158, + 3344, 2105, 1811, 3050, 3351, 2852, 2583, 3492, 3429, 2181, + 1792, 3122, 1814, 2256, 723, 2619, 2213, 3083, 3408, 1570, + 2004, 3350, 2477, 3271, 2878, 3269, 3267, 3041, 728, 719, + 2435, 3266, 1188, 1666, 3262, 2891, 3313, 2715, 143, 2375, + 1654, 762, 1483, 3228, 2240, 767, 2290, 2109, 2374, 36, + 2691, 2222, 2221, 2214, 1908, 1687, 955, 1650, 2252, 708, + 2186, 2584, 2673, 3265, 2136, 1658, 1473, 1643, 2251, 2567, + 2106, 2867, 2862, 995, 2966, 2562, 2946, 2475, 2034, 2423, + 2905, 1655, 1965, 2286, 2617, 2253, 1136, 1810, 1739, 771, + 222, 8, 1617, 677, 1586, 2237, 1555, 1517, 221, 7, + 1549, 6, 659, 2414, 2470, 1497, 1069, 2434, 1803, 1779, + 2003, 761, 2417, 1214, 2785, 2377, 1730, 2220, 780, 2217, + 1669, 2202, 23, 1624, 1068, 716, 226, 2591, 226, 1738, + 1127, 1128, 1964, 1554, 1493, 1961, 2563, 684, 693, 1551, + 1608, 994, 1416, 1509, 920, 1815, 1033, 24, 25, 212, + 725, 17, 10, 658, 769, 971, 208, 1107, 710, 204, + 977, 726, 1084, 1392, 1479, 1346, 992, 1019, 722, 1421, + 922, 2260, 923, 1124, 3455, 763, 4015, 15, 2593, 3912, + 1744, 2822, 2822, 2822, 27, 1276, 1277, 1278, 1275, 1440, + 3570, 3320, 3238, 2784, 1276, 1277, 1278, 1275, 3237, 1276, + 1277, 1278, 1275, 3139, 16, 3138, 2270, 1193, 985, 1931, + 986, 1123, 3714, 1125, 1417, 3541, 1194, 2738, 1418, 1921, + 1120, 2676, 3439, 14, 1631, 680, 210, 679, 2373, 689, + 1411, 2679, 1553, 2677, 3983, 714, 2674, 1627, 1119, 1054, + 1385, 1518, 943, 941, 1081, 2157, 3235, 2387, 33, 966, + 706, 1120, 2380, 1928, 1120, 1083, 1420, 707, 1476, 1477, + 1478, 1193, 1102, 980, 3221, 976, 1680, 3223, 696, 3218, + 3220, 4210, 1531, 763, 1915, 2814, 2812, 703, 1407, 1629, + 1276, 1277, 1278, 1275, 1276, 1277, 1278, 1275, 3668, 3118, + 3116, 2191, 685, 3991, 3867, 3861, 705, 3671, 3445, 2236, + 1340, 8, 4010, 2216, 921, 2713, 3197, 2208, 1003, 7, + 2515, 3503, 1118, 4229, 4004, 932, 4207, 3875, 4002, 2816, + 3899, 704, 3873, 3516, 2765, 3501, 2394, 4061, 1422, 1594, + 1426, 958, 1425, 172, 209, 65, 200, 171, 1424, 943, + 941, 1085, 942, 940, 1103, 3195, 1448, 721, 172, 209, + 65, 200, 171, 911, 1465, 910, 912, 913, 2268, 914, + 915, 3048, 2418, 172, 209, 65, 200, 171, 2598, 3901, + 1446, 2597, 2846, 2611, 2599, 1079, 1273, 1080, 1997, 2842, + 999, 1000, 1939, 1527, 1937, 1731, 1528, 2612, 1735, 3091, + 3092, 1043, 2153, 2120, 2121, 1048, 1046, 1556, 1047, 1558, + 1253, 1943, 1944, 1254, 982, 3090, 975, 205, 1432, 2119, + 1678, 866, 1734, 1711, 1696, 979, 978, 1097, 1092, 1087, + 1091, 1095, 205, 2864, 933, 3337, 1050, 1505, 3335, 2692, + 1677, 1256, 2018, 2865, 1515, 1516, 967, 205, 1042, 1747, + 172, 209, 65, 200, 171, 1100, 3222, 2844, 3697, 1090, + 1271, 3219, 1266, 2507, 2839, 1078, 974, 1077, 4013, 172, + 209, 65, 200, 171, 172, 209, 65, 200, 171, 4013, + 4109, 4097, 4012, 1246, 4011, 984, 1248, 2362, 4167, 939, + 973, 4100, 2863, 1045, 972, 1530, 1044, 1513, 4012, 4108, + 960, 1512, 1515, 1516, 3994, 4116, 3123, 1055, 1447, 3864, + 1098, 4143, 4144, 2843, 1249, 3448, 1209, 965, 2719, 1995, + 2840, 4011, 4107, 1203, 205, 3448, 1736, 4202, 4203, 4097, + 1101, 1630, 1628, 2272, 1751, 1029, 1051, 3124, 4024, 3125, + 1206, 1251, 3464, 205, 1004, 2137, 963, 2817, 205, 2985, + 1733, 3997, 3998, 3999, 4000, 3526, 3735, 2127, 1726, 1088, + 2264, 3614, 3282, 3042, 3531, 2550, 3284, 983, 2849, 172, + 209, 1006, 1269, 1270, 2131, 2413, 170, 198, 207, 199, + 4118, 3459, 3161, 1099, 983, 2870, 3903, 3904, 3159, 1241, + 1268, 2729, 684, 684, 1217, 1220, 196, 1053, 2513, 197, + 3669, 2557, 1252, 684, 1202, 3117, 3036, 964, 1849, 2552, + 1212, 2553, 2554, 3696, 1242, 3279, 3280, 2614, 3908, 142, + 1089, 3698, 3278, 711, 711, 3732, 684, 3289, 3706, 2824, + 757, 3281, 2560, 759, 1276, 1277, 1278, 1275, 758, 2269, + 1244, 3630, 1263, 205, 676, 3339, 3971, 1028, 1026, 1503, + 1130, 2845, 1247, 1250, 3366, 1542, 3367, 1996, 2841, 1449, + 3301, 1940, 1529, 1938, 1732, 1221, 3314, 1084, 1750, 1749, + 3626, 4043, 2151, 2152, 1052, 1243, 1025, 2815, 4038, 1255, + 1410, 3364, 3365, 4142, 981, 3936, 2906, 3363, 998, 1317, + 3243, 1264, 1265, 2425, 708, 708, 708, 1096, 4014, 1005, + 1038, 3911, 3505, 3467, 3165, 2821, 1201, 1428, 3883, 3928, + 3884, 944, 1194, 1194, 3711, 3712, 3713, 713, 712, 3046, + 1034, 3502, 1835, 2420, 970, 3619, 936, 3229, 1195, 1194, + 1757, 1760, 1761, 4029, 1093, 4045, 1202, 1094, 3574, 4051, + 1084, 1758, 3334, 2940, 3581, 1233, 1430, 3512, 3276, 1081, + 2936, 2937, 1245, 2940, 2404, 1492, 1035, 1039, 3290, 3897, + 1083, 3720, 2480, 3140, 3883, 3509, 3884, 2275, 2277, 2278, + 3370, 1349, 3137, 3252, 3886, 2259, 1022, 2295, 1020, 1024, + 1042, 2547, 3878, 1194, 1021, 1018, 1017, 1120, 1023, 1008, + 1009, 1007, 1010, 1011, 1012, 1013, 1120, 1040, 1120, 1041, + 1120, 937, 1120, 1120, 3885, 2271, 1217, 1220, 1219, 1218, + 1036, 1037, 3632, 1049, 709, 3511, 4023, 1311, 3800, 985, + 2675, 986, 1081, 959, 1632, 1211, 957, 4235, 3874, 709, + 3886, 3855, 3290, 1083, 1222, 2876, 1104, 3902, 1350, 1086, + 2525, 1515, 1516, 2524, 1515, 1516, 1413, 1415, 1032, 1419, + 1566, 3795, 3683, 1224, 1031, 2614, 3937, 938, 3789, 921, + 3885, 2545, 2546, 1436, 1197, 1490, 1565, 1439, 1027, 1231, + 1196, 1445, 1080, 1423, 2813, 1390, 66, 1221, 1395, 3014, + 3929, 1226, 1227, 1418, 3504, 706, 706, 706, 1418, 1230, + 1504, 66, 707, 707, 707, 1489, 3340, 1721, 206, 1232, + 1722, 1679, 1208, 3043, 995, 1488, 709, 3285, 1831, 2138, + 1318, 2479, 703, 703, 703, 1828, 2481, 1190, 1431, 1830, + 1827, 1829, 1833, 1834, 3162, 709, 4052, 1832, 3905, 2869, + 709, 705, 705, 705, 1507, 1506, 1427, 4218, 3950, 1313, + 1314, 1315, 1316, 3916, 3343, 2556, 1030, 4117, 4131, 1189, + 3217, 2516, 1001, 1002, 3736, 996, 704, 704, 704, 684, + 997, 2473, 2986, 1544, 2987, 2988, 3559, 684, 66, 3277, + 2482, 659, 659, 3369, 3666, 1511, 1205, 1207, 1210, 2128, + 1727, 659, 659, 2873, 2874, 1581, 1581, 66, 684, 3364, + 3365, 1258, 66, 1441, 1259, 935, 2130, 1759, 2872, 1043, + 3101, 3102, 721, 172, 209, 2264, 2490, 4094, 2425, 711, + 1609, 678, 1361, 1362, 1583, 3451, 1620, 1552, 2424, 1450, + 1219, 1218, 1261, 1579, 1579, 1308, 1307, 2898, 3085, 3087, + 3499, 226, 3359, 3033, 2276, 1588, 2493, 2725, 1429, 2603, + 659, 2511, 2473, 2496, 3298, 3879, 2378, 1238, 2261, 4007, + 2126, 2103, 2405, 1438, 1485, 1924, 3399, 1457, 1816, 1817, + 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1838, + 1839, 1840, 1841, 1842, 1843, 1836, 1837, 2896, 3164, 3949, + 1463, 1462, 2483, 1543, 1461, 1460, 984, 1056, 4219, 715, + 1396, 1045, 1662, 3519, 1044, 3360, 1394, 1667, 3796, 3797, + 2495, 3879, 1575, 1576, 1676, 3880, 3810, 3811, 3812, 3816, + 3814, 3815, 3817, 3813, 2882, 2886, 2887, 2888, 2883, 2885, + 2884, 3791, 1257, 2548, 3802, 3790, 2983, 2899, 1499, 1500, + 2273, 2274, 3493, 1451, 1709, 1237, 2707, 987, 4130, 1712, + 1470, 2287, 3015, 3017, 3018, 3019, 3016, 2836, 1581, 2397, + 1581, 1202, 1686, 1043, 1946, 1084, 1435, 2494, 1442, 1443, + 1947, 1262, 1084, 1452, 1453, 1454, 1455, 1456, 956, 1458, + 1472, 2399, 2398, 949, 1482, 1464, 1475, 1560, 1562, 2396, + 1532, 1533, 1491, 1260, 3299, 1671, 1638, 1573, 1574, 1501, + 3005, 3006, 1683, 1929, 989, 990, 991, 1520, 1521, 1519, + 1523, 1524, 1522, 1525, 1610, 708, 1945, 1923, 708, 708, + 3086, 1433, 1434, 945, 2537, 1641, 946, 1644, 1645, 1581, + 4216, 4217, 1720, 2480, 2483, 2484, 1652, 1653, 2489, 1646, + 1647, 3763, 2487, 1675, 953, 1564, 1202, 1813, 4231, 951, + 950, 925, 926, 927, 928, 1045, 1633, 1589, 1044, 1844, + 1845, 1862, 1848, 1746, 689, 1660, 4237, 1797, 1601, 3452, + 1863, 2855, 1494, 1498, 1498, 1498, 1595, 1607, 4104, 1657, + 1484, 2911, 1661, 1870, 1621, 1872, 4225, 1873, 1874, 1875, + 1622, 2581, 1274, 3405, 1484, 2614, 3401, 1494, 1494, 1115, + 1116, 1117, 1925, 4244, 2856, 2857, 1767, 1768, 1769, 1770, + 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1743, 2416, + 3361, 1238, 1790, 1791, 952, 2694, 1043, 3522, 3466, 1202, + 2367, 2266, 2724, 1114, 1592, 1728, 1111, 3004, 1724, 2329, + 3374, 1932, 2328, 2901, 1933, 3854, 1935, 1762, 1057, 1694, + 684, 684, 1697, 2258, 3372, 2180, 3319, 1906, 1948, 1950, + 3258, 1951, 1689, 1953, 1954, 1847, 3227, 678, 1609, 4226, + 1199, 2510, 1871, 1962, 1581, 1967, 1968, 2484, 1970, 1544, + 684, 4213, 2479, 2473, 2478, 684, 2476, 2481, 1581, 1852, + 1853, 1854, 995, 1718, 1714, 1990, 1729, 1717, 1713, 2258, + 3225, 2582, 1868, 3104, 1909, 1869, 706, 1737, 1581, 706, + 706, 3832, 1861, 707, 1544, 930, 707, 707, 1045, 702, + 1742, 1044, 1236, 1883, 1884, 1274, 949, 4178, 1706, 2582, + 1719, 1917, 2582, 703, 2912, 1199, 703, 703, 1740, 2017, + 1781, 2482, 2912, 1905, 1703, 1704, 3405, 2415, 2024, 2024, + 1716, 1544, 705, 1544, 1544, 705, 705, 684, 684, 1235, + 2091, 4154, 1962, 2096, 4179, 4151, 1581, 2100, 2101, 1715, + 1912, 2818, 2116, 2714, 659, 4145, 2699, 704, 1788, 1789, + 704, 704, 2304, 1276, 1277, 1278, 1275, 948, 659, 4127, + 1581, 1969, 951, 950, 2453, 3831, 4088, 1695, 2021, 1971, + 1698, 1699, 2257, 1274, 1108, 1109, 1110, 1113, 2178, 1112, + 4179, 1238, 1276, 1277, 1278, 1275, 764, 684, 1962, 1581, + 4087, 2163, 2118, 684, 684, 684, 719, 719, 4071, 1876, + 1877, 1274, 2466, 2173, 2174, 2175, 2176, 2372, 2046, 3193, + 2182, 2366, 1991, 4046, 4155, 1708, 1236, 226, 4152, 1238, + 226, 226, 2365, 226, 1707, 2154, 1907, 2724, 2305, 1913, + 1956, 2094, 4034, 2337, 2009, 2336, 2248, 2149, 2303, 3530, + 2102, 2027, 4128, 1471, 1800, 1922, 1567, 1926, 2199, 1274, + 2016, 4227, 1930, 2019, 2020, 1276, 1277, 1278, 1275, 2092, + 2146, 2147, 3570, 1862, 1862, 2224, 1391, 3108, 3981, 2914, + 2123, 2132, 2125, 1274, 3980, 1862, 1862, 3963, 1957, 2827, + 3844, 2305, 2242, 2144, 2145, 2005, 2727, 2007, 2008, 2480, + 2483, 3962, 2165, 2166, 2167, 3635, 2266, 3961, 2010, 1986, + 2726, 2014, 2190, 1987, 2162, 2193, 2194, 2258, 2196, 2718, + 2015, 2452, 2460, 2000, 2148, 4035, 1990, 3960, 2139, 1084, + 1581, 2255, 1084, 2235, 1966, 1992, 1993, 2006, 1958, 1959, + 1960, 1084, 2226, 2028, 2029, 2324, 3828, 2309, 1982, 2247, + 1973, 1974, 1975, 1976, 2001, 2002, 1276, 1277, 1278, 1275, + 2117, 3982, 1671, 3940, 2023, 2025, 3324, 2439, 1998, 1291, + 2305, 2011, 2012, 1276, 1277, 1278, 1275, 2093, 2098, 2104, + 2185, 2171, 3939, 2249, 2305, 3914, 3637, 708, 797, 807, + 2305, 2022, 2133, 2122, 3583, 2124, 1927, 3548, 798, 2231, + 799, 803, 806, 802, 800, 801, 925, 926, 927, 928, + 2305, 1081, 3192, 1691, 3485, 3481, 3382, 3080, 1326, 2026, + 1121, 1122, 1083, 1081, 2219, 1126, 2099, 2803, 2161, 2301, + 1494, 2168, 2169, 2160, 1083, 2791, 2219, 2783, 1223, 1084, + 3833, 3834, 2740, 2484, 1498, 1495, 2266, 2187, 2479, 2473, + 2478, 2722, 2476, 2481, 3829, 3830, 1498, 3837, 3836, 3835, + 3838, 3839, 3840, 804, 2468, 2266, 2708, 3841, 2305, 2614, + 2701, 2204, 2696, 1186, 4238, 2257, 3437, 3584, 3842, 1740, + 3549, 2688, 2686, 2284, 2285, 2684, 2682, 1181, 2438, 2292, + 2291, 1637, 1636, 947, 805, 3687, 2225, 3486, 3482, 3383, + 2582, 1990, 4206, 2234, 2232, 2368, 2344, 2482, 2343, 2327, + 2439, 2318, 2317, 1308, 1307, 2246, 2280, 3156, 1274, 2244, + 1274, 1081, 3315, 2316, 2379, 1274, 2381, 2306, 2383, 2384, + 2674, 2265, 1083, 1700, 2439, 2508, 2747, 4039, 684, 1544, + 684, 1544, 2293, 1571, 1480, 2250, 1851, 1850, 1481, 2697, + 2400, 4016, 2307, 2702, 1572, 2697, 762, 2263, 2360, 684, + 684, 684, 3975, 3764, 2689, 2687, 1496, 3913, 2683, 2683, + 930, 2439, 3930, 2288, 684, 684, 684, 684, 706, 1851, + 1850, 4040, 2279, 1526, 3871, 707, 3826, 2436, 2367, 1274, + 1569, 1274, 1274, 2281, 1274, 1274, 2440, 2441, 2442, 3562, + 2445, 1544, 1781, 3316, 3793, 703, 1274, 3765, 3792, 3778, + 2305, 2297, 2338, 2339, 2266, 2341, 1701, 3739, 3540, 3560, + 3406, 3686, 2348, 3397, 705, 2668, 3389, 1544, 1289, 1299, + 1300, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1291, 2282, + 2283, 3245, 3384, 3563, 2502, 2188, 3293, 3317, 954, 704, + 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1291, 3039, 2391, + 1889, 2393, 3931, 3561, 1878, 1879, 1880, 1881, 3038, 2245, + 1885, 1886, 1887, 1888, 1890, 1891, 1892, 1893, 1894, 1895, + 1896, 1897, 1898, 1899, 1900, 2457, 1480, 2880, 3109, 2459, + 1481, 2461, 2823, 1882, 1568, 2509, 1294, 1295, 1296, 1297, + 1298, 1291, 2737, 684, 2024, 2700, 3932, 1787, 2605, 2369, + 2385, 2229, 2586, 2586, 2116, 2586, 2361, 2363, 2364, 2228, + 809, 144, 2227, 1784, 1786, 1783, 144, 1785, 1276, 1277, + 1278, 1275, 1467, 1466, 1204, 659, 659, 1804, 1804, 3440, + 2298, 1952, 2382, 1202, 2447, 2448, 2386, 2462, 4106, 1581, + 684, 1625, 1275, 2188, 2450, 2451, 1282, 1283, 1284, 1285, + 1286, 1287, 1288, 1280, 2472, 684, 3805, 2406, 3804, 2471, + 1084, 1202, 2658, 678, 1276, 1277, 1278, 1275, 1349, 1620, + 3126, 2116, 1278, 1275, 2664, 2678, 2666, 2609, 2975, 226, + 690, 2973, 2952, 144, 1276, 1277, 1278, 1275, 2465, 1276, + 1277, 1278, 1275, 3438, 2660, 2950, 3784, 1625, 2449, 4078, + 4079, 2446, 2805, 2455, 2806, 2590, 2456, 4158, 2600, 2588, + 2601, 2592, 1276, 1277, 1278, 1275, 4126, 2458, 3733, 2704, + 4234, 2749, 1276, 1277, 1278, 1275, 4125, 2594, 2320, 2606, + 2607, 2670, 1866, 2485, 2486, 1350, 2491, 3528, 2720, 2761, + 2762, 2255, 1081, 2621, 3965, 3966, 2755, 1867, 1581, 1328, + 1581, 3185, 1581, 1083, 2616, 3740, 3741, 1202, 1276, 1277, + 1278, 1275, 1327, 2622, 2669, 2739, 4081, 1626, 4080, 2454, + 3026, 4077, 2663, 1180, 1176, 1177, 1178, 1179, 3734, 2760, + 2879, 2759, 2758, 2756, 4076, 4233, 2716, 2717, 2730, 3024, + 2774, 4075, 2555, 2561, 2312, 1581, 1202, 3529, 2319, 4073, + 2768, 3171, 4072, 4041, 2848, 2595, 1276, 1277, 1278, 1275, + 2661, 3953, 3022, 3011, 3184, 2775, 1082, 3943, 3933, 3862, + 1581, 144, 3767, 2763, 3766, 1276, 1277, 1278, 1275, 1563, + 3025, 1560, 1562, 1579, 2610, 3710, 144, 3575, 144, 3564, + 2613, 1276, 1277, 1278, 1275, 3527, 3283, 3152, 2776, 3023, + 3534, 2757, 1279, 1498, 3121, 3120, 2659, 3009, 1579, 2734, + 1310, 2662, 1276, 1277, 1278, 1275, 3008, 4236, 3007, 1320, + 2999, 2825, 3021, 3010, 2780, 2781, 2829, 2993, 2831, 1276, + 1277, 1278, 1275, 2712, 4136, 684, 684, 1276, 1277, 1278, + 1275, 1276, 1277, 1278, 1275, 1329, 4230, 2992, 2991, 1202, + 2990, 2750, 2819, 2752, 2690, 2602, 1581, 2371, 2207, 1544, + 2736, 1276, 1277, 1278, 1275, 1544, 2096, 2206, 2777, 2205, + 2731, 2710, 2201, 2200, 2910, 2745, 2723, 2155, 2721, 1936, + 2916, 1934, 1692, 2917, 1409, 2766, 2728, 1299, 1300, 1292, + 1293, 1294, 1295, 1296, 1297, 1298, 1291, 757, 2809, 3539, + 759, 2927, 3270, 3906, 3907, 758, 2741, 2742, 4228, 3676, + 4204, 1202, 1184, 4171, 4113, 4112, 3892, 4092, 4026, 2949, + 3702, 3744, 4020, 4001, 1084, 4192, 1202, 1202, 1202, 2024, + 2754, 2621, 1202, 2764, 2959, 2960, 2961, 2962, 1202, 2969, + 3992, 2970, 2971, 2892, 2972, 3690, 2974, 1276, 1277, 1278, + 1275, 2622, 3970, 3969, 2897, 2907, 3957, 2969, 3952, 3951, + 3910, 3689, 3896, 3894, 2894, 2810, 4070, 3688, 2928, 2586, + 3863, 1183, 1276, 1277, 1278, 1275, 3786, 3748, 1740, 2877, + 3737, 3722, 2744, 3027, 3721, 2893, 2046, 2930, 1276, 1277, + 1278, 1275, 3717, 659, 1276, 1277, 1278, 1275, 3715, 2918, + 3709, 2096, 3705, 3704, 3701, 1202, 2116, 2116, 2116, 2116, + 2116, 2116, 3700, 2944, 3674, 3672, 2859, 3644, 2861, 3641, + 2302, 3639, 1202, 2116, 3031, 3524, 2586, 3506, 2944, 2955, + 2956, 3032, 2920, 2858, 2958, 3494, 3478, 2923, 2875, 2947, + 2965, 3476, 3088, 2947, 1581, 2514, 3470, 2900, 2517, 2518, + 2519, 2520, 2521, 2522, 2523, 684, 684, 2526, 2527, 2528, + 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 8, 2538, + 2539, 2540, 2541, 2542, 2943, 2543, 7, 2786, 2787, 2915, + 3417, 2909, 3395, 2792, 2929, 2932, 3394, 3392, 3391, 2954, + 3623, 3385, 2945, 3380, 3379, 4058, 2926, 2951, 1276, 1277, + 1278, 1275, 3294, 3256, 2957, 3472, 3255, 3056, 3246, 3076, + 2942, 226, 3239, 3234, 3232, 2376, 226, 1276, 1277, 1278, + 1275, 3166, 3163, 3141, 3056, 3044, 3188, 3119, 3095, 3089, + 3001, 2989, 1276, 1277, 1278, 1275, 1966, 3020, 1862, 3012, + 1862, 3002, 1619, 3136, 3187, 3105, 3000, 2996, 2995, 4054, + 2994, 2919, 2837, 1276, 1277, 1278, 1275, 2828, 2820, 3151, + 2924, 2925, 3034, 866, 865, 1581, 2711, 3040, 3158, 2401, + 3077, 1276, 1277, 1278, 1275, 2389, 3057, 3058, 3059, 3060, + 3061, 3062, 2388, 2210, 2203, 1920, 3186, 3079, 3073, 1919, + 3078, 2802, 1693, 1084, 1357, 1353, 3110, 1352, 1187, 3037, + 2801, 3114, 934, 172, 209, 1084, 3888, 2948, 3887, 3097, + 3096, 3876, 3093, 1276, 1277, 1278, 1275, 2800, 1276, 1277, + 1278, 1275, 2799, 3131, 172, 209, 1909, 1276, 1277, 1278, + 1275, 3135, 1645, 3872, 3703, 3143, 3684, 3654, 1652, 1653, + 3555, 3554, 1646, 1647, 1276, 1277, 1278, 1275, 3552, 1276, + 1277, 1278, 1275, 3142, 3521, 3133, 3490, 3488, 144, 144, + 144, 1082, 1660, 3487, 3484, 3233, 3144, 3483, 3236, 3477, + 3475, 3453, 3111, 684, 1544, 3112, 1657, 205, 4191, 1661, + 3155, 3247, 3248, 3249, 3251, 3160, 3253, 3254, 3127, 3132, + 3129, 2798, 3134, 3443, 3442, 1202, 172, 209, 205, 3148, + 3428, 1202, 3146, 2797, 3427, 3325, 3145, 3273, 3260, 3257, + 3224, 1752, 1753, 1754, 1755, 1756, 1673, 3287, 1276, 1277, + 1278, 1275, 684, 3154, 172, 209, 3190, 3167, 3181, 3168, + 1276, 1277, 1278, 1275, 1309, 3173, 3304, 1202, 3172, 3176, + 684, 3178, 684, 1202, 1202, 3183, 1670, 3170, 3179, 3180, + 2796, 3103, 2116, 2436, 1801, 3323, 2795, 3177, 1805, 1806, + 1807, 1808, 2685, 3174, 3175, 1835, 2681, 2680, 1846, 2349, + 1672, 3226, 2342, 2335, 3130, 2502, 1856, 1276, 1277, 1278, + 1275, 3297, 2334, 1276, 1277, 1278, 1275, 3349, 2794, 3352, + 2333, 3352, 3352, 1084, 3241, 1084, 1202, 3259, 205, 3300, + 2332, 1084, 3231, 2944, 2330, 3230, 209, 2866, 200, 171, + 2892, 2326, 2325, 2793, 3375, 1276, 1277, 1278, 1275, 3371, + 172, 209, 1581, 1581, 2323, 3307, 2314, 2790, 1084, 3327, + 1910, 3312, 3336, 3338, 2311, 3275, 2310, 2209, 1903, 2944, + 1276, 1277, 1278, 1275, 1902, 2944, 2944, 1901, 2114, 1865, + 3376, 3377, 1864, 3321, 1276, 1277, 1278, 1275, 3332, 1855, + 1579, 1579, 1593, 1591, 4157, 4086, 3296, 3347, 1347, 684, + 142, 3306, 4053, 209, 3987, 1081, 3273, 3310, 3311, 205, + 3984, 3318, 3959, 3322, 1397, 3954, 1083, 3857, 3856, 1544, + 3821, 3348, 2096, 2096, 205, 3357, 3803, 3799, 2944, 3777, + 2472, 3761, 3326, 2981, 2982, 2471, 3331, 3328, 3329, 3655, + 4068, 2789, 3353, 3354, 683, 683, 3198, 3199, 2997, 2998, + 691, 1994, 3200, 3201, 3202, 3203, 2788, 3204, 3205, 3206, + 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 1276, 1277, + 1278, 1275, 3652, 3373, 3035, 1202, 205, 2013, 3621, 2768, + 3620, 1831, 3617, 1276, 1277, 1278, 1275, 3441, 1828, 3358, + 2782, 3616, 1830, 1827, 1829, 1833, 1834, 3582, 3381, 3579, + 1832, 3577, 1290, 1289, 1299, 1300, 1292, 1293, 1294, 1295, + 1296, 1297, 1298, 1291, 3542, 3182, 1640, 1276, 1277, 1278, + 1275, 1651, 1642, 4066, 2771, 3402, 3403, 3390, 720, 3388, + 3387, 2331, 3386, 1656, 1659, 684, 2767, 1910, 3393, 3400, + 3396, 1648, 1910, 1910, 1474, 3067, 3028, 2953, 3413, 2903, + 3414, 1276, 1277, 1278, 1275, 2746, 2300, 2621, 2902, 2895, + 2860, 3330, 2804, 1276, 1277, 1278, 1275, 3404, 2695, 2604, + 3421, 1590, 2544, 2437, 2408, 690, 2407, 2622, 3424, 3425, + 3426, 2370, 1276, 1277, 1278, 1275, 1782, 205, 2170, 3420, + 3431, 1916, 2189, 1725, 1674, 2192, 1649, 1408, 2195, 1393, + 1389, 2197, 1388, 1387, 1386, 1385, 3496, 1384, 1383, 1382, + 2182, 144, 3355, 172, 209, 691, 1381, 3454, 1380, 1379, + 3507, 1378, 1377, 1376, 3457, 3513, 1375, 1374, 3458, 3456, + 1373, 3479, 1372, 1685, 1276, 1277, 1278, 1275, 3462, 3463, + 1799, 1371, 1838, 1839, 1840, 1841, 1842, 1843, 1836, 1837, + 1370, 1369, 3468, 3514, 1368, 1367, 1366, 2241, 1365, 1364, + 684, 2096, 1363, 1682, 3508, 1360, 3510, 1276, 1277, 1278, + 1275, 1359, 3547, 1358, 1356, 1355, 1354, 3500, 1351, 144, + 1344, 1343, 1341, 1340, 1339, 1338, 144, 1684, 1084, 2586, + 2116, 3567, 1337, 1336, 1335, 1084, 1334, 1333, 1332, 144, + 1331, 1330, 144, 144, 1325, 1324, 1323, 1322, 3495, 1321, + 3491, 1240, 3518, 1185, 3585, 4064, 144, 1202, 3520, 3497, + 3409, 3410, 3618, 2444, 2422, 3523, 3349, 1228, 4184, 4182, + 1202, 4141, 3412, 2881, 3517, 2615, 2212, 1239, 3075, 3065, + 3419, 3070, 3068, 1202, 3418, 3634, 3071, 3069, 3415, 1581, + 3064, 3657, 3074, 3063, 3546, 3072, 3569, 2576, 2577, 3535, + 4105, 3658, 4003, 3553, 3537, 127, 3782, 2294, 2709, 68, + 684, 2299, 2096, 2698, 67, 1468, 1202, 3636, 3150, 2308, + 3292, 3615, 1984, 1985, 1979, 1980, 1981, 1579, 3628, 2512, + 3345, 3566, 3346, 3460, 3461, 3565, 2693, 3608, 2977, 3572, + 3432, 2083, 3576, 1634, 3578, 2978, 2979, 2980, 1688, 226, + 2735, 3656, 2716, 2717, 3268, 2395, 2315, 1668, 2402, 3586, + 3648, 2172, 1202, 1234, 2322, 3261, 3627, 3645, 2931, 3624, + 3622, 2904, 3625, 2464, 3568, 686, 3633, 2432, 3660, 687, + 1988, 3944, 3638, 3571, 688, 2965, 1955, 2340, 1851, 1850, + 3640, 4195, 2345, 2346, 2347, 3642, 3643, 2350, 2351, 2352, + 2353, 2354, 2355, 2356, 2357, 2358, 2359, 3650, 3649, 3646, + 3647, 3956, 684, 1404, 1405, 1402, 1403, 3378, 3056, 1400, + 1401, 1398, 1399, 3719, 3682, 2558, 2551, 2097, 1535, 1534, + 1267, 2230, 3430, 1202, 3667, 1290, 1289, 1299, 1300, 1292, + 1293, 1294, 1295, 1296, 1297, 1298, 1291, 3423, 2403, 3677, + 3678, 2243, 1487, 1202, 1581, 1581, 1486, 1459, 1510, 3731, + 3304, 2733, 4164, 3716, 3056, 3718, 4162, 4119, 3730, 4102, + 2732, 4101, 3756, 4099, 4030, 3756, 3988, 3852, 3851, 3662, + 3772, 3673, 3746, 3480, 3450, 3449, 3745, 3435, 1202, 3771, + 1202, 2238, 1579, 1797, 3707, 2497, 3750, 3751, 2467, 3774, + 1690, 3776, 3434, 3679, 3107, 1484, 3153, 1581, 2833, 3729, + 4186, 4185, 3724, 3728, 2832, 3747, 3727, 3738, 2826, 1084, + 2313, 1225, 4185, 4186, 3699, 684, 3801, 1202, 1202, 3659, + 4168, 1202, 1202, 3726, 3557, 2944, 3760, 3147, 3749, 2426, + 3569, 3759, 1664, 2226, 1199, 1797, 213, 3, 1502, 3753, + 3823, 3770, 76, 2, 4208, 3825, 3780, 4209, 1, 3818, + 3807, 3808, 3615, 1990, 3819, 3820, 3849, 3787, 3783, 925, + 926, 927, 928, 2811, 1199, 1914, 1406, 929, 3608, 3858, + 3859, 924, 2115, 1557, 2596, 2150, 1585, 1918, 931, 3779, + 1746, 3081, 1746, 1581, 3082, 3422, 3084, 2838, 2262, 3785, + 683, 1191, 3045, 2549, 2412, 3846, 3286, 1469, 3845, 988, + 1857, 1200, 1705, 1216, 1702, 1215, 1213, 3889, 3768, 3769, + 3847, 3870, 1802, 811, 2215, 3029, 3882, 3003, 3848, 4194, + 1910, 1579, 1910, 3824, 1229, 4222, 4156, 4197, 1723, 795, + 3865, 4093, 3993, 4160, 3995, 3868, 2267, 3869, 1272, 3128, + 1015, 1910, 1910, 3893, 853, 3895, 822, 144, 1342, 3877, + 144, 144, 1681, 144, 3196, 3881, 3194, 821, 3532, 2871, + 3853, 3100, 3925, 3927, 3898, 3919, 1016, 2198, 3990, 3691, + 3866, 3692, 1635, 3775, 1639, 1619, 2463, 3935, 1202, 4049, + 2571, 2575, 2576, 2577, 2572, 2580, 2573, 2578, 3781, 3942, + 2574, 3948, 2579, 1082, 3341, 2939, 144, 3909, 1663, 4044, + 3580, 3695, 3693, 3694, 727, 1082, 3920, 2129, 3682, 657, + 3922, 1084, 3921, 1066, 3934, 3822, 2211, 2443, 3827, 3958, + 968, 144, 1202, 3938, 2703, 3515, 2706, 1290, 1289, 1299, + 1300, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1291, 2421, + 969, 3917, 961, 2890, 1581, 2889, 3955, 2564, 1763, 1281, + 1780, 3543, 3544, 3545, 3215, 3964, 3216, 1319, 3550, 3551, + 1290, 1289, 1299, 1300, 1292, 1293, 1294, 1295, 1296, 1297, + 1298, 1291, 3978, 766, 2296, 2868, 3603, 3094, 75, 74, + 1746, 73, 1579, 72, 2571, 2575, 2576, 2577, 2572, 2580, + 2573, 2578, 234, 813, 2574, 2748, 2579, 233, 2751, 4009, + 4022, 3890, 3742, 1309, 4089, 4199, 792, 3989, 791, 2769, + 2770, 790, 789, 788, 787, 2569, 2570, 2772, 2773, 2568, + 2566, 2565, 4017, 2111, 4018, 2110, 3106, 3433, 4031, 2177, + 4027, 2179, 3302, 2778, 2779, 2968, 3629, 2963, 2035, 2033, + 1548, 4019, 2492, 2499, 2032, 4138, 3469, 3685, 4059, 4060, + 3798, 3013, 3681, 4025, 1978, 2488, 4048, 2052, 2984, 2049, + 1202, 2048, 2976, 1752, 1910, 4033, 3794, 3788, 2080, 3923, + 3755, 3587, 4074, 3588, 3594, 2431, 4063, 4065, 4067, 4069, + 1581, 4042, 1135, 4083, 1131, 1133, 4047, 1134, 4090, 1132, + 3985, 3986, 4056, 4062, 2753, 3398, 2469, 3263, 2854, 2853, + 2851, 2850, 4091, 1444, 4021, 4115, 3723, 2620, 4082, 2618, + 1182, 3411, 3407, 1414, 1412, 2223, 3416, 3066, 1579, 2239, + 3773, 3149, 2112, 2108, 2107, 1106, 1105, 1616, 4098, 4096, + 3242, 3244, 45, 1581, 3047, 2559, 3925, 3900, 1983, 962, + 2419, 110, 4110, 41, 123, 109, 188, 3191, 4114, 2921, + 2922, 60, 4129, 4111, 187, 59, 121, 1538, 4137, 185, + 58, 4121, 4120, 104, 103, 1550, 4122, 120, 183, 57, + 218, 1579, 4123, 4124, 1290, 1289, 1299, 1300, 1292, 1293, + 1294, 1295, 1296, 1297, 1298, 1291, 1587, 217, 220, 219, + 216, 2671, 2672, 215, 4146, 4153, 4147, 4150, 4148, 1623, + 4149, 1290, 1289, 1299, 1300, 1292, 1293, 1294, 1295, 1296, + 1297, 1298, 1291, 4163, 214, 4165, 4166, 4103, 3758, 4085, + 1202, 4161, 4159, 919, 44, 43, 189, 4009, 42, 111, + 4169, 61, 40, 39, 38, 34, 13, 12, 35, 3948, + 22, 4170, 4174, 21, 1710, 20, 26, 32, 31, 4176, + 4177, 4175, 137, 4180, 136, 4183, 4193, 4181, 4201, 30, + 135, 4200, 4187, 4188, 4189, 4190, 134, 133, 132, 131, + 130, 129, 29, 19, 1202, 52, 51, 50, 4205, 49, + 48, 47, 9, 125, 124, 4211, 4048, 4212, 119, 3843, + 4214, 1910, 117, 28, 4220, 118, 115, 4224, 116, 114, + 4221, 113, 112, 107, 105, 1536, 1537, 87, 1539, 1540, + 1541, 86, 1545, 1546, 1547, 85, 100, 99, 4232, 98, + 97, 96, 4172, 95, 93, 94, 1014, 4201, 4240, 84, + 4200, 4239, 83, 82, 2589, 81, 80, 102, 108, 4224, + 4241, 106, 91, 1835, 101, 4245, 1596, 1597, 1598, 1599, + 1600, 92, 1602, 1603, 1604, 1605, 1606, 90, 89, 88, + 1612, 1613, 1614, 1615, 79, 78, 77, 169, 168, 167, + 166, 3113, 165, 3115, 163, 164, 1746, 162, 161, 160, + 159, 158, 157, 3592, 53, 54, 55, 56, 2743, 179, + 178, 180, 1910, 182, 184, 181, 186, 1910, 176, 174, + 177, 2115, 175, 173, 70, 11, 122, 18, 4, 144, + 0, 2241, 1290, 1289, 1299, 1300, 1292, 1293, 1294, 1295, + 1296, 1297, 1298, 1291, 3604, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3595, 0, 0, + 0, 0, 0, 0, 0, 0, 3169, 0, 3590, 0, + 0, 0, 0, 3612, 3613, 0, 0, 0, 0, 3591, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3967, 3968, 0, 2289, 0, 0, 0, 3972, + 3973, 3974, 0, 0, 0, 3976, 3977, 3596, 3979, 0, + 0, 0, 0, 0, 172, 209, 65, 200, 171, 1290, 1289, 1299, 1300, 1292, 1293, 1294, 1295, 1296, 1297, 1298, - 1291, 3226, 1864, 1855, 209, 2502, 1593, 3174, 3175, 3297, - 1591, 4044, 1347, 4021, 3955, 3952, 691, 3349, 2331, 3352, - 1849, 3352, 3352, 3939, 3934, 142, 1202, 2800, 3837, 3241, - 2892, 3836, 3307, 1619, 3259, 3818, 3231, 3230, 3312, 3300, - 2944, 3800, 4036, 2799, 3374, 3796, 3774, 3758, 3370, 205, - 3652, 3649, 1581, 1581, 1276, 1277, 1278, 1275, 3620, 1082, - 3275, 144, 3336, 3338, 3619, 3332, 3616, 144, 3615, 3327, - 1276, 1277, 1278, 1275, 2115, 2798, 2944, 205, 1084, 3581, - 1084, 3578, 2944, 2944, 3321, 3576, 1084, 3541, 3182, 1640, - 1651, 1642, 1656, 1659, 144, 3375, 3376, 1648, 1474, 684, - 3296, 3306, 1276, 1277, 1278, 1275, 3273, 3310, 3311, 3067, - 3028, 2953, 2903, 1084, 3347, 2902, 3322, 3318, 2895, 1544, - 2860, 3348, 2096, 2096, 2804, 3357, 2695, 172, 209, 2604, - 3331, 1081, 2544, 2437, 3326, 2944, 2472, 1083, 2408, 3328, - 3329, 2471, 2797, 2407, 2370, 3198, 3199, 1673, 1782, 3353, - 3354, 3200, 3201, 3202, 3203, 2796, 3204, 3205, 3206, 3207, - 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3372, 3358, 1276, - 1277, 1278, 1275, 205, 2170, 1202, 1916, 1670, 1725, 2768, - 2795, 1674, 1276, 1277, 1278, 1275, 1649, 3440, 2794, 1408, - 1393, 4034, 2793, 3380, 1389, 1388, 1387, 1386, 1385, 1384, - 1383, 1672, 1752, 1753, 1754, 1755, 1756, 1276, 1277, 1278, - 1275, 1382, 1381, 3355, 1380, 1276, 1277, 1278, 1275, 1276, - 1277, 1278, 1275, 1379, 1378, 3401, 3402, 1579, 1579, 1377, - 3387, 1376, 3386, 3392, 3389, 684, 3395, 1375, 1374, 3385, - 3924, 1373, 172, 209, 3399, 1801, 1372, 1371, 1370, 1805, - 1806, 1807, 1808, 3412, 720, 3413, 1369, 4032, 2790, 1846, - 1368, 1367, 1685, 1366, 1365, 1364, 1363, 1856, 1360, 3403, - 1359, 1358, 3420, 1356, 2621, 1355, 1354, 3423, 3424, 3425, - 1351, 1344, 1343, 1341, 2622, 1276, 1277, 1278, 1275, 1340, - 1339, 3419, 1682, 3430, 1290, 1289, 1299, 1300, 1292, 1293, - 1294, 1295, 1296, 1297, 1298, 1291, 3495, 1338, 1337, 1336, - 2182, 1335, 3075, 2789, 1334, 1333, 1684, 3453, 2788, 3617, - 3506, 1910, 1332, 1331, 1330, 3512, 2919, 2782, 1325, 3455, - 1324, 1323, 3457, 3456, 1322, 2924, 2925, 3478, 3461, 3462, - 1276, 1277, 1278, 1275, 1321, 1276, 1277, 1278, 1275, 1240, - 3513, 1302, 3467, 1306, 1276, 1277, 1278, 1275, 1185, 2444, - 684, 2096, 3408, 3409, 2422, 1228, 3507, 4162, 3509, 1303, - 1305, 1301, 3546, 1304, 1290, 1289, 1299, 1300, 1292, 1293, - 1294, 1295, 1296, 1297, 1298, 1291, 4160, 3499, 3418, 2586, - 2116, 3566, 2771, 4111, 3411, 3519, 2881, 2615, 2212, 1239, - 3070, 3068, 3522, 3654, 3065, 3071, 3069, 3417, 3414, 3494, - 3490, 3496, 1994, 3655, 3584, 3064, 3074, 1202, 3063, 1276, - 1277, 1278, 1275, 127, 144, 3072, 3349, 2576, 2577, 3517, - 1202, 144, 68, 4063, 3971, 3516, 67, 3779, 2013, 2709, - 2698, 1468, 1202, 1084, 3631, 1984, 1985, 3150, 1581, 3292, - 1084, 2767, 3459, 3460, 3534, 3568, 2746, 2512, 3345, 3545, - 3346, 683, 1191, 3653, 3536, 1979, 1980, 1981, 3552, 684, - 3627, 2096, 1200, 3431, 2083, 1202, 3614, 1634, 1276, 1277, - 1278, 1275, 2115, 1276, 1277, 1278, 1275, 3607, 1799, 2693, - 1688, 3633, 3565, 686, 2735, 1229, 3564, 2395, 1910, 3571, - 2716, 2717, 687, 1910, 1910, 1668, 688, 2402, 226, 2172, - 1234, 3575, 3268, 3577, 3261, 1276, 1277, 1278, 1275, 2931, - 2904, 1202, 3642, 2464, 2432, 3645, 3585, 3626, 1988, 3623, - 3621, 1955, 4173, 3630, 3635, 3936, 3567, 3377, 2558, 3624, - 1851, 1850, 1404, 1405, 3657, 3570, 2551, 3639, 3637, 1402, - 1403, 2965, 2097, 2189, 1535, 3640, 2192, 1400, 1401, 2195, - 3647, 3646, 2197, 3643, 1398, 1399, 3644, 1534, 1267, 2230, - 3429, 684, 3422, 2571, 2575, 2576, 2577, 2572, 2580, 2573, - 2578, 3679, 3716, 2574, 3056, 2579, 2403, 2977, 2243, 1487, - 1486, 1459, 1202, 3664, 2978, 2979, 2980, 1510, 4134, 3728, - 144, 2733, 4132, 4089, 3674, 4060, 4059, 3675, 3727, 4057, - 2732, 2743, 1202, 1581, 1581, 3998, 3956, 3832, 2241, 3304, - 3831, 3769, 3670, 1579, 3713, 3479, 3715, 3449, 3448, 3434, - 3056, 3753, 2238, 2497, 3753, 1290, 1289, 1299, 1300, 1292, - 1293, 1294, 1295, 1296, 1297, 1298, 1291, 1202, 3768, 1202, - 2467, 3742, 1690, 3542, 3543, 3544, 3743, 3771, 3704, 3773, - 3549, 3550, 3747, 3748, 3433, 3107, 1581, 1484, 4164, 4163, - 3744, 3726, 3725, 3724, 3153, 2833, 3735, 2832, 2826, 3659, - 2313, 1225, 4163, 4164, 684, 3750, 1202, 1202, 3721, 3798, - 1202, 1202, 3656, 3757, 3756, 3746, 4138, 3723, 3568, 3556, - 3147, 2944, 3767, 3676, 2426, 2564, 1664, 1199, 3820, 213, - 3, 1502, 2226, 76, 144, 3815, 3614, 3780, 2, 3777, - 1990, 4186, 3784, 3829, 3696, 3804, 3805, 3607, 2294, 3816, - 3817, 4187, 2299, 1084, 1, 2811, 3838, 3839, 1914, 1406, - 2308, 929, 2571, 2575, 2576, 2577, 2572, 2580, 2573, 2578, - 1581, 924, 2574, 3826, 2579, 1557, 1746, 3776, 1746, 2596, - 925, 926, 927, 928, 2150, 1199, 1585, 3782, 3825, 1918, - 931, 3081, 3082, 3421, 3869, 3084, 2838, 2315, 2262, 3765, - 3766, 3045, 3827, 2549, 2412, 2322, 3862, 3286, 1579, 1797, - 1469, 988, 1857, 3850, 1705, 1216, 1702, 1215, 3845, 1213, - 1802, 3821, 811, 2215, 3849, 3029, 3330, 3873, 2340, 3875, - 3003, 3828, 3857, 2345, 2346, 2347, 3861, 4172, 2350, 2351, - 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 1538, 3905, - 4206, 4126, 3899, 3878, 4175, 1723, 1550, 3688, 795, 3689, - 4051, 1797, 3772, 3961, 4130, 1202, 3963, 3848, 2267, 1272, - 3128, 1015, 853, 822, 1342, 3922, 1681, 1587, 3928, 3196, - 3889, 3194, 821, 3531, 2871, 3833, 3100, 3907, 1016, 2198, - 3958, 3900, 3846, 3679, 1635, 1639, 3902, 3901, 2463, 3915, - 4017, 3778, 3341, 2939, 3918, 3897, 1663, 3914, 4012, 1202, - 3579, 3692, 3690, 3691, 1581, 727, 1290, 1289, 1299, 1300, - 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1291, 2129, 657, - 3935, 1066, 3819, 2211, 144, 2443, 4077, 3938, 968, 3514, - 2421, 969, 961, 2890, 2889, 1579, 1763, 1281, 3944, 1780, - 3215, 3216, 1319, 1084, 766, 2296, 2868, 3946, 1290, 1289, - 1299, 1300, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1291, - 3990, 3602, 3977, 3094, 1746, 75, 3957, 74, 73, 72, - 234, 813, 233, 3870, 3739, 4047, 4177, 792, 791, 3985, - 790, 3986, 789, 788, 787, 2569, 2570, 2568, 3999, 2566, - 2565, 2111, 2110, 3106, 3822, 3432, 2177, 2179, 3823, 3302, - 2968, 2963, 2035, 3987, 2033, 1548, 2492, 2499, 2032, 4108, - 3468, 3993, 3682, 4027, 4028, 3795, 4016, 3013, 3678, 4001, - 1202, 1978, 2488, 2052, 2984, 2049, 2048, 2976, 1581, 3791, - 3785, 4041, 4010, 2080, 3903, 3752, 4048, 4031, 4033, 4035, - 4037, 3586, 4015, 3587, 3593, 2431, 1135, 1131, 1133, 4024, - 4049, 1134, 1132, 2753, 3397, 2469, 3263, 2854, 2853, 4030, - 2851, 1910, 2850, 1910, 1444, 3989, 4073, 3720, 2620, 2618, - 1182, 4040, 3410, 3406, 1414, 1412, 4056, 4054, 2223, 1579, - 3415, 1581, 1910, 1910, 3905, 3066, 2239, 4068, 3149, 2112, - 2108, 3953, 3954, 4072, 2107, 4069, 1106, 1105, 1616, 3242, - 4099, 3244, 45, 3047, 2559, 3880, 4107, 1983, 962, 4090, - 2419, 110, 41, 4092, 123, 109, 1619, 188, 60, 187, - 59, 121, 185, 3770, 4091, 58, 104, 4093, 4094, 103, - 120, 183, 57, 218, 217, 220, 4123, 219, 216, 4116, - 2671, 4117, 2672, 4118, 215, 4119, 1623, 214, 4120, 4061, - 3755, 4133, 4043, 4135, 4136, 919, 44, 43, 189, 42, - 4131, 4129, 111, 61, 40, 2703, 4139, 2706, 3977, 39, - 1202, 38, 34, 13, 12, 35, 4140, 1290, 1289, 1299, - 1300, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1291, 3928, - 3947, 4152, 22, 21, 1710, 20, 26, 32, 31, 4154, - 4155, 4153, 4158, 1579, 137, 4161, 4171, 4159, 4179, 136, - 4178, 30, 135, 4165, 4166, 4167, 4168, 134, 133, 1941, - 1942, 132, 131, 130, 129, 29, 19, 4191, 4183, 52, - 51, 50, 1202, 49, 48, 47, 2748, 9, 125, 2751, - 124, 119, 4195, 117, 4016, 4196, 4198, 28, 118, 1972, - 2769, 2770, 4204, 115, 1977, 4208, 1579, 116, 2772, 2773, - 114, 4205, 113, 112, 107, 105, 4000, 3591, 87, 86, - 85, 4004, 4005, 100, 2778, 2779, 99, 98, 97, 4150, - 96, 95, 4216, 93, 94, 1014, 84, 83, 82, 81, - 80, 4179, 4224, 4178, 4223, 102, 108, 106, 91, 101, - 92, 90, 4025, 4208, 1752, 1910, 4225, 89, 3603, 4229, - 88, 1536, 1537, 79, 1539, 1540, 1541, 78, 1545, 1546, - 1547, 3594, 77, 169, 168, 167, 2030, 2031, 166, 165, - 163, 164, 3589, 162, 161, 160, 159, 3611, 3612, 158, - 157, 1746, 53, 3590, 54, 55, 56, 179, 178, 180, - 182, 184, 1596, 1597, 1598, 1599, 1600, 181, 1602, 1603, - 1604, 1605, 1606, 186, 176, 174, 1612, 1613, 1614, 1615, - 177, 175, 173, 70, 11, 122, 18, 1003, 3191, 4, - 0, 3595, 0, 0, 0, 0, 2159, 0, 0, 0, - 2921, 2922, 2159, 2159, 2159, 0, 1878, 1879, 1880, 1881, - 0, 0, 1885, 1886, 1887, 1888, 1890, 1891, 1892, 1893, - 1894, 1895, 1896, 1897, 1898, 1899, 1900, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 172, 209, 65, - 200, 171, 1290, 1289, 1299, 1300, 1292, 1293, 1294, 1295, - 1296, 1297, 1298, 1291, 4142, 4143, 0, 201, 0, 999, - 1000, 4147, 4148, 4149, 192, 0, 0, 0, 202, 0, - 1043, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, - 0, 0, 0, 0, 0, 0, 3610, 0, 2478, 0, - 2289, 0, 128, 0, 0, 0, 0, 0, 0, 0, - 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3599, 1290, 1289, 1299, 1300, 1292, 1293, - 1294, 1295, 1296, 1297, 1298, 1291, 0, 0, 0, 0, - 0, 0, 1910, 0, 0, 3596, 3600, 3598, 3597, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1045, 0, 0, 1044, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3605, 3606, 151, 152, - 0, 153, 154, 0, 1029, 0, 155, 0, 0, 156, - 0, 0, 0, 1004, 0, 0, 0, 0, 0, 0, - 0, 0, 3113, 0, 3115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1006, 0, 0, 1910, 0, 0, 0, 0, 1910, 3613, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3592, 2241, 0, 3604, 0, 0, 0, 0, 0, - 170, 198, 207, 199, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 197, 191, 190, 0, 3169, 0, 0, - 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1028, 1026, 150, 0, - 0, 0, 3189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2390, 0, 2392, - 0, 2081, 0, 1025, 0, 0, 2042, 0, 0, 2089, - 0, 0, 0, 0, 0, 998, 0, 0, 2409, 2410, - 2411, 193, 194, 195, 0, 0, 1005, 1038, 0, 0, - 0, 0, 0, 2427, 2428, 2429, 2430, 0, 0, 2083, - 2051, 0, 0, 0, 0, 0, 0, 1034, 0, 2084, - 2085, 0, 0, 0, 0, 3609, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 203, 0, 0, 0, 0, 2050, 0, 0, 0, 0, - 0, 0, 0, 1035, 1039, 0, 0, 0, 0, 0, - 0, 138, 0, 2058, 0, 196, 0, 139, 0, 0, - 0, 0, 0, 1022, 0, 1020, 1024, 1042, 0, 0, - 0, 1021, 1018, 1017, 0, 1023, 1008, 1009, 1007, 1010, - 1011, 1012, 1013, 0, 1040, 0, 1041, 0, 0, 0, - 3608, 0, 0, 0, 0, 0, 2164, 1036, 1037, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3356, 1550, 0, 64, 0, 0, 0, 0, 0, - 0, 2074, 0, 0, 0, 1032, 0, 0, 0, 0, - 0, 1031, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1027, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1587, - 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2159, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2041, 2043, 2040, 0, 0, 2037, 148, - 206, 0, 149, 2062, 0, 0, 0, 0, 0, 0, - 0, 62, 0, 0, 2068, 0, 0, 0, 0, 0, - 0, 0, 2053, 1030, 2036, 0, 0, 0, 0, 1001, - 1002, 0, 996, 0, 2056, 2090, 0, 997, 2057, 2059, - 2061, 0, 2063, 2064, 2065, 2069, 2070, 2071, 2073, 2076, - 2077, 2078, 0, 0, 0, 0, 0, 0, 0, 2066, - 2075, 2067, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2045, 0, 0, 0, 0, 0, 141, 46, 0, - 0, 0, 0, 0, 63, 0, 0, 2081, 0, 0, - 0, 0, 2042, 0, 0, 2089, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2082, 145, 146, 0, - 0, 147, 0, 0, 0, 0, 1154, 0, 0, 0, - 0, 0, 0, 0, 0, 2083, 2051, 0, 0, 0, - 0, 0, 0, 0, 0, 2084, 2085, 0, 2038, 2039, - 0, 0, 0, 3470, 0, 0, 0, 0, 0, 0, - 3472, 3473, 0, 0, 0, 0, 2079, 0, 0, 0, - 0, 2050, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2055, 0, 0, 0, 2054, 0, 2058, - 0, 0, 0, 3488, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2072, 0, 0, 2834, 2835, 0, 0, 0, 0, - 2060, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2087, 2086, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2908, 0, 0, 0, 0, 1172, 1173, - 1139, 0, 0, 0, 1129, 0, 0, 2074, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1162, 1166, 1168, 1170, 1175, 2047, 1180, 1176, 1177, - 1178, 1179, 1154, 1157, 1158, 1159, 1160, 1137, 1138, 1163, - 0, 1140, 0, 1142, 1143, 1144, 1145, 1141, 1146, 1147, - 1148, 1149, 1150, 1153, 1155, 1151, 1152, 1161, 0, 0, - 0, 0, 0, 0, 0, 1165, 1167, 1169, 1171, 1174, - 0, 2088, 0, 0, 0, 0, 0, 0, 0, 2041, - 2934, 2040, 0, 0, 2933, 0, 0, 0, 0, 2062, - 0, 0, 0, 0, 0, 0, 0, 1910, 0, 0, - 2068, 0, 0, 0, 0, 1156, 0, 0, 0, 0, - 0, 0, 0, 1910, 0, 0, 3648, 0, 0, 3650, - 2056, 2090, 0, 0, 2057, 2059, 2061, 0, 2063, 2064, + 1291, 0, 0, 0, 201, 0, 0, 0, 0, 1831, + 0, 192, 0, 0, 0, 202, 1828, 0, 1941, 1942, + 1830, 1827, 1829, 1833, 1834, 0, 0, 0, 1832, 0, + 0, 0, 0, 0, 142, 0, 0, 2081, 0, 0, + 0, 172, 209, 65, 200, 171, 0, 0, 1972, 128, + 0, 0, 0, 1977, 4032, 0, 0, 0, 205, 4036, + 4037, 201, 0, 0, 0, 0, 0, 0, 192, 0, + 0, 0, 202, 0, 0, 2083, 0, 0, 0, 0, + 0, 0, 3611, 0, 2478, 0, 0, 0, 0, 0, + 4057, 142, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 128, 0, 0, 3600, + 0, 0, 0, 0, 0, 205, 0, 0, 0, 3947, + 0, 0, 0, 0, 0, 2030, 2031, 0, 144, 2058, + 3356, 3597, 3601, 3599, 3598, 0, 0, 0, 144, 0, + 0, 0, 0, 0, 0, 151, 152, 0, 153, 154, + 0, 0, 0, 155, 0, 0, 156, 0, 0, 1816, + 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, + 1838, 1839, 1840, 1841, 1842, 1843, 1836, 1837, 0, 0, + 0, 0, 3606, 3607, 0, 2159, 0, 0, 0, 0, + 0, 2159, 2159, 2159, 0, 0, 0, 0, 0, 0, + 0, 0, 151, 152, 0, 153, 154, 2074, 0, 0, + 155, 0, 0, 156, 0, 0, 0, 170, 198, 207, + 199, 126, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3614, 0, 0, + 197, 191, 190, 0, 0, 0, 0, 71, 0, 3593, + 0, 0, 3605, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 150, 2115, 2115, 2115, 2115, + 2115, 2115, 0, 0, 170, 198, 207, 199, 126, 0, + 0, 0, 0, 2115, 0, 0, 0, 0, 0, 2062, + 0, 0, 0, 0, 0, 0, 0, 197, 191, 190, + 2068, 0, 0, 0, 71, 0, 0, 0, 193, 194, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2056, 2090, 150, 0, 2057, 2059, 2061, 0, 2063, 2064, 2065, 2069, 2070, 2071, 2073, 2076, 2077, 2078, 0, 0, - 0, 3658, 0, 0, 0, 2066, 2075, 2067, 0, 0, - 0, 0, 0, 0, 0, 0, 1154, 2045, 0, 1794, - 1795, 0, 0, 0, 1172, 1173, 1139, 0, 0, 0, - 0, 0, 0, 0, 3098, 3099, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1162, 1166, 1168, - 1170, 1175, 2082, 1180, 1176, 1177, 1178, 1179, 0, 1157, + 2164, 0, 0, 0, 0, 2066, 2075, 2067, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, + 0, 0, 3471, 0, 0, 193, 194, 195, 0, 3473, + 3474, 144, 0, 0, 0, 0, 144, 0, 0, 0, + 138, 0, 0, 3610, 196, 0, 139, 0, 0, 0, + 0, 0, 2082, 0, 0, 0, 0, 144, 0, 1302, + 0, 1306, 3489, 0, 0, 0, 0, 0, 0, 144, + 0, 0, 0, 0, 0, 0, 203, 1303, 1305, 1301, + 0, 1304, 1290, 1289, 1299, 1300, 1292, 1293, 1294, 1295, + 1296, 1297, 1298, 1291, 0, 0, 0, 138, 0, 0, + 140, 196, 0, 139, 2079, 0, 0, 0, 0, 0, + 0, 0, 0, 64, 0, 0, 0, 0, 3609, 0, + 0, 2055, 0, 0, 0, 2054, 0, 0, 2081, 0, + 0, 0, 0, 2042, 0, 0, 2089, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2072, + 0, 0, 0, 0, 0, 0, 0, 140, 2060, 0, + 0, 0, 66, 0, 0, 0, 2083, 2051, 0, 0, + 64, 0, 0, 0, 0, 0, 2084, 2085, 0, 0, + 0, 0, 0, 0, 0, 0, 2390, 0, 2392, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 148, 206, + 0, 149, 2050, 0, 0, 0, 0, 2409, 2410, 2411, + 62, 0, 2081, 0, 0, 0, 0, 0, 0, 66, + 2058, 0, 2427, 2428, 2429, 2430, 0, 1910, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1910, 0, 0, 3651, 0, 0, 3653, + 2083, 0, 0, 0, 0, 148, 206, 1082, 149, 144, + 0, 0, 0, 0, 0, 144, 0, 62, 0, 0, + 0, 3661, 2115, 0, 0, 0, 141, 46, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 5, 0, 0, + 0, 0, 144, 0, 0, 0, 0, 0, 2074, 0, + 0, 0, 0, 0, 2058, 0, 145, 146, 0, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 141, 46, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1550, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 145, 146, 0, 0, 147, 0, 0, + 2041, 2043, 2040, 0, 0, 2037, 0, 0, 3918, 0, + 2062, 0, 2074, 0, 0, 0, 0, 0, 0, 0, + 0, 2068, 0, 0, 0, 0, 0, 0, 1587, 2053, + 0, 2036, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2056, 2090, 2159, 0, 2057, 2059, 2061, 0, 2063, + 2064, 2065, 2069, 2070, 2071, 2073, 2076, 2077, 2078, 0, + 0, 0, 0, 0, 0, 0, 2066, 2075, 2067, 0, + 0, 0, 2081, 0, 0, 0, 0, 2042, 2045, 0, + 2089, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2068, 0, 0, 0, 0, + 2083, 2051, 0, 2082, 0, 0, 0, 0, 0, 0, + 2084, 2085, 0, 0, 0, 2056, 2090, 0, 0, 2057, + 2059, 2061, 0, 2063, 2064, 2065, 2069, 2070, 2071, 2073, + 2076, 2077, 2078, 0, 0, 0, 2050, 2038, 2039, 0, + 2066, 2075, 2067, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2058, 2079, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2055, 0, 0, 0, 2054, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2082, 0, 0, + 0, 0, 0, 0, 739, 738, 745, 735, 0, 0, + 2072, 0, 0, 0, 0, 0, 0, 742, 743, 2060, + 744, 748, 0, 0, 729, 0, 0, 0, 0, 0, + 0, 0, 2087, 2086, 753, 0, 0, 0, 0, 0, + 0, 0, 2074, 0, 0, 0, 0, 0, 0, 2079, + 0, 0, 144, 0, 0, 0, 0, 0, 0, 144, + 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, + 2054, 0, 0, 2834, 2835, 0, 0, 0, 0, 0, + 757, 0, 0, 759, 0, 2047, 0, 0, 758, 0, + 0, 0, 0, 0, 2072, 0, 0, 0, 0, 0, + 0, 0, 0, 2060, 0, 0, 0, 0, 0, 0, + 2115, 0, 2908, 0, 2041, 2934, 2040, 0, 0, 2933, + 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, + 2088, 0, 0, 0, 0, 2068, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1329, 0, 2056, 2090, 0, 0, 2057, + 2059, 2061, 0, 2063, 2064, 2065, 2069, 2070, 2071, 2073, + 2076, 2077, 2078, 0, 0, 0, 0, 0, 0, 0, + 2066, 2075, 2067, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2045, 0, 1154, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4055, 0, 0, 0, 0, 0, 2082, 0, 144, + 0, 0, 0, 0, 0, 0, 730, 732, 731, 0, + 0, 0, 0, 0, 0, 0, 0, 737, 0, 0, + 0, 0, 0, 0, 739, 738, 745, 735, 0, 741, + 0, 2038, 2039, 0, 0, 0, 756, 742, 743, 0, + 744, 748, 0, 734, 729, 0, 0, 724, 0, 2079, + 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, + 0, 0, 1154, 3098, 3099, 0, 2055, 0, 0, 0, + 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4134, 1794, 1795, 0, 2072, 0, 1172, 1173, 1139, 0, + 0, 0, 0, 2060, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 144, 0, 0, 2087, 2086, 0, 1162, + 1166, 1168, 1170, 1175, 0, 1180, 1176, 1177, 1178, 1179, + 0, 1157, 1158, 1159, 1160, 1137, 1138, 1163, 0, 1140, + 0, 1142, 1143, 1144, 1145, 1141, 1146, 1147, 1148, 1149, + 1150, 1153, 1155, 1151, 1152, 1161, 0, 0, 0, 0, + 0, 0, 0, 1165, 1167, 1169, 1171, 1174, 4134, 2047, + 0, 0, 0, 736, 740, 746, 0, 747, 749, 0, + 0, 750, 751, 752, 0, 0, 754, 755, 0, 0, + 0, 0, 0, 0, 1172, 1173, 1139, 0, 0, 1154, + 1129, 0, 0, 1156, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2088, 0, 4134, 1162, 1166, 1168, + 1170, 1175, 0, 1180, 1176, 1177, 1178, 1179, 0, 1157, 1158, 1159, 1160, 1137, 1138, 1163, 0, 1140, 0, 1142, 1143, 1144, 1145, 1141, 1146, 1147, 1148, 1149, 1150, 1153, - 1155, 1151, 1152, 1161, 2038, 2039, 0, 0, 0, 0, - 0, 1165, 1167, 1169, 1171, 1174, 0, 0, 0, 0, - 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2055, - 0, 0, 0, 2054, 0, 739, 738, 745, 735, 0, - 0, 1156, 0, 1276, 1277, 1278, 1275, 0, 742, 743, - 0, 744, 748, 0, 0, 729, 0, 2072, 1172, 1173, - 1139, 0, 0, 0, 0, 753, 2060, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2087, - 2086, 1162, 1166, 1168, 1170, 1175, 0, 1180, 1176, 1177, - 1178, 1179, 0, 1157, 1158, 1159, 1160, 1137, 1138, 1163, - 0, 1140, 0, 1142, 1143, 1144, 1145, 1141, 1146, 1147, - 1148, 1149, 1150, 1153, 1155, 1151, 1152, 1161, 0, 0, - 0, 739, 738, 745, 735, 1165, 1167, 1169, 1171, 1174, - 0, 1835, 2047, 0, 742, 743, 0, 744, 748, 0, - 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3240, 0, 0, 1156, 739, 738, 745, 735, - 0, 0, 0, 0, 1164, 0, 0, 2088, 0, 742, - 743, 0, 744, 748, 0, 0, 729, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 753, 757, 0, 0, - 759, 0, 0, 0, 0, 758, 0, 0, 0, 0, - 0, 3295, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3308, - 0, 3309, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 757, 0, 0, 759, 0, 0, 0, 0, - 758, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 730, 732, 731, - 0, 0, 0, 0, 0, 0, 0, 0, 737, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 741, 0, 0, 0, 0, 0, 0, 756, 0, 0, - 0, 0, 0, 0, 734, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1831, 0, 0, 0, 0, - 0, 0, 1828, 0, 0, 0, 1830, 1827, 1829, 1833, - 1834, 0, 0, 0, 1832, 0, 0, 0, 0, 0, - 1164, 0, 0, 0, 1329, 0, 0, 0, 0, 0, - 0, 0, 0, 730, 732, 731, 0, 0, 2159, 0, - 0, 0, 0, 0, 737, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, - 0, 0, 0, 756, 0, 0, 0, 0, 0, 0, - 734, 0, 0, 0, 724, 0, 0, 0, 730, 732, - 731, 0, 0, 0, 0, 0, 0, 0, 0, 737, - 0, 0, 4023, 0, 0, 0, 0, 0, 0, 0, - 0, 741, 0, 0, 0, 0, 0, 0, 756, 0, - 0, 0, 736, 740, 746, 734, 747, 749, 0, 0, - 750, 751, 752, 0, 0, 754, 755, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1164, 1816, 1817, 1818, 1819, 1820, - 1821, 1822, 1823, 1824, 1825, 1826, 1838, 1839, 1840, 1841, - 1842, 1843, 1836, 1837, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3464, 0, 0, 0, 0, 4104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 736, 740, - 746, 0, 747, 749, 0, 0, 750, 751, 752, 0, - 0, 754, 755, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1155, 1151, 1152, 1161, 0, 0, 730, 732, 731, 0, + 0, 1165, 1167, 1169, 1171, 1174, 0, 737, 0, 0, + 0, 0, 0, 0, 0, 4243, 0, 0, 0, 741, + 0, 3240, 0, 0, 0, 0, 756, 0, 0, 0, + 0, 0, 0, 734, 0, 0, 0, 0, 0, 0, + 0, 1156, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3295, 1172, 1173, 1139, 0, 0, 0, 0, 0, 733, + 0, 0, 0, 0, 0, 0, 0, 0, 3308, 0, + 3309, 0, 0, 0, 1162, 1166, 1168, 1170, 1175, 0, + 1180, 1176, 1177, 1178, 1179, 0, 1157, 1158, 1159, 1160, + 1137, 1138, 1163, 0, 1140, 0, 1142, 1143, 1144, 1145, + 1141, 1146, 1147, 1148, 1149, 1150, 1153, 1155, 1151, 1152, + 1161, 0, 0, 0, 0, 0, 0, 0, 1165, 1167, + 1169, 1171, 1174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 736, 740, 746, 0, 747, 749, 0, - 0, 750, 751, 752, 0, 0, 754, 755, 0, 4104, + 0, 750, 751, 752, 0, 0, 754, 755, 1156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 829, 0, 0, 0, 0, 0, 0, 0, 2159, - 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, - 0, 0, 0, 0, 781, 4104, 0, 0, 348, 0, - 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, - 360, 552, 553, 554, 524, 555, 525, 556, 557, 820, - 580, 531, 446, 397, 0, 597, 0, 0, 890, 898, - 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, - 0, 0, 0, 773, 733, 0, 810, 866, 865, 797, - 807, 0, 0, 317, 232, 526, 645, 528, 527, 798, - 4227, 799, 803, 806, 802, 800, 801, 0, 881, 0, - 0, 0, 0, 0, 0, 765, 777, 0, 782, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2159, 733, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 774, 775, 0, 0, 0, 0, 830, 0, - 776, 0, 0, 0, 0, 0, 447, 475, 0, 487, - 0, 371, 372, 825, 804, 808, 0, 0, 0, 0, - 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, - 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, - 432, 346, 362, 343, 410, 805, 828, 832, 342, 904, - 826, 480, 309, 0, 479, 409, 466, 471, 395, 388, - 0, 308, 468, 393, 387, 375, 352, 905, 376, 377, - 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, - 3705, 0, 0, 508, 509, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, - 823, 0, 642, 0, 482, 0, 0, 888, 0, 0, - 0, 452, 0, 0, 378, 0, 0, 0, 827, 0, - 435, 415, 901, 0, 0, 433, 383, 467, 424, 473, - 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, - 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, - 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, - 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, - 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, - 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, - 310, 0, 0, 3803, 340, 324, 326, 327, 325, 418, - 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, - 540, 503, 594, 537, 541, 542, 369, 605, 1859, 1858, - 1860, 494, 379, 380, 0, 351, 350, 392, 304, 357, - 296, 297, 667, 885, 411, 607, 640, 641, 533, 0, - 900, 880, 882, 883, 887, 891, 892, 893, 894, 895, - 897, 899, 903, 666, 0, 587, 601, 670, 600, 663, - 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, - 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, - 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, - 623, 902, 568, 545, 571, 486, 548, 547, 0, 0, - 582, 831, 583, 584, 401, 402, 403, 404, 889, 608, - 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, - 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, - 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, - 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, - 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, - 436, 319, 474, 445, 389, 562, 589, 911, 884, 910, - 912, 913, 909, 914, 915, 896, 786, 0, 838, 839, - 907, 906, 908, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, - 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, - 339, 664, 660, 465, 665, 793, 298, 539, 382, 427, - 355, 603, 604, 0, 655, 873, 846, 847, 848, 783, - 849, 843, 844, 784, 845, 874, 836, 870, 871, 812, - 840, 850, 869, 851, 872, 875, 876, 916, 917, 857, - 841, 261, 918, 854, 877, 868, 867, 852, 837, 878, - 879, 819, 814, 855, 856, 842, 861, 862, 863, 785, - 833, 834, 835, 858, 859, 815, 816, 817, 818, 0, - 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, - 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, - 0, 643, 644, 646, 648, 864, 650, 450, 451, 656, - 0, 860, 653, 654, 651, 386, 437, 456, 444, 829, - 668, 529, 530, 669, 639, 0, 778, 0, 413, 0, - 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, - 0, 0, 781, 0, 0, 0, 348, 1911, 0, 381, - 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, - 553, 554, 524, 555, 525, 556, 557, 820, 580, 531, - 446, 397, 0, 597, 0, 0, 890, 898, 0, 0, - 0, 0, 0, 0, 0, 0, 886, 0, 2141, 0, - 0, 773, 0, 0, 810, 866, 865, 797, 807, 0, - 0, 317, 232, 526, 645, 528, 527, 798, 0, 799, - 803, 806, 802, 800, 801, 0, 881, 0, 0, 0, - 0, 0, 0, 765, 777, 0, 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 774, 775, 0, 0, 0, 0, 830, 0, 776, 0, - 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, - 372, 2142, 804, 808, 0, 0, 0, 0, 305, 453, - 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, - 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, - 362, 343, 410, 805, 828, 832, 342, 904, 826, 480, - 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, - 468, 393, 387, 375, 352, 905, 376, 377, 366, 422, - 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, - 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 638, 823, 0, - 642, 0, 482, 0, 0, 888, 0, 0, 0, 452, - 0, 0, 378, 0, 0, 0, 827, 0, 435, 415, - 901, 0, 0, 433, 383, 467, 424, 473, 454, 481, - 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, - 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, - 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, - 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, - 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, - 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, - 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, - 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, - 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, - 379, 380, 0, 351, 350, 392, 304, 357, 296, 297, - 667, 885, 411, 607, 640, 641, 533, 0, 900, 880, - 882, 883, 887, 891, 892, 893, 894, 895, 897, 899, - 903, 666, 0, 587, 601, 670, 600, 663, 417, 0, - 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, - 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, - 506, 624, 625, 626, 627, 628, 629, 630, 623, 902, - 568, 545, 571, 486, 548, 547, 0, 0, 582, 831, - 583, 584, 401, 402, 403, 404, 889, 608, 322, 505, - 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, - 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, - 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, - 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, - 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, - 474, 445, 389, 562, 589, 911, 884, 910, 912, 913, - 909, 914, 915, 896, 786, 0, 838, 839, 907, 906, - 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, - 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, - 660, 465, 665, 793, 298, 539, 382, 427, 355, 603, - 604, 0, 655, 873, 846, 847, 848, 783, 849, 843, - 844, 784, 845, 874, 836, 870, 871, 812, 840, 850, - 869, 851, 872, 875, 876, 916, 917, 857, 841, 261, - 918, 854, 877, 868, 867, 852, 837, 878, 879, 819, - 814, 855, 856, 842, 861, 862, 863, 785, 833, 834, - 835, 858, 859, 815, 816, 817, 818, 0, 0, 0, - 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, - 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, - 644, 646, 648, 864, 650, 450, 451, 656, 0, 860, - 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, - 530, 669, 639, 0, 778, 172, 209, 829, 0, 0, - 0, 0, 0, 0, 0, 0, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 781, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 1312, 580, 531, 446, 397, - 0, 597, 0, 0, 890, 898, 0, 0, 0, 0, - 0, 0, 0, 0, 886, 0, 0, 0, 0, 773, - 0, 0, 810, 866, 865, 797, 807, 0, 0, 317, - 232, 526, 645, 528, 527, 798, 0, 799, 803, 806, - 802, 800, 801, 0, 881, 0, 0, 0, 0, 0, - 0, 765, 777, 0, 782, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 774, 775, - 0, 0, 0, 0, 830, 0, 776, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 825, - 804, 808, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 805, 828, 832, 342, 904, 826, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 905, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 823, 0, 642, 0, - 482, 0, 0, 888, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 827, 0, 435, 415, 901, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 885, - 411, 607, 640, 641, 533, 0, 900, 880, 882, 883, - 887, 891, 892, 893, 894, 895, 897, 899, 903, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 902, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 831, 583, 584, - 401, 402, 403, 404, 889, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 911, 884, 910, 912, 913, 909, 914, - 915, 896, 786, 0, 838, 839, 907, 906, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 793, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 873, 846, 847, 848, 783, 849, 843, 844, 784, - 845, 874, 836, 870, 871, 812, 840, 850, 869, 851, - 872, 875, 876, 916, 917, 857, 841, 261, 918, 854, - 877, 868, 867, 852, 837, 878, 879, 819, 814, 855, - 856, 842, 861, 862, 863, 785, 833, 834, 835, 858, - 859, 815, 816, 817, 818, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 864, 650, 450, 451, 656, 0, 860, 653, 654, - 651, 386, 437, 456, 444, 829, 668, 529, 530, 669, - 639, 0, 778, 0, 413, 0, 0, 544, 577, 566, - 649, 532, 0, 0, 0, 0, 0, 0, 781, 0, - 0, 0, 348, 4226, 0, 381, 581, 563, 573, 564, - 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, - 525, 556, 557, 820, 580, 531, 446, 397, 0, 597, - 0, 0, 890, 898, 0, 0, 0, 0, 0, 0, - 0, 0, 886, 0, 0, 0, 0, 773, 0, 0, - 810, 866, 865, 797, 807, 0, 0, 317, 232, 526, - 645, 528, 527, 798, 0, 799, 803, 806, 802, 800, - 801, 0, 881, 0, 0, 0, 0, 0, 0, 765, - 777, 0, 782, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 774, 775, 0, 0, - 0, 0, 830, 0, 776, 0, 0, 0, 0, 0, - 447, 475, 0, 487, 0, 371, 372, 825, 804, 808, - 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, - 323, 449, 464, 313, 412, 438, 0, 0, 307, 470, - 448, 394, 306, 0, 432, 346, 362, 343, 410, 805, - 828, 832, 342, 904, 826, 480, 309, 0, 479, 409, - 466, 471, 395, 388, 0, 308, 468, 393, 387, 375, - 352, 905, 376, 377, 366, 422, 385, 423, 367, 399, - 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 638, 823, 0, 642, 0, 482, 0, - 0, 888, 0, 0, 0, 452, 0, 0, 378, 0, - 0, 0, 827, 0, 435, 415, 901, 0, 0, 433, - 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, - 345, 396, 314, 316, 661, 347, 349, 353, 354, 405, - 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, - 364, 330, 300, 336, 334, 337, 442, 338, 302, 420, - 463, 0, 359, 430, 391, 303, 390, 421, 462, 461, - 315, 489, 495, 496, 585, 0, 501, 672, 673, 674, - 510, 0, 426, 311, 310, 0, 0, 0, 340, 324, - 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, - 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, - 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, - 350, 392, 304, 357, 296, 297, 667, 885, 411, 607, - 640, 641, 533, 0, 900, 880, 882, 883, 887, 891, - 892, 893, 894, 895, 897, 899, 903, 666, 0, 587, - 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, - 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, - 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, - 627, 628, 629, 630, 623, 902, 568, 545, 571, 486, - 548, 547, 0, 0, 582, 831, 583, 584, 401, 402, - 403, 404, 889, 608, 322, 505, 428, 0, 569, 0, - 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, - 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, - 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, - 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, - 384, 431, 483, 414, 436, 319, 474, 445, 389, 562, - 589, 911, 884, 910, 912, 913, 909, 914, 915, 896, - 786, 0, 838, 839, 907, 906, 908, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, - 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, - 335, 290, 331, 332, 339, 664, 660, 465, 665, 793, - 298, 539, 382, 427, 355, 603, 604, 0, 655, 873, - 846, 847, 848, 783, 849, 843, 844, 784, 845, 874, - 836, 870, 871, 812, 840, 850, 869, 851, 872, 875, - 876, 916, 917, 857, 841, 261, 918, 854, 877, 868, - 867, 852, 837, 878, 879, 819, 814, 855, 856, 842, - 861, 862, 863, 785, 833, 834, 835, 858, 859, 815, - 816, 817, 818, 0, 0, 0, 490, 491, 492, 514, - 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, - 0, 588, 599, 633, 0, 643, 644, 646, 648, 864, - 650, 450, 451, 656, 0, 860, 653, 654, 651, 386, - 437, 456, 444, 829, 668, 529, 530, 669, 639, 0, - 778, 0, 413, 0, 0, 544, 577, 566, 649, 532, - 0, 0, 0, 0, 0, 0, 781, 0, 0, 0, - 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, - 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, - 557, 820, 580, 531, 446, 397, 0, 597, 0, 0, - 890, 898, 0, 0, 0, 0, 0, 0, 0, 0, - 886, 0, 0, 0, 0, 773, 0, 0, 810, 866, - 865, 797, 807, 0, 0, 317, 232, 526, 645, 528, - 527, 798, 0, 799, 803, 806, 802, 800, 801, 0, - 881, 0, 0, 0, 0, 0, 0, 765, 777, 0, - 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 774, 775, 0, 0, 0, 0, - 830, 0, 776, 0, 0, 0, 0, 0, 447, 475, - 0, 487, 0, 371, 372, 825, 804, 808, 0, 0, - 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, - 464, 313, 412, 438, 0, 0, 307, 470, 448, 394, - 306, 0, 432, 346, 362, 343, 410, 805, 828, 832, - 342, 904, 826, 480, 309, 0, 479, 409, 466, 471, - 395, 388, 0, 308, 468, 393, 387, 375, 352, 905, - 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, - 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 638, 823, 0, 642, 0, 482, 0, 0, 888, - 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, - 827, 0, 435, 415, 901, 4105, 0, 433, 383, 467, - 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, - 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, - 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, - 300, 336, 334, 337, 442, 338, 302, 420, 463, 0, - 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, - 495, 496, 585, 0, 501, 672, 673, 674, 510, 0, - 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, - 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, - 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, - 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, - 304, 357, 296, 297, 667, 885, 411, 607, 640, 641, - 533, 0, 900, 880, 882, 883, 887, 891, 892, 893, - 894, 895, 897, 899, 903, 666, 0, 587, 601, 670, - 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, - 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, - 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, - 629, 630, 623, 902, 568, 545, 571, 486, 548, 547, - 0, 0, 582, 831, 583, 584, 401, 402, 403, 404, - 889, 608, 322, 505, 428, 0, 569, 0, 0, 0, - 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, - 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, - 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, - 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, - 483, 414, 436, 319, 474, 445, 389, 562, 589, 911, - 884, 910, 912, 913, 909, 914, 915, 896, 786, 0, - 838, 839, 907, 906, 908, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, - 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, - 331, 332, 339, 664, 660, 465, 665, 793, 298, 539, - 382, 427, 355, 603, 604, 0, 655, 873, 846, 847, - 848, 783, 849, 843, 844, 784, 845, 874, 836, 870, - 871, 812, 840, 850, 869, 851, 872, 875, 876, 916, - 917, 857, 841, 261, 918, 854, 877, 868, 867, 852, - 837, 878, 879, 819, 814, 855, 856, 842, 861, 862, - 863, 785, 833, 834, 835, 858, 859, 815, 816, 817, - 818, 0, 0, 0, 490, 491, 492, 514, 0, 476, - 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, - 599, 633, 0, 643, 644, 646, 648, 864, 650, 450, - 451, 656, 0, 860, 653, 654, 651, 386, 437, 456, - 444, 829, 668, 529, 530, 669, 639, 0, 778, 0, - 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, - 0, 0, 0, 0, 781, 0, 0, 0, 348, 1911, - 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, - 360, 552, 553, 554, 524, 555, 525, 556, 557, 820, - 580, 531, 446, 397, 0, 597, 0, 0, 890, 898, - 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, - 0, 0, 0, 773, 0, 0, 810, 866, 865, 797, - 807, 0, 0, 317, 232, 526, 645, 528, 527, 798, - 0, 799, 803, 806, 802, 800, 801, 0, 881, 0, - 0, 0, 0, 0, 0, 765, 777, 0, 782, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 774, 775, 0, 0, 0, 0, 830, 0, - 776, 0, 0, 0, 0, 0, 447, 475, 0, 487, - 0, 371, 372, 825, 804, 808, 0, 0, 0, 0, - 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, - 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, - 432, 346, 362, 343, 410, 805, 828, 832, 342, 904, - 826, 480, 309, 0, 479, 409, 466, 471, 395, 388, - 0, 308, 468, 393, 387, 375, 352, 905, 376, 377, - 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, - 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, - 823, 0, 642, 0, 482, 0, 0, 888, 0, 0, - 0, 452, 0, 0, 378, 0, 0, 0, 827, 0, - 435, 415, 901, 0, 0, 433, 383, 467, 424, 473, - 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, - 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, - 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, - 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, - 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, - 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, - 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, - 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, - 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, - 0, 494, 379, 380, 0, 351, 350, 392, 304, 357, - 296, 297, 667, 885, 411, 607, 640, 641, 533, 0, - 900, 880, 882, 883, 887, 891, 892, 893, 894, 895, - 897, 899, 903, 666, 0, 587, 601, 670, 600, 663, - 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, - 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, - 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, - 623, 902, 568, 545, 571, 486, 548, 547, 0, 0, - 582, 831, 583, 584, 401, 402, 403, 404, 889, 608, - 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, - 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, - 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, - 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, - 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, - 436, 319, 474, 445, 389, 562, 589, 911, 884, 910, - 912, 913, 909, 914, 915, 896, 786, 0, 838, 839, - 907, 906, 908, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, - 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, - 339, 664, 660, 465, 665, 793, 298, 539, 382, 427, - 355, 603, 604, 0, 655, 873, 846, 847, 848, 783, - 849, 843, 844, 784, 845, 874, 836, 870, 871, 812, - 840, 850, 869, 851, 872, 875, 876, 916, 917, 857, - 841, 261, 918, 854, 877, 868, 867, 852, 837, 878, - 879, 819, 814, 855, 856, 842, 861, 862, 863, 785, - 833, 834, 835, 858, 859, 815, 816, 817, 818, 0, - 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, - 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, - 0, 643, 644, 646, 648, 864, 650, 450, 451, 656, - 0, 860, 653, 654, 651, 386, 437, 456, 444, 829, - 668, 529, 530, 669, 639, 0, 778, 0, 413, 0, - 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, - 0, 0, 781, 0, 0, 0, 348, 0, 0, 381, - 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, - 553, 554, 524, 555, 525, 556, 557, 820, 580, 531, - 446, 397, 0, 597, 0, 0, 890, 898, 0, 0, - 0, 0, 0, 0, 0, 0, 886, 0, 0, 0, - 0, 773, 0, 0, 810, 866, 865, 797, 807, 0, - 0, 317, 232, 526, 645, 528, 527, 798, 0, 799, - 803, 806, 802, 800, 801, 0, 881, 0, 0, 0, - 0, 0, 0, 765, 777, 0, 782, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 774, 775, 1618, 0, 0, 0, 830, 0, 776, 0, - 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, - 372, 825, 804, 808, 0, 0, 0, 0, 305, 453, - 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, - 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, - 362, 343, 410, 805, 828, 832, 342, 904, 826, 480, - 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, - 468, 393, 387, 375, 352, 905, 376, 377, 366, 422, - 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, - 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 638, 823, 0, - 642, 0, 482, 0, 0, 888, 0, 0, 0, 452, - 0, 0, 378, 0, 0, 0, 827, 0, 435, 415, - 901, 0, 0, 433, 383, 467, 424, 473, 454, 481, - 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, - 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, - 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, - 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, - 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, - 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, - 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, - 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, - 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, - 379, 380, 0, 351, 350, 392, 304, 357, 296, 297, - 667, 885, 411, 607, 640, 641, 533, 0, 900, 880, - 882, 883, 887, 891, 892, 893, 894, 895, 897, 899, - 903, 666, 0, 587, 601, 670, 600, 663, 417, 0, - 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, - 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, - 506, 624, 625, 626, 627, 628, 629, 630, 623, 902, - 568, 545, 571, 486, 548, 547, 0, 0, 582, 831, - 583, 584, 401, 402, 403, 404, 889, 608, 322, 505, - 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, - 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, - 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, - 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, - 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, - 474, 445, 389, 562, 589, 911, 884, 910, 912, 913, - 909, 914, 915, 896, 786, 0, 838, 839, 907, 906, - 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, - 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, - 660, 465, 665, 793, 298, 539, 382, 427, 355, 603, - 604, 0, 655, 873, 846, 847, 848, 783, 849, 843, - 844, 784, 845, 874, 836, 870, 871, 812, 840, 850, - 869, 851, 872, 875, 876, 916, 917, 857, 841, 261, - 918, 854, 877, 868, 867, 852, 837, 878, 879, 819, - 814, 855, 856, 842, 861, 862, 863, 785, 833, 834, - 835, 858, 859, 815, 816, 817, 818, 0, 0, 0, - 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, - 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, - 644, 646, 648, 864, 650, 450, 451, 656, 0, 860, - 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, - 530, 669, 639, 829, 778, 0, 2321, 0, 0, 0, - 0, 0, 413, 0, 0, 544, 577, 566, 649, 532, - 0, 0, 0, 0, 0, 0, 781, 0, 0, 0, - 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, - 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, - 557, 820, 580, 531, 446, 397, 0, 597, 0, 0, - 890, 898, 0, 0, 0, 0, 0, 0, 0, 0, - 886, 0, 0, 0, 0, 773, 0, 0, 810, 866, - 865, 797, 807, 0, 0, 317, 232, 526, 645, 528, - 527, 798, 0, 799, 803, 806, 802, 800, 801, 0, - 881, 0, 0, 0, 0, 0, 0, 765, 777, 0, - 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 774, 775, 0, 0, 0, 0, - 830, 0, 776, 0, 0, 0, 0, 0, 447, 475, - 0, 487, 0, 371, 372, 825, 804, 808, 0, 0, - 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, - 464, 313, 412, 438, 0, 0, 307, 470, 448, 394, - 306, 0, 432, 346, 362, 343, 410, 805, 828, 832, - 342, 904, 826, 480, 309, 0, 479, 409, 466, 471, - 395, 388, 0, 308, 468, 393, 387, 375, 352, 905, - 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, - 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 638, 823, 0, 642, 0, 482, 0, 0, 888, - 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, - 827, 0, 435, 415, 901, 0, 0, 433, 383, 467, - 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, - 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, - 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, - 300, 336, 334, 337, 442, 338, 302, 420, 463, 0, - 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, - 495, 496, 585, 0, 501, 672, 673, 674, 510, 0, - 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, - 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, - 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, - 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, - 304, 357, 296, 297, 667, 885, 411, 607, 640, 641, - 533, 0, 900, 880, 882, 883, 887, 891, 892, 893, - 894, 895, 897, 899, 903, 666, 0, 587, 601, 670, - 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, - 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, - 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, - 629, 630, 623, 902, 568, 545, 571, 486, 548, 547, - 0, 0, 582, 831, 583, 584, 401, 402, 403, 404, - 889, 608, 322, 505, 428, 0, 569, 0, 0, 0, - 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, - 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, - 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, - 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, - 483, 414, 436, 319, 474, 445, 389, 562, 589, 911, - 884, 910, 912, 913, 909, 914, 915, 896, 786, 0, - 838, 839, 907, 906, 908, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, - 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, - 331, 332, 339, 664, 660, 465, 665, 793, 298, 539, - 382, 427, 355, 603, 604, 0, 655, 873, 846, 847, - 848, 783, 849, 843, 844, 784, 845, 874, 836, 870, - 871, 812, 840, 850, 869, 851, 872, 875, 876, 916, - 917, 857, 841, 261, 918, 854, 877, 868, 867, 852, - 837, 878, 879, 819, 814, 855, 856, 842, 861, 862, - 863, 785, 833, 834, 835, 858, 859, 815, 816, 817, - 818, 0, 0, 0, 490, 491, 492, 514, 0, 476, - 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, - 599, 633, 0, 643, 644, 646, 648, 864, 650, 450, - 451, 656, 0, 860, 653, 654, 651, 386, 437, 456, - 444, 829, 668, 529, 530, 669, 639, 0, 778, 0, - 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, - 0, 0, 0, 0, 781, 0, 0, 0, 348, 0, - 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, - 360, 552, 553, 554, 524, 555, 525, 556, 557, 820, - 580, 531, 446, 397, 0, 597, 0, 0, 890, 898, - 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, - 0, 0, 0, 773, 0, 0, 810, 866, 865, 797, - 807, 0, 0, 317, 232, 526, 645, 528, 527, 798, - 0, 799, 803, 806, 802, 800, 801, 0, 881, 0, - 0, 0, 0, 0, 0, 765, 777, 0, 782, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 774, 775, 1904, 0, 0, 0, 830, 0, - 776, 0, 0, 0, 0, 0, 447, 475, 0, 487, - 0, 371, 372, 825, 804, 808, 0, 0, 0, 0, - 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, - 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, - 432, 346, 362, 343, 410, 805, 828, 832, 342, 904, - 826, 480, 309, 0, 479, 409, 466, 471, 395, 388, - 0, 308, 468, 393, 387, 375, 352, 905, 376, 377, - 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, - 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, - 823, 0, 642, 0, 482, 0, 0, 888, 0, 0, - 0, 452, 0, 0, 378, 0, 0, 0, 827, 0, - 435, 415, 901, 0, 0, 433, 383, 467, 424, 473, - 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, - 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, - 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, - 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, - 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, - 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, - 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, - 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, - 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, - 0, 494, 379, 380, 0, 351, 350, 392, 304, 357, - 296, 297, 667, 885, 411, 607, 640, 641, 533, 0, - 900, 880, 882, 883, 887, 891, 892, 893, 894, 895, - 897, 899, 903, 666, 0, 587, 601, 670, 600, 663, - 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, - 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, - 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, - 623, 902, 568, 545, 571, 486, 548, 547, 0, 0, - 582, 831, 583, 584, 401, 402, 403, 404, 889, 608, - 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, - 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, - 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, - 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, - 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, - 436, 319, 474, 445, 389, 562, 589, 911, 884, 910, - 912, 913, 909, 914, 915, 896, 786, 0, 838, 839, - 907, 906, 908, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, - 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, - 339, 664, 660, 465, 665, 793, 298, 539, 382, 427, - 355, 603, 604, 0, 655, 873, 846, 847, 848, 783, - 849, 843, 844, 784, 845, 874, 836, 870, 871, 812, - 840, 850, 869, 851, 872, 875, 876, 916, 917, 857, - 841, 261, 918, 854, 877, 868, 867, 852, 837, 878, - 879, 819, 814, 855, 856, 842, 861, 862, 863, 785, - 833, 834, 835, 858, 859, 815, 816, 817, 818, 0, - 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, - 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, - 0, 643, 644, 646, 648, 864, 650, 450, 451, 656, - 0, 860, 653, 654, 651, 386, 437, 456, 444, 829, - 668, 529, 530, 669, 639, 0, 778, 0, 413, 0, - 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, - 0, 0, 781, 0, 0, 0, 348, 0, 0, 381, - 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, - 553, 554, 524, 555, 525, 556, 557, 820, 580, 531, - 446, 397, 0, 597, 0, 0, 890, 898, 0, 0, - 0, 0, 0, 0, 0, 0, 886, 0, 0, 0, - 0, 773, 0, 0, 810, 866, 865, 797, 807, 0, - 0, 317, 232, 526, 645, 528, 527, 798, 0, 799, - 803, 806, 802, 800, 801, 0, 881, 0, 0, 0, - 0, 0, 0, 765, 777, 0, 782, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 774, 775, 0, 0, 0, 0, 830, 0, 776, 0, - 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, - 372, 825, 804, 808, 0, 0, 0, 0, 305, 453, - 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, - 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, - 362, 343, 410, 805, 828, 832, 342, 904, 826, 480, - 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, - 468, 393, 387, 375, 352, 905, 376, 377, 366, 422, - 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, - 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 638, 823, 0, - 642, 0, 482, 0, 0, 888, 0, 0, 0, 452, - 0, 0, 378, 0, 0, 0, 827, 0, 435, 415, - 901, 0, 0, 433, 383, 467, 424, 473, 454, 481, - 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, - 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, - 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, - 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, - 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, - 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, - 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, - 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, - 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, - 379, 380, 0, 351, 350, 392, 304, 357, 296, 297, - 667, 885, 411, 607, 640, 641, 533, 0, 900, 880, - 882, 883, 887, 891, 892, 893, 894, 895, 897, 899, - 903, 666, 0, 587, 601, 670, 600, 663, 417, 0, - 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, - 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, - 506, 624, 625, 626, 627, 628, 629, 630, 623, 902, - 568, 545, 571, 486, 548, 547, 0, 0, 582, 831, - 583, 584, 401, 402, 403, 404, 889, 608, 322, 505, - 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, - 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, - 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, - 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, - 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, - 474, 445, 389, 562, 589, 911, 884, 910, 912, 913, - 909, 914, 915, 896, 786, 0, 838, 839, 907, 906, - 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, - 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, - 660, 465, 665, 793, 298, 539, 382, 427, 355, 603, - 604, 0, 655, 873, 846, 847, 848, 783, 849, 843, - 844, 784, 845, 874, 836, 870, 871, 812, 840, 850, - 869, 851, 872, 875, 876, 916, 917, 857, 841, 261, - 918, 854, 877, 868, 867, 852, 837, 878, 879, 819, - 814, 855, 856, 842, 861, 862, 863, 785, 833, 834, - 835, 858, 859, 815, 816, 817, 818, 0, 0, 0, - 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, - 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, - 644, 646, 648, 864, 650, 450, 451, 656, 0, 860, - 653, 654, 651, 386, 437, 456, 444, 829, 668, 529, - 530, 669, 639, 0, 778, 0, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 781, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 820, 580, 531, 446, 397, - 0, 597, 0, 0, 890, 898, 0, 0, 0, 0, - 0, 0, 0, 0, 886, 0, 0, 0, 0, 773, - 0, 0, 810, 866, 865, 797, 807, 0, 0, 317, - 232, 526, 645, 528, 527, 798, 0, 799, 803, 806, - 802, 800, 801, 0, 881, 0, 0, 0, 0, 0, - 0, 765, 777, 0, 782, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 774, 775, - 0, 0, 0, 0, 830, 0, 776, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 825, - 804, 808, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 805, 828, 832, 342, 904, 826, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 905, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 823, 0, 642, 0, - 482, 0, 0, 888, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 827, 0, 435, 415, 901, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 885, - 411, 607, 640, 641, 533, 0, 900, 880, 882, 883, - 887, 891, 892, 893, 894, 895, 897, 899, 903, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 902, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 831, 583, 584, - 401, 402, 403, 404, 889, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 911, 884, 910, 912, 913, 909, 914, - 915, 896, 786, 0, 838, 839, 907, 906, 908, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 793, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 873, 846, 847, 848, 783, 849, 843, 844, 784, - 845, 874, 836, 870, 871, 812, 840, 850, 869, 851, - 872, 875, 876, 916, 917, 857, 841, 261, 918, 854, - 877, 868, 867, 852, 837, 878, 879, 819, 814, 855, - 856, 842, 861, 862, 863, 785, 833, 834, 835, 858, - 859, 815, 816, 817, 818, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 864, 650, 450, 451, 656, 0, 3660, 653, 3661, - 3662, 386, 437, 456, 444, 829, 668, 529, 530, 669, - 639, 0, 778, 0, 413, 0, 0, 544, 577, 566, - 649, 532, 0, 0, 0, 0, 0, 0, 781, 0, - 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, - 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, - 525, 556, 557, 820, 580, 531, 446, 397, 0, 597, - 0, 0, 890, 898, 0, 0, 0, 0, 0, 0, - 0, 0, 886, 0, 0, 0, 0, 773, 0, 0, - 810, 866, 865, 797, 807, 0, 0, 317, 232, 526, - 645, 528, 527, 2807, 0, 2808, 803, 806, 802, 800, - 801, 0, 881, 0, 0, 0, 0, 0, 0, 765, - 777, 0, 782, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 774, 775, 0, 0, - 0, 0, 830, 0, 776, 0, 0, 0, 0, 0, - 447, 475, 0, 487, 0, 371, 372, 825, 804, 808, - 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, - 323, 449, 464, 313, 412, 438, 0, 0, 307, 470, - 448, 394, 306, 0, 432, 346, 362, 343, 410, 805, - 828, 832, 342, 904, 826, 480, 309, 0, 479, 409, - 466, 471, 395, 388, 0, 308, 468, 393, 387, 375, - 352, 905, 376, 377, 366, 422, 385, 423, 367, 399, - 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 638, 823, 0, 642, 0, 482, 0, - 0, 888, 0, 0, 0, 452, 0, 0, 378, 0, - 0, 0, 827, 0, 435, 415, 901, 0, 0, 433, - 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, - 345, 396, 314, 316, 661, 347, 349, 353, 354, 405, - 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, - 364, 330, 300, 336, 334, 337, 442, 338, 302, 420, - 463, 0, 359, 430, 391, 303, 390, 421, 462, 461, - 315, 489, 495, 496, 585, 0, 501, 672, 673, 674, - 510, 0, 426, 311, 310, 0, 0, 0, 340, 324, - 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, - 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, - 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, - 350, 392, 304, 357, 296, 297, 667, 885, 411, 607, - 640, 641, 533, 0, 900, 880, 882, 883, 887, 891, - 892, 893, 894, 895, 897, 899, 903, 666, 0, 587, - 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, - 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, - 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, - 627, 628, 629, 630, 623, 902, 568, 545, 571, 486, - 548, 547, 0, 0, 582, 831, 583, 584, 401, 402, - 403, 404, 889, 608, 322, 505, 428, 0, 569, 0, - 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, - 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, - 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, - 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, - 384, 431, 483, 414, 436, 319, 474, 445, 389, 562, - 589, 911, 884, 910, 912, 913, 909, 914, 915, 896, - 786, 0, 838, 839, 907, 906, 908, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, - 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, - 335, 290, 331, 332, 339, 664, 660, 465, 665, 793, - 298, 539, 382, 427, 355, 603, 604, 0, 655, 873, - 846, 847, 848, 783, 849, 843, 844, 784, 845, 874, - 836, 870, 871, 812, 840, 850, 869, 851, 872, 875, - 876, 916, 917, 857, 841, 261, 918, 854, 877, 868, - 867, 852, 837, 878, 879, 819, 814, 855, 856, 842, - 861, 862, 863, 785, 833, 834, 835, 858, 859, 815, - 816, 817, 818, 0, 0, 0, 490, 491, 492, 514, - 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, - 0, 588, 599, 633, 0, 643, 644, 646, 648, 864, - 650, 450, 451, 656, 0, 860, 653, 654, 651, 386, - 437, 456, 444, 829, 668, 529, 530, 669, 639, 0, - 778, 0, 413, 0, 0, 544, 577, 566, 649, 532, - 0, 0, 1764, 0, 0, 0, 781, 0, 0, 0, - 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, - 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, - 557, 820, 580, 531, 446, 397, 0, 597, 0, 0, - 890, 898, 0, 0, 0, 0, 0, 0, 0, 0, - 886, 0, 0, 0, 0, 773, 0, 0, 810, 866, - 865, 797, 807, 0, 0, 317, 232, 526, 645, 528, - 527, 798, 0, 799, 803, 806, 802, 800, 801, 0, - 881, 0, 0, 0, 0, 0, 0, 0, 777, 0, - 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 774, 775, 0, 0, 0, 0, - 830, 0, 776, 0, 0, 0, 0, 0, 447, 475, - 0, 487, 0, 371, 372, 825, 804, 808, 0, 0, - 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, - 464, 313, 412, 438, 0, 0, 307, 470, 448, 394, - 306, 0, 432, 346, 362, 343, 410, 805, 828, 832, - 342, 904, 826, 480, 309, 0, 479, 409, 466, 471, - 395, 388, 0, 308, 468, 393, 387, 375, 352, 905, - 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, - 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 638, 823, 0, 642, 0, 482, 0, 0, 888, - 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, - 827, 0, 435, 415, 901, 0, 0, 433, 383, 467, - 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, - 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, - 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, - 300, 336, 334, 337, 442, 338, 302, 420, 463, 0, - 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, - 1765, 1766, 585, 0, 501, 672, 673, 674, 510, 0, - 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, - 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, - 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, - 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, - 304, 357, 296, 297, 667, 885, 411, 607, 640, 641, - 533, 0, 900, 880, 882, 883, 887, 891, 892, 893, - 894, 895, 897, 899, 903, 666, 0, 587, 601, 670, - 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, - 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, - 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, - 629, 630, 623, 902, 568, 545, 571, 486, 548, 547, - 0, 0, 582, 831, 583, 584, 401, 402, 403, 404, - 889, 608, 322, 505, 428, 0, 569, 0, 0, 0, - 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, - 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, - 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, - 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, - 483, 414, 436, 319, 474, 445, 389, 562, 589, 911, - 884, 910, 912, 913, 909, 914, 915, 896, 786, 0, - 838, 839, 907, 906, 908, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, - 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, - 331, 332, 339, 664, 660, 465, 665, 793, 298, 539, - 382, 427, 355, 603, 604, 0, 655, 873, 846, 847, - 848, 783, 849, 843, 844, 784, 845, 874, 836, 870, - 871, 812, 840, 850, 869, 851, 872, 875, 876, 916, - 917, 857, 841, 261, 918, 854, 877, 868, 867, 852, - 837, 878, 879, 819, 814, 855, 856, 842, 861, 862, - 863, 785, 833, 834, 835, 858, 859, 815, 816, 817, - 818, 0, 0, 0, 490, 491, 492, 514, 0, 476, - 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, - 599, 633, 0, 643, 644, 646, 648, 864, 650, 450, - 451, 656, 0, 860, 653, 654, 651, 386, 437, 456, - 444, 829, 668, 529, 530, 669, 639, 0, 778, 0, - 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, - 0, 0, 0, 0, 781, 0, 0, 0, 348, 0, - 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, - 360, 552, 553, 554, 524, 555, 525, 556, 557, 820, - 580, 531, 446, 397, 0, 597, 0, 0, 890, 898, - 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, - 0, 0, 0, 773, 0, 0, 810, 866, 865, 797, - 807, 0, 0, 317, 232, 526, 645, 528, 527, 798, - 0, 799, 803, 806, 802, 800, 801, 0, 881, 0, - 0, 0, 0, 0, 0, 0, 777, 0, 782, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 774, 775, 0, 0, 0, 0, 830, 0, - 776, 0, 0, 0, 0, 0, 447, 475, 0, 487, - 0, 371, 372, 825, 804, 808, 0, 0, 0, 0, - 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, - 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, - 432, 346, 362, 343, 410, 805, 828, 832, 342, 904, - 826, 480, 309, 0, 479, 409, 466, 471, 395, 388, - 0, 308, 468, 393, 387, 375, 352, 905, 376, 377, - 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, - 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, - 823, 0, 642, 0, 482, 0, 0, 888, 0, 0, - 0, 452, 0, 0, 378, 0, 0, 0, 827, 0, - 435, 415, 901, 0, 0, 433, 383, 467, 424, 473, - 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, - 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, - 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, - 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, - 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, - 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, - 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, - 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, - 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, - 0, 494, 379, 380, 0, 351, 350, 392, 304, 357, - 296, 297, 667, 885, 411, 607, 640, 641, 533, 0, - 900, 880, 882, 883, 887, 891, 892, 893, 894, 895, - 897, 899, 903, 666, 0, 587, 601, 670, 600, 663, - 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, - 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, - 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, - 623, 902, 568, 545, 571, 486, 548, 547, 0, 0, - 582, 831, 583, 584, 401, 402, 403, 404, 889, 608, - 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, - 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, - 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, - 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, - 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, - 436, 319, 474, 445, 389, 562, 589, 911, 884, 910, - 912, 913, 909, 914, 915, 896, 786, 0, 838, 839, - 907, 906, 908, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, - 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, - 339, 664, 660, 465, 665, 793, 298, 539, 382, 427, - 355, 603, 604, 0, 655, 873, 846, 847, 848, 783, - 849, 843, 844, 784, 845, 874, 836, 870, 871, 812, - 840, 850, 869, 851, 872, 875, 876, 916, 917, 857, - 841, 261, 918, 854, 877, 868, 867, 852, 837, 878, - 879, 819, 814, 855, 856, 842, 861, 862, 863, 785, - 833, 834, 835, 858, 859, 815, 816, 817, 818, 0, - 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, - 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, - 0, 643, 644, 646, 648, 864, 650, 450, 451, 656, - 0, 860, 653, 654, 651, 386, 437, 456, 444, 829, - 668, 529, 530, 669, 639, 0, 778, 0, 413, 0, - 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, - 0, 0, 781, 0, 0, 0, 348, 0, 0, 381, - 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, - 553, 554, 524, 555, 525, 556, 557, 820, 580, 531, - 446, 397, 0, 597, 0, 0, 890, 898, 0, 0, - 0, 0, 0, 0, 0, 0, 886, 0, 0, 0, - 0, 0, 0, 0, 810, 866, 865, 797, 807, 0, - 0, 317, 232, 526, 645, 528, 527, 798, 0, 799, - 803, 806, 802, 800, 801, 0, 881, 0, 0, 0, - 0, 0, 0, 765, 777, 0, 782, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 774, 775, 0, 0, 0, 0, 830, 0, 776, 0, - 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, - 372, 825, 804, 808, 0, 0, 0, 0, 305, 453, - 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, - 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, - 362, 343, 410, 805, 828, 832, 342, 904, 826, 480, - 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, - 468, 393, 387, 375, 352, 905, 376, 377, 366, 422, - 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, - 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 638, 823, 0, - 642, 0, 482, 0, 0, 888, 0, 0, 0, 452, - 0, 0, 378, 0, 0, 0, 827, 0, 435, 415, - 901, 0, 0, 433, 383, 467, 424, 473, 454, 481, - 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, - 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, - 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, - 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, - 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, - 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, - 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, - 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, - 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, - 379, 380, 0, 351, 350, 392, 304, 357, 296, 297, - 667, 885, 411, 607, 640, 641, 533, 0, 900, 880, - 882, 883, 887, 891, 892, 893, 894, 895, 897, 899, - 903, 666, 0, 587, 601, 670, 600, 663, 417, 0, - 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, - 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, - 506, 624, 625, 626, 627, 628, 629, 630, 623, 902, - 568, 545, 571, 486, 548, 547, 0, 0, 582, 831, - 583, 584, 401, 402, 403, 404, 889, 608, 322, 505, - 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, - 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, - 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, - 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, - 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, - 474, 445, 389, 562, 589, 911, 884, 910, 912, 913, - 909, 914, 915, 896, 786, 0, 838, 839, 907, 906, - 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, - 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, - 660, 465, 665, 793, 298, 539, 382, 427, 355, 603, - 604, 0, 655, 873, 846, 847, 848, 783, 849, 843, - 844, 784, 845, 874, 836, 870, 871, 812, 840, 850, - 869, 851, 872, 875, 876, 916, 917, 857, 841, 261, - 918, 854, 877, 868, 867, 852, 837, 878, 879, 819, - 814, 855, 856, 842, 861, 862, 863, 785, 833, 834, - 835, 858, 859, 815, 816, 817, 818, 0, 0, 0, - 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, - 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, - 644, 646, 648, 864, 650, 450, 451, 656, 0, 860, - 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, - 530, 669, 639, 0, 778, 172, 209, 65, 200, 171, - 0, 0, 0, 0, 0, 0, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 201, 0, 0, 0, 0, - 0, 0, 192, 0, 348, 0, 202, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 142, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, 0, 205, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 170, 198, - 207, 199, 126, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 224, 0, 0, 0, 452, 0, 0, - 378, 197, 191, 190, 498, 0, 435, 415, 236, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 244, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 617, - 618, 619, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 477, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 227, 590, 593, 523, 237, - 0, 587, 601, 560, 600, 238, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 140, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 235, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 66, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 242, 312, 465, - 243, 0, 298, 539, 382, 427, 355, 603, 604, 62, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 239, 46, 225, 228, 230, - 229, 0, 63, 588, 599, 633, 5, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 145, 240, 529, 530, 241, - 639, 172, 209, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 413, 0, 0, 544, 577, 566, 649, 532, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, - 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, - 557, 142, 580, 531, 446, 397, 0, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 205, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 317, 232, 526, 645, 528, - 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 320, 2480, 2483, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 447, 475, - 0, 487, 0, 371, 372, 0, 0, 0, 0, 0, - 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, - 464, 313, 412, 438, 0, 0, 307, 470, 448, 394, - 306, 0, 432, 346, 362, 343, 410, 0, 469, 497, - 342, 488, 0, 480, 309, 0, 479, 409, 466, 471, - 395, 388, 0, 308, 468, 393, 387, 375, 352, 513, - 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, - 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 638, 0, 0, 642, 2484, 482, 0, 0, 0, - 2479, 0, 2478, 452, 2476, 2481, 378, 0, 0, 0, - 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, - 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, - 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, - 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, - 300, 336, 334, 337, 442, 338, 302, 420, 463, 2482, - 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, - 495, 496, 585, 0, 501, 672, 673, 674, 510, 0, - 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, - 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, - 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, - 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, - 304, 357, 296, 297, 667, 341, 411, 607, 640, 641, - 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, - 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, - 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, - 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, - 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, - 629, 630, 623, 478, 568, 545, 571, 486, 548, 547, - 0, 0, 582, 502, 583, 584, 401, 402, 403, 404, - 361, 608, 322, 505, 428, 0, 569, 0, 0, 0, - 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, - 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, - 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, - 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, - 483, 414, 436, 319, 474, 445, 389, 562, 589, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, - 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, - 331, 332, 339, 664, 660, 465, 665, 0, 298, 539, - 382, 427, 355, 603, 604, 0, 655, 245, 246, 247, - 248, 249, 250, 251, 252, 291, 253, 254, 255, 256, - 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, - 269, 606, 260, 261, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 0, 0, - 0, 292, 293, 294, 295, 0, 0, 286, 287, 288, - 289, 0, 0, 0, 490, 491, 492, 514, 0, 476, - 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, - 599, 633, 0, 643, 644, 646, 648, 647, 650, 450, - 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, - 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, - 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 348, 0, 0, 381, 581, - 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, - 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, - 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1348, 0, 0, 231, 0, 0, 797, 807, 0, 0, - 317, 232, 526, 645, 528, 527, 798, 0, 799, 803, - 806, 802, 800, 801, 0, 320, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, - 0, 804, 0, 0, 0, 0, 0, 305, 453, 472, - 318, 441, 485, 323, 449, 464, 313, 412, 438, 0, - 0, 307, 470, 448, 394, 306, 0, 432, 346, 362, - 343, 410, 805, 469, 497, 342, 488, 0, 480, 309, - 0, 479, 409, 466, 471, 395, 388, 0, 308, 468, - 393, 387, 375, 352, 513, 376, 377, 366, 422, 385, - 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, - 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 638, 0, 0, 642, - 0, 482, 0, 0, 0, 0, 0, 0, 452, 0, - 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, - 0, 0, 433, 383, 467, 424, 473, 454, 481, 429, - 425, 299, 455, 345, 396, 314, 316, 661, 347, 349, - 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, - 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, - 338, 302, 420, 463, 0, 359, 430, 391, 303, 390, - 421, 462, 461, 315, 489, 495, 496, 585, 0, 501, - 672, 673, 674, 510, 0, 426, 311, 310, 0, 0, - 0, 340, 324, 326, 327, 325, 418, 515, 516, 517, - 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, - 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, - 380, 0, 351, 350, 392, 304, 357, 296, 297, 667, - 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, - 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, - 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, - 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, - 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, - 624, 625, 626, 627, 628, 629, 630, 623, 478, 568, - 545, 571, 486, 548, 547, 0, 0, 582, 502, 583, - 584, 401, 402, 403, 404, 361, 608, 322, 505, 428, - 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, - 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, - 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, - 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, - 370, 443, 374, 384, 431, 483, 414, 436, 319, 474, - 445, 389, 562, 589, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, - 0, 559, 460, 335, 290, 331, 332, 339, 664, 660, - 465, 665, 0, 298, 539, 382, 427, 355, 603, 604, - 0, 655, 245, 246, 247, 248, 249, 250, 251, 252, - 291, 253, 254, 255, 256, 257, 258, 259, 262, 263, - 264, 265, 266, 267, 268, 269, 606, 260, 261, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 0, 0, 0, 292, 293, 294, 295, - 0, 0, 286, 287, 288, 289, 0, 0, 0, 490, - 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, - 0, 0, 0, 0, 588, 599, 633, 0, 643, 644, - 646, 648, 647, 650, 450, 451, 656, 0, 652, 653, - 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, - 669, 639, 172, 209, 65, 200, 171, 0, 0, 0, - 0, 0, 0, 413, 694, 0, 544, 577, 566, 649, - 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, - 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, - 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 701, 0, - 0, 0, 0, 0, 0, 0, 700, 0, 0, 231, - 0, 0, 0, 0, 0, 0, 317, 232, 526, 645, - 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, - 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, - 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, - 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, - 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, - 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, - 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, - 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, - 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 698, - 699, 0, 638, 0, 0, 642, 0, 482, 0, 0, - 0, 0, 0, 0, 452, 0, 0, 378, 0, 0, - 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, - 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, - 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, - 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, - 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, - 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, - 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, - 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, - 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, - 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, - 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, - 392, 304, 357, 296, 297, 667, 341, 411, 607, 640, - 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, - 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, - 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, - 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, - 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, - 628, 629, 630, 623, 478, 568, 545, 571, 486, 548, - 547, 0, 0, 582, 502, 583, 584, 401, 402, 403, - 404, 695, 697, 322, 505, 428, 709, 569, 0, 0, - 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, - 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, - 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, - 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, - 431, 483, 414, 436, 319, 474, 445, 389, 562, 589, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, - 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, - 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, - 290, 331, 332, 339, 664, 660, 465, 665, 0, 298, - 539, 382, 427, 355, 603, 604, 0, 655, 245, 246, - 247, 248, 249, 250, 251, 252, 291, 253, 254, 255, - 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, - 268, 269, 606, 260, 261, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 0, - 0, 0, 292, 293, 294, 295, 0, 0, 286, 287, - 288, 289, 0, 0, 0, 490, 491, 492, 514, 0, - 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, - 588, 599, 633, 0, 643, 644, 646, 648, 647, 650, - 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, - 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, - 0, 544, 577, 566, 649, 532, 0, 1154, 0, 0, - 0, 0, 0, 0, 0, 0, 348, 0, 0, 381, - 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, - 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, - 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 447, 475, 0, 487, 0, 2650, - 2651, 1139, 0, 0, 0, 0, 0, 0, 305, 453, - 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, - 0, 0, 2644, 2647, 2648, 2649, 2652, 0, 2657, 2653, - 2654, 2655, 2656, 0, 2639, 2640, 2641, 2642, 1137, 2623, - 2645, 0, 2624, 409, 2625, 2626, 2627, 2628, 1141, 2629, - 2630, 2631, 2632, 2633, 2636, 2637, 2634, 2635, 2643, 422, - 385, 423, 367, 399, 398, 400, 1165, 1167, 1169, 1171, - 1174, 508, 509, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 638, 0, 0, - 642, 0, 482, 0, 0, 0, 0, 0, 0, 452, - 0, 0, 378, 0, 0, 0, 2638, 0, 435, 415, - 671, 0, 0, 433, 383, 467, 424, 473, 454, 481, - 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, - 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, - 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, - 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, - 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, - 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, - 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, - 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, - 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, - 379, 380, 0, 351, 350, 392, 304, 357, 296, 297, - 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, - 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, - 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, - 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, - 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, - 506, 624, 625, 626, 627, 628, 629, 630, 623, 478, - 568, 545, 571, 486, 548, 547, 0, 0, 582, 502, - 583, 584, 401, 402, 403, 404, 361, 608, 322, 505, - 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, - 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, - 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, - 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, - 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, - 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, - 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, - 660, 465, 665, 0, 298, 2646, 382, 427, 355, 603, - 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, - 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, - 263, 264, 265, 266, 267, 268, 269, 606, 260, 261, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 0, 0, 0, 292, 293, 294, - 295, 0, 0, 286, 287, 288, 289, 0, 0, 0, - 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, - 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, - 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, - 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, - 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, - 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, - 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, - 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, - 0, 0, 0, 0, 0, 0, 317, 232, 526, 645, - 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 320, 2480, 2483, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, - 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, - 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, - 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, - 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, - 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, - 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, - 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, - 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 638, 0, 0, 642, 2484, 482, 0, 0, - 0, 2479, 0, 2478, 452, 2476, 2481, 378, 0, 0, - 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, - 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, - 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, - 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, - 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, - 2482, 359, 430, 391, 303, 390, 421, 462, 461, 315, - 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, - 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, - 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, - 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, - 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, - 392, 304, 357, 296, 297, 667, 341, 411, 607, 640, - 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, - 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, - 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, - 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, - 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, - 628, 629, 630, 623, 478, 568, 545, 571, 486, 548, - 547, 0, 0, 582, 502, 583, 584, 401, 402, 403, - 404, 361, 608, 322, 505, 428, 0, 569, 0, 0, - 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, - 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, - 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, - 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, - 431, 483, 414, 436, 319, 474, 445, 389, 562, 589, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, - 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, - 290, 331, 332, 339, 664, 660, 465, 665, 0, 298, - 539, 382, 427, 355, 603, 604, 0, 655, 245, 246, - 247, 248, 249, 250, 251, 252, 291, 253, 254, 255, - 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, - 268, 269, 606, 260, 261, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 0, - 0, 0, 292, 293, 294, 295, 0, 0, 286, 287, - 288, 289, 0, 0, 0, 490, 491, 492, 514, 0, - 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, - 588, 599, 633, 0, 643, 644, 646, 648, 647, 650, - 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, - 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, - 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 348, 0, 0, 381, - 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, - 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, - 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 320, 0, 2501, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, - 372, 0, 0, 0, 0, 0, 0, 0, 305, 453, - 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, - 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, - 362, 343, 410, 0, 469, 497, 342, 488, 0, 480, - 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, - 468, 393, 387, 375, 352, 513, 376, 377, 366, 422, - 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, - 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 638, 0, 0, - 642, 2500, 482, 0, 0, 0, 2506, 2503, 2505, 452, - 0, 2504, 378, 0, 0, 0, 498, 0, 435, 415, - 671, 0, 2498, 433, 383, 467, 424, 473, 454, 481, - 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, - 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, - 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, - 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, - 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, - 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, - 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, - 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, - 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, - 379, 380, 0, 351, 350, 392, 304, 357, 296, 297, - 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, - 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, - 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, - 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, - 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, - 506, 624, 625, 626, 627, 628, 629, 630, 623, 478, - 568, 545, 571, 486, 548, 547, 0, 0, 582, 502, - 583, 584, 401, 402, 403, 404, 361, 608, 322, 505, - 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, - 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, - 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, - 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, - 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, - 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, - 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, - 660, 465, 665, 0, 298, 539, 382, 427, 355, 603, - 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, - 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, - 263, 264, 265, 266, 267, 268, 269, 606, 260, 261, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 0, 0, 0, 292, 293, 294, - 295, 0, 0, 286, 287, 288, 289, 0, 0, 0, - 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, - 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, - 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, - 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, - 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, - 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, - 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, - 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, - 0, 0, 0, 0, 0, 0, 317, 232, 526, 645, - 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 320, 0, 2501, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, - 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, - 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, - 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, - 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, - 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, - 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, - 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, - 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 638, 0, 0, 642, 2500, 482, 0, 0, - 0, 2506, 2503, 2505, 452, 0, 2504, 378, 0, 0, - 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, - 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, - 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, - 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, - 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, - 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, - 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, - 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, - 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, - 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, - 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, - 392, 304, 357, 296, 297, 667, 341, 411, 607, 640, - 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, - 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, - 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, - 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, - 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, - 628, 629, 630, 623, 478, 568, 545, 571, 486, 548, - 547, 0, 0, 582, 502, 583, 584, 401, 402, 403, - 404, 361, 608, 322, 505, 428, 0, 569, 0, 0, - 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, - 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, - 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, - 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, - 431, 483, 414, 436, 319, 474, 445, 389, 562, 589, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, - 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, - 290, 331, 332, 339, 664, 660, 465, 665, 0, 298, - 539, 382, 427, 355, 603, 604, 0, 655, 245, 246, - 247, 248, 249, 250, 251, 252, 291, 253, 254, 255, - 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, - 268, 269, 606, 260, 261, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 0, - 0, 0, 292, 293, 294, 295, 0, 0, 286, 287, - 288, 289, 0, 0, 0, 490, 491, 492, 514, 0, - 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, - 588, 599, 633, 0, 643, 644, 646, 648, 647, 650, - 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, - 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, - 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, - 0, 2183, 0, 0, 0, 0, 348, 0, 0, 381, - 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, - 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, - 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 231, 0, 0, 2184, 0, 0, - 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 320, 0, 0, 1276, - 1277, 1278, 1275, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, - 372, 0, 0, 0, 0, 0, 0, 0, 305, 453, - 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, - 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, - 362, 343, 410, 0, 469, 497, 342, 488, 0, 480, - 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, - 468, 393, 387, 375, 352, 513, 376, 377, 366, 422, - 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, - 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 638, 0, 0, - 642, 0, 482, 0, 0, 0, 0, 0, 0, 452, - 0, 0, 378, 0, 0, 0, 498, 0, 435, 415, - 671, 0, 0, 433, 383, 467, 424, 473, 454, 481, - 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, - 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, - 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, - 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, - 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, - 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, - 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, - 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, - 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, - 379, 380, 0, 351, 350, 392, 304, 357, 296, 297, - 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, - 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, - 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, - 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, - 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, - 506, 624, 625, 626, 627, 628, 629, 630, 623, 478, - 568, 545, 571, 486, 548, 547, 0, 0, 582, 502, - 583, 584, 401, 402, 403, 404, 361, 608, 322, 505, - 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, - 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, - 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, - 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, - 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, - 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, - 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, - 660, 465, 665, 0, 298, 539, 382, 427, 355, 603, - 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, - 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, - 263, 264, 265, 266, 267, 268, 269, 606, 260, 261, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 0, 0, 0, 292, 293, 294, - 295, 0, 0, 286, 287, 288, 289, 0, 0, 0, - 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, - 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, - 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, - 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, - 530, 669, 639, 172, 209, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 413, 0, 0, 544, 577, 566, - 649, 532, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, - 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, - 525, 556, 557, 142, 580, 531, 446, 397, 0, 597, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 205, 2233, 0, - 231, 0, 0, 0, 0, 0, 0, 317, 232, 526, - 645, 528, 527, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 447, 475, 0, 487, 0, 371, 372, 0, 0, 0, - 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, - 323, 449, 464, 313, 412, 438, 0, 0, 307, 470, - 448, 394, 306, 0, 432, 346, 362, 343, 410, 0, - 469, 497, 342, 488, 0, 480, 309, 0, 479, 409, - 466, 471, 395, 388, 0, 308, 468, 393, 387, 375, - 352, 513, 376, 377, 366, 422, 385, 423, 367, 399, - 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 638, 0, 0, 642, 0, 482, 0, - 0, 0, 0, 0, 0, 452, 0, 0, 378, 0, - 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, - 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, - 345, 396, 314, 316, 661, 347, 349, 353, 354, 405, - 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, - 364, 330, 300, 336, 334, 337, 442, 338, 302, 420, - 463, 0, 359, 430, 391, 303, 390, 421, 462, 461, - 315, 489, 495, 496, 585, 0, 501, 672, 673, 674, - 510, 0, 426, 311, 310, 0, 0, 0, 340, 324, - 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, - 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, - 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, - 350, 392, 304, 357, 296, 297, 667, 341, 411, 607, - 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, - 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, - 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, - 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, - 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, - 627, 628, 629, 630, 623, 478, 568, 545, 571, 486, - 548, 547, 0, 0, 582, 502, 583, 584, 401, 402, - 403, 404, 361, 608, 322, 505, 428, 0, 569, 0, - 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, - 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, - 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, - 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, - 384, 431, 483, 414, 436, 319, 474, 445, 389, 562, - 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, - 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, - 335, 290, 331, 332, 339, 664, 660, 465, 665, 0, - 298, 539, 382, 427, 355, 603, 604, 0, 655, 245, - 246, 247, 248, 249, 250, 251, 252, 291, 253, 254, - 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, - 267, 268, 269, 606, 260, 261, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 0, 0, 0, 292, 293, 294, 295, 0, 0, 286, - 287, 288, 289, 0, 0, 0, 490, 491, 492, 514, - 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, - 0, 588, 599, 633, 0, 643, 644, 646, 648, 647, - 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, - 437, 456, 444, 0, 668, 529, 530, 669, 639, 172, - 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 348, 0, - 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, - 360, 552, 553, 554, 524, 555, 525, 556, 557, 142, - 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 205, 2218, 0, 231, 0, 0, 0, - 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, - 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, - 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, - 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, - 432, 346, 362, 343, 410, 0, 469, 497, 342, 488, - 0, 480, 309, 0, 479, 409, 466, 471, 395, 388, - 0, 308, 468, 393, 387, 375, 352, 513, 376, 377, - 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, - 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, - 0, 0, 642, 0, 482, 0, 0, 0, 0, 0, - 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, - 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, - 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, - 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, - 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, - 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, - 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, - 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, - 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, - 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, - 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, - 0, 494, 379, 380, 0, 351, 350, 392, 304, 357, - 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, - 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, - 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, - 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, - 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, - 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, - 623, 478, 568, 545, 571, 486, 548, 547, 0, 0, - 582, 502, 583, 584, 401, 402, 403, 404, 361, 608, - 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, - 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, - 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, - 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, - 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, - 436, 319, 474, 445, 389, 562, 589, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 284, 285, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, - 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, - 339, 664, 660, 465, 665, 0, 298, 539, 382, 427, - 355, 603, 604, 0, 655, 245, 246, 247, 248, 249, - 250, 251, 252, 291, 253, 254, 255, 256, 257, 258, - 259, 262, 263, 264, 265, 266, 267, 268, 269, 606, - 260, 261, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 0, 0, 0, 292, - 293, 294, 295, 0, 0, 286, 287, 288, 289, 0, - 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, - 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, - 0, 643, 644, 646, 648, 647, 650, 450, 451, 656, - 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, - 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, - 566, 649, 532, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 348, 1065, 0, 381, 581, 563, 573, - 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, - 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, - 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 231, 1072, 1073, 0, 0, 0, 0, 317, 232, - 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1076, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 447, 475, 0, 487, 0, 371, 372, 0, 0, - 0, 0, 0, 0, 0, 305, 453, 1059, 318, 441, - 485, 323, 449, 464, 313, 412, 438, 0, 0, 307, - 470, 448, 394, 306, 0, 432, 346, 362, 343, 410, - 0, 469, 497, 342, 488, 1045, 480, 309, 1044, 479, - 409, 466, 471, 395, 388, 0, 308, 468, 393, 387, - 375, 352, 513, 376, 377, 366, 422, 385, 423, 367, - 399, 398, 400, 0, 0, 0, 0, 0, 508, 509, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 638, 0, 0, 642, 0, 482, - 0, 0, 0, 0, 0, 0, 452, 0, 0, 378, - 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, - 433, 383, 467, 424, 473, 454, 481, 1063, 425, 299, - 455, 345, 396, 314, 316, 661, 347, 349, 353, 354, - 405, 406, 419, 440, 457, 458, 459, 344, 328, 434, - 329, 364, 330, 300, 336, 334, 337, 442, 338, 302, - 420, 463, 0, 359, 430, 391, 303, 390, 421, 462, - 461, 315, 489, 495, 496, 585, 0, 501, 672, 673, - 674, 510, 0, 426, 311, 310, 0, 0, 0, 340, - 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, - 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, - 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, - 351, 350, 392, 304, 357, 296, 297, 667, 341, 411, - 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, - 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, - 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, - 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, - 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, - 626, 627, 628, 629, 1064, 623, 478, 568, 545, 571, - 486, 548, 547, 0, 0, 582, 1067, 583, 584, 401, - 402, 403, 404, 361, 608, 1062, 505, 428, 0, 569, - 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, - 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, - 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, - 576, 512, 634, 637, 635, 636, 1074, 1060, 1070, 1061, - 374, 384, 431, 483, 414, 436, 319, 474, 445, 1071, - 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, - 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, - 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, - 0, 298, 539, 382, 427, 355, 603, 604, 0, 655, - 245, 246, 247, 248, 249, 250, 251, 252, 291, 253, - 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, - 266, 267, 268, 269, 606, 260, 261, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 0, 0, 0, 292, 293, 294, 295, 0, 0, - 286, 287, 288, 289, 0, 0, 0, 490, 491, 492, - 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, - 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, - 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, - 1058, 437, 456, 444, 0, 668, 529, 530, 669, 639, - 172, 209, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 142, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2113, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 1072, 1073, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1076, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 1045, 480, 309, 1044, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 1074, 2134, 1070, - 2135, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 1071, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 3049, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3052, 0, 0, 0, 3051, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 1584, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 1582, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 1580, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 1578, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 1582, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 1580, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4174, 0, 231, 866, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 1582, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 1580, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 1582, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 1798, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 2585, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 2587, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 2183, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 2184, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 3272, 3274, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 2608, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 1582, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, + 0, 0, 1164, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3465, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 829, 0, 0, 0, 0, 0, + 0, 0, 0, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 781, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 820, 580, 531, 446, 397, 0, 597, 0, + 0, 890, 898, 0, 0, 0, 0, 0, 0, 0, + 0, 886, 0, 0, 0, 0, 773, 0, 0, 810, + 866, 865, 797, 807, 0, 0, 317, 232, 526, 645, + 528, 527, 798, 0, 799, 803, 806, 802, 800, 801, + 0, 881, 0, 0, 0, 0, 0, 0, 765, 777, + 0, 782, 0, 0, 0, 0, 0, 0, 2159, 1164, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 774, 775, 0, 0, 0, + 0, 830, 0, 776, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 825, 804, 808, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 805, 828, + 832, 342, 904, 826, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 905, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 2159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 682, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, + 0, 0, 638, 823, 0, 642, 0, 482, 0, 0, + 888, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 827, 0, 435, 415, 901, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 3708, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 1859, 1858, 1860, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 885, 411, + 607, 640, 641, 533, 0, 900, 880, 882, 883, 887, + 891, 892, 893, 894, 895, 897, 899, 903, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 902, 568, 545, 571, + 486, 548, 547, 3806, 0, 582, 831, 583, 584, 401, + 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 911, 884, 910, 912, 913, 909, 914, 915, + 896, 786, 0, 838, 839, 907, 906, 908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 793, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 873, 846, 847, 848, 783, 849, 843, 844, 784, 845, + 874, 836, 870, 871, 812, 840, 850, 869, 851, 872, + 875, 876, 916, 917, 857, 841, 261, 918, 854, 877, + 868, 867, 852, 837, 878, 879, 819, 814, 855, 856, + 842, 861, 862, 863, 785, 833, 834, 835, 858, 859, + 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 864, 650, 450, 451, 656, 0, 860, 653, 654, 651, + 386, 437, 456, 444, 829, 668, 529, 530, 669, 639, + 0, 778, 0, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 781, 0, 0, + 0, 348, 1911, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 820, 580, 531, 446, 397, 0, 597, 0, + 0, 890, 898, 0, 0, 0, 0, 0, 0, 0, + 0, 886, 0, 2141, 0, 0, 773, 0, 0, 810, + 866, 865, 797, 807, 0, 0, 317, 232, 526, 645, + 528, 527, 798, 0, 799, 803, 806, 802, 800, 801, + 0, 881, 0, 0, 0, 0, 0, 0, 765, 777, + 0, 782, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 774, 775, 0, 0, 0, + 0, 830, 0, 776, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 2142, 804, 808, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 805, 828, + 832, 342, 904, 826, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 905, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, + 0, 0, 638, 823, 0, 642, 0, 482, 0, 0, + 888, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 827, 0, 435, 415, 901, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 885, 411, + 607, 640, 641, 533, 0, 900, 880, 882, 883, 887, + 891, 892, 893, 894, 895, 897, 899, 903, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 902, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 831, 583, 584, 401, + 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 911, 884, 910, 912, 913, 909, 914, 915, + 896, 786, 0, 838, 839, 907, 906, 908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 793, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 873, 846, 847, 848, 783, 849, 843, 844, 784, 845, + 874, 836, 870, 871, 812, 840, 850, 869, 851, 872, + 875, 876, 916, 917, 857, 841, 261, 918, 854, 877, + 868, 867, 852, 837, 878, 879, 819, 814, 855, 856, + 842, 861, 862, 863, 785, 833, 834, 835, 858, 859, + 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 864, 650, 450, 451, 656, 0, 860, 653, 654, 651, + 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, + 0, 778, 172, 209, 829, 0, 0, 0, 0, 0, + 0, 0, 0, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 781, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 1312, 580, 531, 446, 397, 0, 597, 0, + 0, 890, 898, 0, 0, 0, 0, 0, 0, 0, + 0, 886, 0, 0, 0, 0, 773, 0, 0, 810, + 866, 865, 797, 807, 0, 0, 317, 232, 526, 645, + 528, 527, 798, 0, 799, 803, 806, 802, 800, 801, + 0, 881, 0, 0, 0, 0, 0, 0, 765, 777, + 0, 782, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 774, 775, 0, 0, 0, + 0, 830, 0, 776, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 825, 804, 808, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 805, 828, + 832, 342, 904, 826, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 905, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 638, 823, 0, 642, 0, 482, 0, 0, + 888, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 827, 0, 435, 415, 901, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 885, 411, + 607, 640, 641, 533, 0, 900, 880, 882, 883, 887, + 891, 892, 893, 894, 895, 897, 899, 903, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 902, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 831, 583, 584, 401, + 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 911, 884, 910, 912, 913, 909, 914, 915, + 896, 786, 0, 838, 839, 907, 906, 908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 793, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 873, 846, 847, 848, 783, 849, 843, 844, 784, 845, + 874, 836, 870, 871, 812, 840, 850, 869, 851, 872, + 875, 876, 916, 917, 857, 841, 261, 918, 854, 877, + 868, 867, 852, 837, 878, 879, 819, 814, 855, 856, + 842, 861, 862, 863, 785, 833, 834, 835, 858, 859, + 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 864, 650, 450, 451, 656, 0, 860, 653, 654, 651, + 386, 437, 456, 444, 829, 668, 529, 530, 669, 639, + 0, 778, 0, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 781, 0, 0, + 0, 348, 4242, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 820, 580, 531, 446, 397, 0, 597, 0, + 0, 890, 898, 0, 0, 0, 0, 0, 0, 0, + 0, 886, 0, 0, 0, 0, 773, 0, 0, 810, + 866, 865, 797, 807, 0, 0, 317, 232, 526, 645, + 528, 527, 798, 0, 799, 803, 806, 802, 800, 801, + 0, 881, 0, 0, 0, 0, 0, 0, 765, 777, + 0, 782, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 774, 775, 0, 0, 0, + 0, 830, 0, 776, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 825, 804, 808, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 805, 828, + 832, 342, 904, 826, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 905, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 638, 823, 0, 642, 0, 482, 0, 0, + 888, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 827, 0, 435, 415, 901, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 885, 411, + 607, 640, 641, 533, 0, 900, 880, 882, 883, 887, + 891, 892, 893, 894, 895, 897, 899, 903, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 902, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 831, 583, 584, 401, + 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 911, 884, 910, 912, 913, 909, 914, 915, + 896, 786, 0, 838, 839, 907, 906, 908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 793, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 873, 846, 847, 848, 783, 849, 843, 844, 784, 845, + 874, 836, 870, 871, 812, 840, 850, 869, 851, 872, + 875, 876, 916, 917, 857, 841, 261, 918, 854, 877, + 868, 867, 852, 837, 878, 879, 819, 814, 855, 856, + 842, 861, 862, 863, 785, 833, 834, 835, 858, 859, + 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 864, 650, 450, 451, 656, 0, 860, 653, 654, 651, + 386, 437, 456, 444, 829, 668, 529, 530, 669, 639, + 0, 778, 0, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 781, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 820, 580, 531, 446, 397, 0, 597, 0, + 0, 890, 898, 0, 0, 0, 0, 0, 0, 0, + 0, 886, 0, 0, 0, 0, 773, 0, 0, 810, + 866, 865, 797, 807, 0, 0, 317, 232, 526, 645, + 528, 527, 798, 0, 799, 803, 806, 802, 800, 801, + 0, 881, 0, 0, 0, 0, 0, 0, 765, 777, + 0, 782, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 774, 775, 0, 0, 0, + 0, 830, 0, 776, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 825, 804, 808, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 805, 828, + 832, 342, 904, 826, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 905, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 638, 823, 0, 642, 0, 482, 0, 0, + 888, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 827, 0, 435, 415, 901, 4135, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 885, 411, + 607, 640, 641, 533, 0, 900, 880, 882, 883, 887, + 891, 892, 893, 894, 895, 897, 899, 903, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 902, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 831, 583, 584, 401, + 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 911, 884, 910, 912, 913, 909, 914, 915, + 896, 786, 0, 838, 839, 907, 906, 908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 793, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 873, 846, 847, 848, 783, 849, 843, 844, 784, 845, + 874, 836, 870, 871, 812, 840, 850, 869, 851, 872, + 875, 876, 916, 917, 857, 841, 261, 918, 854, 877, + 868, 867, 852, 837, 878, 879, 819, 814, 855, 856, + 842, 861, 862, 863, 785, 833, 834, 835, 858, 859, + 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 864, 650, 450, 451, 656, 0, 860, 653, 654, 651, + 386, 437, 456, 444, 829, 668, 529, 530, 669, 639, + 0, 778, 0, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 781, 0, 0, + 0, 348, 1911, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 820, 580, 531, 446, 397, 0, 597, 0, + 0, 890, 898, 0, 0, 0, 0, 0, 0, 0, + 0, 886, 0, 0, 0, 0, 773, 0, 0, 810, + 866, 865, 797, 807, 0, 0, 317, 232, 526, 645, + 528, 527, 798, 0, 799, 803, 806, 802, 800, 801, + 0, 881, 0, 0, 0, 0, 0, 0, 765, 777, + 0, 782, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 774, 775, 0, 0, 0, + 0, 830, 0, 776, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 825, 804, 808, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 805, 828, + 832, 342, 904, 826, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 905, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, + 0, 0, 638, 823, 0, 642, 0, 482, 0, 0, + 888, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 827, 0, 435, 415, 901, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 885, 411, + 607, 640, 641, 533, 0, 900, 880, 882, 883, 887, + 891, 892, 893, 894, 895, 897, 899, 903, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 902, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 831, 583, 584, 401, + 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 911, 884, 910, 912, 913, 909, 914, 915, + 896, 786, 0, 838, 839, 907, 906, 908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 793, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 873, 846, 847, 848, 783, 849, 843, 844, 784, 845, + 874, 836, 870, 871, 812, 840, 850, 869, 851, 872, + 875, 876, 916, 917, 857, 841, 261, 918, 854, 877, + 868, 867, 852, 837, 878, 879, 819, 814, 855, 856, + 842, 861, 862, 863, 785, 833, 834, 835, 858, 859, + 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 864, 650, 450, 451, 656, 0, 860, 653, 654, 651, + 386, 437, 456, 444, 829, 668, 529, 530, 669, 639, + 0, 778, 0, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 781, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 820, 580, 531, 446, 397, 0, 597, 0, + 0, 890, 898, 0, 0, 0, 0, 0, 0, 0, + 0, 886, 0, 0, 0, 0, 773, 0, 0, 810, + 866, 865, 797, 807, 0, 0, 317, 232, 526, 645, + 528, 527, 798, 0, 799, 803, 806, 802, 800, 801, + 0, 881, 0, 0, 0, 0, 0, 0, 765, 777, + 0, 782, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 774, 775, 1618, 0, 0, + 0, 830, 0, 776, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 825, 804, 808, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 805, 828, + 832, 342, 904, 826, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 905, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 681, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, + 0, 0, 638, 823, 0, 642, 0, 482, 0, 0, + 888, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 827, 0, 435, 415, 901, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 885, 411, + 607, 640, 641, 533, 0, 900, 880, 882, 883, 887, + 891, 892, 893, 894, 895, 897, 899, 903, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 902, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 831, 583, 584, 401, + 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 911, 884, 910, 912, 913, 909, 914, 915, + 896, 786, 0, 838, 839, 907, 906, 908, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 793, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 873, 846, 847, 848, 783, 849, 843, 844, 784, 845, + 874, 836, 870, 871, 812, 840, 850, 869, 851, 872, + 875, 876, 916, 917, 857, 841, 261, 918, 854, 877, + 868, 867, 852, 837, 878, 879, 819, 814, 855, 856, + 842, 861, 862, 863, 785, 833, 834, 835, 858, 859, + 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 864, 650, 450, 451, 656, 0, 860, 653, 654, 651, + 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, + 829, 778, 0, 2321, 0, 0, 0, 0, 0, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 781, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 820, 580, + 531, 446, 397, 0, 597, 0, 0, 890, 898, 0, + 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, + 0, 0, 773, 0, 0, 810, 866, 865, 797, 807, + 0, 0, 317, 232, 526, 645, 528, 527, 798, 0, + 799, 803, 806, 802, 800, 801, 0, 881, 0, 0, + 0, 0, 0, 0, 765, 777, 0, 782, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 774, 775, 0, 0, 0, 0, 830, 0, 776, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 825, 804, 808, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 805, 828, 832, 342, 904, 826, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 905, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 823, + 0, 642, 0, 482, 0, 0, 888, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 827, 0, 435, + 415, 901, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, + 357, 296, 297, 667, 885, 411, 607, 640, 641, 533, + 0, 900, 880, 882, 883, 887, 891, 892, 893, 894, + 895, 897, 899, 903, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, + 630, 623, 902, 568, 545, 571, 486, 548, 547, 0, + 0, 582, 831, 583, 584, 401, 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 414, 436, 319, 474, 445, 389, 562, 589, 911, 884, + 910, 912, 913, 909, 914, 915, 896, 786, 0, 838, + 839, 907, 906, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, + 332, 339, 664, 660, 465, 665, 793, 298, 539, 382, + 427, 355, 603, 604, 0, 655, 873, 846, 847, 848, + 783, 849, 843, 844, 784, 845, 874, 836, 870, 871, + 812, 840, 850, 869, 851, 872, 875, 876, 916, 917, + 857, 841, 261, 918, 854, 877, 868, 867, 852, 837, + 878, 879, 819, 814, 855, 856, 842, 861, 862, 863, + 785, 833, 834, 835, 858, 859, 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 866, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4151, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, + 633, 0, 643, 644, 646, 648, 864, 650, 450, 451, + 656, 0, 860, 653, 654, 651, 386, 437, 456, 444, + 829, 668, 529, 530, 669, 639, 0, 778, 0, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 781, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 820, 580, + 531, 446, 397, 0, 597, 0, 0, 890, 898, 0, + 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, + 0, 0, 773, 0, 0, 810, 866, 865, 797, 807, + 0, 0, 317, 232, 526, 645, 528, 527, 798, 0, + 799, 803, 806, 802, 800, 801, 0, 881, 0, 0, + 0, 0, 0, 0, 765, 777, 0, 782, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 774, 775, 1904, 0, 0, 0, 830, 0, 776, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 825, 804, 808, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 805, 828, 832, 342, 904, 826, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 905, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 823, + 0, 642, 0, 482, 0, 0, 888, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 827, 0, 435, + 415, 901, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, + 357, 296, 297, 667, 885, 411, 607, 640, 641, 533, + 0, 900, 880, 882, 883, 887, 891, 892, 893, 894, + 895, 897, 899, 903, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, + 630, 623, 902, 568, 545, 571, 486, 548, 547, 0, + 0, 582, 831, 583, 584, 401, 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 414, 436, 319, 474, 445, 389, 562, 589, 911, 884, + 910, 912, 913, 909, 914, 915, 896, 786, 0, 838, + 839, 907, 906, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, + 332, 339, 664, 660, 465, 665, 793, 298, 539, 382, + 427, 355, 603, 604, 0, 655, 873, 846, 847, 848, + 783, 849, 843, 844, 784, 845, 874, 836, 870, 871, + 812, 840, 850, 869, 851, 872, 875, 876, 916, 917, + 857, 841, 261, 918, 854, 877, 868, 867, 852, 837, + 878, 879, 819, 814, 855, 856, 842, 861, 862, 863, + 785, 833, 834, 835, 858, 859, 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 3906, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 4042, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, + 633, 0, 643, 644, 646, 648, 864, 650, 450, 451, + 656, 0, 860, 653, 654, 651, 386, 437, 456, 444, + 829, 668, 529, 530, 669, 639, 0, 778, 0, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 781, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 820, 580, + 531, 446, 397, 0, 597, 0, 0, 890, 898, 0, + 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, + 0, 0, 773, 0, 0, 810, 866, 865, 797, 807, + 0, 0, 317, 232, 526, 645, 528, 527, 798, 0, + 799, 803, 806, 802, 800, 801, 0, 881, 0, 0, + 0, 0, 0, 0, 765, 777, 0, 782, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 774, 775, 0, 0, 0, 0, 830, 0, 776, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 825, 804, 808, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 805, 828, 832, 342, 904, 826, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 905, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 823, + 0, 642, 0, 482, 0, 0, 888, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 827, 0, 435, + 415, 901, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, + 357, 296, 297, 667, 885, 411, 607, 640, 641, 533, + 0, 900, 880, 882, 883, 887, 891, 892, 893, 894, + 895, 897, 899, 903, 666, 0, 587, 601, 670, 600, + 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, + 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, + 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, + 630, 623, 902, 568, 545, 571, 486, 548, 547, 0, + 0, 582, 831, 583, 584, 401, 402, 403, 404, 889, + 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, + 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, + 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, + 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, + 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, + 414, 436, 319, 474, 445, 389, 562, 589, 911, 884, + 910, 912, 913, 909, 914, 915, 896, 786, 0, 838, + 839, 907, 906, 908, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, + 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, + 332, 339, 664, 660, 465, 665, 793, 298, 539, 382, + 427, 355, 603, 604, 0, 655, 873, 846, 847, 848, + 783, 849, 843, 844, 784, 845, 874, 836, 870, 871, + 812, 840, 850, 869, 851, 872, 875, 876, 916, 917, + 857, 841, 261, 918, 854, 877, 868, 867, 852, 837, + 878, 879, 819, 814, 855, 856, 842, 861, 862, 863, + 785, 833, 834, 835, 858, 859, 815, 816, 817, 818, + 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, + 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, + 633, 0, 643, 644, 646, 648, 864, 650, 450, 451, + 656, 0, 860, 653, 654, 651, 386, 437, 456, 444, + 829, 668, 529, 530, 669, 639, 0, 778, 0, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 781, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 820, 580, + 531, 446, 397, 0, 597, 0, 0, 890, 898, 0, + 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, + 0, 0, 773, 0, 0, 810, 866, 865, 797, 807, + 0, 0, 317, 232, 526, 645, 528, 527, 798, 0, + 799, 803, 806, 802, 800, 801, 0, 881, 0, 0, + 0, 0, 0, 0, 765, 777, 0, 782, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 774, 775, 0, 0, 0, 0, 830, 0, 776, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 825, 804, 808, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 805, 828, 832, 342, 904, 826, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 905, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 823, + 0, 642, 0, 482, 0, 0, 888, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 827, 0, 435, + 415, 901, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, + 357, 296, 297, 667, 885, 411, 607, 640, 641, 533, + 0, 900, 880, 882, 883, 887, 891, 892, 893, 894, + 895, 897, 899, 903, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, + 630, 623, 902, 568, 545, 571, 486, 548, 547, 0, + 0, 582, 831, 583, 584, 401, 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 414, 436, 319, 474, 445, 389, 562, 589, 911, 884, + 910, 912, 913, 909, 914, 915, 896, 786, 0, 838, + 839, 907, 906, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, + 332, 339, 664, 660, 465, 665, 793, 298, 539, 382, + 427, 355, 603, 604, 0, 655, 873, 846, 847, 848, + 783, 849, 843, 844, 784, 845, 874, 836, 870, 871, + 812, 840, 850, 869, 851, 872, 875, 876, 916, 917, + 857, 841, 261, 918, 854, 877, 868, 867, 852, 837, + 878, 879, 819, 814, 855, 856, 842, 861, 862, 863, + 785, 833, 834, 835, 858, 859, 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1812, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3921, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, + 633, 0, 643, 644, 646, 648, 864, 650, 450, 451, + 656, 0, 3663, 653, 3664, 3665, 386, 437, 456, 444, + 829, 668, 529, 530, 669, 639, 0, 778, 0, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 781, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 820, 580, + 531, 446, 397, 0, 597, 0, 0, 890, 898, 0, + 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, + 0, 0, 773, 0, 0, 810, 866, 865, 797, 807, + 0, 0, 317, 232, 526, 645, 528, 527, 2807, 0, + 2808, 803, 806, 802, 800, 801, 0, 881, 0, 0, + 0, 0, 0, 0, 765, 777, 0, 782, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 774, 775, 0, 0, 0, 0, 830, 0, 776, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 825, 804, 808, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 805, 828, 832, 342, 904, 826, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 905, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 823, + 0, 642, 0, 482, 0, 0, 888, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 827, 0, 435, + 415, 901, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, + 357, 296, 297, 667, 885, 411, 607, 640, 641, 533, + 0, 900, 880, 882, 883, 887, 891, 892, 893, 894, + 895, 897, 899, 903, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, + 630, 623, 902, 568, 545, 571, 486, 548, 547, 0, + 0, 582, 831, 583, 584, 401, 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 414, 436, 319, 474, 445, 389, 562, 589, 911, 884, + 910, 912, 913, 909, 914, 915, 896, 786, 0, 838, + 839, 907, 906, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, + 332, 339, 664, 660, 465, 665, 793, 298, 539, 382, + 427, 355, 603, 604, 0, 655, 873, 846, 847, 848, + 783, 849, 843, 844, 784, 845, 874, 836, 870, 871, + 812, 840, 850, 869, 851, 872, 875, 876, 916, 917, + 857, 841, 261, 918, 854, 877, 868, 867, 852, 837, + 878, 879, 819, 814, 855, 856, 842, 861, 862, 863, + 785, 833, 834, 835, 858, 859, 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 3830, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 3305, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, + 633, 0, 643, 644, 646, 648, 864, 650, 450, 451, + 656, 0, 860, 653, 654, 651, 386, 437, 456, 444, + 829, 668, 529, 530, 669, 639, 0, 778, 0, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 1764, + 0, 0, 0, 781, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 820, 580, + 531, 446, 397, 0, 597, 0, 0, 890, 898, 0, + 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, + 0, 0, 773, 0, 0, 810, 866, 865, 797, 807, + 0, 0, 317, 232, 526, 645, 528, 527, 798, 0, + 799, 803, 806, 802, 800, 801, 0, 881, 0, 0, + 0, 0, 0, 0, 0, 777, 0, 782, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 774, 775, 0, 0, 0, 0, 830, 0, 776, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 825, 804, 808, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 805, 828, 832, 342, 904, 826, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 905, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 823, + 0, 642, 0, 482, 0, 0, 888, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 827, 0, 435, + 415, 901, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 1765, 1766, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, + 357, 296, 297, 667, 885, 411, 607, 640, 641, 533, + 0, 900, 880, 882, 883, 887, 891, 892, 893, 894, + 895, 897, 899, 903, 666, 0, 587, 601, 670, 600, + 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, + 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, + 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, + 630, 623, 902, 568, 545, 571, 486, 548, 547, 0, + 0, 582, 831, 583, 584, 401, 402, 403, 404, 889, + 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, + 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, + 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, + 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, + 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, + 414, 436, 319, 474, 445, 389, 562, 589, 911, 884, + 910, 912, 913, 909, 914, 915, 896, 786, 0, 838, + 839, 907, 906, 908, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, + 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, + 332, 339, 664, 660, 465, 665, 793, 298, 539, 382, + 427, 355, 603, 604, 0, 655, 873, 846, 847, 848, + 783, 849, 843, 844, 784, 845, 874, 836, 870, 871, + 812, 840, 850, 869, 851, 872, 875, 876, 916, 917, + 857, 841, 261, 918, 854, 877, 868, 867, 852, 837, + 878, 879, 819, 814, 855, 856, 842, 861, 862, 863, + 785, 833, 834, 835, 858, 859, 815, 816, 817, 818, + 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, + 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, + 633, 0, 643, 644, 646, 648, 864, 650, 450, 451, + 656, 0, 860, 653, 654, 651, 386, 437, 456, 444, + 829, 668, 529, 530, 669, 639, 0, 778, 0, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 781, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 820, 580, + 531, 446, 397, 0, 597, 0, 0, 890, 898, 0, + 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, + 0, 0, 773, 0, 0, 810, 866, 865, 797, 807, + 0, 0, 317, 232, 526, 645, 528, 527, 798, 0, + 799, 803, 806, 802, 800, 801, 0, 881, 0, 0, + 0, 0, 0, 0, 0, 777, 0, 782, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 774, 775, 0, 0, 0, 0, 830, 0, 776, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 825, 804, 808, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 805, 828, 832, 342, 904, 826, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 905, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 823, + 0, 642, 0, 482, 0, 0, 888, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 827, 0, 435, + 415, 901, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, + 357, 296, 297, 667, 885, 411, 607, 640, 641, 533, + 0, 900, 880, 882, 883, 887, 891, 892, 893, 894, + 895, 897, 899, 903, 666, 0, 587, 601, 670, 600, + 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, + 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, + 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, + 630, 623, 902, 568, 545, 571, 486, 548, 547, 0, + 0, 582, 831, 583, 584, 401, 402, 403, 404, 889, + 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, + 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, + 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, + 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, + 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, + 414, 436, 319, 474, 445, 389, 562, 589, 911, 884, + 910, 912, 913, 909, 914, 915, 896, 786, 0, 838, + 839, 907, 906, 908, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, + 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, + 332, 339, 664, 660, 465, 665, 793, 298, 539, 382, + 427, 355, 603, 604, 0, 655, 873, 846, 847, 848, + 783, 849, 843, 844, 784, 845, 874, 836, 870, 871, + 812, 840, 850, 869, 851, 872, 875, 876, 916, 917, + 857, 841, 261, 918, 854, 877, 868, 867, 852, 837, + 878, 879, 819, 814, 855, 856, 842, 861, 862, 863, + 785, 833, 834, 835, 858, 859, 815, 816, 817, 818, + 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, + 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, + 633, 0, 643, 644, 646, 648, 864, 650, 450, 451, + 656, 0, 860, 653, 654, 651, 386, 437, 456, 444, + 829, 668, 529, 530, 669, 639, 0, 778, 0, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 781, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 820, 580, + 531, 446, 397, 0, 597, 0, 0, 890, 898, 0, + 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, + 0, 0, 0, 0, 0, 810, 866, 865, 797, 807, + 0, 0, 317, 232, 526, 645, 528, 527, 798, 0, + 799, 803, 806, 802, 800, 801, 0, 881, 0, 0, + 0, 0, 0, 0, 765, 777, 0, 782, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 774, 775, 0, 0, 0, 0, 830, 0, 776, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 825, 804, 808, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 805, 828, 832, 342, 904, 826, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 905, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 823, + 0, 642, 0, 482, 0, 0, 888, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 827, 0, 435, + 415, 901, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, + 357, 296, 297, 667, 885, 411, 607, 640, 641, 533, + 0, 900, 880, 882, 883, 887, 891, 892, 893, 894, + 895, 897, 899, 903, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, + 630, 623, 902, 568, 545, 571, 486, 548, 547, 0, + 0, 582, 831, 583, 584, 401, 402, 403, 404, 889, 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 414, 436, 319, 474, 445, 389, 562, 589, 911, 884, + 910, 912, 913, 909, 914, 915, 896, 786, 0, 838, + 839, 907, 906, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, + 332, 339, 664, 660, 465, 665, 793, 298, 539, 382, + 427, 355, 603, 604, 0, 655, 873, 846, 847, 848, + 783, 849, 843, 844, 784, 845, 874, 836, 870, 871, + 812, 840, 850, 869, 851, 872, 875, 876, 916, 917, + 857, 841, 261, 918, 854, 877, 868, 867, 852, 837, + 878, 879, 819, 814, 855, 856, 842, 861, 862, 863, + 785, 833, 834, 835, 858, 859, 815, 816, 817, 818, 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3324, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2113, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, + 633, 0, 643, 644, 646, 648, 864, 650, 450, 451, + 656, 0, 860, 653, 654, 651, 386, 437, 456, 444, + 0, 668, 529, 530, 669, 639, 0, 778, 172, 209, + 65, 200, 171, 0, 0, 0, 0, 0, 0, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 201, 0, + 0, 0, 0, 0, 0, 192, 0, 348, 0, 202, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 142, 580, + 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 205, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 0, 0, 0, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 0, 469, 497, 342, 488, 0, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 513, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 170, 198, 207, 199, 126, 0, 0, 638, 0, + 0, 642, 0, 482, 0, 0, 224, 0, 0, 0, + 452, 0, 0, 378, 197, 191, 190, 498, 0, 435, + 415, 236, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 244, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 617, 618, 619, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, + 357, 296, 297, 477, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, + 227, 590, 593, 523, 237, 0, 587, 601, 560, 600, + 238, 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, + 608, 322, 505, 428, 140, 569, 0, 0, 0, 0, + 0, 0, 0, 0, 574, 575, 572, 235, 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, + 0, 0, 0, 0, 0, 0, 66, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, + 332, 339, 242, 312, 465, 243, 0, 298, 539, 382, + 427, 355, 603, 604, 62, 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, + 239, 46, 225, 228, 230, 229, 0, 63, 588, 599, + 633, 5, 643, 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 3535, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, + 145, 240, 529, 530, 241, 639, 172, 209, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 413, 0, 0, + 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 348, 0, 0, 381, 581, + 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, + 554, 524, 555, 525, 556, 557, 142, 580, 531, 446, + 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, + 205, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 2480, 2483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, + 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, + 0, 0, 0, 0, 0, 0, 0, 305, 453, 472, + 318, 441, 485, 323, 449, 464, 313, 412, 438, 0, + 0, 307, 470, 448, 394, 306, 0, 432, 346, 362, + 343, 410, 0, 469, 497, 342, 488, 0, 480, 309, + 0, 479, 409, 466, 471, 395, 388, 0, 308, 468, + 393, 387, 375, 352, 513, 376, 377, 366, 422, 385, + 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, + 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 638, 0, 0, 642, + 2484, 482, 0, 0, 0, 2479, 0, 2478, 452, 2476, + 2481, 378, 0, 0, 0, 498, 0, 435, 415, 671, + 0, 0, 433, 383, 467, 424, 473, 454, 481, 429, + 425, 299, 455, 345, 396, 314, 316, 661, 347, 349, + 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, + 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, + 338, 302, 420, 463, 2482, 359, 430, 391, 303, 390, + 421, 462, 461, 315, 489, 495, 496, 585, 0, 501, + 672, 673, 674, 510, 0, 426, 311, 310, 0, 0, + 0, 340, 324, 326, 327, 325, 418, 515, 516, 517, + 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, + 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, + 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, + 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, + 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, + 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, + 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, + 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, + 301, 506, 624, 625, 626, 627, 628, 629, 630, 623, + 478, 568, 545, 571, 486, 548, 547, 0, 0, 582, + 502, 583, 584, 401, 402, 403, 404, 361, 608, 322, + 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, + 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, + 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, + 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, + 408, 368, 370, 443, 374, 384, 431, 483, 414, 436, + 319, 474, 445, 389, 562, 589, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, + 609, 0, 0, 559, 460, 335, 290, 331, 332, 339, + 664, 660, 465, 665, 0, 298, 539, 382, 427, 355, + 603, 604, 0, 655, 245, 246, 247, 248, 249, 250, + 251, 252, 291, 253, 254, 255, 256, 257, 258, 259, + 262, 263, 264, 265, 266, 267, 268, 269, 606, 260, + 261, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 0, 0, 0, 292, 293, + 294, 295, 0, 0, 286, 287, 288, 289, 0, 0, + 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, + 0, 0, 0, 0, 0, 0, 588, 599, 633, 0, + 643, 644, 646, 648, 647, 650, 450, 451, 656, 0, + 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, + 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, + 649, 532, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, + 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, + 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1348, 0, 0, + 231, 0, 0, 797, 807, 0, 0, 317, 232, 526, + 645, 528, 527, 798, 0, 799, 803, 806, 802, 800, + 801, 0, 320, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 447, 475, 0, 487, 0, 371, 372, 0, 804, 0, + 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, + 323, 449, 464, 313, 412, 438, 0, 0, 307, 470, + 448, 394, 306, 0, 432, 346, 362, 343, 410, 805, + 469, 497, 342, 488, 0, 480, 309, 0, 479, 409, + 466, 471, 395, 388, 0, 308, 468, 393, 387, 375, + 352, 513, 376, 377, 366, 422, 385, 423, 367, 399, + 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 638, 0, 0, 642, 0, 482, 0, + 0, 0, 0, 0, 0, 452, 0, 0, 378, 0, + 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, + 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, + 345, 396, 314, 316, 661, 347, 349, 353, 354, 405, + 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, + 364, 330, 300, 336, 334, 337, 442, 338, 302, 420, + 463, 0, 359, 430, 391, 303, 390, 421, 462, 461, + 315, 489, 495, 496, 585, 0, 501, 672, 673, 674, + 510, 0, 426, 311, 310, 0, 0, 0, 340, 324, + 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, + 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, + 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, + 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, @@ -5771,42 +3632,109 @@ var yyAct = [...]int{ 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, + 639, 172, 209, 65, 200, 171, 0, 0, 0, 0, + 0, 0, 413, 694, 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, + 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, + 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 701, 0, 0, + 0, 0, 0, 0, 0, 700, 0, 0, 231, 0, + 0, 0, 0, 0, 0, 317, 232, 526, 645, 528, + 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3435, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, + 0, 0, 0, 0, 0, 0, 0, 0, 447, 475, + 0, 487, 0, 371, 372, 0, 0, 0, 0, 0, + 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, + 464, 313, 412, 438, 0, 0, 307, 470, 448, 394, + 306, 0, 432, 346, 362, 343, 410, 0, 469, 497, + 342, 488, 0, 480, 309, 0, 479, 409, 466, 471, + 395, 388, 0, 308, 468, 393, 387, 375, 352, 513, + 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, + 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 698, 699, + 0, 638, 0, 0, 642, 0, 482, 0, 0, 0, + 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, + 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, + 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, + 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, + 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, + 300, 336, 334, 337, 442, 338, 302, 420, 463, 0, + 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, + 495, 496, 585, 0, 501, 672, 673, 674, 510, 0, + 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, + 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, + 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, + 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, + 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, + 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, + 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, + 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, + 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, + 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, + 627, 628, 629, 630, 623, 478, 568, 545, 571, 486, + 548, 547, 0, 0, 582, 502, 583, 584, 401, 402, + 403, 404, 695, 697, 322, 505, 428, 709, 569, 0, + 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, + 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, + 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, + 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, + 384, 431, 483, 414, 436, 319, 474, 445, 389, 562, + 589, 0, 0, 0, 0, 0, 0, 0, 0, 66, + 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, + 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, + 335, 290, 331, 332, 339, 664, 660, 465, 665, 0, + 298, 539, 382, 427, 355, 603, 604, 0, 655, 245, + 246, 247, 248, 249, 250, 251, 252, 291, 253, 254, + 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, + 267, 268, 269, 606, 260, 261, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 0, 0, 0, 292, 293, 294, 295, 0, 0, 286, + 287, 288, 289, 0, 0, 0, 490, 491, 492, 514, + 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, + 0, 588, 599, 633, 0, 643, 644, 646, 648, 647, + 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, + 437, 456, 444, 0, 668, 529, 530, 669, 639, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 1154, 0, + 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, + 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 2650, 2651, 1139, 0, 0, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 2644, 2647, 2648, 2649, 2652, 0, 2657, + 2653, 2654, 2655, 2656, 0, 2639, 2640, 2641, 2642, 1137, + 2623, 2645, 0, 2624, 409, 2625, 2626, 2627, 2628, 1141, + 2629, 2630, 2631, 2632, 2633, 2636, 2637, 2634, 2635, 2643, + 422, 385, 423, 367, 399, 398, 400, 1165, 1167, 1169, + 1171, 1174, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 0, + 0, 642, 0, 482, 0, 0, 0, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 2638, 0, 435, + 415, 671, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, @@ -5825,7 +3753,7 @@ var yyAct = [...]int{ 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, + 332, 339, 664, 660, 465, 665, 0, 298, 2646, 382, 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, @@ -5845,11 +3773,11 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 320, 2480, 2483, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, @@ -5859,347 +3787,680 @@ var yyAct = [...]int{ 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, + 0, 0, 0, 0, 0, 638, 0, 0, 642, 2484, + 482, 0, 0, 0, 2479, 0, 2478, 452, 2476, 2481, 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, + 302, 420, 463, 2482, 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, + 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, + 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, + 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, + 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, + 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, + 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, + 506, 624, 625, 626, 627, 628, 629, 630, 623, 478, + 568, 545, 571, 486, 548, 547, 0, 0, 582, 502, + 583, 584, 401, 402, 403, 404, 361, 608, 322, 505, + 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, + 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, + 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, + 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, + 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, + 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, + 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, + 660, 465, 665, 0, 298, 539, 382, 427, 355, 603, + 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, + 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, + 263, 264, 265, 266, 267, 268, 269, 606, 260, 261, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 0, 0, 0, 292, 293, 294, + 295, 0, 0, 286, 287, 288, 289, 0, 0, 0, + 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, + 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, + 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, + 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, + 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 317, 232, 526, 645, + 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 320, 0, 2501, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, + 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 638, 0, 0, 642, 2500, 482, 0, 0, + 0, 2506, 2503, 2505, 452, 0, 2504, 378, 0, 0, + 0, 498, 0, 435, 415, 671, 0, 2498, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, + 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, + 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 478, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 502, 583, 584, 401, + 402, 403, 404, 361, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 0, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 245, 246, 247, 248, 249, 250, 251, 252, 291, 253, + 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, + 266, 267, 268, 269, 606, 260, 261, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 0, 0, 0, 292, 293, 294, 295, 0, 0, + 286, 287, 288, 289, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, + 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, + 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 348, 0, + 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, + 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, + 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, + 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, + 2501, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, + 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, + 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, + 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, + 432, 346, 362, 343, 410, 0, 469, 497, 342, 488, + 0, 480, 309, 0, 479, 409, 466, 471, 395, 388, + 0, 308, 468, 393, 387, 375, 352, 513, 376, 377, + 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, + 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, + 0, 0, 642, 2500, 482, 0, 0, 0, 2506, 2503, + 2505, 452, 0, 2504, 378, 0, 0, 0, 498, 0, + 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, + 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, + 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, + 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, + 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, + 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, + 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, + 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, + 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, + 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, + 0, 494, 379, 380, 0, 351, 350, 392, 304, 0, + 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, + 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, + 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, + 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, + 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, + 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, + 629, 630, 623, 478, 568, 545, 571, 486, 548, 547, + 0, 0, 582, 502, 583, 584, 401, 402, 403, 404, + 361, 608, 322, 505, 428, 0, 569, 0, 0, 0, + 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, + 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, + 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, + 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, + 483, 414, 436, 319, 474, 445, 389, 562, 589, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, + 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, + 331, 332, 339, 664, 660, 465, 665, 0, 298, 539, + 382, 427, 355, 603, 604, 0, 655, 245, 246, 247, + 248, 249, 250, 251, 252, 291, 253, 254, 255, 256, + 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, + 269, 606, 260, 261, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 0, 0, + 0, 292, 293, 294, 295, 0, 0, 286, 287, 288, + 289, 0, 0, 0, 490, 491, 492, 514, 0, 476, + 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, + 599, 633, 0, 643, 644, 646, 648, 647, 650, 450, + 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, + 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, + 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, + 2183, 0, 0, 0, 0, 348, 0, 0, 381, 581, + 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, + 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, + 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 231, 0, 0, 2184, 0, 0, 0, + 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 0, 0, 1276, 1277, + 1278, 1275, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, + 0, 0, 0, 0, 0, 0, 0, 305, 453, 472, + 318, 441, 485, 323, 449, 464, 313, 412, 438, 0, + 0, 307, 470, 448, 394, 306, 0, 432, 346, 362, + 343, 410, 0, 469, 497, 342, 488, 0, 480, 309, + 0, 479, 409, 466, 471, 395, 388, 0, 308, 468, + 393, 387, 375, 352, 513, 376, 377, 366, 422, 385, + 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, + 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 638, 0, 0, 642, + 0, 482, 0, 0, 0, 0, 0, 0, 452, 0, + 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, + 0, 0, 433, 383, 467, 424, 473, 454, 481, 429, + 425, 299, 455, 345, 396, 314, 316, 661, 347, 349, + 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, + 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, + 338, 302, 420, 463, 0, 359, 430, 391, 303, 390, + 421, 462, 461, 315, 489, 495, 496, 585, 0, 501, + 672, 673, 674, 510, 0, 426, 311, 310, 0, 0, + 0, 340, 324, 326, 327, 325, 418, 515, 516, 517, + 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, + 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, + 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, + 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, + 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, + 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, + 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, + 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, + 301, 506, 624, 625, 626, 627, 628, 629, 630, 623, + 478, 568, 545, 571, 486, 548, 547, 0, 0, 582, + 502, 583, 584, 401, 402, 403, 404, 361, 608, 322, + 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, + 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, + 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, + 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, + 408, 368, 370, 443, 374, 384, 431, 483, 414, 436, + 319, 474, 445, 389, 562, 589, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, + 609, 0, 0, 559, 460, 335, 290, 331, 332, 339, + 664, 660, 465, 665, 0, 298, 539, 382, 427, 355, + 603, 604, 0, 655, 245, 246, 247, 248, 249, 250, + 251, 252, 291, 253, 254, 255, 256, 257, 258, 259, + 262, 263, 264, 265, 266, 267, 268, 269, 606, 260, + 261, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 0, 0, 0, 292, 293, + 294, 295, 0, 0, 286, 287, 288, 289, 0, 0, + 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, + 0, 0, 0, 0, 0, 0, 588, 599, 633, 0, + 643, 644, 646, 648, 647, 650, 450, 451, 656, 0, + 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, + 529, 530, 669, 639, 172, 209, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 413, 0, 0, 544, 577, + 566, 649, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 348, 0, 0, 381, 581, 563, 573, + 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, + 555, 525, 556, 557, 142, 580, 531, 446, 397, 0, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 205, 2233, + 0, 231, 0, 0, 0, 0, 0, 0, 317, 232, + 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 1582, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 447, 475, 0, 487, 0, 371, 372, 0, 0, + 0, 0, 0, 0, 0, 305, 453, 472, 318, 441, + 485, 323, 449, 464, 313, 412, 438, 0, 0, 307, + 470, 448, 394, 306, 0, 432, 346, 362, 343, 410, + 0, 469, 497, 342, 488, 0, 480, 309, 0, 479, + 409, 466, 471, 395, 388, 0, 308, 468, 393, 387, + 375, 352, 513, 376, 377, 366, 422, 385, 423, 367, + 399, 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 638, 0, 0, 642, 0, 482, + 0, 0, 0, 0, 0, 0, 452, 0, 0, 378, + 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, + 433, 383, 467, 424, 473, 454, 481, 429, 425, 299, + 455, 345, 396, 314, 316, 661, 347, 349, 353, 354, + 405, 406, 419, 440, 457, 458, 459, 344, 328, 434, + 329, 364, 330, 300, 336, 334, 337, 442, 338, 302, + 420, 463, 0, 359, 430, 391, 303, 390, 421, 462, + 461, 315, 489, 495, 496, 585, 0, 501, 672, 673, + 674, 510, 0, 426, 311, 310, 0, 0, 0, 340, + 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, + 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, + 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, + 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, + 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, + 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, + 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, + 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, + 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, + 624, 625, 626, 627, 628, 629, 630, 623, 478, 568, + 545, 571, 486, 548, 547, 0, 0, 582, 502, 583, + 584, 401, 402, 403, 404, 361, 608, 322, 505, 428, + 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, + 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, + 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, + 370, 443, 374, 384, 431, 483, 414, 436, 319, 474, + 445, 389, 562, 589, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, + 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, + 0, 559, 460, 335, 290, 331, 332, 339, 664, 660, + 465, 665, 0, 298, 539, 382, 427, 355, 603, 604, + 0, 655, 245, 246, 247, 248, 249, 250, 251, 252, + 291, 253, 254, 255, 256, 257, 258, 259, 262, 263, + 264, 265, 266, 267, 268, 269, 606, 260, 261, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 0, 0, 0, 292, 293, 294, 295, + 0, 0, 286, 287, 288, 289, 0, 0, 0, 490, + 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, + 0, 0, 0, 0, 588, 599, 633, 0, 643, 644, + 646, 648, 647, 650, 450, 451, 656, 0, 652, 653, + 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, + 669, 639, 172, 209, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 142, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 205, 2218, 0, 231, + 0, 0, 0, 0, 0, 0, 317, 232, 526, 645, + 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 2587, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, + 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 638, 0, 0, 642, 0, 482, 0, 0, + 0, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, + 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, + 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 478, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 502, 583, 584, 401, + 402, 403, 404, 361, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 0, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 245, 246, 247, 248, 249, 250, 251, 252, 291, 253, + 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, + 266, 267, 268, 269, 606, 260, 261, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 0, 0, 0, 292, 293, 294, 295, 0, 0, + 286, 287, 288, 289, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, + 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, + 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 348, 1065, + 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, + 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, + 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 231, 1072, 1073, 0, + 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1076, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 2967, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, + 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, + 305, 453, 1059, 318, 441, 485, 323, 449, 464, 313, + 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, + 432, 346, 362, 343, 410, 0, 469, 497, 342, 488, + 1045, 480, 309, 1044, 479, 409, 466, 471, 395, 388, + 0, 308, 468, 393, 387, 375, 352, 513, 376, 377, + 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, + 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, + 0, 0, 642, 0, 482, 0, 0, 0, 0, 0, + 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, + 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, + 454, 481, 1063, 425, 299, 455, 345, 396, 314, 316, + 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, + 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, + 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, + 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, + 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, + 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, + 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, + 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, + 0, 494, 379, 380, 0, 351, 350, 392, 304, 0, + 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, + 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, + 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, + 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, + 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, + 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, + 629, 1064, 623, 478, 568, 545, 571, 486, 548, 547, + 0, 0, 582, 1067, 583, 584, 401, 402, 403, 404, + 361, 608, 1062, 505, 428, 0, 569, 0, 0, 0, + 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, + 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, + 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, + 637, 635, 636, 1074, 1060, 1070, 1061, 374, 384, 431, + 483, 414, 436, 319, 474, 445, 1071, 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, + 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, + 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, + 331, 332, 339, 664, 660, 465, 665, 0, 298, 539, + 382, 427, 355, 603, 604, 0, 655, 245, 246, 247, + 248, 249, 250, 251, 252, 291, 253, 254, 255, 256, + 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, + 269, 606, 260, 261, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 0, 0, + 0, 292, 293, 294, 295, 0, 0, 286, 287, 288, + 289, 0, 0, 0, 490, 491, 492, 514, 0, 476, + 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, + 599, 633, 0, 643, 644, 646, 648, 647, 650, 450, + 451, 656, 0, 652, 653, 654, 651, 1058, 437, 456, + 444, 0, 668, 529, 530, 669, 639, 172, 209, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, + 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 0, 0, 381, + 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, + 553, 554, 524, 555, 525, 556, 557, 142, 580, 531, + 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2113, 0, 0, 231, 0, 0, 0, 0, 0, + 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, + 372, 0, 0, 0, 0, 0, 0, 0, 305, 453, + 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, + 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, + 362, 343, 410, 0, 469, 497, 342, 488, 0, 480, + 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, + 468, 393, 387, 375, 352, 513, 376, 377, 366, 422, + 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, + 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 638, 0, 0, + 642, 0, 482, 0, 0, 0, 0, 0, 0, 452, + 0, 0, 378, 0, 0, 0, 498, 0, 435, 415, + 671, 0, 0, 433, 383, 467, 424, 473, 454, 481, + 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, + 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, + 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, + 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, + 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, + 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, + 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, + 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, + 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, + 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, + 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, + 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, + 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, + 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, + 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, + 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, + 623, 478, 568, 545, 571, 486, 548, 547, 0, 0, + 582, 502, 583, 584, 401, 402, 403, 404, 361, 608, + 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, + 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, + 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, + 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, + 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, + 436, 319, 474, 445, 389, 562, 589, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 2830, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, + 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, + 339, 664, 660, 465, 665, 0, 298, 539, 382, 427, + 355, 603, 604, 0, 655, 245, 246, 247, 248, 249, + 250, 251, 252, 291, 253, 254, 255, 256, 257, 258, + 259, 262, 263, 264, 265, 266, 267, 268, 269, 606, + 260, 261, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 0, 0, 0, 292, + 293, 294, 295, 0, 0, 286, 287, 288, 289, 0, + 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, + 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, + 0, 643, 644, 646, 648, 647, 650, 450, 451, 656, + 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, + 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, + 566, 649, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 348, 0, 0, 381, 581, 563, 573, + 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, + 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 231, 1072, 1073, 0, 0, 0, 0, 317, 232, + 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1076, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, + 0, 447, 475, 0, 487, 0, 371, 372, 0, 0, + 0, 0, 0, 0, 0, 305, 453, 472, 318, 441, + 485, 323, 449, 464, 313, 412, 438, 0, 0, 307, + 470, 448, 394, 306, 0, 432, 346, 362, 343, 410, + 0, 469, 497, 342, 488, 1045, 480, 309, 1044, 479, + 409, 466, 471, 395, 388, 0, 308, 468, 393, 387, + 375, 352, 513, 376, 377, 366, 422, 385, 423, 367, + 399, 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, + 0, 0, 0, 0, 638, 0, 0, 642, 0, 482, + 0, 0, 0, 0, 0, 0, 452, 0, 0, 378, + 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, + 433, 383, 467, 424, 473, 454, 481, 429, 425, 299, + 455, 345, 396, 314, 316, 661, 347, 349, 353, 354, + 405, 406, 419, 440, 457, 458, 459, 344, 328, 434, + 329, 364, 330, 300, 336, 334, 337, 442, 338, 302, + 420, 463, 0, 359, 430, 391, 303, 390, 421, 462, + 461, 315, 489, 495, 496, 585, 0, 501, 672, 673, + 674, 510, 0, 426, 311, 310, 0, 0, 0, 340, + 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, + 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, + 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, + 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, + 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, + 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, + 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, + 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, + 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, + 624, 625, 626, 627, 628, 629, 630, 623, 478, 568, + 545, 571, 486, 548, 547, 0, 0, 582, 502, 583, + 584, 401, 402, 403, 404, 361, 608, 322, 505, 428, + 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, + 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, + 0, 511, 576, 512, 634, 637, 635, 636, 1074, 2134, + 1070, 2135, 374, 384, 431, 483, 414, 436, 319, 474, + 445, 1071, 562, 589, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, + 0, 559, 460, 335, 290, 331, 332, 339, 664, 660, + 465, 665, 0, 298, 539, 382, 427, 355, 603, 604, + 0, 655, 245, 246, 247, 248, 249, 250, 251, 252, + 291, 253, 254, 255, 256, 257, 258, 259, 262, 263, + 264, 265, 266, 267, 268, 269, 606, 260, 261, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 0, 0, 0, 292, 293, 294, 295, + 0, 0, 286, 287, 288, 289, 0, 0, 0, 490, + 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, + 0, 0, 0, 0, 588, 599, 633, 0, 643, 644, + 646, 648, 647, 650, 450, 451, 656, 0, 652, 653, + 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, + 669, 639, 413, 0, 0, 544, 577, 566, 649, 532, + 0, 0, 3049, 0, 0, 0, 0, 0, 0, 0, + 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, + 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, + 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, + 0, 0, 0, 0, 0, 317, 232, 526, 645, 528, + 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2254, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 447, 475, + 0, 487, 0, 371, 372, 0, 0, 0, 0, 0, + 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, + 464, 313, 412, 438, 0, 0, 307, 470, 448, 394, + 306, 0, 432, 346, 362, 343, 410, 0, 469, 497, + 342, 488, 0, 480, 309, 0, 479, 409, 466, 471, + 395, 388, 0, 308, 468, 393, 387, 375, 352, 513, + 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, + 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3052, 0, 0, 0, + 3051, 638, 0, 0, 642, 0, 482, 0, 0, 0, + 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, + 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, + 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, + 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, + 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, + 300, 336, 334, 337, 442, 338, 302, 420, 463, 0, + 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, + 495, 496, 585, 0, 501, 672, 673, 674, 510, 0, + 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, + 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, + 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, + 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, + 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, + 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, + 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, + 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, + 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, + 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, + 627, 628, 629, 630, 623, 478, 568, 545, 571, 486, + 548, 547, 0, 0, 582, 502, 583, 584, 401, 402, + 403, 404, 361, 608, 322, 505, 428, 0, 569, 0, + 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, + 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, + 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, + 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, + 384, 431, 483, 414, 436, 319, 474, 445, 389, 562, + 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, + 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, + 335, 290, 331, 332, 339, 664, 660, 465, 665, 0, + 298, 539, 382, 427, 355, 603, 604, 0, 655, 245, + 246, 247, 248, 249, 250, 251, 252, 291, 253, 254, + 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, + 267, 268, 269, 606, 260, 261, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 0, 0, 0, 292, 293, 294, 295, 0, 0, 286, + 287, 288, 289, 0, 0, 0, 490, 491, 492, 514, + 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, + 0, 588, 599, 633, 0, 643, 644, 646, 648, 647, + 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, + 437, 456, 444, 0, 668, 529, 530, 669, 639, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 348, 1584, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, + 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 231, 0, 0, 1582, 0, + 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 1580, 0, 0, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 0, 469, 497, 342, 488, 0, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 513, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 0, + 0, 642, 0, 482, 0, 0, 0, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 498, 0, 435, + 415, 671, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, @@ -6231,41 +4492,304 @@ var yyAct = [...]int{ 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, + 0, 0, 0, 0, 348, 1578, 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 2705, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, + 0, 0, 231, 0, 0, 1582, 0, 0, 0, 317, + 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 447, 475, 0, 487, 0, 371, 372, 1580, + 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, + 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, + 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, + 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, + 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, + 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, + 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, + 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, + 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, + 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, + 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, + 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, + 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, + 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, + 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, + 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, + 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, + 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, + 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, + 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, + 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, + 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, + 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, + 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, + 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, + 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, + 506, 624, 625, 626, 627, 628, 629, 630, 623, 478, + 568, 545, 571, 486, 548, 547, 0, 0, 582, 502, + 583, 584, 401, 402, 403, 404, 361, 608, 322, 505, + 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, + 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, + 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, + 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, + 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, + 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, + 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, + 660, 465, 665, 0, 298, 539, 382, 427, 355, 603, + 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, + 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, + 263, 264, 265, 266, 267, 268, 269, 606, 260, 261, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 0, 0, 0, 292, 293, 294, + 295, 0, 0, 286, 287, 288, 289, 0, 0, 0, + 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, + 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, + 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, + 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, + 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4196, 0, 231, + 866, 0, 0, 0, 0, 0, 317, 232, 526, 645, + 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, + 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 638, 0, 0, 642, 0, 482, 0, 0, + 0, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, + 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, + 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 478, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 502, 583, 584, 401, + 402, 403, 404, 361, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 0, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 245, 246, 247, 248, 249, 250, 251, 252, 291, 253, + 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, + 266, 267, 268, 269, 606, 260, 261, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 0, 0, 0, 292, 293, 294, 295, 0, 0, + 286, 287, 288, 289, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, + 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, + 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 348, 0, + 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, + 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, + 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 231, 0, 0, 1582, + 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, + 0, 371, 372, 1580, 0, 0, 0, 0, 0, 0, + 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, + 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, + 432, 346, 362, 343, 410, 0, 469, 497, 342, 488, + 0, 480, 309, 0, 479, 409, 466, 471, 395, 388, + 0, 308, 468, 393, 387, 375, 352, 513, 376, 377, + 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, + 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, + 0, 0, 642, 0, 482, 0, 0, 0, 0, 0, + 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, + 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, + 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, + 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, + 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, + 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, + 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, + 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, + 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, + 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, + 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, + 0, 494, 379, 380, 0, 351, 350, 392, 304, 0, + 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, + 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, + 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, + 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, + 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, + 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, + 629, 630, 623, 478, 568, 545, 571, 486, 548, 547, + 0, 0, 582, 502, 583, 584, 401, 402, 403, 404, + 361, 608, 322, 505, 428, 0, 569, 0, 0, 0, + 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, + 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, + 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, + 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, + 483, 414, 436, 319, 474, 445, 389, 562, 589, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, + 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, + 331, 332, 339, 664, 660, 465, 665, 0, 298, 539, + 382, 427, 355, 603, 604, 0, 655, 245, 246, 247, + 248, 249, 250, 251, 252, 291, 253, 254, 255, 256, + 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, + 269, 606, 260, 261, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 0, 0, + 0, 292, 293, 294, 295, 0, 0, 286, 287, 288, + 289, 0, 0, 0, 490, 491, 492, 514, 0, 476, + 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, + 599, 633, 0, 643, 644, 646, 648, 647, 650, 450, + 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, + 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, + 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 348, 0, 0, 381, 581, + 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, + 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, + 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 231, 0, 0, 1582, 0, 0, 0, + 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, + 1798, 0, 0, 0, 0, 0, 0, 305, 453, 472, + 318, 441, 485, 323, 449, 464, 313, 412, 438, 0, + 0, 307, 470, 448, 394, 306, 0, 432, 346, 362, + 343, 410, 0, 469, 497, 342, 488, 0, 480, 309, + 0, 479, 409, 466, 471, 395, 388, 0, 308, 468, + 393, 387, 375, 352, 513, 376, 377, 366, 422, 385, + 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, + 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 638, 0, 0, 642, + 0, 482, 0, 0, 0, 0, 0, 0, 452, 0, + 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, + 0, 0, 433, 383, 467, 424, 473, 454, 481, 429, + 425, 299, 455, 345, 396, 314, 316, 661, 347, 349, + 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, + 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, + 338, 302, 420, 463, 0, 359, 430, 391, 303, 390, + 421, 462, 461, 315, 489, 495, 496, 585, 0, 501, + 672, 673, 674, 510, 0, 426, 311, 310, 0, 0, + 0, 340, 324, 326, 327, 325, 418, 515, 516, 517, + 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, + 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, + 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, + 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, + 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, + 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, + 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, + 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, + 301, 506, 624, 625, 626, 627, 628, 629, 630, 623, + 478, 568, 545, 571, 486, 548, 547, 0, 0, 582, + 502, 583, 584, 401, 402, 403, 404, 361, 608, 322, + 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, + 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, + 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, + 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, + 408, 368, 370, 443, 374, 384, 431, 483, 414, 436, + 319, 474, 445, 389, 562, 589, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, + 609, 0, 0, 559, 460, 335, 290, 331, 332, 339, + 664, 660, 465, 665, 0, 298, 539, 382, 427, 355, + 603, 604, 0, 655, 245, 246, 247, 248, 249, 250, + 251, 252, 291, 253, 254, 255, 256, 257, 258, 259, + 262, 263, 264, 265, 266, 267, 268, 269, 606, 260, + 261, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 0, 0, 0, 292, 293, + 294, 295, 0, 0, 286, 287, 288, 289, 0, 0, + 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, + 0, 0, 0, 0, 0, 0, 588, 599, 633, 0, + 643, 644, 646, 648, 647, 650, 450, 451, 656, 0, + 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, + 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, + 649, 532, 0, 0, 0, 0, 0, 2585, 0, 0, + 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, + 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, + 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 231, 0, 0, 2587, 0, 0, 0, 317, 232, 526, + 645, 528, 527, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 447, 475, 0, 487, 0, 371, 372, 0, 0, 0, + 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, + 323, 449, 464, 313, 412, 438, 0, 0, 307, 470, + 448, 394, 306, 0, 432, 346, 362, 343, 410, 0, + 469, 497, 342, 488, 0, 480, 309, 0, 479, 409, + 466, 471, 395, 388, 0, 308, 468, 393, 387, 375, + 352, 513, 376, 377, 366, 422, 385, 423, 367, 399, + 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 638, 0, 0, 642, 0, 482, 0, + 0, 0, 0, 0, 0, 452, 0, 0, 378, 0, + 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, + 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, + 345, 396, 314, 316, 661, 347, 349, 353, 354, 405, + 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, + 364, 330, 300, 336, 334, 337, 442, 338, 302, 420, + 463, 0, 359, 430, 391, 303, 390, 421, 462, 461, + 315, 489, 495, 496, 585, 0, 501, 672, 673, 674, + 510, 0, 426, 311, 310, 0, 0, 0, 340, 324, + 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, + 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, + 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, + 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, @@ -6296,18 +4820,18 @@ var yyAct = [...]int{ 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, + 0, 0, 0, 0, 2183, 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, + 2184, 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2667, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, @@ -6331,6 +4855,269 @@ var yyAct = [...]int{ 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, + 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, + 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, + 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, + 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, + 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, + 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, + 628, 629, 630, 623, 478, 568, 545, 571, 486, 548, + 547, 0, 0, 582, 502, 583, 584, 401, 402, 403, + 404, 361, 608, 322, 505, 428, 0, 569, 0, 0, + 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, + 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, + 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, + 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, + 431, 483, 414, 436, 319, 474, 445, 389, 562, 589, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, + 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, + 290, 331, 332, 339, 664, 660, 465, 665, 0, 298, + 539, 382, 427, 355, 603, 604, 0, 655, 245, 246, + 247, 248, 249, 250, 251, 252, 291, 253, 254, 255, + 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, + 268, 269, 606, 260, 261, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 0, + 0, 0, 292, 293, 294, 295, 0, 0, 286, 287, + 288, 289, 0, 0, 0, 490, 491, 492, 514, 0, + 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, + 588, 599, 633, 0, 643, 644, 646, 648, 647, 650, + 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, + 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, + 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 0, 0, 381, + 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, + 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, + 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 231, 0, 0, 3272, 3274, 0, + 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, + 372, 0, 0, 0, 0, 0, 0, 0, 305, 453, + 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, + 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, + 362, 343, 410, 0, 469, 497, 342, 488, 0, 480, + 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, + 468, 393, 387, 375, 352, 513, 376, 377, 366, 422, + 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, + 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 638, 0, 0, + 642, 0, 482, 0, 0, 0, 0, 0, 0, 452, + 0, 0, 378, 0, 0, 0, 498, 0, 435, 415, + 671, 0, 0, 433, 383, 467, 424, 473, 454, 481, + 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, + 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, + 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, + 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, + 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, + 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, + 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, + 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, + 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, + 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, + 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, + 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, + 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, + 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, + 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, + 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, + 623, 478, 568, 545, 571, 486, 548, 547, 0, 0, + 582, 502, 583, 584, 401, 402, 403, 404, 361, 608, + 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, + 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, + 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, + 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, + 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, + 436, 319, 474, 445, 389, 562, 589, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 285, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, + 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, + 339, 664, 660, 465, 665, 0, 298, 539, 382, 427, + 355, 603, 604, 0, 655, 245, 246, 247, 248, 249, + 250, 251, 252, 291, 253, 254, 255, 256, 257, 258, + 259, 262, 263, 264, 265, 266, 267, 268, 269, 606, + 260, 261, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 0, 0, 0, 292, + 293, 294, 295, 0, 0, 286, 287, 288, 289, 0, + 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, + 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, + 0, 643, 644, 646, 648, 647, 650, 450, 451, 656, + 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, + 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, + 566, 649, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 348, 2608, 0, 381, 581, 563, 573, + 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, + 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 231, 0, 0, 1582, 0, 0, 0, 317, 232, + 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 447, 475, 0, 487, 0, 371, 372, 0, 0, + 0, 0, 0, 0, 0, 305, 453, 472, 318, 441, + 485, 323, 449, 464, 313, 412, 438, 0, 0, 307, + 470, 448, 394, 306, 0, 432, 346, 362, 343, 410, + 0, 469, 497, 342, 488, 0, 480, 309, 0, 479, + 409, 466, 471, 395, 388, 0, 308, 468, 393, 387, + 375, 352, 513, 376, 377, 366, 422, 385, 423, 367, + 399, 398, 400, 0, 0, 0, 0, 0, 508, 509, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 638, 0, 0, 642, 0, 482, + 0, 0, 0, 0, 0, 0, 452, 0, 0, 378, + 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, + 433, 383, 467, 424, 473, 454, 481, 429, 425, 299, + 455, 345, 396, 314, 316, 661, 347, 349, 353, 354, + 405, 406, 419, 440, 457, 458, 459, 344, 328, 434, + 329, 364, 330, 300, 336, 334, 337, 442, 338, 302, + 420, 463, 0, 359, 430, 391, 303, 390, 421, 462, + 461, 315, 489, 495, 496, 585, 0, 501, 672, 673, + 674, 510, 0, 426, 311, 310, 0, 0, 0, 340, + 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, + 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, + 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, + 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, + 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, + 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, + 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, + 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, + 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, + 624, 625, 626, 627, 628, 629, 630, 623, 478, 568, + 545, 571, 486, 548, 547, 0, 0, 582, 502, 583, + 584, 401, 402, 403, 404, 361, 608, 322, 505, 428, + 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, + 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, + 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, + 370, 443, 374, 384, 431, 483, 414, 436, 319, 474, + 445, 389, 562, 589, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, + 0, 559, 460, 335, 290, 331, 332, 339, 664, 660, + 465, 665, 0, 298, 539, 382, 427, 355, 603, 604, + 0, 655, 245, 246, 247, 248, 249, 250, 251, 252, + 291, 253, 254, 255, 256, 257, 258, 259, 262, 263, + 264, 265, 266, 267, 268, 269, 606, 260, 261, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 0, 0, 0, 292, 293, 294, 295, + 0, 0, 286, 287, 288, 289, 0, 0, 0, 490, + 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, + 0, 0, 0, 0, 588, 599, 633, 0, 643, 644, + 646, 648, 647, 650, 450, 451, 656, 0, 652, 653, + 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, + 669, 639, 413, 0, 0, 544, 577, 566, 649, 532, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 682, + 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, + 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, + 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, + 0, 0, 0, 0, 0, 317, 232, 526, 645, 528, + 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 447, 475, + 0, 487, 0, 371, 372, 0, 0, 0, 0, 0, + 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, + 464, 313, 412, 438, 0, 0, 307, 470, 448, 394, + 306, 0, 432, 346, 362, 343, 410, 0, 469, 497, + 342, 488, 0, 480, 309, 0, 479, 409, 466, 471, + 395, 388, 0, 308, 468, 393, 387, 375, 352, 513, + 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, + 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 638, 0, 0, 642, 0, 482, 0, 681, 0, + 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, + 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, + 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, + 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, + 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, + 300, 336, 334, 337, 442, 338, 302, 420, 463, 0, + 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, + 495, 496, 585, 0, 501, 672, 673, 674, 510, 0, + 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, + 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, + 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, + 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, + 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, + 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, + 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, + 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, + 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, + 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, + 627, 628, 629, 630, 623, 478, 568, 545, 571, 486, + 548, 547, 0, 0, 582, 502, 583, 584, 401, 402, + 403, 404, 361, 608, 322, 505, 428, 0, 569, 0, + 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, + 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, + 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, + 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, + 384, 431, 483, 414, 436, 319, 474, 445, 389, 562, + 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, + 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, + 335, 290, 331, 332, 339, 664, 660, 465, 665, 0, + 298, 539, 382, 427, 355, 603, 604, 0, 655, 245, + 246, 247, 248, 249, 250, 251, 252, 291, 253, 254, + 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, + 267, 268, 269, 606, 260, 261, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 0, 0, 0, 292, 293, 294, 295, 0, 0, 286, + 287, 288, 289, 0, 0, 0, 490, 491, 492, 514, + 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, + 0, 588, 599, 633, 0, 643, 644, 646, 648, 647, + 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, + 437, 456, 444, 0, 668, 529, 530, 669, 639, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, + 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 231, 866, 0, 0, 0, + 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 0, 0, 0, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 0, 469, 497, 342, 488, 0, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 513, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 0, + 0, 642, 0, 482, 0, 0, 0, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 498, 0, 435, + 415, 671, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, @@ -6366,8 +5153,8 @@ var yyAct = [...]int{ 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 2665, 0, 0, 0, 317, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4173, + 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6396,138 +5183,270 @@ var yyAct = [...]int{ 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, + 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, + 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, + 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, + 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, + 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, + 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, + 506, 624, 625, 626, 627, 628, 629, 630, 623, 478, + 568, 545, 571, 486, 548, 547, 0, 0, 582, 502, + 583, 584, 401, 402, 403, 404, 361, 608, 322, 505, + 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, + 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, + 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, + 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, + 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, + 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 2433, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, + 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, + 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, + 660, 465, 665, 0, 298, 539, 382, 427, 355, 603, + 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, + 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, + 263, 264, 265, 266, 267, 268, 269, 606, 260, 261, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 0, 0, 0, 292, 293, 294, + 295, 0, 0, 286, 287, 288, 289, 0, 0, 0, + 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, + 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, + 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, + 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, + 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, + 0, 0, 3926, 0, 0, 0, 317, 232, 526, 645, + 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, + 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, + 0, 0, 638, 0, 0, 642, 0, 482, 0, 0, + 0, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, + 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, + 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 478, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 502, 583, 584, 401, + 402, 403, 404, 361, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 0, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 245, 246, 247, 248, 249, 250, 251, 252, 291, 253, + 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, + 266, 267, 268, 269, 606, 260, 261, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 0, 0, 0, 292, 293, 294, 295, 0, 0, + 286, 287, 288, 289, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, + 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, + 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 348, 0, + 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, + 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, + 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, + 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, + 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, + 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, + 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, + 432, 346, 362, 343, 410, 0, 469, 497, 342, 488, + 0, 480, 309, 0, 479, 409, 466, 471, 395, 388, + 0, 308, 468, 393, 387, 375, 352, 513, 376, 377, + 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, + 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, + 0, 0, 642, 0, 482, 0, 0, 0, 4084, 0, + 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, + 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, + 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, + 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, + 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, + 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, + 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, + 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, + 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, + 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, + 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, + 0, 494, 379, 380, 0, 351, 350, 392, 304, 0, + 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, + 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, + 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, + 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, + 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, + 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, + 629, 630, 623, 478, 568, 545, 571, 486, 548, 547, + 0, 0, 582, 502, 583, 584, 401, 402, 403, 404, + 361, 608, 322, 505, 428, 0, 569, 0, 0, 0, + 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, + 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, + 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, + 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, + 483, 414, 436, 319, 474, 445, 389, 562, 589, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, + 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, + 331, 332, 339, 664, 660, 465, 665, 0, 298, 539, + 382, 427, 355, 603, 604, 0, 655, 245, 246, 247, + 248, 249, 250, 251, 252, 291, 253, 254, 255, 256, + 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, + 269, 606, 260, 261, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 0, 0, + 0, 292, 293, 294, 295, 0, 0, 286, 287, 288, + 289, 0, 0, 0, 490, 491, 492, 514, 0, 476, + 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, + 599, 633, 0, 643, 644, 646, 648, 647, 650, 450, + 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, + 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, + 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 348, 0, 0, 381, 581, + 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, + 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, + 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1812, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, + 0, 0, 0, 0, 0, 0, 0, 305, 453, 472, + 318, 441, 485, 323, 449, 464, 313, 412, 438, 0, + 0, 307, 470, 448, 394, 306, 0, 432, 346, 362, + 343, 410, 0, 469, 497, 342, 488, 0, 480, 309, + 0, 479, 409, 466, 471, 395, 388, 0, 308, 468, + 393, 387, 375, 352, 513, 376, 377, 366, 422, 385, + 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, + 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 638, 0, 0, 642, + 0, 482, 0, 0, 0, 0, 0, 0, 452, 0, + 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, + 0, 0, 433, 383, 467, 424, 473, 454, 481, 429, + 425, 299, 455, 345, 396, 314, 316, 661, 347, 349, + 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, + 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, + 338, 302, 420, 463, 0, 359, 430, 391, 303, 390, + 421, 462, 461, 315, 489, 495, 496, 585, 0, 501, + 672, 673, 674, 510, 0, 426, 311, 310, 0, 0, + 0, 340, 324, 326, 327, 325, 418, 515, 516, 517, + 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, + 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, + 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, + 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, + 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, + 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, + 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, + 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, + 301, 506, 624, 625, 626, 627, 628, 629, 630, 623, + 478, 568, 545, 571, 486, 548, 547, 0, 0, 582, + 502, 583, 584, 401, 402, 403, 404, 361, 608, 322, + 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, + 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, + 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, + 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, + 408, 368, 370, 443, 374, 384, 431, 483, 414, 436, + 319, 474, 445, 389, 562, 589, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, + 609, 0, 0, 559, 460, 335, 290, 331, 332, 339, + 664, 660, 465, 665, 0, 298, 539, 382, 427, 355, + 603, 604, 0, 655, 245, 246, 247, 248, 249, 250, + 251, 252, 291, 253, 254, 255, 256, 257, 258, 259, + 262, 263, 264, 265, 266, 267, 268, 269, 606, 260, + 261, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 0, 0, 0, 292, 293, + 294, 295, 0, 0, 286, 287, 288, 289, 0, 0, + 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, + 0, 0, 0, 0, 0, 0, 588, 599, 633, 0, + 643, 644, 646, 648, 647, 650, 450, 451, 656, 0, + 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, + 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, + 649, 532, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, + 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, + 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 0, 1963, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3941, 0, + 231, 0, 0, 0, 0, 0, 0, 317, 232, 526, + 645, 528, 527, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, + 447, 475, 0, 487, 0, 371, 372, 0, 0, 0, + 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, + 323, 449, 464, 313, 412, 438, 0, 0, 307, 470, + 448, 394, 306, 0, 432, 346, 362, 343, 410, 0, + 469, 497, 342, 488, 0, 480, 309, 0, 479, 409, + 466, 471, 395, 388, 0, 308, 468, 393, 387, 375, + 352, 513, 376, 377, 366, 422, 385, 423, 367, 399, + 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 638, 0, 0, 642, 0, 482, 0, + 0, 0, 0, 0, 0, 452, 0, 0, 378, 0, + 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, + 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, + 345, 396, 314, 316, 661, 347, 349, 353, 354, 405, + 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, + 364, 330, 300, 336, 334, 337, 442, 338, 302, 420, + 463, 0, 359, 430, 391, 303, 390, 421, 462, 461, + 315, 489, 495, 496, 585, 0, 501, 672, 673, 674, + 510, 0, 426, 311, 310, 0, 0, 0, 340, 324, + 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, + 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, + 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, + 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, @@ -6558,7 +5477,7 @@ var yyAct = [...]int{ 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 2095, 0, 0, 0, 0, 0, 0, 0, 0, 348, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, @@ -6580,7 +5499,7 @@ var yyAct = [...]int{ 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, + 638, 0, 0, 642, 0, 482, 0, 0, 0, 3850, 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, @@ -6593,6 +5512,269 @@ var yyAct = [...]int{ 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, + 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, + 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, + 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, + 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, + 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, + 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, + 628, 629, 630, 623, 478, 568, 545, 571, 486, 548, + 547, 0, 0, 582, 502, 583, 584, 401, 402, 403, + 404, 361, 608, 322, 505, 428, 0, 569, 0, 0, + 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, + 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, + 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, + 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, + 431, 483, 414, 436, 319, 474, 445, 389, 562, 589, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, + 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, + 290, 331, 332, 339, 664, 660, 465, 665, 0, 298, + 539, 382, 427, 355, 603, 604, 0, 655, 245, 246, + 247, 248, 249, 250, 251, 252, 291, 253, 254, 255, + 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, + 268, 269, 606, 260, 261, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 0, + 0, 0, 292, 293, 294, 295, 0, 0, 286, 287, + 288, 289, 0, 0, 0, 490, 491, 492, 514, 0, + 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, + 588, 599, 633, 0, 643, 644, 646, 648, 647, 650, + 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, + 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, + 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 0, 0, 381, + 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, + 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, + 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 231, 0, 0, 3305, 0, 0, + 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, + 372, 0, 0, 0, 0, 0, 0, 0, 305, 453, + 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, + 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, + 362, 343, 410, 0, 469, 497, 342, 488, 0, 480, + 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, + 468, 393, 387, 375, 352, 513, 376, 377, 366, 422, + 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, + 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 638, 0, 0, + 642, 0, 482, 0, 0, 0, 0, 0, 0, 452, + 0, 0, 378, 0, 0, 0, 498, 0, 435, 415, + 671, 0, 0, 433, 383, 467, 424, 473, 454, 481, + 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, + 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, + 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, + 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, + 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, + 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, + 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, + 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, + 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, + 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, + 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, + 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, + 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, + 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, + 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, + 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, + 623, 478, 568, 545, 571, 486, 548, 547, 0, 0, + 582, 502, 583, 584, 401, 402, 403, 404, 361, 608, + 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, + 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, + 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, + 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, + 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, + 436, 319, 474, 445, 389, 562, 589, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 285, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, + 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, + 339, 664, 660, 465, 665, 0, 298, 539, 382, 427, + 355, 603, 604, 0, 655, 245, 246, 247, 248, 249, + 250, 251, 252, 291, 253, 254, 255, 256, 257, 258, + 259, 262, 263, 264, 265, 266, 267, 268, 269, 606, + 260, 261, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 0, 0, 0, 292, + 293, 294, 295, 0, 0, 286, 287, 288, 289, 0, + 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, + 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, + 0, 643, 644, 646, 648, 647, 650, 450, 451, 656, + 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, + 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, + 566, 649, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 348, 0, 0, 381, 581, 563, 573, + 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, + 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 317, 232, + 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3324, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 447, 475, 0, 487, 0, 371, 372, 0, 0, + 0, 0, 0, 0, 0, 305, 453, 472, 318, 441, + 485, 323, 449, 464, 313, 412, 438, 0, 0, 307, + 470, 448, 394, 306, 0, 432, 346, 362, 343, 410, + 0, 469, 497, 342, 488, 0, 480, 309, 0, 479, + 409, 466, 471, 395, 388, 0, 308, 468, 393, 387, + 375, 352, 513, 376, 377, 366, 422, 385, 423, 367, + 399, 398, 400, 0, 0, 0, 0, 0, 508, 509, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 638, 0, 0, 642, 0, 482, + 0, 0, 0, 0, 0, 0, 452, 0, 0, 378, + 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, + 433, 383, 467, 424, 473, 454, 481, 429, 425, 299, + 455, 345, 396, 314, 316, 661, 347, 349, 353, 354, + 405, 406, 419, 440, 457, 458, 459, 344, 328, 434, + 329, 364, 330, 300, 336, 334, 337, 442, 338, 302, + 420, 463, 0, 359, 430, 391, 303, 390, 421, 462, + 461, 315, 489, 495, 496, 585, 0, 501, 672, 673, + 674, 510, 0, 426, 311, 310, 0, 0, 0, 340, + 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, + 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, + 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, + 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, + 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, + 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, + 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, + 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, + 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, + 624, 625, 626, 627, 628, 629, 630, 623, 478, 568, + 545, 571, 486, 548, 547, 0, 0, 582, 502, 583, + 584, 401, 402, 403, 404, 361, 608, 322, 505, 428, + 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, + 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, + 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, + 370, 443, 374, 384, 431, 483, 414, 436, 319, 474, + 445, 389, 562, 589, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, + 0, 559, 460, 335, 290, 331, 332, 339, 664, 660, + 465, 665, 0, 298, 539, 382, 427, 355, 603, 604, + 0, 655, 245, 246, 247, 248, 249, 250, 251, 252, + 291, 253, 254, 255, 256, 257, 258, 259, 262, 263, + 264, 265, 266, 267, 268, 269, 606, 260, 261, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 0, 0, 0, 292, 293, 294, 295, + 0, 0, 286, 287, 288, 289, 0, 0, 0, 490, + 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, + 0, 0, 0, 0, 588, 599, 633, 0, 643, 644, + 646, 648, 647, 650, 450, 451, 656, 0, 652, 653, + 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, + 669, 639, 413, 0, 0, 544, 577, 566, 649, 532, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, + 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, + 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2113, 0, 0, 231, 0, + 0, 0, 0, 0, 0, 317, 232, 526, 645, 528, + 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 447, 475, + 0, 487, 0, 371, 372, 0, 0, 0, 0, 0, + 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, + 464, 313, 412, 438, 0, 0, 307, 470, 448, 394, + 306, 0, 432, 346, 362, 343, 410, 0, 469, 497, + 342, 488, 0, 480, 309, 0, 479, 409, 466, 471, + 395, 388, 0, 308, 468, 393, 387, 375, 352, 513, + 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, + 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 638, 0, 0, 642, 0, 482, 0, 0, 0, + 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, + 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, + 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, + 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, + 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, + 300, 336, 334, 337, 442, 338, 302, 420, 463, 0, + 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, + 495, 496, 585, 0, 501, 672, 673, 674, 510, 0, + 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, + 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, + 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, + 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, + 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, + 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, + 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, + 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, + 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, + 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, + 627, 628, 629, 630, 623, 478, 568, 545, 571, 486, + 548, 547, 0, 0, 582, 502, 583, 584, 401, 402, + 403, 404, 361, 608, 322, 505, 428, 0, 569, 0, + 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, + 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, + 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, + 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, + 384, 431, 483, 414, 436, 319, 474, 445, 389, 562, + 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, + 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, + 335, 290, 331, 332, 339, 664, 660, 465, 665, 0, + 298, 539, 382, 427, 355, 603, 604, 0, 655, 245, + 246, 247, 248, 249, 250, 251, 252, 291, 253, 254, + 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, + 267, 268, 269, 606, 260, 261, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 0, 0, 0, 292, 293, 294, 295, 0, 0, 286, + 287, 288, 289, 0, 0, 0, 490, 491, 492, 514, + 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, + 0, 588, 599, 633, 0, 643, 644, 646, 648, 647, + 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, + 437, 456, 444, 0, 668, 529, 530, 669, 639, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 3536, + 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, + 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 0, 0, 0, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 0, 469, 497, 342, 488, 0, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 513, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 0, + 0, 642, 0, 482, 0, 0, 0, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 498, 0, 435, + 415, 671, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, @@ -6629,13 +5811,13 @@ var yyAct = [...]int{ 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 1582, 0, 0, 0, 317, + 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, @@ -6648,7 +5830,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 1999, 425, + 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, @@ -6658,138 +5840,270 @@ var yyAct = [...]int{ 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, + 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, + 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, + 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, + 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, + 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, + 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, + 506, 624, 625, 626, 627, 628, 629, 630, 623, 478, + 568, 545, 571, 486, 548, 547, 0, 0, 582, 502, + 583, 584, 401, 402, 403, 404, 361, 608, 322, 505, + 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, + 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, + 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, + 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, + 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, + 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, + 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, + 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, + 660, 465, 665, 0, 298, 539, 382, 427, 355, 603, + 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, + 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, + 263, 264, 265, 266, 267, 268, 269, 606, 260, 261, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 0, 0, 0, 292, 293, 294, + 295, 0, 0, 286, 287, 288, 289, 0, 0, 0, + 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, + 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, + 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, + 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, + 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 317, 232, 526, 645, + 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3157, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, + 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 638, 0, 0, 642, 0, 482, 0, 0, + 0, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, + 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, + 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 478, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 502, 583, 584, 401, + 402, 403, 404, 361, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 0, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 245, 246, 247, 248, 249, 250, 251, 252, 291, 253, + 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, + 266, 267, 268, 269, 606, 260, 261, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 0, 0, 0, 292, 293, 294, 295, 0, 0, + 286, 287, 288, 289, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, + 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, + 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 348, 0, + 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, + 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, + 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 231, 0, 0, 1582, + 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 1611, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 682, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, + 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, + 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, + 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, + 432, 346, 362, 343, 410, 0, 469, 497, 342, 488, + 0, 480, 309, 0, 479, 409, 466, 471, 395, 388, + 0, 308, 468, 393, 387, 375, 352, 513, 376, 377, + 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, + 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, + 0, 0, 642, 0, 482, 0, 0, 0, 0, 0, + 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, + 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, + 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, + 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, + 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, + 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, + 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, + 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, + 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, + 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, + 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, + 0, 494, 379, 380, 0, 351, 350, 392, 304, 0, + 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, + 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, + 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, + 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, + 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, + 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, + 629, 630, 623, 478, 568, 545, 571, 486, 548, 547, + 0, 0, 582, 502, 583, 584, 401, 402, 403, 404, + 361, 608, 322, 505, 428, 0, 569, 0, 0, 0, + 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, + 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, + 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, + 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, + 483, 414, 436, 319, 474, 445, 389, 562, 589, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, + 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, + 331, 332, 339, 664, 660, 465, 665, 0, 298, 539, + 382, 427, 355, 603, 604, 0, 655, 245, 246, 247, + 248, 249, 250, 251, 252, 291, 253, 254, 255, 256, + 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, + 269, 606, 260, 261, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 0, 0, + 0, 292, 293, 294, 295, 0, 0, 286, 287, 288, + 289, 0, 0, 0, 490, 491, 492, 514, 0, 476, + 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, + 599, 633, 0, 643, 644, 646, 648, 647, 650, 450, + 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, + 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, + 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 348, 0, 0, 381, 581, + 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, + 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, + 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, + 0, 0, 0, 231, 0, 0, 2587, 0, 0, 0, + 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, + 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, + 0, 0, 0, 0, 0, 0, 0, 305, 453, 472, + 318, 441, 485, 323, 449, 464, 313, 412, 438, 0, + 0, 307, 470, 448, 394, 306, 0, 432, 346, 362, + 343, 410, 0, 469, 497, 342, 488, 0, 480, 309, + 0, 479, 409, 466, 471, 395, 388, 0, 308, 468, + 393, 387, 375, 352, 513, 376, 377, 366, 422, 385, + 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, + 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 638, 0, 0, 642, + 0, 482, 0, 0, 0, 0, 0, 0, 452, 0, + 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, + 0, 0, 433, 383, 467, 424, 473, 454, 481, 429, + 425, 299, 455, 345, 396, 314, 316, 661, 347, 349, + 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, + 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, + 338, 302, 420, 463, 0, 359, 430, 391, 303, 390, + 421, 462, 461, 315, 489, 495, 496, 585, 0, 501, + 672, 673, 674, 510, 0, 426, 311, 310, 0, 0, + 0, 340, 324, 326, 327, 325, 418, 515, 516, 517, + 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, + 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, + 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, + 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, + 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, + 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, + 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, + 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, + 301, 506, 624, 625, 626, 627, 628, 629, 630, 623, + 478, 568, 545, 571, 486, 548, 547, 0, 0, 582, + 502, 583, 584, 401, 402, 403, 404, 361, 608, 322, + 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, + 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, + 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, + 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, + 408, 368, 370, 443, 374, 384, 431, 483, 414, 436, + 319, 474, 445, 389, 562, 589, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, + 609, 0, 0, 559, 460, 335, 290, 331, 332, 339, + 664, 660, 465, 665, 0, 298, 539, 382, 427, 355, + 603, 604, 0, 655, 245, 246, 247, 248, 249, 250, + 251, 252, 291, 253, 254, 255, 256, 257, 258, 259, + 262, 263, 264, 265, 266, 267, 268, 269, 606, 260, + 261, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 0, 0, 0, 292, 293, + 294, 295, 0, 0, 286, 287, 288, 289, 0, 0, + 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, + 0, 0, 0, 0, 0, 0, 588, 599, 633, 0, + 643, 644, 646, 648, 647, 650, 450, 451, 656, 0, + 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, + 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, + 649, 532, 0, 0, 2967, 0, 0, 0, 0, 0, + 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, + 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, + 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 231, 0, 0, 0, 0, 0, 0, 317, 232, 526, + 645, 528, 527, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 447, 475, 0, 487, 0, 371, 372, 0, 0, 0, + 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, + 323, 449, 464, 313, 412, 438, 0, 0, 307, 470, + 448, 394, 306, 0, 432, 346, 362, 343, 410, 0, + 469, 497, 342, 488, 0, 480, 309, 0, 479, 409, + 466, 471, 395, 388, 0, 308, 468, 393, 387, 375, + 352, 513, 376, 377, 366, 422, 385, 423, 367, 399, + 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 638, 0, 0, 642, 0, 482, 0, + 0, 0, 0, 0, 0, 452, 0, 0, 378, 0, + 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, + 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, + 345, 396, 314, 316, 661, 347, 349, 353, 354, 405, + 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, + 364, 330, 300, 336, 334, 337, 442, 338, 302, 420, + 463, 0, 359, 430, 391, 303, 390, 421, 462, 461, + 315, 489, 495, 496, 585, 0, 501, 672, 673, 674, + 510, 0, 426, 311, 310, 0, 0, 0, 340, 324, + 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, + 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, + 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, + 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, @@ -6826,7 +6140,7 @@ var yyAct = [...]int{ 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, + 2830, 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6842,7 +6156,7 @@ var yyAct = [...]int{ 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 692, 642, 0, 482, 0, 0, 0, 0, + 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, @@ -6855,6 +6169,269 @@ var yyAct = [...]int{ 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, + 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, + 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, + 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, + 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, + 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, + 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, + 628, 629, 630, 623, 478, 568, 545, 571, 486, 548, + 547, 0, 0, 582, 502, 583, 584, 401, 402, 403, + 404, 361, 608, 322, 505, 428, 0, 569, 0, 0, + 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, + 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, + 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, + 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, + 431, 483, 414, 436, 319, 474, 445, 389, 562, 589, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, + 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, + 290, 331, 332, 339, 664, 660, 465, 665, 0, 298, + 539, 382, 427, 355, 603, 604, 0, 655, 245, 246, + 247, 248, 249, 250, 251, 252, 291, 253, 254, 255, + 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, + 268, 269, 606, 260, 261, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 0, + 0, 0, 292, 293, 294, 295, 0, 0, 286, 287, + 288, 289, 0, 0, 0, 490, 491, 492, 514, 0, + 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, + 588, 599, 633, 0, 643, 644, 646, 648, 647, 650, + 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, + 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, + 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 0, 0, 381, + 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, + 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, + 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, + 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2254, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, + 372, 0, 0, 0, 0, 0, 0, 0, 305, 453, + 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, + 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, + 362, 343, 410, 0, 469, 497, 342, 488, 0, 480, + 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, + 468, 393, 387, 375, 352, 513, 376, 377, 366, 422, + 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, + 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 638, 0, 0, + 642, 0, 482, 0, 0, 0, 0, 0, 0, 452, + 0, 0, 378, 0, 0, 0, 498, 0, 435, 415, + 671, 0, 0, 433, 383, 467, 424, 473, 454, 481, + 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, + 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, + 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, + 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, + 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, + 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, + 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, + 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, + 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, + 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, + 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, + 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, + 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, + 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, + 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, + 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, + 623, 478, 568, 545, 571, 486, 548, 547, 0, 0, + 582, 502, 583, 584, 401, 402, 403, 404, 361, 608, + 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, + 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, + 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, + 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, + 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, + 436, 319, 474, 445, 389, 562, 589, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 285, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, + 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, + 339, 664, 660, 465, 665, 0, 298, 539, 382, 427, + 355, 603, 604, 0, 655, 245, 246, 247, 248, 249, + 250, 251, 252, 291, 253, 254, 255, 256, 257, 258, + 259, 262, 263, 264, 265, 266, 267, 268, 269, 606, + 260, 261, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 0, 0, 0, 292, + 293, 294, 295, 0, 0, 286, 287, 288, 289, 0, + 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, + 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, + 0, 643, 644, 646, 648, 647, 650, 450, 451, 656, + 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, + 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, + 566, 649, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 348, 0, 0, 381, 581, 563, 573, + 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, + 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 231, 0, 0, 2705, 0, 0, 0, 317, 232, + 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 447, 475, 0, 487, 0, 371, 372, 0, 0, + 0, 0, 0, 0, 0, 305, 453, 472, 318, 441, + 485, 323, 449, 464, 313, 412, 438, 0, 0, 307, + 470, 448, 394, 306, 0, 432, 346, 362, 343, 410, + 0, 469, 497, 342, 488, 0, 480, 309, 0, 479, + 409, 466, 471, 395, 388, 0, 308, 468, 393, 387, + 375, 352, 513, 376, 377, 366, 422, 385, 423, 367, + 399, 398, 400, 0, 0, 0, 0, 0, 508, 509, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 638, 0, 0, 642, 0, 482, + 0, 0, 0, 0, 0, 0, 452, 0, 0, 378, + 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, + 433, 383, 467, 424, 473, 454, 481, 429, 425, 299, + 455, 345, 396, 314, 316, 661, 347, 349, 353, 354, + 405, 406, 419, 440, 457, 458, 459, 344, 328, 434, + 329, 364, 330, 300, 336, 334, 337, 442, 338, 302, + 420, 463, 0, 359, 430, 391, 303, 390, 421, 462, + 461, 315, 489, 495, 496, 585, 0, 501, 672, 673, + 674, 510, 0, 426, 311, 310, 0, 0, 0, 340, + 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, + 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, + 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, + 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, + 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, + 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, + 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, + 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, + 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, + 624, 625, 626, 627, 628, 629, 630, 623, 478, 568, + 545, 571, 486, 548, 547, 0, 0, 582, 502, 583, + 584, 401, 402, 403, 404, 361, 608, 322, 505, 428, + 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, + 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, + 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, + 370, 443, 374, 384, 431, 483, 414, 436, 319, 474, + 445, 389, 562, 589, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 616, 615, 614, 613, 612, 611, 610, 609, 0, + 0, 559, 460, 335, 290, 331, 332, 339, 664, 660, + 465, 665, 0, 298, 539, 382, 427, 355, 603, 604, + 0, 655, 245, 246, 247, 248, 249, 250, 251, 252, + 291, 253, 254, 255, 256, 257, 258, 259, 262, 263, + 264, 265, 266, 267, 268, 269, 606, 260, 261, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 0, 0, 0, 292, 293, 294, 295, + 0, 0, 286, 287, 288, 289, 0, 0, 0, 490, + 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, + 0, 0, 0, 0, 588, 599, 633, 0, 643, 644, + 646, 648, 647, 650, 450, 451, 656, 0, 652, 653, + 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, + 669, 639, 413, 0, 0, 544, 577, 566, 649, 532, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, + 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, + 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, + 0, 0, 0, 0, 0, 317, 232, 526, 645, 528, + 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2667, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 447, 475, + 0, 487, 0, 371, 372, 0, 0, 0, 0, 0, + 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, + 464, 313, 412, 438, 0, 0, 307, 470, 448, 394, + 306, 0, 432, 346, 362, 343, 410, 0, 469, 497, + 342, 488, 0, 480, 309, 0, 479, 409, 466, 471, + 395, 388, 0, 308, 468, 393, 387, 375, 352, 513, + 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, + 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 638, 0, 0, 642, 0, 482, 0, 0, 0, + 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, + 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, + 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, + 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, + 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, + 300, 336, 334, 337, 442, 338, 302, 420, 463, 0, + 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, + 495, 496, 585, 0, 501, 672, 673, 674, 510, 0, + 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, + 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, + 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, + 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, + 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, + 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, + 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, + 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, + 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, + 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, + 627, 628, 629, 630, 623, 478, 568, 545, 571, 486, + 548, 547, 0, 0, 582, 502, 583, 584, 401, 402, + 403, 404, 361, 608, 322, 505, 428, 0, 569, 0, + 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, + 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, + 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, + 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, + 384, 431, 483, 414, 436, 319, 474, 445, 389, 562, + 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, + 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, + 335, 290, 331, 332, 339, 664, 660, 465, 665, 0, + 298, 539, 382, 427, 355, 603, 604, 0, 655, 245, + 246, 247, 248, 249, 250, 251, 252, 291, 253, 254, + 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, + 267, 268, 269, 606, 260, 261, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 0, 0, 0, 292, 293, 294, 295, 0, 0, 286, + 287, 288, 289, 0, 0, 0, 490, 491, 492, 514, + 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, + 0, 588, 599, 633, 0, 643, 644, 646, 648, 647, + 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, + 437, 456, 444, 0, 668, 529, 530, 669, 639, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, + 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 231, 0, 0, 2665, 0, + 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 0, 0, 0, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 0, 469, 497, 342, 488, 0, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 513, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 0, + 0, 642, 0, 482, 0, 0, 0, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 498, 0, 435, + 415, 671, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, @@ -6884,7 +6461,7 @@ var yyAct = [...]int{ 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, + 2433, 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, @@ -6898,29 +6475,292 @@ 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, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, + 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, + 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, + 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, + 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, + 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, + 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, + 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, + 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, + 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, + 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, + 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, + 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, + 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, + 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, + 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, + 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, + 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, + 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, + 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, + 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, + 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, + 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, + 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, + 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, + 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, + 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, + 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, + 506, 624, 625, 626, 627, 628, 629, 630, 623, 478, + 568, 545, 571, 486, 548, 547, 0, 0, 582, 502, + 583, 584, 401, 402, 403, 404, 361, 608, 322, 505, + 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, + 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, + 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, + 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, + 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, + 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, + 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, + 660, 465, 665, 0, 298, 539, 382, 427, 355, 603, + 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, + 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, + 263, 264, 265, 266, 267, 268, 269, 606, 260, 261, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 0, 0, 0, 292, 293, 294, + 295, 0, 0, 286, 287, 288, 289, 0, 0, 0, + 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, + 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, + 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, + 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, + 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, + 0, 0, 0, 1963, 0, 0, 317, 232, 526, 645, + 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, + 0, 0, 0, 305, 453, 472, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, + 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 638, 0, 0, 642, 0, 482, 0, 0, + 0, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, + 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, + 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 478, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 502, 583, 584, 401, + 402, 403, 404, 361, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 0, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 245, 246, 247, 248, 249, 250, 251, 252, 291, 253, + 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, + 266, 267, 268, 269, 606, 260, 261, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 0, 0, 0, 292, 293, 294, 295, 0, 0, + 286, 287, 288, 289, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, + 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, + 413, 0, 0, 544, 577, 566, 649, 532, 0, 2095, + 0, 0, 0, 0, 0, 0, 0, 0, 348, 0, + 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, + 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, + 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, + 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, + 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, + 305, 453, 472, 318, 441, 485, 323, 449, 464, 313, + 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, + 432, 346, 362, 343, 410, 0, 469, 497, 342, 488, + 0, 480, 309, 0, 479, 409, 466, 471, 395, 388, + 0, 308, 468, 393, 387, 375, 352, 513, 376, 377, + 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, + 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, + 0, 0, 642, 0, 482, 0, 0, 0, 0, 0, + 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, + 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, + 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, + 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, + 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, + 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, + 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, + 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, + 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, + 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, + 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, + 0, 494, 379, 380, 0, 351, 350, 392, 304, 0, + 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, + 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, + 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, + 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, + 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, + 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, + 629, 630, 623, 478, 568, 545, 571, 486, 548, 547, + 0, 0, 582, 502, 583, 584, 401, 402, 403, 404, + 361, 608, 322, 505, 428, 0, 569, 0, 0, 0, + 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, + 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, + 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, + 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, + 483, 414, 436, 319, 474, 445, 389, 562, 589, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, + 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, + 331, 332, 339, 664, 660, 465, 665, 0, 298, 539, + 382, 427, 355, 603, 604, 0, 655, 245, 246, 247, + 248, 249, 250, 251, 252, 291, 253, 254, 255, 256, + 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, + 269, 606, 260, 261, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 0, 0, + 0, 292, 293, 294, 295, 0, 0, 286, 287, 288, + 289, 0, 0, 0, 490, 491, 492, 514, 0, 476, + 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, + 599, 633, 0, 643, 644, 646, 648, 647, 650, 450, + 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, + 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, + 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 348, 0, 0, 381, 581, + 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, + 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, + 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 231, 0, 0, 1582, 0, 0, 0, + 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, + 0, 0, 0, 0, 0, 0, 0, 305, 453, 472, + 318, 441, 485, 323, 449, 464, 313, 412, 438, 0, + 0, 307, 470, 448, 394, 306, 0, 432, 346, 362, + 343, 410, 0, 469, 497, 342, 488, 0, 480, 309, + 0, 479, 409, 466, 471, 395, 388, 0, 308, 468, + 393, 387, 375, 352, 513, 376, 377, 366, 422, 385, + 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, + 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 638, 0, 0, 642, + 0, 482, 0, 0, 0, 0, 0, 0, 452, 0, + 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, + 0, 0, 433, 383, 467, 424, 473, 454, 481, 1999, + 425, 299, 455, 345, 396, 314, 316, 661, 347, 349, + 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, + 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, + 338, 302, 420, 463, 0, 359, 430, 391, 303, 390, + 421, 462, 461, 315, 489, 495, 496, 585, 0, 501, + 672, 673, 674, 510, 0, 426, 311, 310, 0, 0, + 0, 340, 324, 326, 327, 325, 418, 515, 516, 517, + 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, + 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, + 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, + 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, + 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, + 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, + 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, + 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, + 301, 506, 624, 625, 626, 627, 628, 629, 630, 623, + 478, 568, 545, 571, 486, 548, 547, 0, 0, 582, + 502, 583, 584, 401, 402, 403, 404, 361, 608, 322, + 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, + 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, + 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, + 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, + 408, 368, 370, 443, 374, 384, 431, 483, 414, 436, + 319, 474, 445, 389, 562, 589, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, + 609, 0, 0, 559, 460, 335, 290, 331, 332, 339, + 664, 660, 465, 665, 0, 298, 539, 382, 427, 355, + 603, 604, 0, 655, 245, 246, 247, 248, 249, 250, + 251, 252, 291, 253, 254, 255, 256, 257, 258, 259, + 262, 263, 264, 265, 266, 267, 268, 269, 606, 260, + 261, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 0, 0, 0, 292, 293, + 294, 295, 0, 0, 286, 287, 288, 289, 0, 0, + 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, + 0, 0, 0, 0, 0, 0, 588, 599, 633, 0, + 643, 644, 646, 648, 647, 650, 450, 451, 656, 0, + 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, + 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, + 649, 532, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, + 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, + 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 231, 0, 0, 0, 0, 0, 0, 317, 232, 526, + 645, 528, 527, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 447, 475, 0, 487, 0, 371, 372, 0, 0, 0, + 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, + 323, 449, 464, 313, 412, 438, 0, 0, 307, 470, + 448, 394, 306, 0, 432, 346, 362, 343, 410, 0, + 469, 497, 342, 488, 0, 480, 309, 0, 479, 409, + 466, 471, 395, 388, 0, 308, 468, 393, 387, 375, + 352, 513, 376, 377, 366, 422, 385, 423, 367, 399, + 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 638, 0, 0, 642, 0, 482, 0, + 0, 1611, 0, 0, 0, 452, 0, 0, 378, 0, + 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, + 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, + 345, 396, 314, 316, 661, 347, 349, 353, 354, 405, + 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, + 364, 330, 300, 336, 334, 337, 442, 338, 302, 420, + 463, 0, 359, 430, 391, 303, 390, 421, 462, 461, + 315, 489, 495, 496, 585, 0, 501, 672, 673, 674, + 510, 0, 426, 311, 310, 0, 0, 0, 340, 324, + 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, + 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, + 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, + 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, @@ -6937,7 +6777,7 @@ var yyAct = [...]int{ 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 993, 0, + 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, @@ -6951,7 +6791,7 @@ var yyAct = [...]int{ 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, + 0, 0, 0, 0, 0, 0, 0, 0, 682, 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, @@ -6986,137 +6826,269 @@ var yyAct = [...]int{ 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, + 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, + 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, + 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, + 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, + 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, + 628, 629, 630, 623, 478, 568, 545, 571, 486, 548, + 547, 0, 0, 582, 502, 583, 584, 401, 402, 403, + 404, 361, 608, 322, 505, 428, 0, 569, 0, 0, + 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, + 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, + 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, + 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, + 431, 483, 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, + 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, + 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, + 290, 331, 332, 339, 664, 660, 465, 665, 0, 298, + 539, 382, 427, 355, 603, 604, 0, 655, 245, 246, + 247, 248, 249, 250, 251, 252, 291, 253, 254, 255, + 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, + 268, 269, 606, 260, 261, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 0, + 0, 0, 292, 293, 294, 295, 0, 0, 286, 287, + 288, 289, 0, 0, 0, 490, 491, 492, 514, 0, + 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, + 588, 599, 633, 0, 643, 644, 646, 648, 647, 650, + 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, + 456, 444, 0, 668, 529, 530, 669, 639, 413, 0, + 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 0, 0, 381, + 581, 563, 573, 564, 549, 550, 551, 558, 360, 552, + 553, 554, 524, 555, 525, 556, 557, 0, 580, 531, + 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, + 0, 317, 232, 526, 645, 528, 527, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 3250, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, + 0, 0, 0, 0, 447, 475, 0, 487, 0, 371, + 372, 0, 0, 0, 0, 0, 0, 0, 305, 453, + 472, 318, 441, 485, 323, 449, 464, 313, 412, 438, + 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, + 362, 343, 410, 0, 469, 497, 342, 488, 0, 480, + 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, + 468, 393, 387, 375, 352, 513, 376, 377, 366, 422, + 385, 423, 367, 399, 398, 400, 0, 0, 0, 0, + 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 638, 0, 692, + 642, 0, 482, 0, 0, 0, 0, 0, 0, 452, + 0, 0, 378, 0, 0, 0, 498, 0, 435, 415, + 671, 0, 0, 433, 383, 467, 424, 473, 454, 481, + 429, 425, 299, 455, 345, 396, 314, 316, 661, 347, + 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, + 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, + 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, + 390, 421, 462, 461, 315, 489, 495, 496, 585, 0, + 501, 672, 673, 674, 510, 0, 426, 311, 310, 0, + 0, 0, 340, 324, 326, 327, 325, 418, 515, 516, + 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, + 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, + 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, + 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, + 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, + 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, + 417, 0, 439, 598, 546, 0, 591, 565, 0, 592, + 561, 596, 0, 535, 0, 504, 507, 536, 620, 621, + 622, 301, 506, 624, 625, 626, 627, 628, 629, 630, + 623, 478, 568, 545, 571, 486, 548, 547, 0, 0, + 582, 502, 583, 584, 401, 402, 403, 404, 361, 608, + 322, 505, 428, 0, 569, 0, 0, 0, 0, 0, + 0, 0, 0, 574, 575, 572, 675, 0, 631, 632, + 0, 0, 499, 500, 356, 363, 518, 365, 321, 416, + 358, 484, 373, 0, 511, 576, 512, 634, 637, 635, + 636, 408, 368, 370, 443, 374, 384, 431, 483, 414, + 436, 319, 474, 445, 389, 562, 589, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 284, 285, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 616, 615, 614, 613, 612, 611, + 610, 609, 0, 0, 559, 460, 335, 290, 331, 332, + 339, 664, 660, 465, 665, 0, 298, 539, 382, 427, + 355, 603, 604, 0, 655, 245, 246, 247, 248, 249, + 250, 251, 252, 291, 253, 254, 255, 256, 257, 258, + 259, 262, 263, 264, 265, 266, 267, 268, 269, 606, + 260, 261, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 0, 0, 0, 292, + 293, 294, 295, 0, 0, 286, 287, 288, 289, 0, + 0, 0, 490, 491, 492, 514, 0, 476, 538, 662, + 0, 0, 0, 0, 0, 0, 0, 588, 599, 633, + 0, 643, 644, 646, 648, 647, 650, 450, 451, 656, + 0, 652, 653, 654, 651, 386, 437, 456, 444, 0, + 668, 529, 530, 669, 639, 413, 0, 0, 544, 577, + 566, 649, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 348, 0, 0, 381, 581, 563, 573, + 564, 549, 550, 551, 558, 360, 552, 553, 554, 524, + 555, 525, 556, 557, 0, 580, 531, 446, 397, 0, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 317, 232, + 526, 645, 528, 527, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 447, 475, 0, 487, 0, 371, 372, 0, 0, + 0, 0, 0, 0, 0, 305, 453, 472, 318, 441, + 485, 323, 449, 464, 313, 412, 438, 0, 0, 307, + 470, 448, 394, 306, 0, 432, 346, 362, 343, 410, + 0, 469, 497, 342, 488, 0, 480, 309, 0, 479, + 409, 466, 471, 395, 388, 0, 308, 468, 393, 387, + 375, 352, 513, 376, 377, 366, 422, 385, 423, 367, + 399, 398, 400, 0, 0, 0, 0, 0, 508, 509, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 638, 0, 0, 642, 0, 482, + 0, 0, 0, 0, 0, 0, 452, 0, 0, 378, + 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, + 433, 383, 467, 424, 473, 454, 481, 429, 425, 299, + 455, 345, 396, 314, 316, 661, 347, 349, 353, 354, + 405, 406, 419, 440, 457, 458, 459, 344, 328, 434, + 329, 364, 330, 300, 336, 334, 337, 442, 338, 302, + 420, 463, 0, 359, 430, 391, 303, 390, 421, 462, + 461, 315, 489, 495, 496, 585, 0, 501, 672, 673, + 674, 510, 0, 426, 311, 310, 0, 0, 0, 340, + 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, + 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, + 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, + 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, + 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, + 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, + 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, + 598, 546, 0, 591, 565, 0, 592, 561, 596, 0, + 535, 0, 504, 507, 536, 620, 621, 622, 301, 506, + 624, 625, 626, 627, 628, 629, 630, 623, 478, 568, + 545, 571, 486, 548, 547, 0, 0, 582, 502, 583, + 584, 401, 402, 403, 404, 361, 608, 322, 505, 428, + 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 574, 575, 572, 675, 0, 631, 632, 0, 0, 499, + 500, 356, 363, 518, 365, 321, 416, 358, 484, 373, + 0, 511, 576, 512, 634, 637, 635, 636, 408, 368, + 370, 443, 374, 384, 431, 483, 414, 436, 319, 474, + 445, 389, 562, 589, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, + 0, 616, 615, 614, 613, 612, 611, 610, 609, 993, + 0, 559, 460, 335, 290, 331, 332, 339, 664, 660, + 465, 665, 0, 298, 539, 382, 427, 355, 603, 604, + 0, 655, 245, 246, 247, 248, 249, 250, 251, 252, + 291, 253, 254, 255, 256, 257, 258, 259, 262, 263, + 264, 265, 266, 267, 268, 269, 606, 260, 261, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 0, 0, 0, 292, 293, 294, 295, + 0, 0, 286, 287, 288, 289, 0, 0, 0, 490, + 491, 492, 514, 0, 476, 538, 662, 0, 0, 0, + 0, 0, 0, 0, 588, 599, 633, 0, 643, 644, + 646, 648, 647, 650, 450, 451, 656, 0, 652, 653, + 654, 651, 386, 437, 456, 444, 0, 668, 529, 530, + 669, 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 348, 0, 0, 381, 581, 563, 573, 564, 549, 550, + 551, 558, 360, 552, 553, 554, 524, 555, 525, 556, + 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, + 0, 0, 0, 0, 0, 317, 232, 526, 645, 528, + 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 472, 318, 441, 485, 323, 449, 1949, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, + 0, 0, 0, 0, 0, 0, 0, 0, 447, 475, + 0, 487, 0, 371, 372, 0, 0, 0, 0, 0, + 0, 0, 305, 453, 472, 318, 441, 485, 323, 449, + 464, 313, 412, 438, 0, 0, 307, 470, 448, 394, + 306, 0, 432, 346, 362, 343, 410, 0, 469, 497, + 342, 488, 0, 480, 309, 0, 479, 409, 466, 471, + 395, 388, 0, 308, 468, 393, 387, 375, 352, 513, + 376, 377, 366, 422, 385, 423, 367, 399, 398, 400, + 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 638, 0, 0, 642, 0, 482, 0, 0, 0, + 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, + 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, + 424, 473, 454, 481, 429, 425, 299, 455, 345, 396, + 314, 316, 661, 347, 349, 353, 354, 405, 406, 419, + 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, + 300, 336, 334, 337, 442, 338, 302, 420, 463, 0, + 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, + 495, 496, 585, 0, 501, 672, 673, 674, 510, 0, + 426, 311, 310, 0, 0, 0, 340, 324, 326, 327, + 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, + 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, + 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, + 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, + 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, + 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, + 601, 670, 600, 663, 417, 0, 439, 598, 546, 0, + 591, 565, 0, 592, 561, 596, 0, 535, 0, 504, + 507, 536, 620, 621, 622, 301, 506, 624, 625, 626, + 627, 628, 629, 630, 623, 478, 568, 545, 571, 486, + 548, 547, 0, 0, 582, 502, 583, 584, 401, 402, + 403, 404, 361, 608, 322, 505, 428, 0, 569, 0, + 0, 0, 0, 0, 0, 0, 0, 574, 575, 572, + 675, 0, 631, 632, 0, 0, 499, 500, 356, 363, + 518, 365, 321, 416, 358, 484, 373, 0, 511, 576, + 512, 634, 637, 635, 636, 408, 368, 370, 443, 374, + 384, 431, 483, 414, 436, 319, 474, 445, 389, 562, + 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 616, 615, + 614, 613, 612, 611, 610, 609, 0, 0, 559, 460, + 335, 290, 331, 332, 339, 664, 660, 465, 665, 0, + 298, 539, 382, 427, 355, 603, 604, 0, 655, 245, + 246, 247, 248, 249, 250, 251, 252, 291, 253, 254, + 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, + 267, 268, 269, 606, 260, 261, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 0, 0, 0, 292, 293, 294, 295, 0, 0, 286, + 287, 288, 289, 0, 0, 0, 490, 491, 492, 514, + 0, 476, 538, 662, 0, 0, 0, 0, 0, 0, + 0, 588, 599, 633, 0, 643, 644, 646, 648, 647, + 650, 450, 451, 656, 0, 652, 653, 654, 651, 386, + 437, 456, 444, 0, 668, 529, 530, 669, 639, 413, + 0, 0, 544, 577, 566, 649, 532, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 348, 0, 0, + 381, 581, 563, 573, 564, 549, 550, 551, 558, 360, + 552, 553, 554, 524, 555, 525, 556, 557, 0, 580, + 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 317, 232, 526, 645, 528, 527, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 447, 475, 0, 487, 0, + 371, 372, 0, 0, 0, 0, 0, 0, 0, 305, + 453, 472, 318, 441, 485, 323, 449, 464, 313, 412, + 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, + 346, 362, 343, 410, 0, 469, 497, 342, 488, 0, + 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, + 308, 468, 393, 387, 375, 352, 513, 376, 377, 366, + 422, 385, 423, 367, 399, 398, 400, 0, 0, 0, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 638, 0, + 0, 642, 0, 482, 0, 0, 0, 0, 0, 0, + 452, 0, 0, 378, 0, 0, 0, 498, 0, 435, + 415, 671, 0, 0, 433, 383, 467, 424, 473, 454, + 481, 429, 425, 299, 455, 345, 396, 314, 316, 661, + 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, + 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, + 337, 442, 338, 302, 420, 463, 0, 359, 3250, 391, + 303, 390, 421, 462, 461, 315, 489, 495, 496, 585, + 0, 501, 672, 673, 674, 510, 0, 426, 311, 310, + 0, 0, 0, 340, 324, 326, 327, 325, 418, 515, + 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, + 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, + 494, 379, 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, @@ -7161,8 +7133,8 @@ 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, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 1561, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, + 441, 485, 323, 449, 1949, 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, @@ -7182,138 +7154,270 @@ var yyAct = [...]int{ 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 630, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 0, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, + 0, 351, 350, 392, 304, 0, 0, 357, 296, 297, + 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, + 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, + 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, + 439, 598, 546, 0, 591, 565, 0, 592, 561, 596, + 0, 535, 0, 504, 507, 536, 620, 621, 622, 301, + 506, 624, 625, 626, 627, 628, 629, 630, 623, 478, + 568, 545, 571, 486, 548, 547, 0, 0, 582, 502, + 583, 584, 401, 402, 403, 404, 361, 608, 322, 505, + 428, 0, 569, 0, 0, 0, 0, 0, 0, 0, + 0, 574, 575, 572, 675, 0, 631, 632, 0, 0, + 499, 500, 356, 363, 518, 365, 321, 416, 358, 484, + 373, 0, 511, 576, 512, 634, 637, 635, 636, 408, + 368, 370, 443, 374, 384, 431, 483, 414, 436, 319, + 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 616, 615, 614, 613, 612, 611, 610, 609, + 0, 0, 559, 460, 335, 290, 331, 332, 339, 664, + 660, 465, 665, 0, 298, 539, 382, 427, 355, 603, + 604, 0, 655, 245, 246, 247, 248, 249, 250, 251, + 252, 291, 253, 254, 255, 256, 257, 258, 259, 262, + 263, 264, 265, 266, 267, 268, 269, 606, 260, 261, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 0, 0, 0, 292, 293, 294, + 295, 0, 0, 286, 287, 288, 289, 0, 0, 0, + 490, 491, 492, 514, 0, 476, 538, 662, 0, 0, + 0, 0, 0, 0, 0, 588, 599, 633, 0, 643, + 644, 646, 648, 647, 650, 450, 451, 656, 0, 652, + 653, 654, 651, 386, 437, 456, 444, 0, 668, 529, + 530, 669, 639, 413, 0, 0, 544, 577, 566, 649, + 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 0, 0, 381, 581, 563, 573, 564, 549, + 550, 551, 558, 360, 552, 553, 554, 524, 555, 525, + 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 317, 232, 526, 645, + 528, 527, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, + 475, 0, 487, 0, 371, 372, 0, 0, 0, 0, + 0, 0, 0, 305, 453, 1561, 318, 441, 485, 323, + 449, 464, 313, 412, 438, 0, 0, 307, 470, 448, + 394, 306, 0, 432, 346, 362, 343, 410, 0, 469, + 497, 342, 488, 0, 480, 309, 0, 479, 409, 466, + 471, 395, 388, 0, 308, 468, 393, 387, 375, 352, + 513, 376, 377, 366, 422, 385, 423, 367, 399, 398, + 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 638, 0, 0, 642, 0, 482, 0, 0, + 0, 0, 0, 0, 452, 0, 0, 378, 0, 0, + 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, + 467, 424, 473, 454, 481, 429, 425, 299, 455, 345, + 396, 314, 316, 661, 347, 349, 353, 354, 405, 406, + 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, + 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, + 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, + 489, 495, 496, 585, 0, 501, 672, 673, 674, 510, + 0, 426, 311, 310, 0, 0, 0, 340, 324, 326, + 327, 325, 418, 515, 516, 517, 519, 520, 521, 522, + 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, + 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, + 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, + 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, + 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, + 587, 601, 670, 600, 663, 417, 0, 439, 598, 546, + 0, 591, 565, 0, 592, 561, 596, 0, 535, 0, + 504, 507, 536, 620, 621, 622, 301, 506, 624, 625, + 626, 627, 628, 629, 630, 623, 478, 568, 545, 571, + 486, 548, 547, 0, 0, 582, 502, 583, 584, 401, + 402, 403, 404, 361, 608, 322, 505, 428, 0, 569, + 0, 0, 0, 0, 0, 0, 0, 0, 574, 575, + 572, 675, 0, 631, 632, 0, 0, 499, 500, 356, + 363, 518, 365, 321, 416, 358, 484, 373, 0, 511, + 576, 512, 634, 637, 635, 636, 408, 368, 370, 443, + 374, 384, 431, 483, 414, 436, 319, 474, 445, 389, + 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, + 615, 614, 613, 612, 611, 610, 609, 0, 0, 559, + 460, 335, 290, 331, 332, 339, 664, 660, 465, 665, + 0, 298, 539, 382, 427, 355, 603, 604, 0, 655, + 245, 246, 247, 248, 249, 250, 251, 252, 291, 253, + 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, + 266, 267, 268, 269, 606, 260, 261, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 0, 0, 0, 292, 293, 294, 295, 0, 0, + 286, 287, 288, 289, 0, 0, 0, 490, 491, 492, + 514, 0, 476, 538, 662, 0, 0, 0, 0, 0, + 0, 0, 588, 599, 633, 0, 643, 644, 646, 648, + 647, 650, 450, 451, 656, 0, 652, 653, 654, 651, + 386, 437, 456, 444, 0, 668, 529, 530, 669, 639, + 413, 0, 0, 544, 577, 566, 649, 532, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 348, 0, + 0, 381, 581, 563, 573, 564, 549, 550, 551, 558, + 360, 552, 553, 554, 524, 555, 525, 556, 557, 0, + 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, + 0, 0, 0, 317, 232, 526, 645, 528, 527, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 447, 475, 0, 487, + 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, + 305, 453, 1559, 318, 441, 485, 323, 449, 464, 313, + 412, 438, 0, 0, 307, 470, 448, 394, 306, 0, + 432, 346, 362, 343, 410, 0, 469, 497, 342, 488, + 0, 480, 309, 0, 479, 409, 466, 471, 395, 388, + 0, 308, 468, 393, 387, 375, 352, 513, 376, 377, + 366, 422, 385, 423, 367, 399, 398, 400, 0, 0, + 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, + 0, 0, 642, 0, 482, 0, 0, 0, 0, 0, + 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, + 435, 415, 671, 0, 0, 433, 383, 467, 424, 473, + 454, 481, 429, 425, 299, 455, 345, 396, 314, 316, + 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, + 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, + 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, + 391, 303, 390, 421, 462, 461, 315, 489, 495, 496, + 585, 0, 501, 672, 673, 674, 510, 0, 426, 311, + 310, 0, 0, 0, 340, 324, 326, 327, 325, 418, + 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, + 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, + 0, 494, 379, 380, 0, 351, 350, 392, 304, 0, + 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, + 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, + 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, + 600, 663, 417, 0, 439, 598, 546, 0, 591, 565, + 0, 592, 561, 596, 0, 535, 0, 504, 507, 536, + 620, 621, 622, 301, 506, 624, 625, 626, 627, 628, + 629, 630, 623, 478, 568, 545, 571, 486, 548, 547, + 0, 0, 582, 502, 583, 584, 401, 402, 403, 404, + 361, 608, 322, 505, 428, 0, 569, 0, 0, 0, + 0, 0, 0, 0, 0, 574, 575, 572, 675, 0, + 631, 632, 0, 0, 499, 500, 356, 363, 518, 365, + 321, 416, 358, 484, 373, 0, 511, 576, 512, 634, + 637, 635, 636, 408, 368, 370, 443, 374, 384, 431, + 483, 414, 436, 319, 474, 445, 389, 562, 589, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 616, 615, 614, 613, + 612, 611, 610, 609, 0, 0, 559, 460, 335, 290, + 331, 332, 339, 664, 660, 465, 665, 0, 298, 539, + 382, 427, 355, 603, 604, 0, 655, 245, 246, 247, + 248, 249, 250, 251, 252, 291, 253, 254, 255, 256, + 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, + 269, 606, 260, 261, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 0, 0, + 0, 292, 293, 294, 295, 0, 0, 286, 287, 288, + 289, 0, 0, 0, 490, 491, 492, 514, 0, 476, + 538, 662, 0, 0, 0, 0, 0, 0, 0, 588, + 599, 633, 0, 643, 644, 646, 648, 647, 650, 450, + 451, 656, 0, 652, 653, 654, 651, 386, 437, 456, + 444, 0, 668, 529, 530, 669, 639, 413, 0, 0, + 544, 577, 566, 649, 532, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 348, 0, 0, 381, 581, + 563, 573, 564, 549, 550, 551, 558, 360, 552, 553, + 554, 524, 555, 525, 556, 557, 0, 580, 531, 446, + 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 413, 0, 0, 544, 577, 566, 649, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 0, 0, 381, 581, 563, 573, 564, 549, 550, 551, - 558, 360, 552, 553, 554, 524, 555, 525, 556, 557, - 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, + 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 317, 232, 526, 645, 528, 527, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 317, 232, 526, 645, 528, 527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 447, 475, 0, 487, 0, 371, 372, + 0, 0, 0, 0, 0, 0, 0, 305, 453, 472, + 318, 441, 485, 323, 449, 1437, 313, 412, 438, 0, + 0, 307, 470, 448, 394, 306, 0, 432, 346, 362, + 343, 410, 0, 469, 497, 342, 488, 0, 480, 309, + 0, 479, 409, 466, 471, 395, 388, 0, 308, 468, + 393, 387, 375, 352, 513, 376, 377, 366, 422, 385, + 423, 367, 399, 398, 400, 0, 0, 0, 0, 0, + 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 638, 0, 0, 642, + 0, 482, 0, 0, 0, 0, 0, 0, 452, 0, + 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, + 0, 0, 433, 383, 467, 424, 473, 454, 481, 429, + 425, 299, 455, 345, 396, 314, 316, 661, 347, 349, + 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, + 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, + 338, 302, 420, 463, 0, 359, 430, 391, 303, 390, + 421, 462, 461, 315, 489, 495, 496, 585, 0, 501, + 672, 673, 674, 510, 0, 426, 311, 310, 0, 0, + 0, 340, 324, 326, 327, 325, 418, 515, 516, 517, + 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, + 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, + 380, 0, 351, 350, 392, 304, 0, 0, 357, 296, + 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, + 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, + 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, + 0, 439, 598, 546, 0, 591, 565, 0, 592, 561, + 596, 0, 535, 0, 504, 507, 536, 620, 621, 622, + 301, 506, 624, 625, 626, 627, 628, 629, 630, 623, + 478, 568, 545, 571, 486, 548, 547, 0, 0, 582, + 502, 583, 584, 401, 402, 403, 404, 361, 608, 322, + 505, 428, 0, 569, 0, 0, 0, 0, 0, 0, + 0, 0, 574, 575, 572, 675, 0, 631, 632, 0, + 0, 499, 500, 356, 363, 518, 365, 321, 416, 358, + 484, 373, 0, 511, 576, 512, 634, 637, 635, 636, + 408, 368, 370, 443, 374, 384, 431, 483, 414, 436, + 319, 474, 445, 389, 562, 589, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 616, 615, 614, 613, 612, 611, 610, + 609, 0, 0, 559, 460, 335, 290, 331, 332, 339, + 664, 660, 465, 665, 0, 298, 539, 382, 427, 355, + 603, 604, 0, 655, 245, 246, 247, 248, 249, 250, + 251, 252, 291, 253, 254, 255, 256, 257, 258, 259, + 262, 263, 264, 265, 266, 267, 268, 269, 606, 260, + 261, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 0, 0, 0, 292, 293, + 294, 295, 0, 0, 286, 287, 288, 289, 0, 0, + 0, 490, 491, 492, 514, 0, 476, 538, 662, 0, + 0, 0, 0, 0, 0, 0, 588, 599, 633, 0, + 643, 644, 646, 648, 647, 650, 450, 451, 656, 0, + 652, 653, 654, 651, 386, 437, 456, 444, 0, 668, + 529, 530, 669, 639, 413, 0, 0, 544, 577, 566, + 649, 532, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 348, 0, 0, 381, 581, 563, 573, 564, + 549, 550, 551, 558, 360, 552, 553, 554, 524, 555, + 525, 556, 557, 0, 580, 531, 446, 397, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 447, 475, 0, - 487, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 305, 453, 1559, 318, 441, 485, 323, 449, 464, - 313, 412, 438, 0, 0, 307, 470, 448, 394, 306, - 0, 432, 346, 362, 343, 410, 0, 469, 497, 342, - 488, 0, 480, 309, 0, 479, 409, 466, 471, 395, - 388, 0, 308, 468, 393, 387, 375, 352, 513, 376, - 377, 366, 422, 385, 423, 367, 399, 398, 400, 0, - 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, - 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, - 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, - 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, - 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, - 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, - 496, 585, 0, 501, 672, 673, 674, 510, 0, 426, - 311, 310, 0, 0, 0, 340, 324, 326, 327, 325, - 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, - 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, - 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, + 231, 0, 0, 0, 0, 0, 0, 317, 232, 526, + 645, 528, 527, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 447, 475, 0, 487, 0, 371, 372, 0, 0, 0, + 0, 0, 0, 0, 305, 453, 472, 318, 441, 485, + 323, 449, 464, 313, 412, 438, 0, 0, 307, 470, + 448, 394, 306, 0, 432, 346, 362, 343, 410, 0, + 469, 497, 342, 488, 0, 480, 309, 0, 479, 409, + 466, 471, 395, 388, 0, 308, 468, 393, 387, 375, + 352, 513, 376, 377, 366, 422, 385, 423, 367, 399, + 398, 400, 0, 0, 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 1437, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 429, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, + 0, 0, 0, 638, 0, 0, 642, 0, 482, 0, + 0, 0, 0, 0, 0, 452, 0, 0, 378, 0, + 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, + 383, 467, 424, 473, 454, 481, 429, 425, 299, 455, + 345, 396, 314, 316, 760, 347, 349, 353, 354, 405, + 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, + 364, 330, 300, 336, 334, 337, 442, 338, 302, 420, + 463, 0, 359, 430, 391, 303, 390, 421, 462, 461, + 315, 489, 495, 496, 585, 0, 501, 672, 673, 674, + 510, 0, 426, 311, 310, 0, 0, 0, 340, 324, + 326, 327, 325, 418, 515, 516, 517, 519, 520, 521, + 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, + 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, + 350, 392, 304, 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, @@ -7369,8 +7473,8 @@ var yyAct = [...]int{ 638, 0, 0, 642, 0, 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, 0, 433, 383, 467, 424, - 473, 454, 481, 429, 425, 299, 455, 345, 396, 314, - 316, 760, 347, 349, 353, 354, 405, 406, 419, 440, + 473, 454, 481, 717, 425, 299, 455, 345, 396, 314, + 316, 661, 347, 349, 353, 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, 462, 461, 315, 489, 495, @@ -7379,198 +7483,128 @@ var yyAct = [...]int{ 418, 515, 516, 517, 519, 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, 0, 351, 350, 392, 304, - 357, 296, 297, 667, 341, 411, 607, 640, 641, 533, - 0, 595, 534, 543, 333, 567, 579, 578, 407, 493, - 0, 590, 593, 523, 666, 0, 587, 601, 670, 600, - 663, 417, 0, 439, 598, 546, 0, 591, 565, 0, - 592, 561, 596, 0, 535, 0, 504, 507, 536, 620, - 621, 622, 301, 506, 624, 625, 626, 627, 628, 629, - 630, 623, 478, 568, 545, 571, 486, 548, 547, 0, - 0, 582, 502, 583, 584, 401, 402, 403, 404, 361, - 608, 322, 505, 428, 0, 569, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 575, 572, 675, 0, 631, - 632, 0, 0, 499, 500, 356, 363, 518, 365, 321, - 416, 358, 484, 373, 0, 511, 576, 512, 634, 637, - 635, 636, 408, 368, 370, 443, 374, 384, 431, 483, - 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 616, 615, 614, 613, 612, - 611, 610, 609, 0, 0, 559, 460, 335, 290, 331, - 332, 339, 664, 660, 465, 665, 0, 298, 539, 382, - 427, 355, 603, 604, 0, 655, 245, 246, 247, 248, - 249, 250, 251, 252, 291, 253, 254, 255, 256, 257, - 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, - 606, 260, 261, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 286, 287, 288, 289, - 0, 0, 0, 490, 491, 492, 514, 0, 476, 538, - 662, 0, 0, 0, 0, 0, 0, 0, 588, 599, - 633, 0, 643, 644, 646, 648, 647, 650, 450, 451, - 656, 0, 652, 653, 654, 651, 386, 437, 456, 444, - 0, 668, 529, 530, 669, 639, 413, 0, 0, 544, - 577, 566, 649, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 0, 0, 381, 581, 563, - 573, 564, 549, 550, 551, 558, 360, 552, 553, 554, - 524, 555, 525, 556, 557, 0, 580, 531, 446, 397, - 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 317, - 232, 526, 645, 528, 527, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 357, 296, 297, 667, 341, 411, 607, 640, + 641, 533, 0, 595, 534, 543, 333, 567, 579, 578, + 407, 493, 0, 590, 593, 523, 666, 0, 587, 601, + 670, 600, 663, 417, 0, 439, 598, 546, 0, 591, + 565, 0, 592, 561, 596, 0, 535, 0, 504, 507, + 536, 620, 621, 622, 301, 506, 624, 625, 626, 627, + 628, 629, 718, 623, 478, 568, 545, 571, 486, 548, + 547, 0, 0, 582, 502, 583, 584, 401, 402, 403, + 404, 361, 608, 322, 505, 428, 0, 569, 0, 0, + 0, 0, 0, 0, 0, 0, 574, 575, 572, 675, + 0, 631, 632, 0, 0, 499, 500, 356, 363, 518, + 365, 321, 416, 358, 484, 373, 0, 511, 576, 512, + 634, 637, 635, 636, 408, 368, 370, 443, 374, 384, + 431, 483, 414, 436, 319, 474, 445, 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 447, 475, 0, 487, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 305, 453, 472, 318, - 441, 485, 323, 449, 464, 313, 412, 438, 0, 0, - 307, 470, 448, 394, 306, 0, 432, 346, 362, 343, - 410, 0, 469, 497, 342, 488, 0, 480, 309, 0, - 479, 409, 466, 471, 395, 388, 0, 308, 468, 393, - 387, 375, 352, 513, 376, 377, 366, 422, 385, 423, - 367, 399, 398, 400, 0, 0, 0, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 638, 0, 0, 642, 0, - 482, 0, 0, 0, 0, 0, 0, 452, 0, 0, - 378, 0, 0, 0, 498, 0, 435, 415, 671, 0, - 0, 433, 383, 467, 424, 473, 454, 481, 717, 425, - 299, 455, 345, 396, 314, 316, 661, 347, 349, 353, - 354, 405, 406, 419, 440, 457, 458, 459, 344, 328, - 434, 329, 364, 330, 300, 336, 334, 337, 442, 338, - 302, 420, 463, 0, 359, 430, 391, 303, 390, 421, - 462, 461, 315, 489, 495, 496, 585, 0, 501, 672, - 673, 674, 510, 0, 426, 311, 310, 0, 0, 0, - 340, 324, 326, 327, 325, 418, 515, 516, 517, 519, - 520, 521, 522, 586, 602, 570, 540, 503, 594, 537, - 541, 542, 369, 605, 0, 0, 0, 494, 379, 380, - 0, 351, 350, 392, 304, 357, 296, 297, 667, 341, - 411, 607, 640, 641, 533, 0, 595, 534, 543, 333, - 567, 579, 578, 407, 493, 0, 590, 593, 523, 666, - 0, 587, 601, 670, 600, 663, 417, 0, 439, 598, - 546, 0, 591, 565, 0, 592, 561, 596, 0, 535, - 0, 504, 507, 536, 620, 621, 622, 301, 506, 624, - 625, 626, 627, 628, 629, 718, 623, 478, 568, 545, - 571, 486, 548, 547, 0, 0, 582, 502, 583, 584, - 401, 402, 403, 404, 361, 608, 322, 505, 428, 0, - 569, 0, 0, 0, 0, 0, 0, 0, 0, 574, - 575, 572, 675, 0, 631, 632, 0, 0, 499, 500, - 356, 363, 518, 365, 321, 416, 358, 484, 373, 1835, - 511, 576, 512, 634, 637, 635, 636, 408, 368, 370, - 443, 374, 384, 431, 483, 414, 436, 319, 474, 445, - 389, 562, 589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, + 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 616, 615, 614, + 613, 612, 611, 610, 609, 0, 0, 559, 460, 335, + 290, 331, 332, 339, 664, 660, 465, 665, 0, 298, + 539, 382, 427, 355, 603, 604, 0, 655, 245, 246, + 247, 248, 249, 250, 251, 252, 291, 253, 254, 255, + 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, + 268, 269, 606, 260, 261, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 0, + 0, 0, 292, 293, 294, 295, 0, 0, 286, 287, + 288, 289, 0, 0, 0, 490, 491, 492, 514, 0, + 476, 538, 662, 0, 0, 0, 0, 0, 0, 0, + 588, 599, 633, 0, 643, 644, 646, 648, 647, 650, + 450, 451, 656, 0, 652, 653, 654, 651, 386, 437, + 456, 444, 0, 668, 529, 530, 669, 639, 739, 738, + 745, 735, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 742, 743, 2081, 744, 748, 0, 0, 729, 0, + 0, 172, 209, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 616, 615, 614, 613, 612, 611, 610, 609, 0, 0, - 559, 460, 335, 290, 331, 332, 339, 664, 660, 465, - 665, 0, 298, 539, 382, 427, 355, 603, 604, 0, - 655, 245, 246, 247, 248, 249, 250, 251, 252, 291, - 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, - 265, 266, 267, 268, 269, 606, 260, 261, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 292, 293, 294, 295, 0, - 0, 286, 287, 288, 289, 0, 0, 0, 490, 491, - 492, 514, 0, 476, 538, 662, 0, 0, 0, 0, - 0, 0, 0, 588, 599, 633, 0, 643, 644, 646, - 648, 647, 650, 450, 451, 656, 0, 652, 653, 654, - 651, 386, 437, 456, 444, 0, 668, 529, 530, 669, - 639, 0, 0, 1831, 2081, 0, 0, 0, 0, 0, - 1828, 0, 172, 209, 1830, 1827, 1829, 1833, 1834, 0, - 0, 0, 1832, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3751, 0, 0, 0, - 0, 0, 2083, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3754, 0, 0, 0, 0, + 0, 2083, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2081, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 757, 0, 0, 759, 0, 0, + 0, 0, 758, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 205, 0, 0, 0, 0, + 0, 2083, 0, 0, 0, 2058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 205, 0, 0, 0, - 0, 2083, 0, 0, 0, 0, 2058, 0, 0, 0, - 0, 0, 2081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3927, 0, 0, 0, 0, - 2083, 0, 0, 0, 0, 2058, 0, 0, 0, 0, - 0, 2081, 0, 1816, 1817, 1818, 1819, 1820, 1821, 1822, - 1823, 1824, 1825, 1826, 1838, 1839, 1840, 1841, 1842, 1843, - 1836, 1837, 0, 0, 2074, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2083, - 0, 0, 0, 0, 2058, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2058, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2068, 3898, 0, - 0, 0, 2074, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2056, 2090, 0, - 0, 2057, 2059, 2061, 0, 2063, 2064, 2065, 2069, 2070, - 2071, 2073, 2076, 2077, 2078, 2062, 0, 0, 0, 0, - 0, 0, 2066, 2075, 2067, 0, 2068, 0, 0, 0, - 0, 2074, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 730, 732, 731, 2074, 0, 0, 0, 0, 0, 0, + 0, 737, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, + 756, 0, 0, 0, 0, 2062, 0, 734, 0, 0, + 0, 0, 0, 0, 0, 0, 2068, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2056, 2090, 0, 0, 2057, 2059, 2061, 0, 2063, 2064, 2065, 2069, 2070, 2071, - 2073, 2076, 2077, 2078, 2062, 0, 0, 0, 0, 2082, - 0, 2066, 2075, 2067, 0, 2068, 0, 0, 0, 0, + 2073, 2076, 2077, 2078, 0, 2062, 0, 0, 0, 0, + 0, 2066, 2075, 2067, 0, 0, 2068, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2056, 2090, 0, 0, 2057, - 2059, 2061, 0, 2063, 2064, 2065, 2069, 2070, 2071, 2073, - 2076, 2077, 2078, 2062, 0, 0, 0, 0, 2082, 2079, - 2066, 2075, 2067, 0, 2068, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, - 2054, 0, 0, 0, 2056, 2090, 0, 0, 2057, 2059, - 2061, 0, 2063, 2064, 2065, 2069, 2070, 2071, 2073, 2076, - 2077, 2078, 0, 0, 2072, 0, 0, 2082, 2079, 2066, - 2075, 2067, 0, 2060, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2055, 0, 0, 0, 2054, + 0, 0, 0, 0, 0, 0, 2056, 2090, 0, 0, + 2057, 2059, 2061, 0, 2063, 2064, 2065, 2069, 2070, 2071, + 2073, 2076, 2077, 2078, 0, 0, 0, 0, 2082, 0, + 0, 2066, 2075, 2067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 736, 740, 746, + 0, 747, 749, 0, 0, 750, 751, 752, 0, 0, + 754, 755, 0, 0, 0, 0, 0, 0, 2082, 0, + 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2055, 0, 0, + 0, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2072, 0, 0, 2082, 2079, 0, 0, - 0, 0, 2060, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2055, 0, 0, 0, 2054, 0, + 0, 0, 0, 0, 0, 2072, 0, 0, 0, 0, + 2079, 0, 0, 0, 2060, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2055, 0, 0, + 0, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2072, 0, 0, 0, 0, + 0, 0, 0, 0, 2060, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2072, 0, 0, 0, 2079, 0, 0, 0, - 0, 2060, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2055, 0, 0, 0, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2072, 0, 0, 0, 0, 0, 0, 0, 0, - 2060, + 0, 0, 0, 733, } var yyPact = [...]int{ - 415, -1000, -1000, -1000, -335, 15871, -1000, -1000, -1000, -1000, + 4390, -1000, -1000, -1000, -356, 16094, -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, -1000, -1000, 51296, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 51627, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 420, 51296, -333, 31646, 49331, -1000, -1000, 2695, - -1000, 49986, 17858, 51296, 531, 529, 51296, -1000, -1000, -1000, + -1000, -1000, 347, 51627, -354, 31917, 49656, -1000, -1000, 2951, + -1000, 50313, 18087, 51627, 470, 469, 51627, -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, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 934, -1000, 55881, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 864, 5486, - 55226, 11913, -225, -1000, 1603, -47, 2608, 476, -206, -208, - 515, 1083, 1120, 1179, 1032, 51296, 1064, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 923, -1000, 56226, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 830, 5319, + 55569, 12124, -233, -1000, 1800, -52, 2668, 560, -224, -225, + 456, 1123, 1129, 1387, 1144, 51627, 1075, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 393, 975, 50641, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 249, 1040, 50970, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 4267, 262, 933, - 975, 23120, 60, 59, 1603, 2891, -121, 258, -1000, 1320, - 4333, 214, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 11913, 11913, 15871, -393, 15871, 11913, 51296, - 51296, -1000, -1000, -1000, -1000, -333, 49986, 864, 5486, 11913, - 2608, 476, -206, -208, 515, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 378, 239, 921, + 1040, 23365, 68, 66, 1800, 2966, -126, 262, -1000, 1344, + 4447, 211, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 12124, 12124, 16094, -412, 16094, 12124, 51627, + 51627, -1000, -1000, -1000, -1000, -354, 50313, 830, 5319, 12124, + 2668, 560, -224, -225, 456, -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, -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, -121, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -126, -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, @@ -7586,7 +7620,7 @@ 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, 59, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 66, -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, @@ -7604,434 +7638,436 @@ 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, 4982, -1000, 1729, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5588, -1000, 1716, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 2364, 3200, 1724, 2607, - 809, 49331, 51296, -1000, 144, 809, -1000, -1000, -1000, 1603, - 3684, -1000, 51296, 51296, 157, 1962, -1000, 655, 564, 547, - 861, 299, 1705, -1000, -1000, -1000, -1000, -1000, -1000, 718, - 3592, -1000, 51296, 51296, 3209, 51296, -1000, 2330, 749, -1000, - 5531, 3401, 1352, 989, 3244, -1000, -1000, 3191, -1000, 313, - 215, 233, 656, 419, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 284, -1000, 3468, -1000, -1000, 307, -1000, -1000, 283, - -1000, -1000, -1000, 57, -1000, -1000, -1000, -1000, -1000, -1000, - -41, -1000, -1000, 1212, 2406, 11913, 2332, -1000, 3161, 1762, - -1000, -1000, -1000, 7301, 14545, 14545, 14545, 14545, 51296, -1000, - -1000, 3015, 11913, 3186, 3176, 3173, 3172, -1000, -1000, -1000, - -1000, -1000, -1000, 3170, 1687, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2061, -1000, -1000, -1000, 15203, -1000, - 3166, 3165, 3164, 3157, 3156, 3153, 3151, 3150, 3149, 3132, - 3131, 3125, 3124, 3123, 2854, 17192, 3122, 2603, 2601, 3118, - 3117, 3115, 2600, 3113, 3112, 3110, 2854, 2854, 3108, 3107, - 3106, 3105, 3103, 3102, 3098, 3090, 3089, 3088, 3083, 3080, - 3079, 3073, 3071, 3066, 3065, 3056, 3054, 3053, 3042, 3041, - 3040, 3039, 3038, 3037, 3036, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 2437, 3255, 1702, 2664, + 760, 49656, 51627, -1000, 136, 760, -1000, -1000, -1000, 1800, + 3653, -1000, 51627, 51627, 146, 2004, -1000, 550, 526, 449, + 645, 272, 1667, -1000, -1000, -1000, -1000, -1000, -1000, 648, + 3592, -1000, 51627, 51627, 3271, 51627, -1000, 2366, 672, -1000, + 56893, 3414, 1454, 965, 3282, -1000, -1000, 3253, -1000, 267, + 317, 244, 825, 345, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 293, -1000, 3490, -1000, -1000, 263, -1000, -1000, 242, + -1000, -1000, -1000, 61, -1000, -1000, -1000, -1000, -1000, -1000, + -45, -1000, -1000, 1200, 2200, 12124, 2026, -1000, 4699, 1755, + -1000, -1000, -1000, 7498, 14764, 14764, 14764, 14764, 51627, -1000, + -1000, 3129, 12124, 3251, 3249, 3248, 3247, -1000, -1000, -1000, + -1000, -1000, -1000, 3246, 1647, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2165, -1000, -1000, -1000, 15424, -1000, + 3243, 3242, 3240, 3239, 3238, 3236, 3235, 3234, 3227, 3226, + 3225, 3224, 3223, 3222, 2940, 17419, 3220, 2663, 2661, 3218, + 3217, 3216, 2660, 3215, 3213, 3207, 2940, 2940, 3204, 3201, + 3200, 3198, 3197, 3196, 3193, 3192, 3183, 3174, 3172, 3169, + 3168, 3165, 3164, 3163, 3161, 3160, 3158, 3151, 3150, 3149, + 3147, 3146, 3145, 3144, 3142, -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, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1383, - -1000, 3032, 3626, 2919, -1000, 3459, 3452, 3444, 3437, -269, - 3031, 2283, -1000, -1000, 110, 51296, 51296, 309, 51296, -293, - 407, -129, -131, -132, 893, -1000, 491, -1000, -1000, 1110, - -1000, 1053, 54571, 912, -1000, -1000, 51296, 860, 860, 860, - 51296, 186, 987, 860, 860, 860, 860, 860, 895, 860, - 3495, 930, 928, 925, 924, 860, -80, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1958, 1957, 3309, 1037, -1000, -1000, - -1000, -1000, 1533, 51296, -1000, 2940, 407, -322, 1865, 1865, - 3577, 3577, 3494, 3493, 778, 765, 755, 1865, 585, -1000, - 1917, 1917, 1917, 1917, 1865, 494, 788, 3503, 3503, 37, - 1917, 33, 1865, 1865, 33, 1865, 1865, -1000, 1892, 216, - -275, -1000, -1000, -1000, -1000, 1917, 1917, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 3463, 3450, 864, 864, 51296, 864, - 864, 184, 51296, 864, 864, 864, 51296, 867, -321, -4, - 53916, 53261, 2331, 2330, 747, 743, 1566, 1988, -1000, 1876, - 51296, 51296, 1876, 1876, 26406, 25751, -1000, 51296, -1000, 3626, - 2919, 2851, 1877, 2847, 2919, -133, 407, 864, 864, 864, - 864, 864, 226, 864, 864, 864, 864, 864, 51296, 51296, - 48676, 864, 864, 864, 864, 9933, 1320, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1504, + -1000, 3141, 3623, 3018, -1000, 3476, 3474, 3470, 3468, -277, + 3139, 2340, -1000, -1000, 92, 51627, 51627, 295, 51627, -308, + 393, -132, -138, -140, 779, -1000, 494, -1000, -1000, 1117, + -1000, 1060, 54912, 883, -1000, -1000, 51627, 821, 821, 821, + 51627, 187, 850, 821, 821, 821, 821, 821, 889, 821, + 3521, 919, 918, 915, 914, 821, -78, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2003, 2002, 3343, 1042, -1000, -1000, + -1000, -1000, 1481, 51627, -1000, 3086, 393, -315, 1806, 1806, + 3575, 3575, 3520, 3516, 710, 700, 670, 1806, 520, -1000, + 1826, 1826, 1826, 1826, 1806, 481, 739, 3524, 3524, 98, + 1826, 46, 1806, 1806, 46, 1806, 1806, -1000, 1948, 227, + -287, -1000, -1000, -1000, -1000, 1826, 1826, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 3485, 3484, 830, 830, 51627, 830, + 830, 185, 51627, 830, 830, 830, 51627, 846, -343, -15, + 54255, 53598, 2248, 2366, 669, 653, 1484, 1964, -1000, 1813, + 51627, 51627, 1813, 1813, 26661, 26004, -1000, 51627, -1000, 3623, + 3018, 2934, 1325, 2933, 3018, -141, 393, 830, 830, 830, + 830, 830, 232, 830, 830, 830, 830, 830, 51627, 51627, + 48999, 830, 830, 830, 830, 10138, 1344, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 15871, 2215, 2252, 211, -19, -315, 274, -1000, -1000, 51296, - 3363, 1757, -1000, -1000, -1000, 2931, -1000, 2933, 2933, 2933, - 2933, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 2933, 2933, 2939, 3028, -1000, -1000, 2932, 2932, 2932, - 2931, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 2934, 2934, 2935, 2935, - 2934, 51296, 3622, -1000, -1000, 11913, 51296, 3393, 3043, 3023, - 809, -1000, -1000, 51296, 340, 3158, 3626, 3378, 3503, 3559, - -1000, -1000, 1685, 2281, 2596, -1000, 299, -1000, 552, 299, - -1000, 639, 639, 1819, -1000, 1205, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 51296, -41, 517, -1000, -1000, 2577, 3020, - -1000, 599, 1344, 1495, -1000, 221, 5400, 40816, 2330, 40816, - 51296, -1000, -1000, -1000, -1000, -1000, -1000, 52, -1000, -1000, + 16094, 2083, 2152, 210, -27, -328, 268, -1000, -1000, 51627, + 3389, 1730, -1000, -1000, -1000, 3058, -1000, 3064, 3064, 3064, + 3064, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 3064, 3064, 3083, 3138, -1000, -1000, 3063, 3063, 3063, + 3058, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 3075, 3075, 3076, 3076, + 3075, 51627, 3618, -1000, -1000, 12124, 51627, 3405, 2842, 3136, + 760, -1000, -1000, 51627, 328, 3229, 3623, 3396, 3524, 3567, + -1000, -1000, 1642, 2338, 2658, -1000, 272, -1000, 434, 272, + -1000, 545, 545, 1844, -1000, 1414, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 51627, -45, 419, -1000, -1000, 2631, 3135, + -1000, 613, 1330, 1457, -1000, 229, 5569, 41115, 2366, 41115, + 51627, -1000, -1000, -1000, -1000, -1000, -1000, 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, 305, -1000, 11913, 11913, 11913, 11913, 11913, -1000, - 722, 13887, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14545, - 14545, 14545, 14545, 14545, 14545, 14545, 14545, 14545, 14545, 14545, - 14545, 2990, 1967, 14545, 14545, 14545, 14545, 5148, 28371, 1877, - 3329, 1541, 319, 1762, 1762, 1762, 1762, 11913, -1000, 1970, - 2406, 11913, 11913, 11913, 11913, 34921, 51296, -1000, -1000, 5307, - 11913, 11913, 56175, 11913, 3435, 11913, 11913, 11913, 2844, 5975, - 51296, 11913, -1000, 2843, 2829, -1000, -1000, 2099, 11913, -1000, - -1000, 11913, -1000, -1000, 11913, 14545, 11913, -1000, 11913, 11913, - 11913, -1000, -1000, 296, 296, 3435, 3435, 3435, 1913, 11913, - 11913, 3435, 3435, 3435, 1909, 3435, 3435, 3435, 3435, 3435, - 3435, 3435, 3435, 3435, 3435, 3435, 2828, 2821, 2818, 11255, - 3503, -225, -1000, 9275, 3378, 3503, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -271, 3018, 51296, 2594, - 2587, -347, -349, 1157, -349, 1675, -1000, -295, 1076, 308, - 51296, -1000, -1000, 51296, 2279, 51296, 2276, 197, 195, 51296, - 51296, -15, 1079, 1058, 1061, -1000, -1000, 51296, 52606, -1000, - 51296, 1991, 51296, 51296, 3423, -1000, 51296, 51296, 860, 860, - 860, -1000, 46711, 40816, 51296, 51296, 2330, 51296, 51296, 51296, - 860, 860, 860, 860, 51296, -1000, 3339, 40816, 3316, 867, - -1000, 51296, 1533, 3420, 51296, -1000, -1000, -1000, -1000, 3577, - 14545, 14545, -1000, -1000, 11913, -1000, 202, 48021, 1917, 1865, - 1865, -1000, -1000, 51296, -1000, -1000, -1000, 1917, 51296, 1917, - 1917, 3577, 1917, -1000, -1000, -1000, 1865, 1865, -1000, -1000, - 11913, -1000, -1000, 1917, 1917, -1000, -1000, 3577, 51296, 51, - 3577, 3577, 18, -1000, -1000, -1000, 1865, 51296, 51296, 860, - 51296, -1000, 51296, 51296, -1000, -1000, 51296, 51296, 4645, 51296, - 2330, 46711, 47366, 3448, -1000, 40816, 51296, 51296, 1522, -1000, - 908, 38196, -1000, 51296, 1463, -1000, -10, -1000, -17, -4, - 1876, -4, 1876, 907, -1000, 596, 642, 24441, 542, 40816, - 6633, -1000, -1000, 1876, 1876, 6633, 6633, 1738, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1508, -1000, 247, 3503, -1000, - -1000, -1000, -1000, -1000, 2275, -308, 51296, 46711, 40816, 2330, - 51296, 864, 51296, 51296, 51296, 51296, 51296, -1000, 3016, 1670, - -1000, 3400, 51296, 51296, 51296, 51296, 1489, -1000, -1000, 21133, - 1652, -1000, -1000, 2005, -1000, 11913, 15871, -249, 11913, 15871, - 15871, 11913, 15871, -1000, 11913, 1614, -1000, -1000, -1000, -1000, - 2271, -1000, 2270, -1000, -1000, -1000, -1000, -1000, 2585, 2585, - -1000, 2268, -1000, -1000, -1000, -1000, 2234, -1000, -1000, 2231, - -1000, -1000, -1000, -1000, -166, 2812, 1212, -1000, 2584, 3243, - -226, -1000, 22465, 51296, 51296, 3043, -356, 1955, 1954, 1953, - 3472, -1000, -226, -1000, 21799, 51296, 3503, -1000, -230, 3539, - 11913, 51296, -1000, 3492, -1000, -1000, 299, -1000, -1000, -1000, - 639, 532, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1651, + -1000, -1000, 287, -1000, 12124, 12124, 12124, 12124, 12124, -1000, + 711, 14104, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14764, + 14764, 14764, 14764, 14764, 14764, 14764, 14764, 14764, 14764, 14764, + 14764, 3128, 1985, 14764, 14764, 14764, 14764, 5490, 28632, 1325, + 3181, 1482, 312, 1755, 1755, 1755, 1755, 12124, -1000, 2013, + 2200, 12124, 12124, 12124, 12124, 35202, 51627, -1000, -1000, 608, + 12124, 12124, 4039, 12124, 3443, 12124, 12124, 12124, 2930, 6168, + 51627, 12124, -1000, 2923, 2920, -1000, -1000, 2153, 12124, -1000, + -1000, 12124, -1000, -1000, 12124, 14764, 12124, -1000, 12124, 12124, + 12124, -1000, -1000, 2721, 2721, 3443, 3443, 3443, 1944, 12124, + 12124, 3443, 3443, 3443, 1911, 3443, 3443, 3443, 3443, 3443, + 3443, 3443, 3443, 3443, 3443, 3443, 2918, 2915, 2909, 11464, + 3524, -233, -1000, 9478, 3396, 3524, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -282, 3133, 51627, 2655, + 2651, -364, -365, 1126, -365, 1625, -1000, -311, 1101, 290, + 51627, -1000, -1000, 51627, 2337, 51627, 2335, 228, 226, 51627, + 51627, -14, 1115, 1059, 1066, -1000, -1000, 51627, 52941, -1000, + 51627, 2021, 51627, 51627, 3438, -1000, 51627, 51627, 821, 821, + 821, -1000, 47028, 41115, 51627, 51627, 2366, 51627, 51627, 51627, + 821, 821, 821, 821, 51627, -1000, 3358, 41115, 3353, 846, + -1000, 51627, 1481, 3432, 51627, -1000, -1000, -1000, -1000, 3575, + 14764, 14764, -1000, -1000, 12124, -1000, 222, 48342, 1826, 1806, + 1806, -1000, -1000, 51627, -1000, -1000, -1000, 1826, 51627, 1826, + 1826, 3575, 1826, -1000, -1000, -1000, 1806, 1806, -1000, -1000, + 12124, -1000, -1000, 1826, 1826, -1000, -1000, 3575, 51627, 43, + 3575, 3575, 40, -1000, -1000, -1000, 1806, 51627, 51627, 821, + 51627, -1000, 51627, 51627, -1000, -1000, 51627, 51627, 4882, 51627, + 2366, 47028, 47685, 3483, -1000, 41115, 51627, 51627, 1478, -1000, + 881, 38487, -1000, 51627, 1430, -1000, -4, -1000, -22, -15, + 1813, -15, 1813, 880, -1000, 612, 629, 24690, 541, 41115, + 6828, -1000, -1000, 1813, 1813, 6828, 6828, 1566, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1475, -1000, 248, 3524, -1000, + -1000, -1000, -1000, -1000, 2333, -321, 51627, 47028, 41115, 2366, + 51627, 830, 51627, 51627, 51627, 51627, 51627, -1000, 3130, 1610, + -1000, 3412, 51627, 51627, 51627, 51627, 1416, -1000, -1000, 21372, + 1609, -1000, -1000, 2027, -1000, 12124, 16094, -257, 12124, 16094, + 16094, 12124, 16094, -1000, 12124, 1494, -1000, -1000, -1000, -1000, + 2329, -1000, 2328, -1000, -1000, -1000, -1000, -1000, 2650, 2650, + -1000, 2325, -1000, -1000, -1000, -1000, 2323, -1000, -1000, 2314, + -1000, -1000, -1000, -1000, -174, 2908, 1200, -1000, 2649, 3281, + -234, -1000, 22708, 51627, 51627, 2842, -367, 1992, 1989, 1981, + 3494, -1000, -234, -1000, 22040, 51627, 3524, -1000, -239, 3558, + 12124, 51627, -1000, 3515, -1000, -1000, 272, -1000, -1000, -1000, + 545, 433, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1578, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -122, -124, 1500, -1000, 51296, -1000, -1000, 221, 40816, - 43436, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1403, -1000, - -1000, 190, -1000, 905, 227, 1818, -1000, -1000, 187, 218, - 160, 964, 2406, -1000, 1998, 1998, 2018, -1000, 727, -1000, - -1000, -1000, -1000, 3015, -1000, -1000, -1000, 1922, 2046, -1000, - 1781, 1781, 1657, 1657, 1657, 1657, 1657, 2142, 2142, -1000, - -1000, -1000, 7301, 2990, 14545, 14545, 14545, 14545, 956, 956, - 3725, 4291, -1000, -1000, 1749, 1749, -1000, -1000, -1000, -1000, - 11913, 205, 1984, -1000, 11913, 2686, 1734, 2617, 1591, 1814, - -1000, 2931, 11913, 1639, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -127, -128, 1474, -1000, 51627, -1000, -1000, 229, 41115, + 43743, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1703, -1000, + -1000, 179, -1000, 878, 201, 1842, -1000, -1000, 197, 212, + 158, 982, 2200, -1000, 2064, 2064, 2033, -1000, 748, -1000, + -1000, -1000, -1000, 3129, -1000, -1000, -1000, 2302, 1884, -1000, + 1947, 1947, 1615, 1615, 1615, 1615, 1615, 1903, 1903, -1000, + -1000, -1000, 7498, 3128, 14764, 14764, 14764, 14764, 957, 957, + 3717, 4266, -1000, -1000, 1723, 1723, -1000, -1000, -1000, -1000, + 12124, 183, 2014, -1000, 12124, 3148, 1657, 2542, 1476, 1838, + -1000, 3058, 12124, 1576, -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, 2809, 2806, 2752, 3591, 2805, 11913, - -1000, -1000, 1813, 1798, 1790, -1000, 2328, 10597, -1000, -1000, - -1000, 2800, 1631, 2799, -1000, -1000, -1000, 2797, 1782, 1290, - 2796, 2776, 2794, 2787, 2786, 2784, 1498, 1497, 11913, 11913, - 11913, 11913, 2777, 1771, 1765, 11913, 11913, 11913, 11913, 2761, - 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, - 51296, 95, 95, 95, 1473, 1471, -1000, -1000, 1753, -1000, - 2406, -1000, -1000, 3539, -1000, 2986, 2223, 1465, -1000, -1000, - -330, 2514, 904, 51296, -296, 51296, 904, 51296, 51296, 1950, - 904, -298, 2579, -1000, -1000, 2570, -1000, 51296, 51296, 51296, - 51296, -143, 3385, -1000, -1000, 1071, 1048, 1051, -1000, 51296, - -1000, 2563, 3398, 3490, 891, 51296, 2985, 2980, 51296, 51296, - 51296, 257, -1000, -1000, 1407, -1000, 227, -57, 541, 1242, - 3208, 844, 3620, 51296, 51296, 51296, 51296, 3416, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 46056, -1000, 2975, 1745, - -1000, -1000, 1762, 1762, 2406, 51296, 51296, 51296, 3203, 51296, - 51296, 3577, 3577, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1917, 3577, 3577, 1477, 1865, 1917, -1000, -1000, 1917, -356, - -1000, 1917, -1000, -356, 1630, -356, 51296, -1000, -1000, -1000, - 3415, 2940, 1464, -1000, -1000, -1000, 3557, 1715, 856, 856, - 1080, 555, 3540, 19823, -1000, 1863, 1262, 902, 3341, 320, - -1000, 1863, -162, 817, 1863, 1863, 1863, 1863, 1863, 1863, - 1863, 704, 650, 1863, 1863, 1863, 1863, 1863, 1863, 1863, - 1863, 1863, 1863, 1863, 1113, 1863, 1863, 1863, 1863, 1863, - -1000, 1863, 2974, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 776, 616, 946, 255, 3442, 377, -1000, 358, 1407, 644, - 3434, 410, 51296, 51296, 3601, 1333, -1000, -1000, -1000, -1000, - -1000, 29026, 29026, 23786, 29026, -1000, 201, 1876, -4, -28, - -1000, -1000, 1463, 6633, 1463, 6633, 2219, -1000, -1000, 899, - -1000, -1000, 1242, -1000, 51296, 51296, -1000, -1000, 2971, 1949, - -1000, -1000, 17192, -1000, 6633, 6633, -1000, -1000, 30991, 51296, - -1000, -49, -1000, -51, 3539, -1000, -1000, -1000, 1221, -1000, - -1000, 1462, 1242, 3242, 51296, 1221, 1221, 1221, -1000, -1000, - 18513, 51296, 51296, -1000, -1000, -1000, -308, 3577, 9933, -1000, - 38196, -1000, -1000, 45401, -1000, 44746, 1973, -1000, 15871, 2195, - 208, -1000, 270, -320, 206, 2042, 204, 2406, -1000, -1000, - 2760, 2750, 1727, -1000, 1726, 2748, 1725, 1719, 2217, -1000, - 20, -1000, 3376, 1246, -1000, 2968, -1000, 1718, 3306, -1000, - 1457, -1000, 1935, 1717, -1000, -1000, -1000, 11913, 44091, 11913, - 1020, 1246, 1709, 3305, 1457, 3539, 2559, 3378, -210, 1453, - -1000, 2357, 1629, 156, -1000, -1000, -1000, 51296, 2577, 1708, - 43436, 1285, -1000, 892, 1621, 1615, -1000, 40816, 312, 40816, - -1000, 40816, -1000, -1000, 3517, -1000, 51296, 3382, -1000, -1000, - -1000, 2514, 1931, -352, 51296, -1000, -1000, -1000, -1000, -1000, - 1706, -1000, 956, 956, 3725, 3422, -1000, 14545, -1000, 14545, - -1000, -1000, -1000, -1000, 3297, -1000, 1971, -1000, 11913, 2147, - 5148, 11913, 5148, 1929, 27716, 34921, -144, 3390, 3292, 51296, - -1000, -1000, 11913, 11913, -1000, 3233, -1000, -1000, -1000, -1000, - 11913, 11913, 2516, -1000, 51296, -1000, -1000, -1000, -1000, 27716, - -1000, 14545, -1000, -1000, -1000, -1000, 11913, 11913, 1309, 1309, - 3168, 1701, 95, 95, 95, 3159, 3154, 3099, 1700, 95, - 3033, 3029, 3021, 2996, 2983, 2916, 2884, 2868, 2774, 2762, - 1696, -1000, 2966, -1000, -1000, 2070, 13229, 9275, -1000, 3378, - 314, 1430, 2214, 2558, 115, -1000, 1930, -1000, 397, -1000, - 51296, 3589, -1000, 1612, 2557, 42781, -1000, 51296, -1000, -1000, - 3588, 3586, -1000, -1000, 51296, 51296, -1000, -1000, -1000, 1043, - -1000, 2556, -1000, 225, 217, 2111, 229, 1208, 18513, 2940, - 2962, 2940, 91, 1863, 623, 40816, 730, -1000, 51296, 2218, - 1925, 3241, 840, 3360, 51296, 51296, 2960, 1247, 2957, 2954, - 3412, 500, 5272, 51296, 1408, -1000, 1611, 4333, -1000, 51296, - -1000, -1000, 51296, -1000, 2330, -1000, 1865, -1000, -1000, 3577, - -1000, -1000, 11913, 11913, 3577, 1865, 1865, -1000, 1917, -1000, - 51296, -1000, -356, 500, 5272, 3411, 4981, 576, 2604, -1000, - 51296, -1000, -1000, -1000, 841, -1000, 1059, 860, 51296, 2036, - 1059, 2033, 2953, -1000, -1000, 51296, 51296, 51296, 51296, -1000, - -1000, 51296, -1000, 51296, 51296, 51296, 51296, 51296, 42126, -1000, - 51296, 51296, -1000, 51296, 2030, 51296, 2027, 3473, -1000, 1863, - 1863, 1008, -1000, -1000, 580, -1000, 42126, 2204, 2194, 2193, - 2183, 2549, 2547, 2545, 1863, 1863, 2182, 2544, 41471, 2532, - 1225, 2181, 2178, 2175, 2164, 2530, 960, -1000, 2527, 2143, - 2138, 2134, 51296, 2952, 2446, -1000, -1000, 2111, 884, 91, - 1863, 367, 51296, 1921, 1919, 623, 583, 583, 536, -68, - 25096, -1000, -1000, -1000, 51296, 38196, 38196, 38196, 38196, 38196, - 38196, -1000, 3277, 3263, 2951, -1000, 3260, 3259, 3284, 3275, - 3160, 51296, 38196, 2940, -1000, 41471, -1000, -1000, -1000, 1877, - 1691, 3432, 1045, 11913, 6633, -1000, -1000, -29, -31, -1000, - -1000, -1000, -1000, 40816, 2526, 542, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 3378, 51296, 51296, 853, 2738, 1409, -1000, - -1000, -1000, 5272, 2933, 2933, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2933, 2933, 2939, -1000, -1000, 2932, - 2932, 2932, 2931, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 2934, 2934, 2935, 2935, 2934, -1000, -1000, - -1000, 3574, -1000, 1397, -1000, -1000, 1601, -1000, 1979, -338, - 15871, 1926, 1867, -1000, 11913, 15871, 11913, -250, 343, -252, - -1000, -1000, -1000, 2524, -1000, -1000, -1000, 2173, -1000, 2172, - -1000, 121, 146, 2026, -226, 9275, 2743, 51296, -226, 51296, - 9275, -1000, 51296, 188, -372, -373, 177, 2520, 2730, -226, - 3378, 20, -1000, 3616, 11913, 3330, -1000, -1000, 51296, 2167, - -1000, -1000, -1000, 3585, 40816, 2330, 1774, 40161, -1000, 297, - -1000, 1369, 584, 2518, -1000, 923, 114, 2515, 2514, -1000, - -1000, -1000, -1000, 14545, 1762, -1000, -1000, -1000, 2406, 11913, - 2733, 2185, 2732, 2725, -1000, 2933, 2933, -1000, 2931, 2932, - 2931, 1749, 1749, 2724, -1000, 2930, -1000, 3390, -1000, 2289, - 2740, -1000, 2681, 2598, 11913, -1000, 2723, 4209, 1702, 1640, - -85, -194, 95, 95, -1000, -1000, -1000, -1000, 95, 95, - 95, 95, -1000, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 816, -104, -284, -106, -285, -1000, - -1000, 2720, 1394, -1000, -1000, -1000, -1000, -1000, 56175, 1343, - 557, 557, 2514, 2509, 51296, 2506, -299, 51296, -1000, -380, - -383, 2498, 51296, 51296, 503, 1901, -1000, 2497, -1000, -1000, - 51296, 51296, 51296, 51951, 607, 51296, 51296, 2495, -1000, 2493, - 2702, 1335, -1000, -1000, 51296, -1000, -1000, -1000, 2701, 3406, - 19168, 3404, 2294, -1000, -1000, -1000, 30336, 583, -1000, -1000, - -1000, 728, 292, 2165, 571, -1000, 51296, 521, 3324, 1918, - 2491, 51296, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 3360, -1000, 1261, -356, 453, 36886, 16537, -1000, 2772, 51296, - -1000, 51296, 19168, 19168, 2772, 486, 1854, -1000, 809, 1251, - 129, 38196, 51296, -1000, 37541, 2699, -1000, -1000, 1242, 3577, - -1000, 2406, 2406, -356, 3577, 3577, 1865, -1000, -1000, 486, - -1000, 2772, -1000, 1755, 20478, 565, 449, 437, -1000, 715, - -1000, -1000, 808, 3340, 5272, -1000, 51296, -1000, 51296, -1000, - 51296, 51296, 860, 11913, 3340, 51296, 883, -1000, 1159, 477, - 446, 793, 793, 1331, -1000, 3390, -1000, -1000, 1292, -1000, - -1000, -1000, -1000, 51296, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 27716, 27716, 3433, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2490, 2487, -1000, + -1000, -1000, -1000, -1000, 2907, 2905, 2285, 3591, 2897, 12124, + -1000, -1000, 1834, 1823, 1822, -1000, 2219, 10804, -1000, -1000, + -1000, 2895, 1574, 2883, -1000, -1000, -1000, 2882, 1820, 1333, + 2875, 2989, 2871, 2861, 2853, 2844, 1473, 1471, 12124, 12124, + 12124, 12124, 2843, 1819, 1817, 12124, 12124, 12124, 12124, 2840, + 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, + 51627, 93, 93, 93, 1460, 1449, -1000, -1000, 1816, -1000, + 2200, -1000, -1000, 3558, -1000, 3123, 2313, 1445, -1000, -1000, + -351, 2581, 876, 51627, -312, 51627, 876, 51627, 51627, 1980, + 876, -317, 2648, -1000, -1000, 2641, -1000, 51627, 51627, 51627, + 51627, -147, 3403, -1000, -1000, 1087, 1053, 1076, -1000, 51627, + -1000, 2635, 3409, 3512, 818, 51627, 3118, 3116, 51627, 51627, + 51627, 230, -1000, -1000, 1355, -1000, 201, -63, 476, 1229, + 3268, 764, 3615, 51627, 51627, 51627, 51627, 3429, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 46371, -1000, 3115, 1799, + -1000, -1000, 1755, 1755, 2200, 51627, 51627, 51627, 3267, 51627, + 51627, 3575, 3575, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1826, 3575, 3575, 1549, 1806, 1826, -1000, -1000, 1826, -367, + -1000, 1826, -1000, -367, 1551, -367, 51627, -1000, -1000, -1000, + 3425, 3086, 1440, -1000, -1000, -1000, 3565, 1585, 787, 787, + 1058, 868, 3562, 20058, -1000, 1805, 1293, 871, 3373, 275, + -1000, 1805, -169, 762, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 637, 634, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1127, 1805, 1805, 1805, 1805, 1805, + -1000, 1805, 3114, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 660, 547, 963, 220, 3482, 306, -1000, 308, 1355, 646, + 3481, 335, 51627, 51627, 3813, 1337, -1000, -1000, -1000, -1000, + -1000, 29289, 29289, 24033, 29289, -1000, 190, 1813, -15, -46, + -1000, -1000, 1430, 6828, 1430, 6828, 2311, -1000, -1000, 869, + -1000, -1000, 1229, -1000, 51627, 51627, -1000, -1000, 3111, 1978, + -1000, -1000, 17419, -1000, 6828, 6828, -1000, -1000, 31260, 51627, + -1000, -48, -1000, -28, 3558, -1000, -1000, -1000, 1203, -1000, + -1000, 1410, 1229, 3280, 51627, 1203, 1203, 1203, -1000, -1000, + 18744, 51627, 51627, -1000, -1000, -1000, -321, 3575, 10138, -1000, + 38487, -1000, -1000, 45714, -1000, 45057, 1898, -1000, 16094, 2116, + 208, -1000, 264, -331, 206, 2058, 204, 2200, -1000, -1000, + 2838, 2837, 1797, -1000, 1796, 2833, 1793, 1792, 2310, -1000, + 35, -1000, 3383, 1233, -1000, 3110, -1000, 1783, 3339, -1000, + 1384, -1000, 1975, 1781, -1000, -1000, -1000, 12124, 44400, 12124, + 1024, 1233, 1777, 3334, 1384, 3558, 2632, 3396, -218, 1381, + -1000, 2256, 1548, 141, -1000, -1000, -1000, 51627, 2631, 1762, + 43743, 1240, -1000, 867, 1539, 1525, -1000, 41115, 265, 41115, + -1000, 41115, -1000, -1000, 3537, -1000, 51627, 3398, -1000, -1000, + -1000, 2581, 1972, -366, 51627, -1000, -1000, -1000, -1000, -1000, + 1753, -1000, 957, 957, 3717, 4169, -1000, 14764, -1000, 14764, + -1000, -1000, -1000, -1000, 3096, -1000, 1809, -1000, 12124, 2106, + 5490, 12124, 5490, 2088, 27975, 35202, -149, 3402, 3077, 51627, + -1000, -1000, 12124, 12124, -1000, 3065, -1000, -1000, -1000, -1000, + 12124, 12124, 2281, -1000, 51627, -1000, -1000, -1000, -1000, 27975, + -1000, 14764, -1000, -1000, -1000, -1000, 12124, 12124, 1439, 1439, + 3031, 1748, 93, 93, 93, 2997, 2982, 2898, 1746, 93, + 2884, 2859, 2827, 2821, 2774, 2762, 2693, 2688, 2671, 2662, + 1738, -1000, 3104, -1000, -1000, 2108, 13444, 9478, -1000, 3396, + 310, 1379, 2308, 2624, 111, -1000, 1962, -1000, 332, -1000, + 51627, 3589, -1000, 1518, 2623, 43086, -1000, 51627, -1000, -1000, + 3585, 3579, -1000, -1000, 51627, 51627, -1000, -1000, -1000, 1051, + -1000, 2618, -1000, 223, 216, 2210, 234, 1211, 18744, 3086, + 3102, 3086, 86, 1805, 630, 41115, 638, -1000, 51627, 2189, + 1957, 3278, 839, 3387, 51627, 51627, 3101, 1079, 3100, 3091, + 3423, 421, 5725, 51627, 1342, -1000, 1508, 4447, -1000, 51627, + -1000, -1000, 51627, -1000, 2366, -1000, 1806, -1000, -1000, 3575, + -1000, -1000, 12124, 12124, 3575, 1806, 1806, -1000, 1826, -1000, + 51627, -1000, -367, 421, 5725, 3420, 5196, 516, 2582, -1000, + 51627, -1000, -1000, -1000, 738, -1000, 1057, 821, 51627, 2090, + 1057, 2077, 3089, -1000, -1000, 51627, 51627, 51627, 51627, -1000, + -1000, 51627, -1000, 51627, 51627, 51627, 51627, 51627, 42429, -1000, + 51627, 51627, -1000, 51627, 2076, 51627, 2073, 3384, -1000, 1805, + 1805, 1008, -1000, -1000, 595, -1000, 42429, 2306, 2304, 2303, + 2283, 2616, 2614, 2613, 1805, 1805, 2276, 2612, 41772, 2607, + 1232, 2274, 2272, 2263, 2279, 2605, 925, -1000, 2603, 2278, + 2255, 2236, 51627, 3088, 2490, -1000, -1000, 2210, 863, 86, + 1805, 303, 51627, 1938, 1928, 630, 555, 555, 472, -64, + 25347, -1000, -1000, -1000, 51627, 38487, 38487, 38487, 38487, 38487, + 38487, -1000, 3312, 3298, 3087, -1000, 3301, 3300, 3314, 3311, + 3286, 51627, 38487, 3086, -1000, 41772, -1000, -1000, -1000, 1325, + 1728, 3709, 1039, 12124, 6828, -1000, -1000, -9, -29, -1000, + -1000, -1000, -1000, 41115, 2594, 541, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 3396, 51627, 51627, 773, 2822, 1311, -1000, + -1000, -1000, 5725, 3064, 3064, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 3064, 3064, 3083, -1000, -1000, 3063, + 3063, 3063, 3058, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 3075, 3075, 3076, 3076, 3075, -1000, -1000, + -1000, 3573, -1000, 1309, -1000, -1000, 1506, -1000, 1965, -362, + 16094, 1919, 1802, -1000, 12124, 16094, 12124, -258, 289, -260, + -1000, -1000, -1000, 2593, -1000, -1000, -1000, 2261, -1000, 2260, + -1000, 118, 154, 2065, -234, 9478, 2870, 51627, -234, 51627, + 9478, -1000, 51627, 178, -379, -381, 169, 2589, 2749, -234, + 3396, 35, -1000, 3613, 12124, 3361, -1000, -1000, 51627, 2253, + -1000, -1000, -1000, 3577, 41115, 2366, 1768, 40458, -1000, 261, + -1000, 1465, 578, 2588, -1000, 912, 110, 2587, 2581, -1000, + -1000, -1000, -1000, 14764, 1755, -1000, -1000, -1000, 2200, 12124, + 2818, 2273, 2809, 2806, -1000, 3064, 3064, -1000, 3058, 3063, + 3058, 1723, 1723, 2799, -1000, 3057, -1000, 3402, -1000, 2235, + 2657, -1000, 2615, 2597, 12124, -1000, 2797, 3958, 1640, 1447, + -89, -202, 93, 93, -1000, -1000, -1000, -1000, 93, 93, + 93, 93, -1000, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 761, -110, -291, -115, -294, -1000, + -1000, 2781, 1308, -1000, -1000, -1000, -1000, -1000, 4039, 1274, + 485, 485, 2581, 2580, 51627, 2579, -318, 51627, -1000, -386, + -392, 2578, 51627, 51627, 426, 1917, -1000, 2574, -1000, -1000, + 51627, 51627, 51627, 52284, 539, 51627, 51627, 2572, -1000, 2569, + 2780, 1268, -1000, -1000, 51627, -1000, -1000, -1000, 2779, 3417, + 19401, 3406, 2364, -1000, -1000, -1000, 30603, 555, -1000, -1000, + -1000, 668, 266, 2252, 552, -1000, 51627, 461, 3355, 1916, + 2568, 51627, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 3387, -1000, 976, -367, 392, 37173, 16762, -1000, 2770, 51627, + -1000, 51627, 19401, 19401, 2770, 399, 1899, -1000, 760, 1350, + 120, 38487, 51627, -1000, 37830, 2776, -1000, -1000, 1229, 3575, + -1000, 2200, 2200, -367, 3575, 3575, 1806, -1000, -1000, 399, + -1000, 2770, -1000, 1199, 20715, 504, 440, 437, -1000, 620, + -1000, -1000, 755, 3372, 5725, -1000, 51627, -1000, 51627, -1000, + 51627, 51627, 821, 12124, 3372, 51627, 862, -1000, 1151, 408, + 375, 740, 740, 1262, -1000, 3402, -1000, -1000, 1248, -1000, + -1000, -1000, -1000, 51627, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 27975, 27975, 3473, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2560, 2559, -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, 51296, 1656, - -1000, 1916, 2485, 2330, 2294, 30336, 1908, 1876, 2484, 2483, - 583, -1000, 2482, 2469, -1000, 2218, 1905, 919, 51296, -1000, - 1235, 51296, 51296, -1000, 1358, -1000, 1903, 3207, 3239, 3207, - -1000, 3207, -1000, -1000, -1000, -1000, 3267, 2468, -1000, 3266, - -1000, 3247, -1000, -1000, -1000, -1000, 1358, -1000, -1000, -1000, - -1000, -1000, 1045, -1000, 3476, 1059, 1059, 1059, 2693, -1000, - -1000, -1000, -1000, 1285, 2690, -1000, -1000, 3474, -1000, -1000, - -1000, -1000, -1000, -1000, 18513, 3359, 3572, 3536, 39506, -1000, - -338, 1969, -1000, 2118, 199, 1923, 51296, -1000, -1000, -1000, - 2689, 2685, -232, 118, 3535, 3534, 1125, -1000, 2684, 1274, - -226, -1000, -1000, 1246, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -385, -226, -1000, 1246, 3474, 121, 294, -1000, -1000, - 3334, -1000, -1000, 2330, -1000, 1363, -1000, -1000, -1000, -1000, - -1000, -1000, 173, -1000, 51296, -1000, 1268, 112, -1000, 2406, - -1000, 5148, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 2466, -1000, -1000, 11913, -1000, -1000, -1000, 2588, - -1000, -1000, 11913, 11913, 2680, 2464, 2678, 2458, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 51627, 1727, + -1000, 1912, 2557, 2366, 2364, 30603, 1896, 1813, 2554, 2553, + 555, -1000, 2552, 2548, -1000, 2189, 1893, 890, 51627, -1000, + 1204, 51627, 51627, -1000, 1354, -1000, 1890, 3265, 3277, 3265, + -1000, 3265, -1000, -1000, -1000, -1000, 3307, 2546, -1000, 3303, + -1000, 3299, -1000, -1000, -1000, -1000, 1354, -1000, -1000, -1000, + -1000, -1000, 1039, -1000, 3511, 1057, 1057, 1057, 2775, -1000, + -1000, -1000, -1000, 1240, 2771, -1000, -1000, 3496, -1000, -1000, + -1000, -1000, -1000, -1000, 18744, 3386, 3570, 3554, 39801, -1000, + -362, 1749, -1000, 2078, 195, 2012, 51627, -1000, -1000, -1000, + 2765, 2764, -241, 132, 3552, 3551, 1088, -1000, 2742, 1238, + -234, -1000, -1000, 1233, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -410, -234, -1000, 1233, 3496, 118, 254, -1000, -1000, + 3375, -1000, -1000, 2366, -1000, 1419, -1000, -1000, -1000, -1000, + -1000, -1000, 174, -1000, 51627, -1000, 1236, 109, -1000, 2200, + -1000, 5490, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 2512, -1000, -1000, 12124, -1000, -1000, -1000, 2576, + -1000, -1000, 12124, 12124, 2741, 2507, 2740, 2502, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 3626, -1000, 3532, 1654, 2677, - 2670, 1653, 2666, 2665, -1000, 11913, 2663, 56175, 993, 2457, - 993, -1000, -1000, -1000, -1000, 51296, -1000, -1000, -1000, 29681, - 869, -356, -1000, 400, -1000, 508, 2448, -1000, -1000, 51296, - 2111, 602, 2111, 709, 51296, -308, -1000, -147, 1208, 5272, - 937, 2772, 2661, 1264, -1000, -1000, -1000, -1000, 2772, -1000, - 2447, 198, -1000, -1000, -1000, -1000, 2157, -1000, -1000, 2123, - 1592, 207, -1000, -1000, -1000, -1000, -1000, -1000, 2148, 51296, - 38851, 2291, 1899, -362, -1000, 2929, -1000, 1863, 1863, 1863, - 869, 51296, 1607, -1000, 1863, 1863, 2660, -1000, -1000, 869, - 2658, 2654, 3615, 827, 1888, 1868, -1000, 2152, 29026, 38196, - 37541, 1332, -1000, 1578, -1000, -1000, -1000, -1000, -1000, -1000, - 3577, 827, -1000, 566, 2145, 14545, 2927, 14545, 2923, 579, - 2921, 1604, -1000, 51296, -1000, -1000, 51296, 4143, 2910, -1000, - 2908, 3163, 549, 2906, 2900, 51296, 2567, -1000, 3340, 51296, - 784, 3356, -1000, -1000, -1000, 423, -1000, -1000, -1000, 624, - -1000, 51296, -1000, 51296, -1000, 1730, -1000, 27716, -1000, -1000, - 1602, -1000, 2446, 2443, -1000, -1000, -1000, 198, 2437, 6633, - -1000, -1000, -1000, -1000, -1000, 3324, 2434, 2148, 51296, -1000, - 51296, 1235, 1235, 3626, 51296, 9275, -1000, -1000, 11913, 2893, - -1000, 11913, -1000, -1000, -1000, 2642, -1000, -1000, -1000, -1000, - -1000, 2892, 3322, -1000, -1000, -1000, -1000, -1000, -1000, 3605, - -1000, 1479, -1000, 11913, 12571, -1000, 846, 15871, -253, 333, - -1000, -1000, -1000, -234, 2432, -1000, -1000, 3529, 2422, 2309, - 51296, -1000, -1000, 1246, -1000, 1246, -1000, -232, 11913, -1000, - -1000, 1242, -1000, -1000, 1131, 714, -1000, 2641, 1938, -1000, - 2528, -1000, 2456, 2438, 95, -1000, 95, -1000, 230, 11913, - -1000, 2421, -1000, -1000, -1000, 2420, -1000, -1000, 2430, -1000, - 2640, -1000, 2415, -1000, -1000, 2409, -1000, -1000, 395, 869, - 51296, 2396, 2137, -1000, 556, -367, -1000, 2391, 2111, 2390, - 2111, 51296, 598, -1000, 2384, 2383, -1000, -1000, 5272, 3613, - 3615, 19168, 3613, -1000, -1000, 3515, 388, -1000, -1000, 2120, - 589, -1000, -1000, 2376, 627, -1000, 1235, -1000, 1898, 2043, - 2338, 34921, 27716, 28371, 2366, -1000, -1000, -1000, 36886, 1479, - 1479, 56558, -1000, 305, 56705, -1000, 2889, 1132, 1860, -1000, - 2135, -1000, 2127, -1000, 3577, 1332, 120, -1000, -1000, 1764, - -1000, 1132, 2604, 3528, -1000, 3954, 51296, 3683, 51296, 2888, - 1896, 14545, -1000, 808, 3303, -1000, -1000, 4143, -1000, -1000, - 2053, 14545, -1000, -1000, 2365, 28371, 916, 1894, 1891, 995, - 2887, -1000, 630, 3602, -1000, -1000, -1000, 1006, 2883, -1000, - 2024, 2023, -1000, 51296, -1000, 34921, 34921, 767, 767, 34921, - 34921, 2877, 793, -1000, -1000, 14545, -1000, -1000, 1863, -1000, - -1000, -1000, 1863, 1608, -1000, -1000, -1000, -1000, -1000, -1000, - 2291, -1000, -1000, 1221, -1000, 3503, -1000, -1000, 2406, 51296, - 2406, -1000, 36231, -1000, 3527, 3524, -1000, -1000, 2406, 1355, - 266, 2873, 2870, -1000, -338, 51296, 51296, -236, 2126, -1000, - 2362, 135, -1000, -1000, 1218, -234, 1212, -239, 18, 27716, - 1885, -1000, 2637, 347, -154, -1000, -1000, -1000, -1000, -1000, - 2634, -1000, 758, -1000, -1000, -1000, 1212, 2632, 2631, -1000, - -1000, -1000, -1000, 51296, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 2333, -308, 2361, -308, 2360, 597, 2111, -1000, -1000, - -151, -1000, -1000, 413, -1000, -1000, -1000, 611, 2299, -1000, - -1000, 385, -1000, -1000, -1000, 2148, 2356, -1000, -1000, 107, - -1000, 1881, 1595, -1000, -1000, -1000, -1000, -1000, -1000, 790, - -1000, 2772, 56656, -1000, 1262, -1000, 1131, 790, 33611, 671, - 1895, -1000, 2122, -1000, -1000, 3626, -1000, 649, -1000, 577, - -1000, 1589, -1000, 1582, 35576, 2117, 3081, -1000, 56607, 945, - -1000, -1000, 3725, -1000, -1000, -1000, -1000, -1000, -1000, 2355, - 2354, -1000, -1000, -1000, -1000, -1000, 2115, 2866, -61, 3431, - 2348, -1000, -1000, 2865, 1568, 1539, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1534, 1532, 34921, -1000, - -1000, 3725, 2113, 27716, 1863, -1000, -1000, 1511, 1488, -1000, - -1000, -1000, -1000, -1000, -314, 2857, 11913, 11913, -1000, -1000, - -1000, 2856, -1000, -1000, 3523, -236, -242, 2344, 116, 141, - -1000, 2342, -1000, -152, 3296, -158, -1000, -1000, 702, -227, - 93, 90, 67, -1000, -1000, -1000, 11913, -1000, -1000, -1000, - 106, -1000, 1880, -1000, -308, -1000, -308, 2111, 2339, 51296, - 629, -1000, -1000, -1000, -1000, 169, -1000, -1000, -1000, -1000, - -1000, -1000, 2338, 2337, -1000, 559, 3522, -1000, 56705, -1000, - 1863, -1000, 559, 1487, -1000, 1863, 1863, -1000, 497, -1000, - 1807, -1000, 2110, -1000, 3503, -1000, 488, -1000, 562, -1000, - -1000, -1000, 1483, -1000, -1000, -1000, 56607, 568, -1000, 770, - 2855, -1000, -1000, 2629, 11913, 2854, 1863, 2622, -136, 34921, - 3101, 3035, 2886, 2779, 1478, -1000, -1000, 27716, -1000, -1000, - 34266, -1000, 2853, 1460, 1450, 51296, 2309, -1000, -1000, 2334, - -1000, 866, 113, 141, -1000, 3516, 134, 3513, 3512, 1188, - 3295, -1000, -1000, 2001, -1000, 88, 76, 74, -1000, -1000, - -1000, -1000, -308, 2333, 2324, -1000, -1000, 2321, -308, 548, - -1000, 222, -1000, -1000, -1000, 1484, -1000, 3510, 576, -1000, - 27716, -1000, -1000, 33611, 1479, 1479, -1000, -1000, 2108, -1000, - -1000, -1000, -1000, 2105, -1000, -1000, -1000, 1447, -1000, 51296, - 1004, 8617, -1000, 2394, -1000, 51296, -1000, 3238, -1000, 231, - 1420, 1484, 767, 1484, 767, 1484, 767, 1484, 767, 242, - -1000, -1000, -1000, 1360, 11913, -1000, -1000, 1353, -1000, -1000, - -1000, 2731, 2103, 118, 124, 3509, -1000, 2309, 3505, 2309, - 2309, -1000, 103, 3612, 702, -1000, -1000, -1000, -1000, -1000, - -1000, -308, -1000, 2320, -1000, -1000, -1000, -1000, 1863, 1863, - 2318, 2316, 452, -1000, -1000, 1863, 1863, 1863, -1000, 32956, - 565, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 568, 56705, - -1000, 8617, 1302, -1000, 2406, -1000, 793, -1000, -1000, 3231, - 3212, 3581, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 2696, 2619, -1000, 51296, 3428, 27061, 127, -1000, - -1000, -1000, 2310, -1000, 2309, -1000, -1000, 1839, -155, -1000, - -1000, -281, 2101, 2100, -1000, -1000, 51296, 2079, 2076, 2073, - -1000, 51296, 566, -1000, 56705, 1299, -1000, 8617, -1000, -1000, - 3596, -1000, 3594, 1013, 1013, 1484, 1484, 1484, 1484, 11913, - -1000, -1000, -1000, 51296, -1000, 1291, -1000, -1000, -1000, 1575, - -1000, -1000, -1000, -1000, 2308, -159, -1000, -1000, 2306, -1000, - -1000, -1000, -1000, -1000, -1000, 1243, 2604, -1000, -1000, -1000, - -1000, -1000, 2119, 640, -1000, 2521, 1142, -1000, 1816, -1000, - 32301, 51296, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 51296, 7959, -1000, 1570, -1000, -1000, 2406, 51296, -1000, + -1000, -1000, -1000, -1000, -1000, 3623, -1000, 3550, 1726, 2738, + 2735, 1725, 2734, 2728, -1000, 12124, 2727, 4039, 1020, 2501, + 1020, -1000, -1000, -1000, -1000, 51627, -1000, -1000, -1000, 29946, + 860, -367, -1000, 387, -1000, 442, 2493, -1000, -1000, 51627, + 2210, 531, 2210, 581, 51627, -321, -1000, -152, 1211, 5725, + 929, 2770, 2725, 1235, -1000, -1000, -1000, -1000, 2770, -1000, + 2491, 196, -1000, -1000, -1000, -1000, 2251, -1000, -1000, 2203, + 1479, 213, -1000, -1000, -1000, -1000, -1000, -1000, 2262, 51627, + 39144, 2361, 1888, -368, -1000, 3056, -1000, 1805, 1805, 1805, + 860, 51627, 1708, -1000, 1805, 1805, 2719, -1000, -1000, 860, + 2712, 2711, 3610, 778, 1915, 1895, -1000, 2245, 29289, 38487, + 37830, 1340, -1000, 1501, -1000, -1000, -1000, -1000, -1000, -1000, + 3575, 778, -1000, 499, 2243, 14764, 3043, 14764, 3041, 508, + 3039, 1705, -1000, 51627, -1000, -1000, 51627, 4239, 3033, -1000, + 3024, 3266, 483, 3022, 3020, 51627, 2561, -1000, 3372, 51627, + 716, 3374, -1000, 346, -1000, -1000, -1000, -1000, -1000, -1000, + 579, -1000, 51627, -1000, 51627, -1000, 1547, -1000, 27975, -1000, + -1000, 1697, -1000, 2490, 2487, -1000, -1000, -1000, 196, 2485, + 6828, -1000, -1000, -1000, -1000, -1000, 3355, 2483, 2262, 51627, + -1000, 51627, 1204, 1204, 3623, 51627, 9478, -1000, -1000, 12124, + 3014, -1000, 12124, -1000, -1000, -1000, 2708, -1000, -1000, -1000, + -1000, -1000, 2981, 3370, -1000, -1000, -1000, -1000, -1000, -1000, + 3602, -1000, 1694, -1000, 12124, 12784, -1000, 802, 16094, -261, + 284, -1000, -1000, -1000, -243, 2481, -1000, -1000, 3548, 2480, + 2375, 51627, -1000, -1000, 1233, -1000, 1233, -1000, -241, 12124, + -1000, -1000, 1229, -1000, -1000, 1130, 647, -1000, 2707, 1881, + -1000, 2438, -1000, 2432, 2416, 93, -1000, 93, -1000, 224, + 12124, -1000, 2478, -1000, -1000, -1000, 2470, -1000, -1000, 2391, + -1000, 2705, -1000, 2469, -1000, -1000, 2468, -1000, -1000, 331, + 860, 51627, 2466, 2241, -1000, 453, -371, -1000, 2464, 2210, + 2458, 2210, 51627, 527, -1000, 2450, 2447, -1000, -1000, 5725, + 3609, 3610, 19401, 3609, -1000, -1000, 3535, 325, -1000, -1000, + 2184, 602, -1000, -1000, 2446, 535, -1000, 1204, -1000, 1887, + 2155, 2387, 35202, 27975, 28632, 2443, -1000, -1000, -1000, 37173, + 1694, 1694, 56917, -1000, 287, 56967, -1000, 2973, 1145, 1859, + -1000, 2230, -1000, 2228, -1000, 3575, 1340, 119, -1000, -1000, + 1617, -1000, 1145, 2582, 3547, -1000, 3931, 51627, 3684, 51627, + 2971, 1879, 14764, -1000, 755, 3332, -1000, -1000, 4239, -1000, + -1000, 2097, 14764, -1000, -1000, 2442, 28632, 904, 1878, 1874, + 897, 2969, -1000, 586, 3599, -1000, -1000, -1000, 1006, 2968, + -1000, 2053, 2051, -1000, 51627, -1000, 35202, 35202, 831, 831, + 35202, 35202, 2962, 740, -1000, -1000, 14764, -1000, -1000, -1000, + 1856, 1477, -1000, -1000, -1000, 1805, 1532, -1000, -1000, -1000, + -1000, -1000, -1000, 2361, -1000, -1000, 1203, -1000, 3524, -1000, + -1000, 2200, 51627, 2200, -1000, 36516, -1000, 3545, 3544, -1000, + -1000, 2200, 1411, 252, 2960, 2959, -1000, -362, 51627, 51627, + -246, 2225, -1000, 2436, 124, -1000, -1000, 1201, -243, 1200, + -248, 40, 27975, 1854, -1000, 2704, 344, -159, -1000, -1000, + -1000, -1000, -1000, 2682, -1000, 750, -1000, -1000, -1000, 1200, + 2679, 2677, -1000, -1000, -1000, -1000, 51627, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2382, -321, 2429, -321, 2428, 525, + 2210, -1000, -1000, -155, -1000, -1000, 406, -1000, -1000, -1000, + 582, 2369, -1000, -1000, 318, -1000, -1000, -1000, 2262, 2426, + -1000, -1000, 107, -1000, 1837, 1696, -1000, -1000, -1000, -1000, + -1000, -1000, 754, -1000, 2770, 4966, -1000, 1293, -1000, 1130, + 754, 33888, 614, 1958, -1000, 2224, -1000, -1000, 3623, -1000, + 590, -1000, 506, -1000, 1693, -1000, 1674, 35859, 2223, 3382, + -1000, 4451, 888, -1000, -1000, 3717, -1000, -1000, -1000, -1000, + -1000, -1000, 2425, 2424, -1000, -1000, -1000, -1000, -1000, 2217, + 2957, -71, 3467, 2422, -1000, -1000, 2954, 1638, 1618, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1612, + 1598, 35202, -1000, -1000, 3717, 1477, 2144, -1000, 1805, 1805, + 2419, 2418, 374, -1000, -1000, 1805, 1805, 1805, -1000, -1000, + 1832, 1805, 1805, 27975, 1805, -1000, -1000, 1595, 1589, -1000, + -1000, -1000, -1000, -1000, -337, 2952, 12124, 12124, -1000, -1000, + -1000, 2946, -1000, -1000, 3543, -246, -250, 2406, 116, 168, + -1000, 2389, -1000, -157, 3324, -163, -1000, -1000, 694, -235, + 89, 87, 73, -1000, -1000, -1000, 12124, -1000, -1000, -1000, + 104, -1000, 1821, -1000, -321, -1000, -321, 2210, 2388, 51627, + 584, -1000, -1000, -1000, -1000, 170, -1000, -1000, -1000, -1000, + -1000, -1000, 2387, 2384, -1000, 492, 3541, -1000, 56967, -1000, + 1805, -1000, 492, 1553, -1000, 1805, 1805, -1000, 412, -1000, + 1833, -1000, 2209, -1000, 3524, -1000, 405, -1000, 495, -1000, + -1000, -1000, 1534, -1000, -1000, -1000, 4451, 500, -1000, 734, + 2944, -1000, -1000, 2620, 12124, 2940, 1805, 2566, -145, 35202, + 3259, 3067, 2984, 2440, 1519, -1000, -1000, 2208, 2205, -1000, + -1000, 51627, 2197, 2190, 2177, 2099, 2174, 2172, -1000, 27975, + -1000, -1000, 34545, -1000, 2937, 1511, 1487, 51627, 2375, -1000, + -1000, 2383, -1000, 836, 142, 168, -1000, 3540, 106, 3538, + 3536, 1186, 3322, -1000, -1000, 2029, -1000, 126, 103, 84, + -1000, -1000, -1000, -1000, -321, 2382, 2381, -1000, -1000, 2380, + -321, 557, -1000, 253, -1000, -1000, -1000, 1477, -1000, 3534, + 516, -1000, 27975, -1000, -1000, 33888, 1694, 1694, -1000, -1000, + 2132, -1000, -1000, -1000, -1000, 2122, -1000, -1000, -1000, 1480, + -1000, 51627, 950, 8818, -1000, 2305, -1000, 51627, -1000, 3276, + -1000, 281, 1466, 1477, 831, 1477, 831, 1477, 831, 1477, + 831, 233, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1456, 12124, -1000, -1000, 1452, + -1000, -1000, -1000, 2936, 2113, 132, 94, 3533, -1000, 2375, + 3529, 2375, 2375, -1000, 96, 3606, 694, -1000, -1000, -1000, + -1000, -1000, -1000, -321, -1000, 2379, -1000, -1000, -1000, 33231, + 504, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 500, 56967, + -1000, 8818, 1418, -1000, 2200, -1000, 740, -1000, -1000, 3274, + 3273, 3583, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 2750, 2396, -1000, 51627, 3447, 27318, 139, -1000, + -1000, -1000, 2376, -1000, 2375, -1000, -1000, 1772, -160, -1000, + -1000, -289, -1000, 51627, 499, -1000, 56967, 1372, -1000, 8818, + -1000, -1000, 3596, -1000, 3594, 993, 993, 1477, 1477, 1477, + 1477, 12124, -1000, -1000, -1000, 51627, -1000, 1277, -1000, -1000, + -1000, 1490, -1000, -1000, -1000, -1000, 2374, -164, -1000, -1000, + 2312, 1239, 2582, -1000, -1000, -1000, -1000, -1000, 2186, 598, + -1000, 2288, 1174, -1000, 1744, -1000, 32574, 51627, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 51627, 8158, -1000, + 1212, -1000, -1000, 2200, 51627, -1000, } var yyPgo = [...]int{ - 0, 189, 3639, 252, 191, 4299, 85, 265, 280, 270, - 261, 259, 4296, 4295, 4294, 3366, 3362, 4293, 4292, 4291, - 4290, 4285, 4284, 4283, 4277, 4271, 4270, 4269, 4268, 4267, - 4266, 4265, 4264, 4262, 4260, 4259, 4256, 4255, 4254, 4253, - 4251, 4250, 4249, 4248, 4245, 4244, 4243, 254, 4242, 4237, - 4233, 4230, 4227, 4221, 4220, 4219, 4218, 4217, 4216, 4215, - 4210, 4209, 4208, 4207, 4206, 4205, 4204, 4203, 4201, 4200, - 4198, 4197, 4196, 4193, 4190, 4189, 4188, 4185, 4184, 4183, - 4182, 4180, 4177, 4173, 4168, 264, 4167, 3353, 4163, 4161, - 4160, 4158, 4157, 4155, 4154, 4153, 4151, 4150, 4149, 4146, - 344, 4145, 4144, 4143, 4142, 4141, 4138, 4137, 4132, 4131, - 4129, 4124, 4118, 4117, 308, 4116, 4115, 4114, 4113, 225, - 4112, 288, 4095, 187, 170, 4094, 4093, 4092, 4091, 4089, - 4084, 4083, 4082, 4079, 4078, 4077, 4076, 4075, 4072, 250, - 163, 70, 4070, 50, 4069, 275, 213, 4067, 235, 4066, - 160, 4064, 157, 4062, 4060, 4058, 4057, 4055, 4054, 4053, - 4052, 4051, 4050, 4049, 4046, 4045, 4042, 4041, 4040, 4039, - 4038, 4037, 4035, 4034, 4032, 4031, 4030, 54, 4028, 272, - 4027, 78, 4025, 194, 4024, 71, 4023, 4022, 88, 4021, - 4019, 63, 164, 269, 92, 268, 4018, 203, 4017, 4016, - 256, 185, 4014, 4010, 301, 4009, 171, 239, 168, 102, - 131, 4008, 149, 4006, 281, 51, 37, 251, 205, 154, - 4005, 4000, 62, 178, 138, 3998, 227, 103, 3995, 3994, - 123, 3993, 3992, 117, 3990, 255, 197, 3989, 118, 3988, - 3987, 3986, 24, 3985, 3984, 210, 211, 3982, 3980, 106, - 3978, 3977, 75, 134, 3976, 80, 137, 179, 132, 3975, - 2709, 133, 94, 3974, 142, 110, 3973, 99, 3972, 3971, - 3968, 3967, 196, 3966, 3965, 146, 59, 3964, 3963, 3961, - 68, 3955, 82, 3954, 43, 3953, 56, 3950, 3949, 3947, - 3946, 3945, 3944, 3943, 3942, 3941, 3938, 3937, 3935, 52, - 3934, 3933, 3932, 3930, 7, 14, 17, 3929, 28, 3928, - 182, 3927, 3926, 183, 3925, 206, 3924, 3922, 100, 91, - 3921, 96, 172, 3920, 9, 29, 76, 3919, 3917, 3916, - 144, 3915, 3913, 3912, 283, 3911, 3910, 3909, 169, 3907, - 3906, 3905, 2950, 3904, 3903, 3902, 3900, 3898, 3897, 109, - 3896, 1, 232, 40, 3895, 143, 148, 3894, 38, 31, - 3893, 46, 125, 217, 145, 108, 3892, 3891, 3890, 285, - 215, 107, 175, 0, 101, 238, 167, 3889, 3888, 3887, - 263, 3885, 245, 218, 242, 809, 271, 234, 3883, 3881, - 58, 3866, 176, 42, 53, 140, 105, 23, 246, 3865, - 1857, 8, 198, 3864, 221, 3862, 11, 18, 174, 159, - 3861, 3860, 33, 273, 3859, 3857, 3856, 139, 3854, 3853, - 190, 69, 3852, 3851, 3850, 3849, 3848, 39, 3847, 201, - 16, 3846, 114, 3845, 274, 135, 214, 147, 199, 195, - 161, 241, 248, 86, 83, 3843, 1904, 158, 113, 15, - 3842, 236, 3841, 193, 126, 3839, 87, 3838, 249, 276, - 222, 3825, 200, 10, 48, 36, 30, 44, 12, 292, - 219, 3823, 3822, 21, 49, 3821, 55, 3820, 20, 3818, - 3816, 45, 3813, 65, 5, 3812, 3811, 19, 22, 3810, - 35, 220, 184, 130, 97, 60, 3809, 3808, 155, 181, - 3805, 151, 180, 166, 3804, 79, 3802, 3800, 3799, 3798, - 3184, 258, 3797, 3796, 3795, 3794, 3793, 3792, 3791, 3789, - 229, 3786, 116, 41, 3784, 3783, 3782, 3781, 84, 152, - 3780, 3779, 3778, 3777, 32, 150, 3776, 13, 3774, 27, - 25, 34, 3773, 115, 3770, 2, 204, 3768, 3765, 3, - 3764, 3761, 4, 3760, 3747, 128, 3741, 104, 26, 186, - 121, 3740, 3735, 81, 224, 153, 3733, 3732, 112, 253, - 209, 3730, 111, 257, 262, 3729, 212, 3727, 3726, 3725, - 3724, 3722, 1233, 3721, 3720, 267, 61, 95, 3717, 233, - 124, 3714, 3713, 90, 177, 127, 122, 57, 89, 3711, - 120, 223, 3708, 208, 3706, 260, 3705, 3703, 119, 3702, - 3701, 3700, 3699, 216, 3696, 3694, 207, 243, 3689, 3685, - 277, 3681, 3671, 3669, 3668, 3665, 3664, 3661, 3651, 3648, - 3643, 247, 266, 3641, + 0, 201, 3636, 249, 198, 4308, 85, 252, 323, 304, + 251, 248, 4307, 4306, 4305, 3404, 3399, 4304, 4303, 4302, + 4300, 4299, 4298, 4296, 4295, 4294, 4293, 4291, 4290, 4289, + 4287, 4286, 4285, 4284, 4282, 4281, 4280, 4279, 4278, 4277, + 4275, 4274, 4272, 4270, 4269, 4268, 4267, 247, 4266, 4265, + 4264, 4259, 4258, 4257, 4251, 4244, 4242, 4241, 4238, 4237, + 4236, 4235, 4233, 4232, 4229, 4226, 4225, 4224, 4223, 4221, + 4220, 4219, 4217, 4216, 4215, 4211, 4207, 4204, 4203, 4202, + 4201, 4199, 4198, 4196, 4195, 284, 4193, 3395, 4192, 4188, + 4184, 4183, 4182, 4181, 4180, 4179, 4177, 4176, 4175, 4173, + 368, 4172, 4171, 4170, 4169, 4168, 4167, 4166, 4160, 4159, + 4154, 4152, 4148, 4147, 348, 4146, 4145, 4144, 4143, 222, + 4140, 277, 4138, 190, 149, 4137, 4136, 4135, 4134, 4133, + 4132, 4131, 4129, 4128, 4126, 4125, 4124, 4123, 4119, 244, + 155, 76, 4118, 52, 4117, 242, 215, 4114, 223, 4099, + 160, 4093, 162, 4092, 4091, 4090, 4089, 4088, 4087, 4070, + 4069, 4068, 4067, 4064, 4063, 4060, 4059, 4056, 4055, 4054, + 4051, 4046, 4045, 4044, 4043, 4041, 4040, 58, 4039, 260, + 4038, 75, 4037, 179, 4035, 71, 4034, 4032, 83, 4031, + 4030, 86, 138, 259, 2120, 256, 4027, 192, 4026, 4025, + 257, 207, 4024, 4023, 325, 4022, 170, 227, 147, 101, + 137, 4021, 144, 4019, 263, 45, 46, 243, 195, 151, + 4017, 4016, 57, 166, 132, 4015, 219, 103, 4014, 4013, + 118, 4012, 4011, 108, 4010, 240, 184, 4009, 115, 4007, + 4006, 4005, 27, 4004, 4003, 211, 193, 4001, 4000, 105, + 3999, 3998, 65, 134, 3997, 80, 131, 177, 126, 3996, + 3008, 130, 99, 3995, 163, 110, 3994, 82, 3989, 3987, + 3985, 3984, 186, 3982, 3975, 146, 69, 3974, 3973, 3971, + 70, 3970, 84, 3969, 28, 3968, 60, 3967, 3966, 3962, + 3961, 3959, 3958, 3957, 3955, 3954, 3952, 3951, 3950, 51, + 3949, 3948, 3947, 3946, 7, 14, 17, 3945, 25, 3944, + 178, 3943, 3942, 175, 3940, 200, 3939, 3938, 100, 93, + 3937, 95, 3936, 174, 3935, 9, 30, 78, 3932, 3931, + 3929, 142, 3927, 3926, 3925, 272, 3923, 3921, 3920, 169, + 3919, 3916, 3915, 698, 3914, 3913, 3912, 3911, 3908, 3906, + 102, 3905, 1, 221, 41, 3904, 139, 148, 3902, 40, + 37, 3901, 48, 120, 210, 143, 107, 3897, 3893, 3892, + 553, 204, 106, 38, 0, 109, 225, 161, 3883, 3881, + 3879, 258, 3878, 238, 205, 236, 264, 267, 197, 3877, + 3876, 63, 3875, 171, 35, 59, 145, 96, 20, 254, + 3874, 1596, 10, 183, 3873, 209, 3857, 8, 18, 133, + 153, 3856, 3854, 36, 265, 3850, 3849, 3848, 135, 3845, + 3843, 289, 79, 3842, 3840, 3839, 3825, 3820, 33, 3819, + 187, 15, 3818, 114, 3817, 261, 128, 280, 158, 188, + 182, 168, 229, 232, 92, 87, 3816, 1893, 164, 113, + 16, 3815, 224, 3813, 206, 119, 3809, 94, 3807, 250, + 268, 216, 3804, 185, 11, 49, 42, 31, 50, 12, + 293, 214, 3803, 3802, 23, 53, 3801, 55, 3800, 21, + 3799, 3798, 43, 3795, 61, 5, 3794, 3788, 19, 22, + 3779, 39, 218, 180, 136, 97, 68, 3777, 3776, 140, + 167, 3774, 157, 181, 165, 3772, 81, 3770, 3768, 3767, + 3766, 3158, 255, 3763, 3761, 3760, 3759, 3758, 3757, 3756, + 3754, 220, 3752, 116, 44, 3748, 3746, 3744, 3740, 90, + 154, 3739, 3738, 3736, 3735, 32, 150, 3734, 13, 3733, + 26, 24, 34, 3732, 111, 3731, 3, 189, 3729, 3728, + 4, 3727, 3726, 2, 3725, 3719, 121, 3718, 104, 29, + 176, 122, 3717, 3715, 88, 217, 152, 3714, 3713, 112, + 245, 208, 3712, 56, 241, 266, 3706, 213, 3705, 3704, + 3703, 3702, 3700, 1227, 3699, 3697, 239, 62, 98, 3696, + 235, 123, 3694, 3693, 91, 172, 125, 127, 54, 89, + 3692, 124, 212, 3688, 203, 3687, 269, 3686, 3685, 117, + 3684, 3681, 3678, 3677, 194, 3676, 3675, 196, 233, 3674, + 3673, 270, 3671, 3667, 3666, 3665, 3663, 3648, 3647, 3644, + 3643, 3642, 234, 341, 3638, } -//line mysql_sql.y:13261 +//line mysql_sql.y:13339 type yySymType struct { union interface{} id int @@ -9091,242 +9127,243 @@ func (st *yySymType) zeroFillOptUnion() bool { } var yyR1 = [...]int{ - 0, 626, 629, 629, 5, 5, 2, 6, 6, 3, + 0, 627, 630, 630, 5, 5, 2, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 129, 129, 364, 364, 365, 365, 131, 360, 360, 359, - 359, 132, 133, 134, 605, 605, 135, 136, 168, 604, - 604, 604, 604, 604, 170, 170, 170, 170, 170, 170, - 170, 481, 130, 130, 130, 130, 228, 228, 229, 229, + 129, 129, 365, 365, 366, 366, 131, 361, 361, 360, + 360, 132, 133, 134, 606, 606, 135, 136, 168, 605, + 605, 605, 605, 605, 170, 170, 170, 170, 170, 170, + 170, 482, 130, 130, 130, 130, 228, 228, 229, 229, 145, 145, 146, 146, 174, 174, 174, 174, 174, 128, - 611, 611, 611, 612, 612, 125, 157, 156, 159, 159, + 612, 612, 612, 613, 613, 125, 157, 156, 159, 159, 158, 158, 155, 155, 151, 154, 154, 153, 153, 152, - 147, 149, 149, 148, 150, 150, 126, 114, 127, 554, - 554, 553, 553, 552, 552, 506, 506, 507, 507, 351, - 351, 351, 551, 551, 551, 550, 550, 549, 549, 548, - 548, 546, 546, 547, 545, 544, 544, 544, 542, 542, - 542, 538, 538, 540, 539, 539, 541, 533, 533, 536, - 536, 534, 534, 534, 534, 537, 532, 532, 532, 531, - 531, 113, 113, 113, 448, 448, 112, 112, 462, 462, - 462, 462, 462, 460, 460, 460, 460, 460, 460, 459, - 459, 458, 458, 463, 463, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 101, 101, 101, 101, - 101, 101, 101, 108, 106, 106, 106, 107, 617, 617, - 616, 616, 618, 618, 618, 618, 619, 619, 104, 104, - 104, 105, 457, 457, 457, 102, 103, 103, 447, 447, - 452, 452, 451, 451, 451, 451, 451, 451, 451, 451, - 451, 451, 451, 451, 451, 456, 456, 456, 454, 454, - 453, 453, 455, 455, 92, 92, 92, 92, 92, 92, - 96, 97, 98, 98, 98, 98, 95, 94, 446, 446, - 446, 446, 446, 446, 446, 446, 446, 93, 93, 93, + 147, 149, 149, 148, 150, 150, 126, 114, 127, 555, + 555, 554, 554, 553, 553, 507, 507, 508, 508, 352, + 352, 352, 552, 552, 552, 551, 551, 550, 550, 549, + 549, 547, 547, 548, 546, 545, 545, 545, 543, 543, + 543, 539, 539, 541, 540, 540, 542, 534, 534, 537, + 537, 535, 535, 535, 535, 538, 533, 533, 533, 532, + 532, 113, 113, 113, 449, 449, 112, 112, 463, 463, + 463, 463, 463, 461, 461, 461, 461, 461, 461, 460, + 460, 459, 459, 464, 464, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 101, 101, 101, 101, + 101, 101, 101, 108, 106, 106, 106, 107, 618, 618, + 617, 617, 619, 619, 619, 619, 620, 620, 104, 104, + 104, 105, 458, 458, 458, 102, 103, 103, 448, 448, + 453, 453, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 457, 457, 457, 455, 455, + 454, 454, 456, 456, 92, 92, 92, 92, 92, 92, + 96, 97, 98, 98, 98, 98, 95, 94, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 93, 93, 93, 93, 93, 93, 86, 86, 86, 86, 86, 85, 85, - 87, 87, 444, 444, 443, 109, 109, 110, 614, 614, - 613, 615, 615, 615, 615, 111, 117, 117, 117, 117, + 87, 87, 445, 445, 444, 109, 109, 110, 615, 615, + 614, 616, 616, 616, 616, 111, 117, 117, 117, 117, 117, 117, 117, 117, 116, 116, 116, 119, 119, 118, 120, 100, 100, 100, 100, 100, 100, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 579, 579, 579, 579, 579, 580, 580, - 378, 379, 630, 381, 377, 377, 377, 575, 575, 576, - 577, 578, 578, 578, 578, 115, 14, 234, 234, 480, - 480, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 99, 99, 99, 580, 580, 580, 580, 580, 581, 581, + 379, 380, 631, 382, 378, 378, 378, 576, 576, 577, + 578, 579, 579, 579, 579, 115, 14, 234, 234, 481, + 481, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 13, 84, 89, 89, 91, 314, 314, 315, - 309, 309, 316, 316, 173, 90, 317, 317, 317, 322, - 322, 323, 323, 310, 310, 310, 310, 310, 310, 310, + 309, 309, 316, 316, 173, 90, 317, 317, 317, 323, + 323, 324, 324, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 294, 294, 294, 289, 289, 289, 289, 290, 290, 291, 291, 292, 292, 292, 292, - 293, 293, 370, 370, 318, 318, 318, 320, 320, 319, + 293, 293, 371, 371, 318, 318, 318, 320, 320, 319, 313, 311, 311, 311, 311, 311, 311, 311, 312, 312, - 312, 312, 312, 321, 321, 82, 88, 88, 88, 88, - 592, 592, 83, 83, 83, 603, 603, 510, 510, 392, - 392, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 515, 516, 388, + 312, 312, 312, 312, 321, 321, 322, 322, 82, 88, + 88, 88, 88, 593, 593, 83, 83, 83, 604, 604, + 511, 511, 393, 393, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 516, 517, 389, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 79, 80, - 81, 54, 57, 58, 172, 175, 175, 175, 175, 53, - 53, 53, 433, 433, 52, 631, 631, 363, 363, 67, - 66, 56, 68, 69, 70, 71, 72, 73, 51, 65, - 65, 65, 65, 65, 65, 65, 65, 76, 527, 527, - 633, 633, 633, 74, 75, 509, 509, 509, 64, 63, - 62, 61, 60, 60, 50, 50, 49, 49, 55, 163, - 59, 164, 164, 385, 385, 385, 387, 387, 383, 632, - 632, 476, 476, 386, 386, 48, 48, 48, 48, 77, - 384, 384, 362, 382, 382, 382, 12, 12, 10, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 26, 27, 29, 441, - 441, 438, 28, 20, 19, 19, 23, 22, 18, 18, - 21, 24, 25, 25, 9, 9, 9, 9, 15, 15, - 16, 201, 201, 261, 261, 586, 586, 582, 582, 583, - 583, 583, 584, 584, 585, 585, 121, 521, 521, 521, - 521, 521, 521, 8, 8, 227, 227, 520, 520, 520, - 520, 520, 520, 445, 445, 445, 564, 564, 564, 565, - 226, 226, 219, 219, 522, 522, 409, 566, 566, 530, - 530, 529, 529, 528, 528, 224, 224, 225, 225, 204, - 204, 140, 140, 535, 535, 535, 535, 543, 543, 505, - 505, 299, 299, 353, 353, 354, 354, 191, 191, 192, - 192, 192, 192, 192, 192, 620, 620, 621, 622, 623, - 623, 624, 624, 624, 625, 625, 625, 625, 625, 572, - 572, 574, 574, 573, 223, 223, 216, 216, 217, 217, - 217, 218, 218, 215, 215, 214, 213, 213, 212, 210, - 210, 210, 211, 211, 211, 233, 233, 194, 194, 194, - 193, 193, 193, 193, 193, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 195, 198, 198, - 199, 199, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 331, 331, 332, 332, 332, 332, 332, 138, - 138, 514, 514, 330, 330, 196, 196, 197, 197, 197, - 197, 329, 329, 328, 209, 209, 208, 207, 207, 207, - 202, 202, 202, 202, 202, 203, 340, 340, 339, 339, - 338, 338, 338, 338, 341, 124, 137, 137, 139, 232, - 232, 221, 220, 337, 336, 336, 336, 336, 231, 231, - 230, 230, 222, 222, 206, 206, 206, 206, 335, 205, - 333, 610, 610, 609, 609, 608, 606, 606, 606, 607, - 607, 607, 607, 556, 556, 556, 556, 556, 371, 371, - 371, 376, 376, 374, 374, 374, 374, 374, 380, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 39, 244, 245, 40, 246, 246, 247, 247, 248, - 248, 249, 250, 251, 251, 251, 251, 425, 425, 38, - 235, 235, 236, 236, 237, 237, 238, 239, 239, 239, - 243, 240, 241, 241, 628, 628, 627, 37, 37, 30, - 178, 178, 179, 179, 179, 181, 181, 295, 295, 295, - 180, 180, 182, 182, 182, 587, 589, 589, 591, 590, - 590, 590, 593, 593, 593, 593, 593, 594, 594, 594, - 594, 595, 595, 31, 160, 160, 185, 185, 165, 598, - 598, 598, 597, 597, 599, 599, 600, 600, 357, 357, - 358, 358, 176, 177, 177, 167, 162, 184, 184, 184, - 184, 184, 186, 186, 263, 263, 161, 166, 169, 171, - 588, 596, 596, 596, 442, 442, 439, 440, 440, 437, - 436, 436, 436, 602, 602, 601, 601, 601, 372, 372, - 32, 432, 432, 434, 435, 435, 435, 426, 426, 426, - 426, 36, 430, 430, 431, 431, 431, 431, 431, 431, - 431, 431, 431, 431, 431, 427, 427, 429, 429, 424, - 424, 424, 424, 424, 424, 424, 424, 35, 35, 183, - 183, 423, 423, 420, 420, 242, 242, 418, 418, 419, - 419, 417, 417, 417, 421, 421, 43, 78, 44, 45, - 46, 42, 422, 422, 187, 187, 187, 187, 187, 187, - 190, 190, 190, 190, 190, 189, 189, 189, 189, 188, - 188, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 142, 141, 141, 141, 141, 141, 144, 144, - 356, 356, 355, 355, 143, 296, 296, 41, 274, 274, - 497, 497, 492, 492, 492, 492, 492, 512, 512, 512, - 493, 493, 493, 494, 494, 494, 496, 496, 496, 495, - 495, 495, 495, 495, 511, 511, 513, 513, 513, 464, - 464, 465, 465, 465, 468, 468, 484, 484, 485, 485, - 483, 483, 490, 490, 489, 489, 488, 488, 487, 487, - 486, 486, 486, 486, 479, 479, 478, 478, 466, 466, - 466, 466, 466, 467, 467, 467, 477, 477, 482, 482, - 327, 327, 326, 326, 282, 282, 283, 283, 325, 325, - 280, 280, 281, 281, 281, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 562, 562, 563, 285, 285, 297, 297, 297, 297, 297, - 297, 284, 284, 286, 286, 262, 262, 260, 260, 252, - 252, 252, 252, 252, 252, 253, 253, 254, 254, 255, - 255, 255, 259, 259, 258, 258, 258, 258, 256, 256, - 257, 257, 257, 257, 257, 257, 450, 450, 559, 559, - 560, 560, 555, 555, 555, 558, 558, 558, 558, 558, - 558, 558, 558, 561, 561, 561, 557, 557, 264, 350, - 350, 350, 373, 373, 373, 373, 375, 349, 349, 349, - 279, 279, 278, 278, 276, 276, 276, 276, 276, 276, + 47, 79, 80, 81, 54, 57, 58, 172, 175, 175, + 175, 175, 53, 53, 53, 434, 434, 52, 632, 632, + 364, 364, 67, 66, 56, 68, 69, 70, 71, 72, + 73, 51, 65, 65, 65, 65, 65, 65, 65, 65, + 76, 528, 528, 634, 634, 634, 74, 75, 510, 510, + 510, 64, 63, 62, 61, 60, 60, 50, 50, 49, + 49, 55, 163, 59, 164, 164, 386, 386, 386, 388, + 388, 384, 633, 633, 477, 477, 387, 387, 48, 48, + 48, 48, 77, 385, 385, 363, 383, 383, 383, 12, + 12, 10, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 26, + 27, 29, 442, 442, 439, 28, 20, 19, 19, 23, + 22, 18, 18, 21, 24, 25, 25, 9, 9, 9, + 9, 15, 15, 16, 201, 201, 261, 261, 587, 587, + 583, 583, 584, 584, 584, 585, 585, 586, 586, 121, + 522, 522, 522, 522, 522, 522, 8, 8, 227, 227, + 521, 521, 521, 521, 521, 521, 446, 446, 446, 565, + 565, 565, 566, 226, 226, 219, 219, 523, 523, 410, + 567, 567, 531, 531, 530, 530, 529, 529, 224, 224, + 225, 225, 204, 204, 140, 140, 536, 536, 536, 536, + 544, 544, 506, 506, 299, 299, 354, 354, 355, 355, + 191, 191, 192, 192, 192, 192, 192, 192, 621, 621, + 622, 623, 624, 624, 625, 625, 625, 626, 626, 626, + 626, 626, 573, 573, 575, 575, 574, 223, 223, 216, + 216, 217, 217, 217, 218, 218, 215, 215, 214, 213, + 213, 212, 210, 210, 210, 211, 211, 211, 233, 233, + 194, 194, 194, 193, 193, 193, 193, 193, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 195, 198, 198, 199, 199, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 332, 332, 333, 333, 333, + 333, 333, 138, 138, 515, 515, 331, 331, 196, 196, + 197, 197, 197, 197, 330, 330, 329, 209, 209, 208, + 207, 207, 207, 202, 202, 202, 202, 202, 203, 341, + 341, 340, 340, 339, 339, 339, 339, 342, 124, 137, + 137, 139, 232, 232, 221, 220, 338, 337, 337, 337, + 337, 231, 231, 230, 230, 222, 222, 206, 206, 206, + 206, 336, 205, 334, 611, 611, 610, 610, 609, 607, + 607, 607, 608, 608, 608, 608, 557, 557, 557, 557, + 557, 372, 372, 372, 377, 377, 375, 375, 375, 375, + 375, 381, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 39, 244, 245, 40, 246, 246, + 247, 247, 248, 248, 249, 250, 251, 251, 251, 251, + 426, 426, 38, 235, 235, 236, 236, 237, 237, 238, + 239, 239, 239, 243, 240, 241, 241, 629, 629, 628, + 37, 37, 30, 178, 178, 179, 179, 179, 181, 181, + 295, 295, 295, 180, 180, 182, 182, 182, 588, 590, + 590, 592, 591, 591, 591, 594, 594, 594, 594, 594, + 595, 595, 595, 595, 596, 596, 31, 160, 160, 185, + 185, 165, 599, 599, 599, 598, 598, 600, 600, 601, + 601, 358, 358, 359, 359, 176, 177, 177, 167, 162, + 184, 184, 184, 184, 184, 186, 186, 263, 263, 161, + 166, 169, 171, 589, 597, 597, 597, 443, 443, 440, + 441, 441, 438, 437, 437, 437, 603, 603, 602, 602, + 602, 373, 373, 32, 433, 433, 435, 436, 436, 436, + 427, 427, 427, 427, 36, 431, 431, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, + 432, 432, 432, 428, 428, 430, 430, 425, 425, 425, + 425, 425, 425, 425, 425, 35, 35, 183, 183, 424, + 424, 421, 421, 242, 242, 419, 419, 420, 420, 418, + 418, 418, 422, 422, 43, 78, 44, 45, 46, 42, + 423, 423, 187, 187, 187, 187, 187, 187, 190, 190, + 190, 190, 190, 189, 189, 189, 189, 188, 188, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 142, 141, 141, 141, 141, 141, 144, 144, 357, 357, + 356, 356, 143, 296, 296, 41, 274, 274, 498, 498, + 493, 493, 493, 493, 493, 513, 513, 513, 494, 494, + 494, 495, 495, 495, 497, 497, 497, 496, 496, 496, + 496, 496, 512, 512, 514, 514, 514, 465, 465, 466, + 466, 466, 469, 469, 485, 485, 486, 486, 484, 484, + 491, 491, 490, 490, 489, 489, 488, 488, 487, 487, + 487, 487, 480, 480, 479, 479, 467, 467, 467, 467, + 467, 468, 468, 468, 478, 478, 483, 483, 328, 328, + 327, 327, 282, 282, 283, 283, 326, 326, 280, 280, + 281, 281, 281, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 563, 563, + 564, 285, 285, 297, 297, 297, 297, 297, 297, 284, + 284, 286, 286, 262, 262, 260, 260, 252, 252, 252, + 252, 252, 252, 253, 253, 254, 254, 255, 255, 255, + 259, 259, 258, 258, 258, 258, 256, 256, 257, 257, + 257, 257, 257, 257, 451, 451, 560, 560, 561, 561, + 556, 556, 556, 559, 559, 559, 559, 559, 559, 559, + 559, 562, 562, 562, 558, 558, 264, 351, 351, 351, + 374, 374, 374, 374, 376, 350, 350, 350, 279, 279, + 278, 278, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, - 276, 276, 276, 276, 276, 276, 449, 449, 389, 389, - 390, 390, 308, 307, 307, 307, 307, 307, 305, 306, - 304, 304, 304, 304, 304, 301, 301, 300, 300, 300, - 302, 302, 302, 302, 302, 428, 428, 298, 298, 288, - 288, 288, 287, 287, 287, 491, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 303, 347, 347, - 347, 348, 348, 348, 348, 348, 348, 348, 348, 399, - 399, 405, 405, 571, 571, 570, 265, 265, 265, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 275, 275, - 275, 473, 473, 473, 473, 474, 474, 474, 474, 475, - 475, 475, 471, 471, 472, 472, 410, 411, 411, 518, - 518, 519, 519, 469, 469, 470, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 526, - 526, 526, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 581, 581, - 581, 567, 567, 567, 568, 568, 568, 568, 568, 568, - 568, 568, 568, 568, 568, 568, 569, 569, 569, 569, - 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, - 569, 569, 569, 345, 345, 345, 345, 344, 344, 344, + 276, 276, 276, 276, 450, 450, 390, 390, 391, 391, + 308, 307, 307, 307, 307, 307, 305, 306, 304, 304, + 304, 304, 304, 301, 301, 300, 300, 300, 302, 302, + 302, 302, 302, 429, 429, 298, 298, 288, 288, 288, + 287, 287, 287, 492, 397, 397, 397, 397, 397, 397, + 397, 397, 397, 397, 397, 397, 397, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 303, 348, 348, 348, 349, + 349, 349, 349, 349, 349, 349, 349, 400, 400, 406, + 406, 572, 572, 571, 265, 265, 265, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 275, 275, 275, 474, + 474, 474, 474, 475, 475, 475, 475, 476, 476, 476, + 472, 472, 473, 473, 411, 412, 412, 519, 519, 520, + 520, 470, 470, 471, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 527, 527, 527, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 412, 412, 413, 413, 523, - 523, 523, 523, 523, 523, 524, 524, 525, 525, 525, - 525, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 397, 342, 342, 342, 414, 406, 406, 407, 407, - 408, 408, 400, 400, 400, 400, 400, 400, 401, 401, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 402, 402, 404, 404, 416, 416, 416, 415, - 415, 415, 415, 415, 415, 415, 277, 277, 277, 277, - 394, 394, 394, 393, 393, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 393, 267, 267, 267, 267, 271, - 271, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 273, 272, 272, 272, 272, 272, - 270, 270, 270, 270, 270, 268, 268, 268, 268, 268, + 344, 344, 344, 344, 344, 344, 582, 582, 582, 568, + 568, 568, 569, 569, 569, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 346, 346, 346, 346, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 413, 413, 414, 414, 524, 524, 524, + 524, 524, 524, 525, 525, 526, 526, 526, 526, 518, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 398, + 343, 343, 343, 415, 407, 407, 408, 408, 409, 409, + 401, 401, 401, 401, 401, 401, 402, 402, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 403, 403, 405, 405, 417, 417, 417, 416, 416, 416, + 416, 416, 416, 416, 277, 277, 277, 277, 395, 395, + 395, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 267, 267, 267, 267, 271, 271, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 272, 272, 272, 272, 272, 270, 270, + 270, 270, 270, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, - 268, 268, 268, 268, 122, 123, 123, 269, 352, 352, - 498, 498, 501, 501, 499, 499, 500, 502, 502, 502, - 503, 503, 503, 504, 504, 504, 508, 508, 361, 361, - 361, 369, 369, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, + 268, 268, 122, 123, 123, 269, 353, 353, 499, 499, + 502, 502, 500, 500, 501, 503, 503, 503, 504, 504, + 504, 505, 505, 505, 509, 509, 362, 362, 362, 370, + 370, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 367, 367, 367, 367, 367, 367, 367, 367, + 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 367, 367, 367, } var yyR2 = [...]int{ @@ -9382,147 +9419,148 @@ var yyR2 = [...]int{ 2, 2, 1, 3, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 2, 1, 3, 2, - 1, 2, 2, 1, 2, 3, 2, 2, 3, 6, - 3, 3, 3, 1, 1, 7, 7, 7, 8, 8, - 0, 4, 7, 6, 6, 0, 3, 0, 2, 0, - 1, 1, 1, 1, 4, 2, 2, 3, 3, 4, - 5, 3, 4, 4, 2, 2, 2, 3, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 1, 2, 3, 2, 2, 3, 5, + 4, 3, 3, 3, 1, 1, 3, 3, 7, 7, + 7, 8, 8, 0, 4, 7, 6, 6, 0, 3, + 0, 2, 0, 1, 1, 1, 1, 4, 2, 2, + 3, 3, 4, 5, 3, 4, 4, 2, 2, 2, + 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 3, 4, 3, 3, 3, 4, 5, 6, 5, 2, - 5, 5, 0, 2, 7, 0, 1, 0, 1, 5, - 5, 3, 3, 2, 4, 4, 4, 4, 4, 1, - 1, 1, 3, 3, 1, 1, 1, 6, 0, 1, - 1, 1, 1, 5, 5, 0, 1, 1, 3, 3, - 3, 4, 7, 7, 5, 4, 7, 8, 3, 3, - 2, 3, 4, 0, 2, 2, 0, 2, 2, 1, - 1, 1, 1, 0, 1, 5, 5, 6, 4, 3, - 1, 3, 1, 1, 3, 5, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 4, 4, 1, - 3, 1, 4, 6, 6, 4, 4, 4, 4, 4, - 3, 6, 3, 5, 1, 1, 2, 2, 11, 8, - 9, 1, 3, 2, 4, 0, 2, 0, 1, 1, - 1, 1, 0, 1, 0, 1, 4, 2, 1, 5, - 4, 4, 2, 5, 5, 1, 3, 2, 1, 5, - 4, 4, 2, 0, 5, 4, 0, 1, 3, 3, - 1, 3, 1, 3, 1, 3, 4, 0, 1, 0, - 1, 1, 3, 1, 1, 0, 4, 1, 3, 2, - 1, 0, 8, 0, 4, 7, 4, 0, 2, 0, - 2, 0, 2, 0, 4, 1, 3, 1, 1, 7, - 4, 6, 8, 4, 6, 0, 1, 3, 8, 0, - 6, 0, 4, 6, 1, 1, 1, 1, 1, 2, - 3, 1, 3, 6, 0, 3, 0, 1, 2, 4, - 4, 0, 5, 0, 1, 3, 1, 3, 3, 0, - 1, 1, 0, 2, 2, 0, 2, 3, 3, 3, - 1, 3, 3, 3, 3, 1, 2, 2, 1, 2, - 2, 1, 2, 2, 1, 2, 2, 7, 0, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 2, 0, 4, 7, 6, 6, 3, - 5, 0, 2, 0, 2, 1, 3, 1, 2, 3, - 5, 0, 1, 2, 1, 3, 1, 1, 1, 1, - 4, 4, 4, 3, 4, 3, 2, 2, 2, 2, - 2, 3, 2, 3, 2, 4, 1, 3, 4, 0, - 2, 1, 3, 1, 1, 2, 2, 3, 0, 1, - 2, 4, 1, 3, 1, 3, 2, 3, 1, 4, - 3, 0, 1, 1, 2, 5, 2, 2, 2, 0, - 2, 3, 3, 0, 1, 3, 1, 3, 0, 1, - 2, 1, 1, 0, 1, 2, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 7, 1, 1, 9, 1, 3, 0, 1, 1, - 3, 1, 3, 0, 1, 1, 1, 0, 2, 14, - 1, 3, 0, 1, 1, 3, 1, 1, 2, 4, - 1, 1, 1, 1, 0, 1, 2, 9, 9, 7, - 1, 2, 3, 3, 3, 0, 4, 1, 1, 1, - 1, 1, 0, 1, 1, 1, 1, 1, 4, 1, - 1, 1, 3, 3, 4, 3, 3, 0, 1, 1, - 1, 0, 2, 7, 8, 10, 2, 2, 8, 0, - 3, 3, 0, 3, 0, 3, 0, 5, 1, 3, - 0, 3, 3, 0, 2, 9, 8, 0, 2, 2, - 3, 3, 0, 2, 0, 2, 4, 4, 4, 5, - 1, 0, 2, 2, 1, 3, 2, 1, 3, 2, - 1, 3, 2, 0, 1, 3, 4, 3, 1, 1, - 4, 1, 3, 1, 1, 1, 1, 0, 1, 1, - 1, 11, 0, 2, 3, 3, 2, 2, 3, 1, - 1, 3, 3, 3, 1, 1, 3, 3, 4, 0, - 2, 2, 2, 2, 2, 2, 2, 6, 8, 0, - 4, 1, 1, 0, 3, 0, 1, 0, 1, 1, - 2, 4, 4, 4, 0, 1, 8, 2, 4, 4, - 4, 9, 0, 2, 8, 9, 5, 5, 7, 7, - 0, 3, 3, 3, 2, 0, 3, 3, 3, 0, - 3, 11, 9, 11, 8, 6, 9, 7, 10, 7, - 6, 8, 2, 2, 9, 4, 5, 3, 0, 4, - 1, 3, 0, 3, 6, 0, 2, 10, 0, 2, - 0, 2, 0, 3, 2, 4, 3, 0, 2, 1, - 0, 2, 3, 0, 2, 3, 0, 2, 1, 0, - 3, 2, 4, 3, 0, 1, 0, 1, 1, 0, - 6, 0, 3, 5, 0, 4, 0, 3, 1, 3, - 4, 5, 0, 3, 1, 3, 2, 3, 1, 2, - 0, 4, 6, 5, 0, 2, 0, 2, 4, 5, - 4, 5, 1, 5, 6, 5, 0, 3, 0, 1, - 1, 3, 3, 3, 0, 4, 1, 3, 3, 3, - 0, 1, 1, 3, 2, 3, 3, 3, 4, 4, - 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, - 3, 3, 3, 3, 3, 3, 3, 1, 5, 4, - 1, 3, 3, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 2, 4, 0, - 5, 5, 5, 5, 6, 0, 1, 1, 3, 1, - 1, 1, 1, 1, 7, 9, 7, 9, 2, 1, - 7, 9, 7, 9, 8, 5, 0, 1, 0, 1, - 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 3, 1, - 3, 5, 1, 1, 1, 1, 1, 1, 3, 5, - 0, 1, 1, 2, 1, 2, 2, 1, 1, 2, - 2, 2, 3, 3, 2, 2, 1, 5, 6, 4, - 1, 1, 1, 5, 4, 1, 1, 2, 0, 1, - 1, 2, 5, 0, 1, 1, 2, 2, 3, 3, - 1, 1, 2, 2, 2, 0, 1, 2, 2, 2, - 0, 4, 7, 3, 3, 0, 3, 0, 3, 1, - 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, - 1, 1, 3, 5, 2, 2, 2, 2, 4, 1, - 1, 2, 5, 6, 8, 6, 3, 6, 6, 1, - 1, 1, 1, 1, 1, 3, 9, 1, 4, 4, - 4, 7, 9, 7, 7, 7, 9, 7, 7, 0, - 2, 0, 1, 1, 2, 4, 1, 2, 2, 1, - 2, 2, 1, 2, 2, 2, 2, 2, 0, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, - 1, 1, 2, 5, 0, 1, 3, 0, 1, 0, - 2, 0, 2, 0, 1, 6, 8, 8, 6, 6, - 5, 5, 5, 6, 6, 6, 6, 5, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, - 1, 1, 4, 4, 6, 8, 6, 4, 5, 4, - 4, 4, 3, 4, 6, 6, 7, 4, 1, 1, + 1, 3, 3, 3, 4, 3, 3, 3, 4, 5, + 6, 5, 2, 5, 5, 0, 2, 7, 0, 1, + 0, 1, 5, 5, 3, 3, 2, 4, 4, 4, + 4, 4, 1, 1, 1, 3, 3, 1, 1, 1, + 6, 0, 1, 1, 1, 1, 5, 5, 0, 1, + 1, 3, 3, 3, 4, 7, 7, 5, 4, 7, + 8, 3, 3, 2, 3, 4, 0, 2, 2, 0, + 2, 2, 1, 1, 1, 1, 0, 1, 5, 5, + 6, 4, 3, 1, 3, 1, 1, 3, 5, 2, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, + 4, 4, 1, 3, 1, 4, 6, 6, 4, 4, + 4, 4, 4, 3, 6, 3, 5, 1, 1, 2, + 2, 11, 8, 9, 1, 3, 2, 4, 0, 2, + 0, 1, 1, 1, 1, 0, 1, 0, 1, 4, + 2, 1, 5, 4, 4, 2, 5, 5, 1, 3, + 2, 1, 5, 4, 4, 2, 0, 5, 4, 0, + 1, 3, 3, 1, 3, 1, 3, 1, 3, 4, + 0, 1, 0, 1, 1, 3, 1, 1, 0, 4, + 1, 3, 2, 1, 0, 8, 0, 4, 7, 4, + 0, 2, 0, 2, 0, 2, 0, 4, 1, 3, + 1, 1, 7, 4, 6, 8, 4, 6, 0, 1, + 3, 8, 0, 6, 0, 4, 6, 1, 1, 1, + 1, 1, 2, 3, 1, 3, 6, 0, 3, 0, + 1, 2, 4, 4, 0, 5, 0, 1, 3, 1, + 3, 3, 0, 1, 1, 0, 2, 2, 0, 2, + 3, 3, 3, 1, 3, 3, 3, 3, 1, 2, + 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, + 7, 0, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 2, 0, 4, 7, + 6, 6, 3, 5, 0, 2, 0, 2, 1, 3, + 1, 2, 3, 5, 0, 1, 2, 1, 3, 1, + 1, 1, 1, 4, 4, 4, 3, 4, 3, 2, + 2, 2, 2, 2, 3, 2, 3, 2, 4, 1, + 3, 4, 0, 2, 1, 3, 1, 1, 2, 2, + 3, 0, 1, 2, 4, 1, 3, 1, 3, 2, + 3, 1, 4, 3, 0, 1, 1, 2, 5, 2, + 2, 2, 0, 2, 3, 3, 0, 1, 3, 1, + 3, 0, 1, 2, 1, 1, 0, 1, 2, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 7, 1, 1, 9, 1, 3, + 0, 1, 1, 3, 1, 3, 0, 1, 1, 1, + 0, 2, 14, 1, 3, 0, 1, 1, 3, 1, + 1, 2, 4, 1, 1, 1, 1, 0, 1, 2, + 9, 9, 7, 1, 2, 3, 3, 3, 0, 4, + 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 4, 1, 1, 1, 3, 3, 4, 3, 3, + 0, 1, 1, 1, 0, 2, 7, 8, 10, 2, + 2, 8, 0, 3, 3, 0, 3, 0, 3, 0, + 5, 1, 3, 0, 3, 3, 0, 2, 9, 8, + 0, 2, 2, 3, 3, 0, 2, 0, 2, 4, + 4, 4, 5, 1, 0, 2, 2, 1, 3, 2, + 1, 3, 2, 1, 3, 2, 0, 1, 3, 4, + 3, 1, 1, 4, 1, 3, 1, 1, 1, 1, + 0, 1, 1, 1, 11, 0, 2, 3, 3, 2, + 2, 3, 1, 1, 3, 3, 3, 1, 1, 3, + 3, 3, 3, 1, 3, 3, 4, 0, 2, 2, + 2, 2, 2, 2, 2, 6, 8, 0, 4, 1, + 1, 0, 3, 0, 1, 0, 1, 1, 2, 4, + 4, 4, 0, 1, 8, 2, 4, 4, 4, 9, + 0, 2, 8, 9, 5, 5, 7, 7, 0, 3, + 3, 3, 2, 0, 3, 3, 3, 0, 3, 11, + 9, 11, 8, 6, 9, 7, 10, 7, 6, 8, + 2, 2, 9, 4, 5, 3, 0, 4, 1, 3, + 0, 3, 6, 0, 2, 10, 0, 2, 0, 2, + 0, 3, 2, 4, 3, 0, 2, 1, 0, 2, + 3, 0, 2, 3, 0, 2, 1, 0, 3, 2, + 4, 3, 0, 1, 0, 1, 1, 0, 6, 0, + 3, 5, 0, 4, 0, 3, 1, 3, 4, 5, + 0, 3, 1, 3, 2, 3, 1, 2, 0, 4, + 6, 5, 0, 2, 0, 2, 4, 5, 4, 5, + 1, 5, 6, 5, 0, 3, 0, 1, 1, 3, + 3, 3, 0, 4, 1, 3, 3, 3, 0, 1, + 1, 3, 2, 3, 3, 3, 4, 4, 3, 3, + 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, + 3, 3, 3, 3, 3, 1, 5, 4, 1, 3, + 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 2, 4, 0, 5, 5, + 5, 5, 6, 0, 1, 1, 3, 1, 1, 1, + 1, 1, 7, 9, 7, 9, 2, 1, 7, 9, + 7, 9, 8, 5, 0, 1, 0, 1, 1, 1, + 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 3, 1, 3, 5, + 1, 1, 1, 1, 1, 1, 3, 5, 0, 1, + 1, 2, 1, 2, 2, 1, 1, 2, 2, 2, + 3, 3, 2, 2, 1, 5, 6, 4, 1, 1, + 1, 5, 4, 1, 1, 2, 0, 1, 1, 2, + 5, 0, 1, 1, 2, 2, 3, 3, 1, 1, + 2, 2, 2, 0, 1, 2, 2, 2, 0, 4, + 7, 3, 3, 0, 3, 0, 3, 1, 1, 1, + 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, + 3, 5, 2, 2, 2, 2, 4, 1, 1, 2, + 5, 6, 8, 6, 3, 6, 6, 1, 1, 1, + 1, 1, 1, 3, 9, 1, 4, 4, 4, 7, + 9, 7, 7, 7, 9, 7, 7, 0, 2, 0, + 1, 1, 2, 4, 1, 2, 2, 1, 2, 2, + 1, 2, 2, 2, 2, 2, 0, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, + 2, 5, 0, 1, 3, 0, 1, 0, 2, 0, + 2, 0, 1, 6, 8, 8, 6, 6, 5, 5, + 5, 6, 6, 6, 6, 5, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 1, 1, 1, + 4, 4, 6, 8, 6, 4, 5, 4, 4, 4, + 3, 4, 6, 6, 7, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 8, 8, 4, 2, 3, - 2, 4, 2, 2, 4, 6, 2, 2, 4, 6, - 4, 2, 4, 4, 4, 0, 1, 2, 3, 1, - 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 8, 8, 4, 2, 3, 2, 4, + 2, 2, 4, 6, 2, 2, 4, 6, 4, 2, + 4, 4, 4, 0, 1, 2, 3, 1, 1, 1, + 1, 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, 3, 0, 1, 1, 3, 0, 1, 1, 3, - 1, 3, 3, 3, 3, 3, 2, 1, 1, 1, - 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, - 1, 3, 4, 4, 5, 4, 5, 3, 4, 5, - 6, 1, 0, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 0, 1, 1, 3, 0, 1, 1, 3, 1, 3, + 3, 3, 3, 3, 2, 1, 1, 1, 3, 4, + 3, 4, 3, 4, 3, 4, 3, 4, 1, 3, + 4, 4, 5, 4, 5, 3, 4, 5, 6, 1, + 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 1, 1, 2, 3, 1, 1, 1, 2, + 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, + 4, 1, 2, 3, 5, 1, 1, 3, 0, 1, + 0, 3, 0, 3, 3, 0, 3, 5, 0, 3, + 5, 0, 1, 1, 0, 1, 1, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 4, 4, 1, 2, 3, 5, 1, 1, 3, - 0, 1, 0, 3, 0, 3, 3, 0, 3, 5, - 0, 3, 5, 0, 1, 1, 0, 1, 1, 2, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -9565,433 +9603,435 @@ 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, } var yyChk = [...]int{ - -1000, -626, -629, -2, -5, 655, -1, -4, -123, -92, + -1000, -627, -630, -2, -5, 657, -1, -4, -123, -92, -7, -14, -125, -126, -8, -121, -9, -10, -12, -99, -116, -118, -120, -119, -47, -11, -115, -85, -86, -101, -109, -112, -113, -114, -127, -122, -124, -191, -128, -129, - -130, -174, -133, -135, -136, -187, 645, -93, -94, -95, + -130, -174, -133, -135, -136, -187, 647, -93, -94, -95, -96, -97, -98, -33, -32, -31, -30, -160, -165, -168, - -170, -131, 578, 651, 481, 16, 530, -15, -16, -572, - -17, 277, -377, -378, -379, -381, -630, -48, -49, -50, + -170, -131, 580, 653, 483, 16, 532, -15, -16, -573, + -17, 277, -378, -379, -380, -382, -631, -48, -49, -50, -60, -61, -62, -63, -64, -74, -75, -76, -51, -52, -53, -56, -54, -67, -66, -68, -69, -70, -71, -72, -73, -55, -59, -163, -164, -77, -57, -78, -58, -172, -175, -132, -79, -80, -81, -83, -82, -88, -84, -89, -162, -167, -13, -173, -90, -91, 251, -87, 79, -102, - -103, -104, -105, -106, -107, -108, -110, -111, 408, 414, - 468, 644, 64, -192, -194, 674, 675, 678, 566, 569, + -103, -104, -105, -106, -107, -108, -110, -111, 410, 416, + 470, 646, 64, -192, -194, 676, 677, 680, 568, 571, 295, 175, 176, 178, 179, 183, 186, -34, -35, -36, -37, -38, -39, -41, -40, -42, -43, -44, -45, -46, 247, 18, 14, -18, -21, -19, -22, -20, -28, -29, -27, -24, -26, -161, -25, -166, -23, -169, -171, -134, - 272, 271, 41, 338, 339, 340, 412, 270, 248, 250, - 17, 34, 45, 387, -193, 88, 567, 249, -195, 15, - 680, -6, -3, -2, -147, -151, -155, -158, -159, -156, - -157, -4, -123, 123, 262, 646, -373, 404, 647, 649, - 648, 91, 99, -366, -368, 481, 277, 408, 414, 644, - 675, 678, 566, 569, 295, 580, 581, 582, 583, 584, - 585, 586, 587, 589, 590, 591, 592, 593, 594, 595, - 605, 606, 596, 597, 598, 599, 600, 601, 602, 603, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, - 617, 618, 619, 620, 533, 534, 630, 631, 632, 633, - 562, 588, 624, 625, 626, 627, 385, 386, 571, 289, - 313, 436, 319, 326, 383, 175, 193, 189, 216, 207, - 345, 344, 567, 184, 293, 331, 294, 98, 178, 516, - 113, 493, 465, 181, 350, 353, 351, 352, 308, 310, - 312, 563, 564, 398, 315, 561, 314, 316, 318, 565, - 349, 388, 203, 198, 307, 291, 196, 296, 43, 297, - 381, 380, 221, 298, 299, 575, 489, 384, 495, 323, - 55, 463, 197, 490, 311, 492, 225, 229, 507, 371, - 508, 166, 167, 497, 510, 220, 223, 224, 269, 377, - 378, 46, 573, 281, 511, 227, 670, 219, 214, 519, + 272, 271, 41, 338, 339, 340, 414, 270, 248, 250, + 17, 34, 45, 389, -193, 88, 569, 249, -195, 15, + 682, -6, -3, -2, -147, -151, -155, -158, -159, -156, + -157, -4, -123, 123, 262, 648, -374, 406, 649, 651, + 650, 91, 99, -367, -369, 483, 277, 410, 416, 646, + 677, 680, 568, 571, 295, 582, 583, 584, 585, 586, + 587, 588, 589, 591, 592, 593, 594, 595, 596, 597, + 607, 608, 598, 599, 600, 601, 602, 603, 604, 605, + 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, + 619, 620, 621, 622, 535, 536, 632, 633, 634, 635, + 564, 590, 626, 627, 628, 629, 387, 388, 573, 289, + 313, 438, 319, 326, 383, 175, 193, 189, 216, 207, + 345, 344, 569, 184, 293, 331, 294, 98, 178, 518, + 113, 495, 467, 181, 350, 353, 351, 352, 308, 310, + 312, 565, 566, 400, 315, 563, 314, 316, 318, 567, + 349, 390, 203, 198, 307, 291, 196, 296, 43, 297, + 381, 380, 221, 298, 299, 577, 491, 386, 497, 323, + 55, 465, 197, 492, 311, 494, 225, 229, 509, 371, + 510, 166, 167, 499, 512, 220, 223, 224, 269, 377, + 378, 46, 575, 281, 513, 227, 672, 219, 214, 521, 327, 325, 382, 218, 192, 213, 292, 68, 231, 230, - 232, 459, 460, 461, 462, 300, 301, 402, 506, 210, - 199, 389, 185, 25, 514, 276, 494, 415, 354, 302, - 320, 328, 226, 228, 283, 288, 343, 574, 467, 287, - 324, 512, 195, 280, 309, 275, 515, 671, 186, 417, - 303, 179, 317, 509, 673, 518, 67, 161, 191, 182, - 662, 663, 266, 176, 285, 290, 672, 304, 305, 306, - 560, 330, 329, 321, 183, 568, 211, 282, 217, 201, - 190, 212, 177, 284, 517, 162, 642, 387, 446, 209, - 206, 286, 259, 513, 496, 180, 450, 164, 204, 332, - 637, 638, 639, 403, 376, 333, 334, 202, 273, 487, - 488, 337, 456, 366, 430, 466, 437, 431, 238, 239, - 341, 499, 501, 222, 640, 355, 356, 357, 491, 358, - 359, 360, 361, 407, 59, 61, 100, 103, 102, 676, - 677, 66, 32, 393, 396, 428, 432, 368, 643, 572, - 365, 369, 370, 397, 28, 448, 419, 452, 451, 51, - 52, 53, 56, 57, 58, 60, 62, 63, 54, 559, - 412, 425, 520, 48, 50, 422, 30, 399, 447, 469, - 364, 449, 480, 49, 478, 479, 500, 29, 401, 400, - 65, 47, 455, 457, 458, 335, 362, 410, 652, 521, - 405, 421, 424, 406, 367, 395, 426, 70, 418, 653, - 413, 411, 363, 576, 577, 372, 604, 390, 464, 556, - 555, 554, 553, 552, 551, 550, 549, 338, 339, 340, - 433, 434, 435, 445, 438, 439, 440, 441, 442, 443, - 444, 483, 484, 654, 502, 504, 505, 503, 254, 679, - 391, 392, 257, 656, 657, 101, 658, 660, 659, 31, - 661, 669, 666, 667, 668, 579, 664, -455, -453, -373, - 567, 295, 644, 414, 566, 569, 408, 387, 675, 678, - 412, 277, 338, 339, 340, 481, 385, -246, -373, 679, - -204, 261, 42, -260, -373, -204, -87, -16, -15, -193, - -194, -260, 256, -382, 26, 463, -100, 464, 251, 252, - 88, 80, -373, -9, -114, -8, -121, -85, -191, 468, - -380, -373, 338, 338, -380, 256, -375, 287, 444, -373, - -510, 262, -459, -432, 288, -458, -434, -461, -435, 35, - 247, 249, 248, 578, 284, 18, 412, 258, 16, 15, - 413, 270, 28, 29, 31, 17, 414, 416, 32, 417, - 420, 421, 422, 45, 425, 426, 277, 91, 99, 94, - 295, -245, -373, -408, -400, 120, -403, -395, -396, -398, - -351, -546, -393, 88, 147, 148, 155, 121, 681, -397, - -491, 39, 123, 584, 588, 624, 531, -343, -344, -345, - -346, -347, -348, 570, -373, -547, -545, 94, 104, 106, + 232, 461, 462, 463, 464, 300, 301, 404, 508, 210, + 199, 391, 185, 25, 516, 276, 496, 417, 354, 302, + 320, 328, 226, 228, 283, 288, 343, 576, 469, 287, + 324, 514, 195, 280, 309, 275, 517, 673, 186, 419, + 303, 179, 317, 511, 675, 520, 67, 161, 191, 182, + 664, 665, 266, 176, 285, 290, 674, 304, 305, 306, + 562, 330, 329, 321, 183, 570, 211, 282, 217, 201, + 190, 212, 177, 284, 519, 162, 644, 389, 448, 209, + 206, 286, 259, 515, 498, 180, 452, 164, 204, 332, + 639, 640, 641, 405, 376, 333, 334, 202, 273, 489, + 490, 337, 458, 366, 432, 468, 439, 433, 238, 239, + 341, 501, 503, 222, 642, 355, 356, 357, 493, 358, + 359, 360, 361, 409, 59, 61, 100, 103, 102, 678, + 679, 66, 32, 395, 398, 430, 434, 368, 645, 574, + 365, 369, 370, 399, 28, 450, 421, 454, 453, 51, + 52, 53, 56, 57, 58, 60, 62, 63, 54, 561, + 414, 427, 522, 48, 50, 424, 30, 401, 449, 471, + 364, 451, 482, 49, 480, 481, 502, 29, 403, 402, + 65, 47, 457, 459, 460, 335, 362, 412, 654, 523, + 407, 423, 426, 408, 367, 397, 428, 70, 420, 655, + 415, 413, 363, 578, 579, 372, 606, 392, 466, 558, + 557, 556, 555, 554, 553, 552, 551, 338, 339, 340, + 435, 436, 437, 447, 440, 441, 442, 443, 444, 445, + 446, 485, 486, 656, 504, 506, 507, 505, 254, 681, + 393, 394, 257, 658, 659, 101, 660, 662, 661, 31, + 663, 671, 668, 669, 670, 581, 666, -456, -454, -374, + 569, 295, 646, 416, 568, 571, 410, 389, 677, 680, + 414, 277, 338, 339, 340, 483, 387, -246, -374, 681, + -204, 261, 42, -260, -374, -204, -87, -16, -15, -193, + -194, -260, 256, -383, 26, 465, -100, 466, 251, 252, + 88, 80, -374, -9, -114, -8, -121, -85, -191, 470, + -381, -374, 338, 338, -381, 256, -376, 287, 446, -374, + -511, 262, -460, -433, 288, -459, -435, -462, -436, 35, + 247, 249, 248, 580, 284, 18, 414, 258, 16, 15, + 415, 270, 28, 29, 31, 17, 416, 418, 32, 419, + 422, 423, 424, 45, 427, 428, 277, 91, 99, 94, + 295, -245, -374, -409, -401, 120, -404, -396, -397, -399, + -352, -547, -394, 88, 147, 148, 155, 121, 683, -398, + -492, 39, 123, 586, 590, 626, 533, -344, -345, -346, + -347, -348, -349, 572, -374, -548, -546, 94, 104, 106, 110, 111, 109, 107, 169, 200, 108, 95, 170, -194, - 91, -567, 594, -367, 617, 630, 631, 632, 633, 616, - 64, -517, -525, 255, -523, 168, 205, 273, 201, 16, - 153, 456, 202, 625, 626, 627, 591, 613, 533, 534, - 595, 605, 620, 586, 587, 589, 581, 582, 583, 585, - 596, 598, 612, -526, 608, 618, 619, 604, 628, 629, - 666, 621, 622, 623, 660, 93, 92, 611, 610, 597, - 592, 593, 599, 580, 590, 600, 601, 609, 614, 615, - 396, 113, 397, 398, 523, 388, 83, 399, 262, 463, - 73, 400, 401, 402, 403, 404, 530, 405, 74, 406, - 395, 277, 446, 407, 204, 222, 536, 535, 537, 527, - 524, 522, 525, 526, 528, 529, 602, 603, 607, -137, - -139, 635, -620, -334, -621, 6, 7, 8, 9, -622, - 170, -611, 465, 574, 94, 523, 256, 331, 385, 19, - 665, 565, 665, 565, 345, 180, 177, -446, 180, 119, - 186, 185, 260, 180, -446, -373, 183, 665, 182, 662, - 341, -422, -178, 385, 446, 358, 100, 287, -426, -423, - 563, -511, 335, 331, 307, 257, 116, -179, 267, 266, - 114, 523, 255, 423, 326, 59, 61, -582, -583, 244, - 245, 246, -574, 557, -573, -373, 665, 670, 398, 102, - 103, 662, 663, 30, 256, 409, 283, 501, 499, 500, - 502, 503, 504, 505, -65, -527, -509, 496, 495, -386, - 488, 494, 486, 498, 489, 386, 360, 578, 359, 247, - 656, 564, 558, -361, 430, 466, 520, 521, 410, 467, - 507, 509, 490, 113, 208, 205, 257, 259, 256, 662, - 287, 385, 523, 446, 100, 358, 256, -582, 670, 177, - 507, 509, 465, 287, 444, 44, -452, 456, -451, -453, - 508, 519, 92, 93, 506, -361, 113, 487, 487, -620, - -334, -192, -194, -124, -572, 565, 665, 257, 385, 446, - 287, 258, 256, 560, 563, 259, 523, 255, 338, 409, - 283, 358, 100, 182, 662, -198, -199, -200, 240, 241, + 91, -568, 596, -368, 619, 632, 633, 634, 635, 618, + 64, -518, -526, 255, -524, 168, 205, 273, 201, 16, + 153, 458, 202, 627, 628, 629, 593, 615, 535, 536, + 597, 607, 622, 588, 589, 591, 583, 584, 585, 587, + 598, 600, 614, -527, 610, 620, 621, 606, 630, 631, + 668, 623, 624, 625, 662, 93, 92, 613, 612, 599, + 594, 595, 601, 582, 592, 602, 603, 611, 616, 617, + 398, 113, 399, 400, 525, 390, 83, 401, 262, 465, + 73, 402, 403, 404, 405, 406, 532, 407, 74, 408, + 397, 277, 448, 409, 204, 222, 538, 537, 539, 529, + 526, 524, 527, 528, 530, 531, 604, 605, 609, -137, + -139, 637, -621, -335, -622, 6, 7, 8, 9, -623, + 170, -612, 467, 576, 94, 525, 256, 331, 387, 19, + 667, 567, 667, 567, 345, 180, 177, -447, 180, 119, + 186, 185, 260, 180, -447, -374, 183, 667, 182, 664, + 341, -423, -178, 387, 448, 358, 100, 287, -427, -424, + 565, -512, 335, 331, 307, 257, 116, -179, 267, 266, + 114, 525, 255, 425, 326, 59, 61, -583, -584, 244, + 245, 246, -575, 559, -574, -374, 667, 672, 400, 102, + 103, 664, 665, 30, 256, 411, 283, 503, 501, 502, + 504, 505, 506, 507, -65, -528, -510, 498, 497, -387, + 490, 496, 488, 500, 491, 388, 360, 580, 359, 247, + 658, 566, 560, -362, 432, 468, 522, 523, 412, 469, + 509, 511, 492, 113, 208, 205, 257, 259, 256, 664, + 287, 387, 525, 448, 100, 358, 256, -583, 672, 177, + 509, 511, 467, 287, 446, 44, -453, 458, -452, -454, + 510, 521, 92, 93, 508, -362, 113, 489, 489, -621, + -335, -192, -194, -124, -573, 567, 667, 257, 387, 448, + 287, 258, 256, 562, 565, 259, 525, 255, 338, 411, + 283, 358, 100, 182, 664, -198, -199, -200, 240, 241, 242, 72, 245, 243, 69, 35, 36, 37, -1, 127, - 680, -400, -400, -6, 683, -6, -400, -373, -373, 172, + 682, -401, -401, -6, 685, -6, -401, -374, -374, 172, -267, -271, -268, -270, -269, -273, -272, 205, 206, 168, 209, 215, 211, 212, 213, 214, 216, 217, 218, 219, 220, 223, 224, 221, 34, 222, 273, 201, 202, 203, - 204, 225, 189, 207, 572, 233, 190, 234, 191, 235, + 204, 225, 189, 207, 574, 233, 190, 234, 191, 235, 192, 236, 166, 167, 237, 193, 196, 197, 198, 199, 195, 171, -234, 94, 35, 88, 171, 94, -224, 279, - -204, -260, -252, 171, 681, -224, -620, -214, -215, 11, - -260, -349, -373, 465, 130, -100, 80, -100, 464, 80, - -100, 464, 251, -575, -576, -577, -579, 251, 464, 463, - 252, 322, -119, 171, 295, 19, -380, -380, 86, -260, - -434, 287, -459, -432, 39, 85, 172, 260, 172, 85, - 88, 410, 385, 446, 411, 523, 256, 423, 259, 287, - 424, 385, 446, 256, 259, 523, 287, 385, 256, 259, - 446, 287, 424, 385, 486, 487, 259, 30, 415, 418, - 419, 487, -531, 519, 172, 119, 116, 117, 118, -400, - 137, -415, 130, 131, 132, 133, 134, 135, 136, 144, + -204, -260, -252, 171, 683, -224, -621, -214, -215, 11, + -260, -350, -374, 467, 130, -100, 80, -100, 466, 80, + -100, 466, 251, -576, -577, -578, -580, 251, 466, 465, + 252, 322, -119, 171, 295, 19, -381, -381, 86, -260, + -435, 287, -460, -433, 39, 85, 172, 260, 172, 85, + 88, 412, 387, 448, 413, 525, 256, 425, 259, 287, + 426, 387, 448, 256, 259, 525, 287, 387, 256, 259, + 448, 287, 426, 387, 488, 489, 259, 30, 417, 420, + 421, 489, -532, 521, 172, 119, 116, 117, 118, -401, + 137, -416, 130, 131, 132, 133, 134, 135, 136, 144, 143, 154, 147, 148, 149, 150, 151, 152, 153, 145, 146, 140, 120, 138, 142, 139, 122, 159, 158, -194, - -400, -408, 64, -398, -398, -398, -398, -373, -491, -405, - -400, 88, 88, 88, 88, 88, 171, 107, 94, -400, + -401, -409, 64, -399, -399, -399, -399, -374, -492, -406, + -401, 88, 88, 88, 88, 88, 171, 107, 94, -401, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, -524, 88, 88, -412, -413, 88, 88, -393, - -349, 88, 94, 94, 88, 88, 88, 94, 88, 88, - 88, -413, -413, 88, 88, 88, 88, 88, 88, 88, + 88, 88, -525, 88, 88, -413, -414, 88, 88, -394, + -350, 88, 94, 94, 88, 88, 88, 94, 88, 88, + 88, -414, -414, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, -215, 172, -214, 88, -214, -215, -195, -194, 35, 36, - 35, 36, 35, 36, 35, 36, -623, 653, 88, 104, - 676, 238, -228, -373, -229, -373, -145, 19, 681, -373, - 662, -605, 35, 568, 568, 568, 568, 247, 18, 349, - 57, 512, 14, 184, 185, 186, -373, 183, 260, -373, - -420, 262, -420, -420, -244, -373, 283, 409, 259, 560, - 259, -179, -420, -420, -420, -420, -420, 258, -420, 26, - 256, 256, 256, 256, -420, 530, 130, 130, 62, -584, - 188, 172, -574, -223, 88, -605, 671, 672, 673, -385, - 138, 142, -385, -330, 20, -330, 26, 26, 285, 285, - 285, -385, 325, -631, -632, 19, 140, -383, -632, -383, - -383, -385, -633, 258, 497, 46, 286, 285, -216, -217, - 24, -216, 491, 487, -476, 492, 493, -387, -632, -386, - -385, -385, -386, -385, -385, -385, 35, 256, 259, 523, - 358, 657, -631, -631, 34, 34, -510, -510, -260, -510, - -510, -510, 558, -362, -373, -510, -510, -510, -314, -315, - -260, -585, 261, 673, -617, -616, 510, -619, 512, 177, - -453, 177, -453, 91, -434, 287, 287, 172, 130, 26, - -454, 130, 141, -453, -453, -454, -454, -284, 44, -372, - 168, -373, 94, -284, 44, -614, -613, -260, -215, -195, - -194, 89, 89, 89, 568, -605, -510, -510, -510, -510, - -510, -511, -510, -510, -510, -510, -510, -380, -235, -373, - -246, 262, -510, -510, -510, -510, -196, -197, 149, -400, - -373, -200, -3, -149, -148, 124, 125, 127, 647, 404, - 646, 650, 644, -453, 44, -504, 162, 161, -498, -500, - 88, -499, 88, -499, -499, -499, -499, -499, 88, 88, - -501, 88, -501, -501, -498, -502, 88, -502, -503, 88, - -503, -502, -373, -480, 14, -406, -408, -373, 42, -520, - 64, -191, 88, 34, 88, -224, -373, 202, 182, 661, - 38, -521, 64, -191, 88, 34, -215, -140, 42, -217, + 35, 36, 35, 36, 35, 36, -624, 655, 88, 104, + 678, 238, -228, -374, -229, -374, -145, 19, 683, -374, + 664, -606, 35, 570, 570, 570, 570, 247, 18, 349, + 57, 514, 14, 184, 185, 186, -374, 183, 260, -374, + -421, 262, -421, -421, -244, -374, 283, 411, 259, 562, + 259, -179, -421, -421, -421, -421, -421, 258, -421, 26, + 256, 256, 256, 256, -421, 532, 130, 130, 62, -585, + 188, 172, -575, -223, 88, -606, 673, 674, 675, -386, + 138, 142, -386, -331, 20, -331, 26, 26, 285, 285, + 285, -386, 325, -632, -633, 19, 140, -384, -633, -384, + -384, -386, -634, 258, 499, 46, 286, 285, -216, -217, + 24, -216, 493, 489, -477, 494, 495, -388, -633, -387, + -386, -386, -387, -386, -386, -386, 35, 256, 259, 525, + 358, 659, -632, -632, 34, 34, -511, -511, -260, -511, + -511, -511, 560, -363, -374, -511, -511, -511, -314, -315, + -260, -586, 261, 675, -618, -617, 512, -620, 514, 177, + -454, 177, -454, 91, -435, 287, 287, 172, 130, 26, + -455, 130, 141, -454, -454, -455, -455, -284, 44, -373, + 168, -374, 94, -284, 44, -615, -614, -260, -215, -195, + -194, 89, 89, 89, 570, -606, -511, -511, -511, -511, + -511, -512, -511, -511, -511, -511, -511, -381, -235, -374, + -246, 262, -511, -511, -511, -511, -196, -197, 149, -401, + -374, -200, -3, -149, -148, 124, 125, 127, 649, 406, + 648, 652, 646, -454, 44, -505, 162, 161, -499, -501, + 88, -500, 88, -500, -500, -500, -500, -500, 88, 88, + -502, 88, -502, -502, -499, -503, 88, -503, -504, 88, + -504, -503, -374, -481, 14, -407, -409, -374, 42, -521, + 64, -191, 88, 34, 88, -224, -374, 202, 182, 663, + 38, -522, 64, -191, 88, 34, -215, -140, 42, -217, 23, 171, 104, 94, -119, -100, 80, -119, -100, -100, - 89, 172, -578, 110, 111, -580, 94, 220, 211, -373, - -117, 94, -545, -7, -11, -8, -9, -10, -47, -85, - -191, 566, 569, -548, -546, 88, 35, 455, 85, 19, - -460, 256, 523, 409, 283, 259, 385, -458, -441, -438, - -436, -372, -434, -437, -436, -463, -349, 487, -141, 470, - 469, 337, -400, -400, -400, -400, -400, 109, 120, 376, - 110, 111, -395, -416, 35, 333, 334, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -404, - -414, -491, 88, 140, 138, 142, 139, 122, -398, -398, - -396, -396, -265, -267, 161, 162, -286, -372, 168, 89, - 172, -400, -571, -570, 124, -400, -400, -400, -400, -427, - -429, -349, 88, -373, -568, -569, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 400, 395, 401, - 399, 388, 407, 402, 403, 204, 555, 556, 549, 550, - 551, 552, 553, 554, -406, -406, -400, -568, -406, -342, - 36, 35, -408, -408, -408, 89, -400, -581, 374, 373, - 375, -219, -373, -406, 89, 89, 89, 104, -408, -408, - -406, -396, -406, -406, -406, -406, -569, -569, -342, -342, - -342, -342, 149, -408, -408, -342, -342, -342, -342, 149, - -342, -342, -342, -342, -342, -342, -342, -342, -342, -342, - -342, 89, 89, 89, 149, -408, -216, -139, -529, -528, - -400, 44, -140, -217, -624, 654, 88, -349, -612, 94, - 94, 681, -145, 171, 19, 256, -145, 171, 662, 182, - -145, 19, -373, -373, 104, -373, 104, 256, 523, 256, - 523, -260, -260, 513, 514, 181, 185, 184, -373, 183, - -373, -373, 120, -373, -373, 38, -246, -235, -420, -420, - -420, -589, -373, 95, -442, -439, -436, -373, -373, -432, - -373, -362, -260, -420, -420, -420, -420, -260, -295, 56, - 57, 58, -436, -180, 59, 60, -585, -573, 38, -222, - -373, -330, -398, -398, -400, 385, 523, 256, -436, 287, - -631, -385, -385, -363, -362, -387, -382, -387, -387, -330, - -383, -385, -385, -400, -387, -383, -330, -373, 487, -330, - -330, -476, -385, -384, -373, -384, -420, -362, -363, -363, - -260, -260, -309, -316, -310, -317, 279, 253, 393, 394, - 250, 248, 11, 249, -324, 326, -421, 531, -290, -291, - 80, 45, -293, 277, 432, 428, 289, 293, 98, 294, - 465, 295, 258, 297, 298, 299, 314, 316, 269, 300, - 301, 302, 456, 303, 176, 315, 304, 305, 306, 411, - -285, 6, 361, 44, 54, 55, 479, 478, 576, 14, - 290, -373, -435, -589, -587, 34, -373, 34, -442, -436, - -373, -373, 172, 260, -207, -209, -206, -202, -203, -208, - -333, -335, -205, 88, -260, -194, -373, -453, 172, 511, - 513, 514, -617, -454, -617, -454, 260, 35, 455, -457, - 455, 35, -432, -451, 507, 509, -447, 94, 456, -437, - -456, 85, 168, -528, -454, -454, -456, -456, 158, 172, - -615, 512, 513, 244, -216, 104, -242, 664, -262, -260, - -589, -441, -432, -373, -510, -262, -262, -262, -375, -375, - 88, 171, 39, -373, -373, -373, -373, -329, 172, -328, - 19, -374, -373, 38, 94, 171, -150, -148, 126, -400, - -6, 646, -400, -6, -6, -400, -6, -400, -508, 164, - 104, 104, -352, 94, -352, 104, 104, 104, 579, 89, - 94, -445, 85, -522, -409, -566, 635, -226, 89, -219, - -564, -565, -219, -225, -373, -520, -252, 130, 130, 130, - 27, -522, -226, 89, -564, -216, 636, -218, 23, -213, - -212, -400, -373, 26, -119, -100, -576, 171, 172, -222, - -460, -440, -437, -462, 149, -373, -448, 172, 14, 684, - 92, 260, -602, -601, 447, 89, 172, -532, 261, 530, - 94, 681, 463, 238, 239, 109, 376, 110, 111, -491, - -408, -404, -398, -398, -396, -396, -402, 274, -402, 119, - -275, 167, 166, -275, -400, 682, -399, -570, 126, -400, - 38, 172, 38, 172, 86, 172, 89, -498, -400, 171, - 89, 89, 19, 19, 89, -400, 89, 89, 89, 89, - 19, 19, -400, 89, 171, 89, 89, 89, 89, 86, - 89, 172, 89, 89, 89, 89, 172, 172, -408, -408, - -400, -408, 89, 89, 89, -400, -400, -400, -408, 89, - -400, -400, -400, -400, -400, -400, -400, -400, -400, -400, - -222, -470, 482, -470, -470, 172, 172, 172, 89, -218, - 88, 104, 172, 677, -356, -355, 94, -146, 260, -373, - 662, -373, -146, -373, -373, 130, -146, 662, 94, 94, - -260, -362, -260, -362, 571, 42, 182, 186, 186, 185, - -373, 94, 39, 26, 26, 324, -245, 88, 88, -260, - -260, -260, -591, 433, -603, 172, 44, -601, 523, -176, - 337, -424, 86, -183, 344, 19, 14, -260, -260, -260, - -260, -274, 38, 19, -201, -261, -373, 88, 89, 172, - -373, -373, -373, -433, 86, -373, -363, -330, -330, -387, - -330, -330, 172, 25, -385, -387, -387, -252, -383, -252, - 171, -252, -362, -497, 38, -223, 172, 23, 279, -259, - -370, -256, -258, 264, -390, -257, 267, -560, 265, 263, - 114, 268, 322, 115, 258, -370, -370, 264, -294, 260, - 38, -370, -312, 258, 379, 322, 265, 23, 279, -311, - 258, 115, -373, 264, 268, 265, 263, -369, 130, -361, - 158, 260, 46, 411, -369, 577, 279, -369, -369, -369, - -369, -369, -369, -369, 296, 296, -369, -369, -369, -369, - -369, -369, -369, -369, -369, -369, -369, 177, -369, -369, - -369, -369, -369, -369, 88, 291, 292, 324, 250, -592, - 433, 34, 391, 391, 392, -603, 387, 45, 34, -184, - 385, -315, -313, -384, 34, -336, -337, -338, -339, -341, - -340, 71, 75, 77, 81, 72, 73, 74, 78, 83, - 76, 34, 172, -371, -376, 38, -373, 94, -371, -194, - -209, -207, -371, 88, -454, -616, -618, 515, 512, 518, - -456, -456, 104, 260, 88, 130, -456, -456, 44, -372, - -613, 519, 513, -218, 172, 85, -262, -236, -237, -238, - -239, -267, -349, 206, 209, 211, 212, 213, 214, 216, + 89, 172, -579, 110, 111, -581, 94, 220, 211, -374, + -117, 94, -546, -7, -11, -8, -9, -10, -47, -85, + -191, 568, 571, -549, -547, 88, 35, 457, 85, 19, + -461, 256, 525, 411, 283, 259, 387, -459, -442, -439, + -437, -373, -435, -438, -437, -464, -350, 489, -141, 472, + 471, 337, -401, -401, -401, -401, -401, 109, 120, 376, + 110, 111, -396, -417, 35, 333, 334, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397, -405, + -415, -492, 88, 140, 138, 142, 139, 122, -399, -399, + -397, -397, -265, -267, 161, 162, -286, -373, 168, 89, + 172, -401, -572, -571, 124, -401, -401, -401, -401, -428, + -430, -350, 88, -374, -569, -570, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 402, 397, 403, + 401, 390, 409, 404, 405, 204, 557, 558, 551, 552, + 553, 554, 555, 556, -407, -407, -401, -569, -407, -343, + 36, 35, -409, -409, -409, 89, -401, -582, 374, 373, + 375, -219, -374, -407, 89, 89, 89, 104, -409, -409, + -407, -397, -407, -407, -407, -407, -570, -570, -343, -343, + -343, -343, 149, -409, -409, -343, -343, -343, -343, 149, + -343, -343, -343, -343, -343, -343, -343, -343, -343, -343, + -343, 89, 89, 89, 149, -409, -216, -139, -530, -529, + -401, 44, -140, -217, -625, 656, 88, -350, -613, 94, + 94, 683, -145, 171, 19, 256, -145, 171, 664, 182, + -145, 19, -374, -374, 104, -374, 104, 256, 525, 256, + 525, -260, -260, 515, 516, 181, 185, 184, -374, 183, + -374, -374, 120, -374, -374, 38, -246, -235, -421, -421, + -421, -590, -374, 95, -443, -440, -437, -374, -374, -433, + -374, -363, -260, -421, -421, -421, -421, -260, -295, 56, + 57, 58, -437, -180, 59, 60, -586, -574, 38, -222, + -374, -331, -399, -399, -401, 387, 525, 256, -437, 287, + -632, -386, -386, -364, -363, -388, -383, -388, -388, -331, + -384, -386, -386, -401, -388, -384, -331, -374, 489, -331, + -331, -477, -386, -385, -374, -385, -421, -363, -364, -364, + -260, -260, -309, -316, -310, -317, 279, 253, 395, 396, + 250, 248, 11, 249, -325, 326, -422, 533, -290, -291, + 80, 45, -293, 277, 434, 430, 289, 293, 98, 294, + 467, 295, 258, 297, 298, 299, 314, 316, 269, 300, + 301, 302, 458, 303, 176, 315, 304, 305, 306, 413, + -285, 6, 361, 44, 54, 55, 481, 480, 578, 14, + 290, -374, -436, -590, -588, 34, -374, 34, -443, -437, + -374, -374, 172, 260, -207, -209, -206, -202, -203, -208, + -334, -336, -205, 88, -260, -194, -374, -454, 172, 513, + 515, 516, -618, -455, -618, -455, 260, 35, 457, -458, + 457, 35, -433, -452, 509, 511, -448, 94, 458, -438, + -457, 85, 168, -529, -455, -455, -457, -457, 158, 172, + -616, 514, 515, 244, -216, 104, -242, 666, -262, -260, + -590, -442, -433, -374, -511, -262, -262, -262, -376, -376, + 88, 171, 39, -374, -374, -374, -374, -330, 172, -329, + 19, -375, -374, 38, 94, 171, -150, -148, 126, -401, + -6, 648, -401, -6, -6, -401, -6, -401, -509, 164, + 104, 104, -353, 94, -353, 104, 104, 104, 581, 89, + 94, -446, 85, -523, -410, -567, 637, -226, 89, -219, + -565, -566, -219, -225, -374, -521, -252, 130, 130, 130, + 27, -523, -226, 89, -565, -216, 638, -218, 23, -213, + -212, -401, -374, 26, -119, -100, -577, 171, 172, -222, + -461, -441, -438, -463, 149, -374, -449, 172, 14, 686, + 92, 260, -603, -602, 449, 89, 172, -533, 261, 532, + 94, 683, 465, 238, 239, 109, 376, 110, 111, -492, + -409, -405, -399, -399, -397, -397, -403, 274, -403, 119, + -275, 167, 166, -275, -401, 684, -400, -571, 126, -401, + 38, 172, 38, 172, 86, 172, 89, -499, -401, 171, + 89, 89, 19, 19, 89, -401, 89, 89, 89, 89, + 19, 19, -401, 89, 171, 89, 89, 89, 89, 86, + 89, 172, 89, 89, 89, 89, 172, 172, -409, -409, + -401, -409, 89, 89, 89, -401, -401, -401, -409, 89, + -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, + -222, -471, 484, -471, -471, 172, 172, 172, 89, -218, + 88, 104, 172, 679, -357, -356, 94, -146, 260, -374, + 664, -374, -146, -374, -374, 130, -146, 664, 94, 94, + -260, -363, -260, -363, 573, 42, 182, 186, 186, 185, + -374, 94, 39, 26, 26, 324, -245, 88, 88, -260, + -260, -260, -592, 435, -604, 172, 44, -602, 525, -176, + 337, -425, 86, -183, 344, 19, 14, -260, -260, -260, + -260, -274, 38, 19, -201, -261, -374, 88, 89, 172, + -374, -374, -374, -434, 86, -374, -364, -331, -331, -388, + -331, -331, 172, 25, -386, -388, -388, -252, -384, -252, + 171, -252, -363, -498, 38, -223, 172, 23, 279, -259, + -371, -256, -258, 264, -391, -257, 267, -561, 265, 263, + 114, 268, 322, 115, 258, -371, -371, 264, -294, 260, + 38, -371, -312, 258, 379, 322, 265, 23, 279, -311, + 258, 115, -374, 264, 268, 265, 263, -370, 130, -362, + 158, 260, 46, 413, -370, 579, 279, -370, -370, -370, + -370, -370, -370, -370, 296, 296, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, 177, -370, -370, + -370, -370, -370, -370, 88, 291, 292, 324, 250, -593, + 435, 34, 393, 393, 394, -604, 389, 45, 34, -184, + 387, -315, -313, -385, 34, -337, -338, -339, -340, -342, + -341, 71, 75, 77, 81, 72, 73, 74, 78, 83, + 76, 34, 172, -372, -377, 38, -374, 94, -372, -194, + -209, -207, -372, 88, -455, -617, -619, 517, 514, 520, + -457, -457, 104, 260, 88, 130, -457, -457, 44, -373, + -614, 521, 515, -218, 172, 85, -262, -236, -237, -238, + -239, -267, -350, 206, 209, 211, 212, 213, 214, 216, 217, 218, 219, 220, 223, 224, 221, 222, 273, 201, - 202, 203, 204, 225, 189, 207, 572, 190, 191, 192, - 166, 167, 193, 196, 197, 198, 199, 195, -373, -246, - -242, -330, -197, -209, -373, 94, -373, 149, 127, -6, - 125, -154, -153, -152, 128, 644, 650, 127, 127, 127, + 202, 203, 204, 225, 189, 207, 574, 190, 191, 192, + 166, 167, 193, 196, 197, 198, 199, 195, -374, -246, + -242, -331, -197, -209, -374, 94, -374, 149, 127, -6, + 125, -154, -153, -152, 128, 646, 652, 127, 127, 127, 89, 89, 89, 172, 89, 89, 89, 172, 89, 172, - 104, -535, 492, 43, 172, 88, 89, 172, 64, 172, - 130, 89, 172, -400, -373, 94, -400, 202, 89, 64, - -218, 94, -140, 621, 172, -210, 40, 41, 171, 465, - -373, -546, 89, -462, 172, 260, 171, 171, -438, 414, - -372, -440, 23, 14, -349, 42, -356, 130, 681, -373, - 89, -402, -402, 119, -398, -395, 89, 127, -400, 125, - -265, -400, -265, -266, -272, 168, 205, 273, 204, 203, - 201, 161, 162, -284, -429, 571, -210, 89, -373, -400, - -400, 89, -400, -400, 19, -373, -284, -396, -400, -400, - -215, -215, 89, 89, -469, -470, -469, -469, 89, 89, - 89, 89, -469, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 88, 104, 106, 104, 106, -528, - -140, -625, 66, 652, 65, 455, 109, 327, 172, 104, - 94, 682, 172, 130, 385, -373, 19, 171, 94, -373, - 94, -373, 19, 19, -260, -260, 186, 94, -604, 331, - 385, 523, 256, 385, 331, 523, 256, -481, 104, 422, + 104, -536, 494, 43, 172, 88, 89, 172, 64, 172, + 130, 89, 172, -401, -374, 94, -401, 202, 89, 64, + -218, 94, -140, 623, 172, -210, 40, 41, 171, 467, + -374, -547, 89, -463, 172, 260, 171, 171, -439, 416, + -373, -441, 23, 14, -350, 42, -357, 130, 683, -374, + 89, -403, -403, 119, -399, -396, 89, 127, -401, 125, + -265, -401, -265, -266, -272, 168, 205, 273, 204, 203, + 201, 161, 162, -284, -430, 573, -210, 89, -374, -401, + -401, 89, -401, -401, 19, -374, -284, -397, -401, -401, + -215, -215, 89, 89, -470, -471, -470, -470, 89, 89, + 89, 89, -470, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 88, 104, 106, 104, 106, -529, + -140, -626, 66, 654, 65, 457, 109, 327, 172, 104, + 94, 684, 172, 130, 387, -374, 19, 171, 94, -374, + 94, -374, 19, 19, -260, -260, 186, 94, -605, 331, + 387, 525, 256, 387, 331, 525, 256, -482, 104, 424, -247, -248, -249, -250, -251, 140, 173, 174, -236, -223, - 88, -223, -594, 494, 435, 445, -369, -392, -391, 387, - 45, -515, 456, 441, 442, -439, 287, -362, -600, 101, - 130, 85, 365, 369, 371, 370, 366, 367, 368, -418, - -419, -417, -421, -362, -587, 88, 88, -191, 38, 138, - -183, 344, 88, 88, 38, -492, 355, -267, -260, -201, - -373, 19, 172, -586, 171, -1, -373, -373, -432, -385, - -330, -400, -400, -330, -385, -385, -387, -373, -252, -492, - -267, 38, -310, 253, 249, -466, 324, 325, -467, -482, - 327, -484, 88, -264, -349, -257, -559, -560, -420, -373, - 115, -559, 115, 88, -264, -349, -349, -313, -349, -373, - -373, -373, -373, -320, -319, -349, -322, 35, -323, -373, - -373, -373, -373, 115, -373, 115, -289, 44, 51, 52, - 53, -369, -369, 208, -292, 44, 455, 457, 458, -322, - 104, 104, 104, 104, 94, 94, 94, -369, -369, 104, - 94, -376, 94, -561, 185, 48, 49, 104, 104, 104, + 88, -223, -595, 496, 437, 447, -370, -393, -392, 389, + 45, -516, 458, 443, 444, -440, 287, -363, -601, 101, + 130, 85, 365, 369, 371, 370, 366, 367, 368, -419, + -420, -418, -422, -363, -588, 88, 88, -191, 38, 138, + -183, 344, 88, 88, 38, -493, 355, -267, -260, -201, + -374, 19, 172, -587, 171, -1, -374, -374, -433, -386, + -331, -401, -401, -331, -386, -386, -388, -374, -252, -493, + -267, 38, -310, 253, 249, -467, 324, 325, -468, -483, + 327, -485, 88, -264, -350, -257, -560, -561, -421, -374, + 115, -560, 115, 88, -264, -350, -350, -313, -350, -374, + -374, -374, -374, -320, -319, -350, -323, 35, -324, -374, + -374, -374, -374, 115, -374, 115, -289, 44, 51, 52, + 53, -370, -370, 208, -292, 44, 457, 459, 460, -323, + 104, 104, 104, 104, 94, 94, 94, -370, -370, 104, + 94, -377, 94, -562, 185, 48, 49, 104, 104, 104, 104, 44, 94, -297, 44, 307, 311, 308, 309, 310, - 94, 104, 44, 104, 44, 104, 44, -373, 88, -562, - -563, 94, -481, 260, -594, -369, 391, -453, 130, 130, - -392, -596, 98, 436, -596, -599, 337, -186, 523, 35, - -227, 253, 249, -587, -444, -443, -349, -206, -206, -206, + 94, 104, 44, 104, 44, 104, 44, -374, 88, -563, + -564, 94, -482, 260, -595, -370, 393, -454, 130, 130, + -393, -597, 98, 438, -597, -600, 337, -186, 525, 35, + -227, 253, 249, -588, -445, -444, -350, -206, -206, -206, -206, -206, -206, 71, 82, 71, -220, 88, 71, 76, - 71, 76, 71, -338, 71, 82, -444, -208, -223, -376, - 89, -610, -609, -608, -606, 79, 261, 80, -406, -456, - 512, 516, 517, -440, -388, 94, -447, -140, -260, -260, - -513, 317, 318, 89, 172, -267, -332, 21, 171, 123, - -6, -150, -152, -400, -6, -400, 646, 404, 647, 94, - 104, 104, -543, 476, 471, 473, 115, -409, -530, -529, - 64, -191, -219, -522, -565, -528, -373, 682, 682, 682, - 682, 94, 64, -191, -522, -140, -535, 14, -212, -211, - 47, -373, 104, 19, -437, -432, 149, 149, -373, 415, - -448, 94, 434, 94, 256, 682, 94, -356, -395, -400, - 89, 38, 89, 89, -499, -499, -498, -501, -498, -275, - -275, 89, 88, -210, 89, 26, 89, 89, 89, -400, - 89, 89, 172, 172, -518, 532, -519, 606, -469, -469, - -469, -469, -469, -469, -469, -469, -469, -469, -469, -469, - -469, -469, -469, -469, -469, -411, -410, 279, 477, 659, - 659, 477, 659, 659, 89, 172, -568, 172, -364, 332, - -364, -355, 94, -373, 94, 662, -373, 682, 682, 94, - -260, -362, -190, 354, -189, 124, 94, -373, -373, -373, - 324, -373, 324, -373, -373, 94, 94, 89, 172, -349, - 89, 38, -253, -254, -255, -264, -256, -258, 38, -595, - 98, -590, 94, -373, 95, -596, 170, 389, 44, 437, - 438, 453, 384, 104, 104, 443, -588, -373, -185, 256, - 385, -598, 55, 130, 94, -260, -417, -361, 158, 298, - -252, 358, -327, -326, -373, 94, -253, -191, -260, -260, - -253, -253, -191, -493, 357, 23, 104, 148, -224, 86, - 171, -209, -261, -373, 149, 89, -330, -252, -330, -330, - -385, -493, -191, -478, 328, 88, -476, 88, -476, 115, - 366, -485, -483, 279, -318, 48, 50, -267, -557, -373, - -555, -557, -373, -555, -555, -420, -400, -318, -264, 260, - 34, 249, -321, 363, 364, 369, 371, -449, 323, 120, - -449, 172, -210, 172, -373, -284, -284, 34, 94, 94, - -262, 89, 172, 130, 94, -435, -595, -590, 130, -454, - 94, 94, -596, 94, 94, -600, 130, -263, 256, -362, - 172, -227, -227, -330, 172, 130, -231, -230, 85, 86, - -232, 85, -230, -230, 71, -221, 94, 71, 71, -330, - -608, -607, 26, -560, -560, -560, 89, 89, -233, 26, - -238, 44, -331, 22, 23, 149, 127, 125, 127, 127, - -373, 89, 89, -505, 637, -539, -541, 471, 23, 23, - 17, 261, 89, -522, 682, -522, -233, -543, 415, 48, - 49, -432, -448, 456, -260, 172, 682, -265, -303, 94, - -400, 89, -400, -400, 89, 94, 89, 94, -215, 23, - 89, 172, 89, 89, 89, 172, 89, 89, -400, 89, - -568, -365, 202, 94, -365, -373, -374, -188, 260, -252, - 38, 422, 24, 585, 350, 94, -373, -481, 324, -481, - 324, 256, -373, -242, -425, 573, -249, -267, 254, -191, - 89, 172, -191, 94, -593, 447, 104, 44, 104, 170, - 439, -516, -177, 98, -262, 35, -227, -597, 98, 130, - 681, 88, -369, -369, -369, -188, -373, 89, 172, -369, - -369, 89, -188, 89, 89, -282, 14, -494, 278, 104, - 148, 104, 148, 104, -371, -209, -373, -330, -586, 171, - -330, -494, -468, 329, 104, -396, 88, -396, 88, -477, - 326, 88, 89, 172, -373, -349, -279, -278, -276, 109, - 120, 44, 428, -277, 98, 158, 312, 315, 314, 290, - 313, -308, -389, 85, 431, 363, 364, -421, 637, 562, - 263, 114, 115, 416, -390, 88, 88, 86, 332, 88, - 88, -557, 89, -318, -349, 44, -321, 44, 377, 323, - -319, -373, 158, -284, 89, -563, 94, -593, 94, -456, - -598, 94, -177, -262, -587, -215, -443, -528, -400, 88, - -400, 89, 88, 71, 11, 21, 17, -393, -400, -408, - 666, 668, 669, 262, -6, 647, 404, -299, 638, 94, - 23, 94, -537, 94, -444, -505, -408, -143, -296, -361, - 295, 89, -302, 140, 14, 89, 89, 89, -469, -469, - -472, -471, -475, 477, 324, 485, -408, 94, 94, 89, - 89, 94, 94, 385, -188, -260, 94, 104, 351, 352, - 353, 681, 94, -481, 94, -481, -373, 324, 94, 94, - -240, -267, -181, 14, -282, -255, -181, 23, 14, 388, - 44, 104, 44, 440, 94, -185, 130, 110, 111, -357, - -358, 94, -427, -284, -286, 94, -326, -393, -393, -280, - -191, 38, -281, -324, -421, -142, -141, -280, 88, -495, - 176, 104, 148, 104, 104, -330, -330, -495, -484, 23, - 89, -463, 89, -463, 88, 130, -396, -483, -486, 64, - -276, 109, -396, 94, -286, -287, 44, 311, 307, 130, - 130, -288, 44, 291, 292, -298, 88, 322, 17, 208, - 88, 115, 115, -260, -427, -427, -558, 365, 366, 367, - 372, 369, 370, 368, 371, -558, -427, -427, 88, -450, - -449, -396, -369, -369, 158, -597, -216, -222, -556, -373, - 263, 23, 23, -514, 14, 667, 88, 88, -373, -373, - -353, 639, 104, 94, 473, -299, -506, 640, -533, -476, - -284, 130, 89, 78, 572, 574, 89, -474, 122, 439, - 443, -394, -397, 104, 106, 200, 170, 89, 89, -373, - -360, -359, 94, -242, 94, -242, 94, 324, -481, 573, - -182, 63, 519, 94, 95, 434, 94, 95, 388, -177, - 94, 682, 172, 130, 89, -464, 279, -191, 172, -324, - -361, -143, -464, -283, -325, -373, 94, -512, 185, 356, - 14, 104, 148, 104, -215, -496, 185, 356, -467, 89, - 89, 89, -463, 104, 89, -490, -487, 88, -324, 281, - 140, 94, 94, 104, 88, -523, 34, 94, -428, 88, - 89, 89, 89, 89, -427, 104, -284, -369, 89, 89, - 172, 669, 88, -408, -408, 88, 23, -353, -507, 641, - 94, -542, 476, -536, -534, 471, 472, 473, 474, 94, - 573, 68, 575, -473, -474, 443, -394, -397, 635, 483, - 483, 483, 682, 172, 130, -242, -242, -481, 94, -243, - -373, 322, 456, -358, 94, -430, -465, 331, 23, -324, - -369, -465, 89, 172, -369, -369, 356, 104, 148, 104, - -216, 356, -479, 330, 89, -490, -324, -489, -488, 329, - 282, 88, 89, -400, -412, -369, 89, -301, -300, 570, - -427, -430, 86, -430, 86, -430, 86, -430, 86, 89, - -284, -373, 263, -138, 88, 89, 89, -354, -373, -537, - 94, -544, 261, -540, -541, 475, -534, 23, 473, 23, - 23, -144, 172, 68, 119, 484, 484, 484, -242, -359, - 94, 94, -242, -241, 38, 478, 415, -431, 269, 377, - 378, 98, 14, 363, 364, 382, 381, 380, 383, 23, - -466, -284, -325, -393, -393, 104, 104, 89, 172, -373, - 278, 88, -407, -401, -400, 278, 89, -373, -307, -305, - -306, 85, 490, 320, 321, 89, -558, -558, -558, -558, - -308, 89, 172, -406, 89, 172, -551, 88, 104, -539, - -538, -540, 23, -537, 23, -537, -537, 480, 14, -473, - -242, 94, -369, -369, 94, 94, 362, -369, -369, -369, - -349, 88, -478, -488, -487, -407, 89, 172, -449, -306, - 85, -305, 85, 18, 17, -430, -430, -430, -430, 88, - 89, -373, -554, 34, 89, -550, -549, -350, -545, -373, - 476, 477, 94, -537, 130, 574, -628, -627, 658, 104, - 104, -373, 104, 104, 104, -463, -468, 89, -401, -304, - 317, 318, 34, 185, -304, -406, -553, -552, -351, 89, - 172, 171, 94, 575, 94, 89, -484, 109, 44, 319, - 89, 172, 130, -549, -373, -552, 44, -400, 171, -373, + 71, 76, 71, -339, 71, 82, -445, -208, -223, -377, + 89, -611, -610, -609, -607, 79, 261, 80, -407, -457, + 514, 518, 519, -441, -389, 94, -448, -140, -260, -260, + -514, 317, 318, 89, 172, -267, -333, 21, 171, 123, + -6, -150, -152, -401, -6, -401, 648, 406, 649, 94, + 104, 104, -544, 478, 473, 475, 115, -410, -531, -530, + 64, -191, -219, -523, -566, -529, -374, 684, 684, 684, + 684, 94, 64, -191, -523, -140, -536, 14, -212, -211, + 47, -374, 104, 19, -438, -433, 149, 149, -374, 417, + -449, 94, 436, 94, 256, 684, 94, -357, -396, -401, + 89, 38, 89, 89, -500, -500, -499, -502, -499, -275, + -275, 89, 88, -210, 89, 26, 89, 89, 89, -401, + 89, 89, 172, 172, -519, 534, -520, 608, -470, -470, + -470, -470, -470, -470, -470, -470, -470, -470, -470, -470, + -470, -470, -470, -470, -470, -412, -411, 279, 479, 661, + 661, 479, 661, 661, 89, 172, -569, 172, -365, 332, + -365, -356, 94, -374, 94, 664, -374, 684, 684, 94, + -260, -363, -190, 354, -189, 124, 94, -374, -374, -374, + 324, -374, 324, -374, -374, 94, 94, 89, 172, -350, + 89, 38, -253, -254, -255, -264, -256, -258, 38, -596, + 98, -591, 94, -374, 95, -597, 170, 391, 44, 439, + 440, 455, 386, 104, 104, 445, -589, -374, -185, 256, + 387, -599, 55, 130, 94, -260, -418, -362, 158, 298, + -252, 358, -328, -327, -374, 94, -253, -191, -260, -260, + -253, -253, -191, -494, 357, 23, 104, 148, -224, 86, + 171, -209, -261, -374, 149, 89, -331, -252, -331, -331, + -386, -494, -191, -479, 328, 88, -477, 88, -477, 115, + 366, -486, -484, 279, -318, 48, 50, -267, -558, -374, + -556, -558, -374, -556, -556, -421, -401, -318, -264, 260, + 34, 249, -321, 369, 363, 364, 369, 371, -450, 323, + 120, -450, 172, -210, 172, -374, -284, -284, 34, 94, + 94, -262, 89, 172, 130, 94, -436, -596, -591, 130, + -455, 94, 94, -597, 94, 94, -601, 130, -263, 256, + -363, 172, -227, -227, -331, 172, 130, -231, -230, 85, + 86, -232, 85, -230, -230, 71, -221, 94, 71, 71, + -331, -609, -608, 26, -561, -561, -561, 89, 89, -233, + 26, -238, 44, -332, 22, 23, 149, 127, 125, 127, + 127, -374, 89, 89, -506, 639, -540, -542, 473, 23, + 23, 17, 261, 89, -523, 684, -523, -233, -544, 417, + 48, 49, -433, -449, 458, -260, 172, 684, -265, -303, + 94, -401, 89, -401, -401, 89, 94, 89, 94, -215, + 23, 89, 172, 89, 89, 89, 172, 89, 89, -401, + 89, -569, -366, 202, 94, -366, -374, -375, -188, 260, + -252, 38, 424, 24, 587, 350, 94, -374, -482, 324, + -482, 324, 256, -374, -242, -426, 575, -249, -267, 254, + -191, 89, 172, -191, 94, -594, 449, 104, 44, 104, + 170, 441, -517, -177, 98, -262, 35, -227, -598, 98, + 130, 683, 88, -370, -370, -370, -188, -374, 89, 172, + -370, -370, 89, -188, 89, 89, -282, 14, -495, 278, + 104, 148, 104, 148, 104, -372, -209, -374, -331, -587, + 171, -331, -495, -469, 329, 104, -397, 88, -397, 88, + -478, 326, 88, 89, 172, -374, -350, -279, -278, -276, + 109, 120, 44, 430, -277, 98, 158, 312, 315, 314, + 290, 313, -308, -390, 85, 433, 363, 364, -422, 639, + 564, 263, 114, 115, 418, -391, 88, 88, 86, 332, + 88, 88, -558, 89, -318, -350, 44, -321, 44, -322, + 385, -431, 323, -319, -374, 158, -284, 89, -564, 94, + -594, 94, -457, -599, 94, -177, -262, -588, -215, -444, + -529, -401, 88, -401, 89, 88, 71, 11, 21, 17, + -394, -401, -409, 668, 670, 671, 262, -6, 649, 406, + -299, 640, 94, 23, 94, -538, 94, -445, -506, -409, + -143, -296, -362, 295, 89, -302, 140, 14, 89, 89, + 89, -470, -470, -473, -472, -476, 479, 324, 487, -409, + 94, 94, 89, 89, 94, 94, 387, -188, -260, 94, + 104, 351, 352, 353, 683, 94, -482, 94, -482, -374, + 324, 94, 94, -240, -267, -181, 14, -282, -255, -181, + 23, 14, 390, 44, 104, 44, 442, 94, -185, 130, + 110, 111, -358, -359, 94, -428, -284, -286, 94, -327, + -394, -394, -280, -191, 38, -281, -325, -422, -142, -141, + -280, 88, -496, 176, 104, 148, 104, 104, -331, -331, + -496, -485, 23, 89, -464, 89, -464, 88, 130, -397, + -484, -487, 64, -276, 109, -397, 94, -286, -287, 44, + 311, 307, 130, 130, -288, 44, 291, 292, -298, 88, + 322, 17, 208, 88, 115, 115, -260, -428, -428, -559, + 365, 366, 367, 372, 369, 370, 368, 371, -559, -428, + -428, 88, -451, -450, -397, -431, 130, -432, 269, 377, + 378, 98, 14, 363, 364, 382, 381, 380, 383, 384, + 385, 390, 401, -370, 158, -598, -216, -222, -557, -374, + 263, 23, 23, -515, 14, 669, 88, 88, -374, -374, + -354, 641, 104, 94, 475, -299, -507, 642, -534, -477, + -284, 130, 89, 78, 574, 576, 89, -475, 122, 441, + 445, -395, -398, 104, 106, 200, 170, 89, 89, -374, + -361, -360, 94, -242, 94, -242, 94, 324, -482, 575, + -182, 63, 521, 94, 95, 436, 94, 95, 390, -177, + 94, 684, 172, 130, 89, -465, 279, -191, 172, -325, + -362, -143, -465, -283, -326, -374, 94, -513, 185, 356, + 14, 104, 148, 104, -215, -497, 185, 356, -468, 89, + 89, 89, -464, 104, 89, -491, -488, 88, -325, 281, + 140, 94, 94, 104, 88, -524, 34, 94, -429, 88, + 89, 89, 89, 89, -428, 110, 111, -370, -370, 94, + 94, 362, -370, -370, -370, 130, -370, -370, -284, -370, + 89, 89, 172, 671, 88, -409, -409, 88, 23, -354, + -508, 643, 94, -543, 478, -537, -535, 473, 474, 475, + 476, 94, 575, 68, 577, -474, -475, 445, -395, -398, + 637, 485, 485, 485, 684, 172, 130, -242, -242, -482, + 94, -243, -374, 322, 458, -359, 94, -431, -466, 331, + 23, -325, -370, -466, 89, 172, -370, -370, 356, 104, + 148, 104, -216, 356, -480, 330, 89, -491, -325, -490, + -489, 329, 282, 88, 89, -401, -413, -370, 89, -301, + -300, 572, -428, -431, 86, -431, 86, -431, 86, -431, + 86, 89, 104, 104, -374, 104, 104, 104, 110, 111, + 104, 104, -284, -374, 263, -138, 88, 89, 89, -355, + -374, -538, 94, -545, 261, -541, -542, 477, -535, 23, + 475, 23, 23, -144, 172, 68, 119, 486, 486, 486, + -242, -360, 94, 94, -242, -241, 38, 480, 417, 23, + -467, -284, -326, -394, -394, 104, 104, 89, 172, -374, + 278, 88, -408, -402, -401, 278, 89, -374, -307, -305, + -306, 85, 492, 320, 321, 89, -559, -559, -559, -559, + -308, 89, 172, -407, 89, 172, -552, 88, 104, -540, + -539, -541, 23, -538, 23, -538, -538, 482, 14, -474, + -242, 94, -350, 88, -479, -489, -488, -408, 89, 172, + -450, -306, 85, -305, 85, 18, 17, -431, -431, -431, + -431, 88, 89, -374, -555, 34, 89, -551, -550, -351, + -546, -374, 478, 479, 94, -538, 130, 576, -629, -628, + 660, -464, -469, 89, -402, -304, 317, 318, 34, 185, + -304, -407, -554, -553, -352, 89, 172, 171, 94, 577, + 94, 89, -485, 109, 44, 319, 89, 172, 130, -550, + -374, -553, 44, -401, 171, -374, } var yyDef = [...]int{ @@ -10000,424 +10040,426 @@ var yyDef = [...]int{ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 0, 324, 325, 326, - 327, 328, 329, 999, 1000, 1001, 1002, 1003, 1004, 1005, - 1006, 1007, 0, 0, 0, 0, 0, 734, 735, 0, - 698, 0, 0, 0, 0, 0, 0, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 441, 442, 443, 444, 445, + 327, 328, 329, 1002, 1003, 1004, 1005, 1006, 1007, 1008, + 1009, 1010, 0, 0, 0, 0, 0, 737, 738, 0, + 701, 0, 0, 0, 0, 0, 0, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, + 606, 607, 608, 609, 610, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 0, 358, 354, 266, - 267, 268, 269, 270, 271, 272, 365, 366, 547, 0, - 0, 0, 0, 817, -2, 110, 0, 0, 0, 0, - 0, 347, 0, 338, 338, 0, 0, 1008, 1009, 1010, - 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, - -2, 747, 0, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, + 267, 268, 269, 270, 271, 272, 365, 366, 550, 0, + 0, 0, 0, 820, -2, 110, 0, 0, 0, 0, + 0, 347, 0, 338, 338, 0, 0, 1011, 1012, 1013, + 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, + -2, 750, 0, 702, 703, 704, 705, 706, 707, 708, + 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 424, 425, 426, 420, 421, 423, 422, -2, 0, 0, - 747, 0, 0, 0, 825, 0, 0, 0, 870, 888, + 750, 0, 0, 0, 828, 0, 0, 0, 873, 891, 23, 0, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 0, 19, 0, 19, 0, 0, - 0, 1452, 1453, 1454, 1455, 2267, 2237, -2, 2000, 1974, - 2162, 2163, 2058, 2070, 1967, 2304, 2305, 2306, 2307, 2308, - 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, - 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, - 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, - 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, - 2349, 2350, 2351, 2352, 2353, 2354, 1923, 1924, 1925, 1926, - 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, - 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, - 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, - 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, - 1968, 1969, 1970, 1971, 1972, 1973, 1975, 1976, 1977, 1978, - 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, - 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, - 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, - 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, - 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, - 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, - 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2059, 2060, - 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2072, - 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, - 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, - 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, - 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, - 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, - 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, - 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, - 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, - 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2164, - 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, - 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, - 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, - -2, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, - 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, - 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, - 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, - 2235, 2236, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, - 2246, 2247, 2248, 2249, 2250, 2251, 2252, -2, -2, -2, - 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, - 2266, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, - 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, - 2287, 2288, 2289, 2290, 2291, 2292, 2293, 0, 322, 320, - 1939, 1967, 1974, 2000, 2058, 2070, 2071, 2110, 2162, 2163, - 2195, 2237, 2253, 2254, 2255, 2267, 0, 0, 1025, 0, - 795, 0, 0, 800, 1399, 795, 359, 736, 737, 825, - 853, 696, 0, 397, 0, 1990, 401, 2244, 0, 0, - 0, 0, 693, 391, 392, 393, 394, 395, 396, 0, - 0, 998, 0, 0, 387, 0, 353, 2060, 2266, 1456, - 0, 0, 0, 0, 0, 209, 1151, 211, 1153, 215, + 0, 1460, 1461, 1462, 1463, 2275, 2245, -2, 2008, 1982, + 2170, 2171, 2066, 2078, 1975, 2312, 2313, 2314, 2315, 2316, + 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, + 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, + 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, + 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, + 2357, 2358, 2359, 2360, 2361, 2362, 1931, 1932, 1933, 1934, + 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, + 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, + 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, + 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, + 1976, 1977, 1978, 1979, 1980, 1981, 1983, 1984, 1985, 1986, + 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, + 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, + 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, + 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, + 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, + 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2067, 2068, + 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2080, + 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, + 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, + 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, + 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, + 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, + 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, + 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, + 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, + 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2172, + 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, + 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, + 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, + -2, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, + 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, + 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, + 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, + 2243, 2244, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, + 2254, 2255, 2256, 2257, 2258, 2259, 2260, -2, -2, -2, + 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, + 2274, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, + 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, + 2295, 2296, 2297, 2298, 2299, 2300, 2301, 0, 322, 320, + 1947, 1975, 1982, 2008, 2066, 2078, 2079, 2118, 2170, 2171, + 2203, 2245, 2261, 2262, 2263, 2275, 0, 0, 1028, 0, + 798, 0, 0, 803, 1407, 798, 359, 739, 740, 828, + 856, 699, 0, 397, 0, 1998, 401, 2252, 0, 0, + 0, 0, 696, 391, 392, 393, 394, 395, 396, 0, + 0, 1001, 0, 0, 387, 0, 353, 2068, 2274, 1464, + 0, 0, 0, 0, 0, 209, 1154, 211, 1156, 215, 223, 0, 0, 0, 228, 229, 232, 233, 234, 235, 236, 0, 240, 0, 242, 245, 0, 247, 248, 0, - 251, 252, 253, 0, 263, 264, 265, 1154, 1155, 1156, - -2, 138, 1023, 1894, 1780, 0, 1787, 1800, 1811, 1538, - 1539, 1540, 1541, 0, 0, 0, 0, 0, 0, 1549, - 1550, 0, 1581, 2308, 2350, 2351, 0, 1559, 1560, 1561, - 1562, 1563, 1564, 0, 149, 161, 162, 1833, 1834, 1835, - 1836, 1837, 1838, 1839, 0, 1841, 1842, 1843, 1751, 1525, - 1452, 0, 2317, 0, 2339, 2345, 2346, 2347, 2348, 2338, - 0, 0, 1735, 0, 1725, 0, 0, -2, -2, 0, - 0, 2135, -2, 2352, 2353, 2354, 2314, 2335, 2343, 2344, - 2318, 2319, 2342, 2310, 2311, 2312, 2305, 2306, 2307, 2309, - 2321, 2323, 2334, 0, 2330, 2340, 2341, 2242, 0, 0, - 2289, 0, 0, 0, 2284, 163, 164, -2, -2, -2, + 251, 252, 253, 0, 263, 264, 265, 1157, 1158, 1159, + -2, 138, 1026, 1902, 1788, 0, 1795, 1808, 1819, 1546, + 1547, 1548, 1549, 0, 0, 0, 0, 0, 0, 1557, + 1558, 0, 1589, 2316, 2358, 2359, 0, 1567, 1568, 1569, + 1570, 1571, 1572, 0, 149, 161, 162, 1841, 1842, 1843, + 1844, 1845, 1846, 1847, 0, 1849, 1850, 1851, 1759, 1533, + 1460, 0, 2325, 0, 2347, 2353, 2354, 2355, 2356, 2346, + 0, 0, 1743, 0, 1733, 0, 0, -2, -2, 0, + 0, 2143, -2, 2360, 2361, 2362, 2322, 2343, 2351, 2352, + 2326, 2327, 2350, 2318, 2319, 2320, 2313, 2314, 2315, 2317, + 2329, 2331, 2342, 0, 2338, 2348, 2349, 2250, 0, 0, + 2297, 0, 0, 0, 2292, 163, 164, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, 1746, -2, 1748, -2, 1750, -2, - 1753, -2, -2, -2, -2, 1758, 1759, -2, 1761, -2, - -2, -2, -2, -2, -2, -2, 1737, 1738, 1739, 1740, - 1729, 1730, 1731, 1732, 1733, 1734, -2, -2, -2, 853, - 946, 0, 853, 0, 826, 875, 878, 881, 884, 829, + -2, -2, -2, -2, 1754, -2, 1756, -2, 1758, -2, + 1761, -2, -2, -2, -2, 1766, 1767, -2, 1769, -2, + -2, -2, -2, -2, -2, -2, 1745, 1746, 1747, 1748, + 1737, 1738, 1739, 1740, 1741, 1742, -2, -2, -2, 856, + 949, 0, 856, 0, 829, 878, 881, 884, 887, 832, 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, 349, 337, 339, 0, - 343, 0, 0, 339, 336, 330, 0, 1193, 1193, 1193, - 0, 0, 0, 1193, 1193, 1193, 1193, 1193, 0, 1193, - 0, 0, 0, 0, 0, 1193, 0, 1060, 1158, 1159, - 1160, 1191, 1192, 1285, 0, 0, 0, 752, 748, 749, - 750, 751, 839, 0, 841, 844, 0, 0, 673, 673, - 913, 913, 0, 619, 0, 0, 0, 673, 0, 633, - 625, 0, 0, 0, 673, 0, 0, 846, 846, 0, - 676, 683, 673, 673, -2, 673, 673, 670, 673, 0, - 0, 1207, 639, 640, 641, 625, 625, 644, 645, 646, - 656, 657, 684, 1918, 0, 0, 547, 547, 0, 547, - 547, 547, 0, 547, 547, 547, 0, 754, 2016, 2105, - 1997, 2076, 1949, 2060, 2266, 0, 295, 2135, 300, 0, - 1999, 2019, 0, 0, 2038, 0, -2, 0, 375, 853, - 0, 0, 825, 0, 0, 0, 0, 547, 547, 547, - 547, 547, 1284, 547, 547, 547, 547, 547, 0, 0, - 0, 547, 547, 547, 547, 0, 889, 890, 892, 893, - 894, 895, 896, 897, 898, 899, 900, 901, 5, 6, + 343, 0, 0, 339, 336, 330, 0, 1201, 1201, 1201, + 0, 0, 0, 1201, 1201, 1201, 1201, 1201, 0, 1201, + 0, 0, 0, 0, 0, 1201, 0, 1063, 1161, 1162, + 1163, 1199, 1200, 1293, 0, 0, 0, 755, 751, 752, + 753, 754, 842, 0, 844, 847, 0, 0, 676, 676, + 916, 916, 0, 622, 0, 0, 0, 676, 0, 636, + 628, 0, 0, 0, 676, 0, 0, 849, 849, 0, + 679, 686, 676, 676, -2, 676, 676, 673, 676, 0, + 0, 1215, 642, 643, 644, 628, 628, 647, 648, 649, + 659, 660, 687, 1926, 0, 0, 550, 550, 0, 550, + 550, 550, 0, 550, 550, 550, 0, 757, 2024, 2113, + 2005, 2084, 1957, 2068, 2274, 0, 295, 2143, 300, 0, + 2007, 2027, 0, 0, 2046, 0, -2, 0, 375, 856, + 0, 0, 828, 0, 0, 0, 0, 550, 550, 550, + 550, 550, 1292, 550, 550, 550, 550, 550, 0, 0, + 0, 550, 550, 550, 550, 0, 892, 893, 895, 896, + 897, 898, 899, 900, 901, 902, 903, 904, 5, 6, 19, 0, 0, 0, 0, 0, 0, 117, 116, 0, - 1895, 1913, 1846, 1847, 1848, 1900, 1850, 1904, 1904, 1904, - 1904, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, - 1888, 1904, 1904, 0, 0, 1893, 1870, 1902, 1902, 1902, - 1900, 1897, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, - 1859, 1860, 1861, 1862, 1863, 1864, 1907, 1907, 1910, 1910, - 1907, 0, 439, 437, 438, 1776, 0, 0, 0, 0, - 795, 799, 1397, 0, 0, 0, 853, -2, 0, 0, - 697, 398, 1457, 0, 0, 402, 0, 403, 0, 0, + 1903, 1921, 1854, 1855, 1856, 1908, 1858, 1912, 1912, 1912, + 1912, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, + 1896, 1912, 1912, 0, 0, 1901, 1878, 1910, 1910, 1910, + 1908, 1905, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, + 1867, 1868, 1869, 1870, 1871, 1872, 1915, 1915, 1918, 1918, + 1915, 0, 439, 437, 438, 1784, 0, 0, 0, 0, + 798, 802, 1405, 0, 0, 0, 856, -2, 0, 0, + 700, 398, 1465, 0, 0, 402, 0, 403, 0, 0, 405, 0, 0, 0, 427, 0, 430, 413, 414, 415, 416, 417, 409, 0, 189, 0, 389, 390, 0, 0, - 355, 0, 0, 0, 548, 0, 0, 0, 0, 0, + 355, 0, 0, 0, 551, 0, 0, 0, 0, 0, 0, 220, 216, 224, 227, 237, 244, 0, 256, 258, 261, 217, 225, 230, 231, 238, 259, 218, 221, 222, 226, 260, 262, 219, 239, 243, 257, 241, 246, 249, - 250, 255, 0, 190, 0, 0, 0, 0, 0, 1786, - 0, 0, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 0, + 250, 255, 0, 190, 0, 0, 0, 0, 0, 1794, + 0, 0, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, - 1780, 0, 0, 1544, 1545, 1546, 1547, 0, 1551, 0, - 1582, 0, 0, 0, 0, 0, 0, 1840, 1844, 0, - 1776, 1776, 0, 1776, 1772, 0, 0, 0, 0, 0, - 0, 1776, 1708, 0, 0, 1710, 1726, 0, 0, 1712, - 1713, 0, 1716, 1717, 1776, 0, 1776, 1721, 1776, 1776, - 1776, 1703, 1704, 0, 0, 1772, 1772, 1772, 1772, 0, - 0, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, - 1772, 1772, 1772, 1772, 1772, 1772, 0, 0, 0, 0, - 846, 0, 854, 0, -2, 0, 872, 874, 876, 877, - 879, 880, 882, 883, 885, 886, 831, 0, 0, 113, + 1788, 0, 0, 1552, 1553, 1554, 1555, 0, 1559, 0, + 1590, 0, 0, 0, 0, 0, 0, 1848, 1852, 0, + 1784, 1784, 0, 1784, 1780, 0, 0, 0, 0, 0, + 0, 1784, 1716, 0, 0, 1718, 1734, 0, 0, 1720, + 1721, 0, 1724, 1725, 1784, 0, 1784, 1729, 1784, 1784, + 1784, 1711, 1712, 0, 0, 1780, 1780, 1780, 1780, 0, + 0, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, + 1780, 1780, 1780, 1780, 1780, 1780, 0, 0, 0, 0, + 849, 0, 857, 0, -2, 0, 875, 877, 879, 880, + 882, 883, 885, 886, 888, 889, 834, 0, 0, 113, 0, 0, 0, 96, 0, 0, 94, 0, 0, 0, 0, 72, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 341, 0, 346, 332, 2097, 0, 331, - 0, 0, 0, 0, 0, 1022, 0, 0, 1193, 1193, - 1193, 1061, 0, 0, 0, 0, 0, 0, 0, 0, - 1193, 1193, 1193, 1193, 0, 1213, 0, 0, 0, 754, - 753, 0, 840, 0, 0, 71, 608, 609, 610, 913, - 0, 0, 612, 613, 0, 614, 0, 0, 625, 673, - 673, 631, 632, 627, 626, 679, 680, 676, 0, 676, - 676, 913, 0, 650, 651, 652, 673, 673, 658, 847, - 0, 659, 660, 676, 0, 681, 682, 913, 0, 0, - 913, 913, 0, 668, 669, 671, 673, 0, 0, 1193, - 0, 689, 627, 627, 1919, 1920, 0, 0, 1204, 0, - 0, 0, 0, 0, 692, 0, 0, 0, 456, 457, - 0, 0, 755, 0, 274, 278, 0, 281, 0, 2105, - 0, 2105, 0, 0, 288, 0, 0, 0, 0, 0, - 0, 318, 319, 0, 0, 0, 0, 309, 312, 1391, - 1392, 1148, 1149, 313, 314, 367, 368, 0, 846, 871, - 873, 867, 868, 869, 0, 1195, 0, 0, 0, 0, - 0, 547, 0, 0, 0, 0, 0, 730, 0, 1040, - 732, 0, 0, 0, 0, 0, 921, 915, 917, 993, - 149, 891, 8, 134, 131, 0, 19, 0, 0, 19, - 19, 0, 19, 323, 0, 1916, 1914, 1915, 1849, 1901, - 0, 1875, 0, 1876, 1877, 1878, 1889, 1890, 0, 0, - 1871, 0, 1872, 1873, 1874, 1865, 0, 1866, 1867, 0, - 1868, 1869, 321, 436, 0, 0, 1777, 1026, 0, 773, - 787, 768, 0, 776, 0, 0, 1399, 0, 0, 0, - 0, 756, 787, 758, 0, 776, 846, 823, 0, 851, + 0, 0, 0, 341, 0, 346, 332, 2105, 0, 331, + 0, 0, 0, 0, 0, 1025, 0, 0, 1201, 1201, + 1201, 1064, 0, 0, 0, 0, 0, 0, 0, 0, + 1201, 1201, 1201, 1201, 0, 1221, 0, 0, 0, 757, + 756, 0, 843, 0, 0, 71, 611, 612, 613, 916, + 0, 0, 615, 616, 0, 617, 0, 0, 628, 676, + 676, 634, 635, 630, 629, 682, 683, 679, 0, 679, + 679, 916, 0, 653, 654, 655, 676, 676, 661, 850, + 0, 662, 663, 679, 0, 684, 685, 916, 0, 0, + 916, 916, 0, 671, 672, 674, 676, 0, 0, 1201, + 0, 692, 630, 630, 1927, 1928, 0, 0, 1212, 0, + 0, 0, 0, 0, 695, 0, 0, 0, 456, 457, + 0, 0, 758, 0, 274, 278, 0, 281, 0, 2113, + 0, 2113, 0, 0, 288, 0, 0, 0, 0, 0, + 0, 318, 319, 0, 0, 0, 0, 309, 312, 1399, + 1400, 1151, 1152, 313, 314, 367, 368, 0, 849, 874, + 876, 870, 871, 872, 0, 1203, 0, 0, 0, 0, + 0, 550, 0, 0, 0, 0, 0, 733, 0, 1043, + 735, 0, 0, 0, 0, 0, 924, 918, 920, 996, + 149, 894, 8, 134, 131, 0, 19, 0, 0, 19, + 19, 0, 19, 323, 0, 1924, 1922, 1923, 1857, 1909, + 0, 1883, 0, 1884, 1885, 1886, 1897, 1898, 0, 0, + 1879, 0, 1880, 1881, 1882, 1873, 0, 1874, 1875, 0, + 1876, 1877, 321, 436, 0, 0, 1785, 1029, 0, 776, + 790, 771, 0, 779, 0, 0, 1407, 0, 0, 0, + 0, 759, 790, 761, 0, 779, 849, 826, 0, 854, 0, 0, 399, 0, 410, 404, 0, 411, 406, 407, - 0, 0, 429, 431, 432, 433, 434, 418, 419, 694, + 0, 0, 429, 431, 432, 433, 434, 418, 419, 697, 384, 385, 386, 376, 377, 378, 379, 380, 381, 382, 383, 0, 0, 388, 159, 0, 356, 357, 0, 0, - 0, 203, 204, 205, 206, 207, 208, 210, 194, 719, - 721, 1140, 1152, 0, 1143, 0, 213, 254, 186, 0, - 0, 0, 1781, 1782, 1783, 1784, 1785, 1790, 0, 1792, - 1794, 1796, 1798, 0, 1816, -2, -2, 1526, 1527, 1528, - 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1801, - 1814, 1815, 0, 0, 0, 0, 0, 0, 1812, 1812, - 1807, 0, 1556, 1586, 1598, 1598, 1565, 1393, 1394, 1542, - 0, 0, 1579, 1583, 0, 0, 0, 0, 0, 0, - 1175, 1900, 0, 150, 1771, 1674, 1675, 1676, 1677, 1678, - 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, - 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, - 1699, 1700, 1701, 1702, 0, 0, 1780, 0, 0, 0, - 1773, 1774, 0, 0, 0, 1662, 0, 0, 1668, 1669, - 1670, 0, 782, 0, 1736, 1709, 1727, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 945, 947, 0, 791, - 793, 794, 820, 851, 827, 0, 0, 0, 109, 114, - 0, 1252, 102, 0, 0, 0, 102, 0, 0, 0, - 102, 0, 0, 75, 1208, 76, 1210, 0, 0, 0, - 0, 0, 0, 350, 351, 0, 0, 345, 333, 2097, + 0, 203, 204, 205, 206, 207, 208, 210, 194, 722, + 724, 1143, 1155, 0, 1146, 0, 213, 254, 186, 0, + 0, 0, 1789, 1790, 1791, 1792, 1793, 1798, 0, 1800, + 1802, 1804, 1806, 0, 1824, -2, -2, 1534, 1535, 1536, + 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1809, + 1822, 1823, 0, 0, 0, 0, 0, 0, 1820, 1820, + 1815, 0, 1564, 1594, 1606, 1606, 1573, 1401, 1402, 1550, + 0, 0, 1587, 1591, 0, 0, 0, 0, 0, 0, + 1183, 1908, 0, 150, 1779, 1682, 1683, 1684, 1685, 1686, + 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, + 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, + 1707, 1708, 1709, 1710, 0, 0, 1788, 0, 0, 0, + 1781, 1782, 0, 0, 0, 1670, 0, 0, 1676, 1677, + 1678, 0, 785, 0, 1744, 1717, 1735, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 948, 950, 0, 794, + 796, 797, 823, 854, 830, 0, 0, 0, 109, 114, + 0, 1260, 102, 0, 0, 0, 102, 0, 0, 0, + 102, 0, 0, 75, 1216, 76, 1218, 0, 0, 0, + 0, 0, 0, 350, 351, 0, 0, 345, 333, 2105, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1076, 1077, 545, 1134, 0, 0, 0, 1150, - 1179, 1189, 0, 0, 0, 0, 0, 1258, 1062, 1067, - 1068, 1069, 1063, 1064, 1070, 1071, 0, 842, 0, 0, - 962, 611, 674, 675, 914, 615, 0, 0, 622, 2060, - 627, 913, 913, 634, 628, 635, 678, 636, 637, 638, - 676, 913, 913, 848, 673, 676, 661, 677, 676, 1399, - 665, 0, 672, 1399, 690, 1399, 0, 688, 642, 643, - 1260, 844, 454, 455, 460, 462, 0, 512, 512, 512, - 495, 512, 0, 0, 483, 1921, 0, 0, 0, 0, - 492, 1921, 0, 0, 1921, 1921, 1921, 1921, 1921, 1921, - 1921, 0, 0, 1921, 1921, 1921, 1921, 1921, 1921, 1921, - 1921, 1921, 1921, 1921, 0, 1921, 1921, 1921, 1921, 1921, - 1377, 1921, 0, 1205, 502, 503, 504, 505, 510, 511, - 0, 0, 0, 540, 0, 0, 1075, 0, 545, 0, - 0, 1117, 0, 0, 926, 0, 927, 928, 929, 924, - 964, 988, 988, 0, 988, 968, 1399, 0, 0, 0, + 0, 0, 1079, 1080, 548, 1137, 0, 0, 0, 1153, + 1187, 1197, 0, 0, 0, 0, 0, 1266, 1065, 1070, + 1071, 1072, 1066, 1067, 1073, 1074, 0, 845, 0, 0, + 965, 614, 677, 678, 917, 618, 0, 0, 625, 2068, + 630, 916, 916, 637, 631, 638, 681, 639, 640, 641, + 679, 916, 916, 851, 676, 679, 664, 680, 679, 1407, + 668, 0, 675, 1407, 693, 1407, 0, 691, 645, 646, + 1268, 847, 454, 455, 460, 462, 0, 512, 512, 512, + 495, 512, 0, 0, 483, 1929, 0, 0, 0, 0, + 492, 1929, 0, 0, 1929, 1929, 1929, 1929, 1929, 1929, + 1929, 0, 0, 1929, 1929, 1929, 1929, 1929, 1929, 1929, + 1929, 1929, 1929, 1929, 0, 1929, 1929, 1929, 1929, 1929, + 1385, 1929, 0, 1213, 502, 503, 504, 505, 510, 511, + 0, 0, 0, 543, 0, 0, 1078, 0, 548, 0, + 0, 1120, 0, 0, 929, 0, 930, 931, 932, 927, + 967, 991, 991, 0, 991, 971, 1407, 0, 0, 0, 286, 287, 275, 0, 276, 0, 0, 289, 290, 0, - 292, 293, 294, 301, 1997, 2076, 296, 298, 0, 0, + 292, 293, 294, 301, 2005, 2084, 296, 298, 0, 0, 302, 315, 316, 317, 0, 0, 307, 308, 0, 0, - 370, 371, 373, 0, 851, 1209, 73, 1196, 716, 1395, - 717, 718, 722, 0, 0, 725, 726, 727, 728, 729, - 1042, 0, 0, 1126, 1127, 1128, 1195, 913, 0, 922, - 0, 918, 994, 0, 996, 0, 0, 132, 19, 0, - 125, 122, 0, 0, 0, 0, 0, 1896, 1845, 1917, - 0, 0, 0, 1898, 0, 0, 0, 0, 0, 115, - 803, 763, 0, 767, 784, 0, 788, 0, 0, 780, - 772, 777, 0, 0, 797, 764, 1398, 0, 0, 0, - 0, 757, 0, 0, 762, 851, 0, 801, 0, 855, - 856, 859, 1458, 0, 412, 408, 428, 0, 0, 0, - 0, 197, 1137, 0, 198, 202, 192, 0, 0, 0, - 1142, 0, 1139, 1144, 0, 212, 0, 0, 187, 188, - 1243, 1252, 0, 0, 0, 1791, 1793, 1795, 1797, 1799, - 0, 1802, 1812, 1812, 1808, 0, 1803, 0, 1805, 0, - 1587, 1599, 1600, 1588, 1781, 1548, 0, 1584, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 859, 0, 0, - 1652, 1653, 0, 0, 1657, 0, 1659, 1660, 1661, 1663, - 0, 0, 0, 1667, 0, 1707, 1728, 1711, 1714, 0, - 1718, 0, 1720, 1722, 1723, 1724, 0, 0, 853, 853, - 0, 0, 1623, 1623, 1623, 0, 0, 0, 0, 1623, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1568, 0, 1569, 1570, 0, 0, 0, 948, 801, - 0, 0, 0, 0, 0, 1250, 0, 92, 0, 97, + 370, 371, 373, 0, 854, 1217, 73, 1204, 719, 1403, + 720, 721, 725, 0, 0, 728, 729, 730, 731, 732, + 1045, 0, 0, 1129, 1130, 1131, 1203, 916, 0, 925, + 0, 921, 997, 0, 999, 0, 0, 132, 19, 0, + 125, 122, 0, 0, 0, 0, 0, 1904, 1853, 1925, + 0, 0, 0, 1906, 0, 0, 0, 0, 0, 115, + 806, 766, 0, 770, 787, 0, 791, 0, 0, 783, + 775, 780, 0, 0, 800, 767, 1406, 0, 0, 0, + 0, 760, 0, 0, 765, 854, 0, 804, 0, 858, + 859, 862, 1466, 0, 412, 408, 428, 0, 0, 0, + 0, 197, 1140, 0, 198, 202, 192, 0, 0, 0, + 1145, 0, 1142, 1147, 0, 212, 0, 0, 187, 188, + 1251, 1260, 0, 0, 0, 1799, 1801, 1803, 1805, 1807, + 0, 1810, 1820, 1820, 1816, 0, 1811, 0, 1813, 0, + 1595, 1607, 1608, 1596, 1789, 1556, 0, 1592, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 862, 0, 0, + 1660, 1661, 0, 0, 1665, 0, 1667, 1668, 1669, 1671, + 0, 0, 0, 1675, 0, 1715, 1736, 1719, 1722, 0, + 1726, 0, 1728, 1730, 1731, 1732, 0, 0, 856, 856, + 0, 0, 1631, 1631, 1631, 0, 0, 0, 0, 1631, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1576, 0, 1577, 1578, 0, 0, 0, 951, 804, + 0, 0, 0, 0, 0, 1258, 0, 92, 0, 97, 0, 0, 93, 98, 0, 0, 95, 0, 104, 77, - 0, 0, 1216, 1217, 0, 0, 352, 340, 342, 0, - 334, 0, 1194, 0, 0, 0, 0, -2, 1042, 844, - 0, 844, 1087, 1921, 549, 0, 0, 1136, 0, 1106, - 0, 0, 0, -2, 0, 0, 0, 1189, 0, 0, - 0, 1262, 0, 0, 0, 741, 745, 23, 845, 0, - 618, 616, 0, 620, 0, 621, 673, 629, 630, 913, - 653, 654, 0, 0, 913, 673, 673, 664, 676, 685, - 0, 686, 1399, 1262, 0, 0, 1204, 1328, 1296, 473, - 0, 1412, 1413, 513, 0, 1419, 1428, 1193, 1490, 0, - 1428, 0, 0, 1430, 1431, 0, 0, 0, 0, 496, + 0, 0, 1224, 1225, 0, 0, 352, 340, 342, 0, + 334, 0, 1202, 0, 0, 0, 0, -2, 1045, 847, + 0, 847, 1090, 1929, 552, 0, 0, 1139, 0, 1109, + 0, 0, 0, -2, 0, 0, 0, 1197, 0, 0, + 0, 1270, 0, 0, 0, 744, 748, 23, 848, 0, + 621, 619, 0, 623, 0, 624, 676, 632, 633, 916, + 656, 657, 0, 0, 916, 676, 676, 667, 679, 688, + 0, 689, 1407, 1270, 0, 0, 1212, 1336, 1304, 473, + 0, 1420, 1421, 513, 0, 1427, 1436, 1201, 1498, 0, + 1436, 0, 0, 1438, 1439, 0, 0, 0, 0, 496, 497, 0, 482, 0, 0, 0, 0, 0, 0, 481, - 0, 0, 523, 0, 0, 0, 0, 0, 1922, 1921, - 1921, 0, 490, 491, 0, 494, 0, 0, 0, 0, - 0, 0, 0, 0, 1921, 1921, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1368, 0, 0, - 0, 0, 0, 0, 0, 1383, 1384, 0, 0, 1087, - 1921, 0, 0, 0, 0, 549, 1131, 1131, 1104, 1122, + 0, 0, 523, 0, 0, 0, 0, 0, 1930, 1929, + 1929, 0, 490, 491, 0, 494, 0, 0, 0, 0, + 0, 0, 0, 0, 1929, 1929, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1376, 0, 0, + 0, 0, 0, 0, 0, 1391, 1392, 0, 0, 1090, + 1929, 0, 0, 0, 0, 552, 1134, 1134, 1107, 1125, 0, 458, 459, 520, 0, 0, 0, 0, 0, 0, - 0, 954, 0, 0, 0, 953, 0, 0, 0, 0, - 0, 0, 0, 844, 989, 0, 991, 992, 966, -2, - 0, 926, 971, 1776, 0, 279, 280, 0, 0, 285, + 0, 957, 0, 0, 0, 956, 0, 0, 0, 0, + 0, 0, 0, 847, 992, 0, 994, 995, 969, -2, + 0, 929, 974, 1784, 0, 279, 280, 0, 0, 285, 303, 305, 277, 0, 0, 0, 304, 306, 310, 311, - 369, 372, 374, 801, 0, 0, 1286, 0, 1043, 1044, - 1046, 1047, 0, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, 1981, -2, -2, -2, + 369, 372, 374, 804, 0, 0, 1294, 0, 1046, 1047, + 1049, 1050, 0, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, 1989, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, 1041, 733, - 1129, 904, 916, 923, 995, 997, 150, 919, 0, 135, + -2, -2, -2, -2, -2, -2, -2, -2, 1044, 736, + 1132, 907, 919, 926, 998, 1000, 150, 922, 0, 135, 19, 134, 126, 127, 0, 19, 0, 0, 0, 0, - 1906, 1905, 1891, 0, 1892, 1903, 1908, 0, 1911, 0, - 440, 807, 0, 0, 787, 789, 0, 0, 787, 0, - 0, 796, 0, 0, 0, 0, 0, 0, 0, 787, - 801, 803, 824, 0, 0, 862, 860, 861, 0, 0, - 695, 160, 435, 0, 0, 0, 0, 0, 720, 0, - 1141, 194, 0, 0, 214, 0, 0, 0, 1252, 1247, - 1775, 1804, 1806, 0, 1813, 1809, 1543, 1552, 1580, 0, - 0, 0, 0, 0, 1589, 1904, 1904, 1592, 1900, 1902, - 1900, 1598, 1598, 0, 1176, 0, 1177, 859, 151, 0, - 0, 1658, 0, 0, 0, 783, 0, 0, 0, 0, - 1619, 1621, 1623, 1623, 1630, 1624, 1631, 1632, 1623, 1623, - 1623, 1623, 1637, 1623, 1623, 1623, 1623, 1623, 1623, 1623, - 1623, 1623, 1623, 1623, 1617, 0, 0, 1834, 1835, 792, - 821, 0, 0, 834, 835, 836, 837, 838, 0, 0, - 62, 62, 1252, 0, 0, 0, 0, 0, 108, 0, - 0, 0, 0, 0, 1220, 1225, 344, 0, 78, 79, + 1914, 1913, 1899, 0, 1900, 1911, 1916, 0, 1919, 0, + 440, 810, 0, 0, 790, 792, 0, 0, 790, 0, + 0, 799, 0, 0, 0, 0, 0, 0, 0, 790, + 804, 806, 827, 0, 0, 865, 863, 864, 0, 0, + 698, 160, 435, 0, 0, 0, 0, 0, 723, 0, + 1144, 194, 0, 0, 214, 0, 0, 0, 1260, 1255, + 1783, 1812, 1814, 0, 1821, 1817, 1551, 1560, 1588, 0, + 0, 0, 0, 0, 1597, 1912, 1912, 1600, 1908, 1910, + 1908, 1606, 1606, 0, 1184, 0, 1185, 862, 151, 0, + 0, 1666, 0, 0, 0, 786, 0, 0, 0, 0, + 1627, 1629, 1631, 1631, 1638, 1632, 1639, 1640, 1631, 1631, + 1631, 1631, 1645, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1631, 1625, 0, 0, 1842, 1843, 795, + 824, 0, 0, 837, 838, 839, 840, 841, 0, 0, + 62, 62, 1260, 0, 0, 0, 0, 0, 108, 0, + 0, 0, 0, 0, 1228, 1233, 344, 0, 78, 79, 81, 0, 0, 0, 0, 0, 0, 0, 91, 0, - 0, 1028, 1029, 1031, 0, 1034, 1035, 1036, 0, 0, - 1405, 0, 1091, 1088, 1089, 1090, 0, 1131, 550, 551, - 552, 553, 0, 0, 0, 1135, 0, 0, 1099, 0, - 0, 0, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, - -2, 1199, 0, 1399, 0, 0, 1405, 1235, 0, 0, - 1240, 0, 1405, 1405, 0, 1270, 0, 1259, 795, 0, - -2, 0, 0, 743, 0, 0, 963, 617, 623, 913, - 647, 849, 850, 1399, 913, 913, 673, 691, 687, 1270, - 1261, 0, 461, 512, 0, 1316, 0, 0, 1322, 0, - 1329, 466, 0, 514, 0, 1418, 1446, 1429, 1446, 1491, - 1446, 1446, 1193, 0, 514, 0, 0, 484, 0, 0, - 0, 0, 0, 480, 517, 859, 467, 469, 470, 471, + 0, 1031, 1032, 1034, 0, 1037, 1038, 1039, 0, 0, + 1413, 0, 1094, 1091, 1092, 1093, 0, 1134, 553, 554, + 555, 556, 0, 0, 0, 1138, 0, 0, 1102, 0, + 0, 0, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, + -2, 1207, 0, 1407, 0, 0, 1413, 1243, 0, 0, + 1248, 0, 1413, 1413, 0, 1278, 0, 1267, 798, 0, + -2, 0, 0, 746, 0, 0, 966, 620, 626, 916, + 650, 852, 853, 1407, 916, 916, 676, 694, 690, 1278, + 1269, 0, 461, 512, 0, 1324, 0, 0, 1330, 0, + 1337, 466, 0, 514, 0, 1426, 1454, 1437, 1454, 1499, + 1454, 1454, 1201, 0, 514, 0, 0, 484, 0, 0, + 0, 0, 0, 480, 517, 862, 467, 469, 470, 471, 521, 522, 524, 0, 526, 527, 486, 498, 499, 500, 501, 0, 0, 0, 493, 506, 507, 508, 509, 468, - 1345, 1346, 1347, 1350, 1351, 1352, 1353, 0, 0, 1356, - 1357, 1358, 1359, 1360, 1443, 1444, 1445, 1361, 1362, 1363, - 1364, 1365, 1366, 1367, 1385, 1386, 1387, 1388, 1389, 1390, - 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 0, 0, - 1380, 0, 0, 0, 1091, 0, 0, 0, 0, 0, - 1131, 543, 0, 0, 544, 1106, 0, 1124, 0, 1118, - 1119, 0, 0, 765, 913, 362, 0, 958, 949, 0, - 933, 0, 935, 955, 936, 956, 0, 0, 940, 0, - 942, 0, 938, 939, 944, 937, 913, 925, 965, 990, - 967, 970, 972, 973, 979, 0, 0, 0, 0, 273, - 282, 283, 284, 291, 0, 569, 297, 865, 1396, 723, - 724, 1287, 1288, 731, 0, 1048, 902, 0, 0, 130, - 133, 0, 128, 0, 0, 0, 0, 120, 118, 1899, - 0, 0, 809, 174, 0, 0, 0, 785, 0, 790, - 787, 771, 781, 770, 778, 779, 798, 1400, 1401, 1402, - 1403, 0, 787, 761, 760, 865, 807, 0, 857, 858, - 0, 1459, 400, 0, 1138, 194, 199, 200, 201, 195, - 193, 1145, 0, 1147, 0, 1245, 0, 0, 1810, 1585, - 1553, 0, 1555, 1557, 1590, 1591, 1593, 1594, 1595, 1596, - 1597, 1558, 0, 1178, 1654, 0, 1656, 1664, 1665, 0, - 1715, 1719, 0, 0, 0, 0, 0, 0, 1628, 1629, - 1633, 1634, 1635, 1636, 1638, 1639, 1640, 1641, 1642, 1643, - 1644, 1645, 1646, 1647, 1648, 853, 1618, 0, 0, 0, - 0, 0, 0, 0, 832, 0, 0, 0, 64, 0, - 64, 1251, 1253, 103, 105, 0, 99, 100, 101, 993, - 1229, 1399, 1218, 0, 1219, 0, 0, 80, 82, 0, - 2061, 0, 0, 0, 0, 1195, 1021, 1037, 1033, 0, - 0, 0, 0, 1406, 1407, 1409, 1410, 1411, 0, 1059, - 0, 0, 1079, 1080, 1081, 1093, 0, 555, 556, 0, - 0, 0, 568, 564, 565, 566, 546, 1130, 1113, 0, - 0, 1102, 0, 0, 1112, 0, 1200, 1921, 1921, 1921, - 1229, 0, 0, 1330, 1921, 1921, 0, 1237, 1239, 1229, - 0, 0, 1334, 1273, 0, 0, 1264, 0, 988, 0, - 0, 913, 742, 745, 746, 843, 624, 662, 666, 663, - 913, 1273, 453, 1294, 0, 0, 0, 0, 0, 1326, - 0, 0, 1298, 0, 485, 515, 0, -2, 0, 1447, - 0, 1432, 1447, 0, 0, 1446, 0, 474, 514, 0, - 0, 0, 528, 533, 534, 0, 530, 531, 1486, 0, - 532, 0, 519, 0, 525, 1348, 1349, 0, 1354, 1355, - 0, 1379, 0, 0, 464, 465, 535, 0, 0, 0, - 536, 537, 542, 1132, 1133, 1099, 0, 1113, 0, 1123, - 0, 1120, 1121, 853, 0, 0, 930, 959, 0, 0, - 931, 0, 932, 934, 957, 0, 951, 941, 943, 361, - 974, 0, 0, 976, 977, 978, 969, 299, 819, 0, - 1045, 0, 887, 0, 0, 920, 0, 19, 0, 0, - 123, 1909, 1912, 811, 0, 808, 175, 0, 0, 0, - 0, 775, 786, 769, 1404, 759, 822, 809, 0, 863, - 864, 196, 191, 1146, 1255, 0, 1246, 0, 1510, 1567, - 0, 1666, 0, 0, 1623, 1620, 1623, 1622, 1614, 0, - 1571, 0, 1573, 1574, 1575, 0, 1577, 1578, 0, 830, - 0, 60, 0, 63, 61, 0, 107, 1214, 0, 1229, - 0, 0, 0, 1224, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 89, 0, 0, 1030, 1032, 0, 1065, - 1334, 0, 1065, 1092, 1078, 0, 0, 557, 558, 0, - 561, 567, 1094, 0, 0, 1096, 1097, 1098, 0, 0, - 1110, 0, 0, 0, 0, 1188, 1190, 1206, 0, 0, - 0, -2, 1241, 0, -2, 1234, 0, 1279, 0, 1271, - 0, 1263, 0, 1266, 913, 913, -2, 739, 744, 0, - 667, 1279, 1296, 0, 1317, 0, 0, 0, 0, 0, - 0, 0, 1297, 0, 1310, 516, 1448, -2, 1462, 1464, - 0, 1205, 1467, 1468, 0, 0, 0, 0, 0, 0, - 1517, 1476, 0, 0, 1480, 1481, 1482, 0, 0, 1485, - 0, 1828, 1829, 0, 1489, 0, 0, 0, 0, 0, - 0, 0, 1426, 475, 476, 0, 478, 479, 1921, 1487, - 518, 472, 1921, 488, 1378, 1381, 1382, 541, 538, 539, - 1102, 1105, 1116, 1125, 766, 846, 363, 364, 960, 0, - 950, 952, 983, 980, 0, 0, 866, 1049, 903, 911, - 2289, 2291, 2288, 124, 129, 0, 0, 813, 0, 810, - 0, 804, 806, 185, 774, 811, 852, 145, 177, 0, - 0, 1554, 0, 0, 0, 1655, 1705, 1706, 1626, 1627, - 0, 1615, 0, 1609, 1610, 1611, 1616, 0, 0, 833, - 828, 65, 106, 0, 1215, 1221, 1222, 1223, 1226, 1227, - 1228, 69, 1195, 0, 1195, 0, 0, 0, 1024, 1038, - 0, 1051, 1058, 1072, 1211, 1408, 1057, 0, 0, 554, - 559, 0, 562, 563, 1114, 1113, 0, 1100, 1101, 0, - 1108, 0, 0, 1201, 1202, 1203, 1331, 1332, 1333, 1289, - 1236, 0, -2, 1342, 0, 1232, 1255, 1289, 0, 1267, - 0, 1274, 0, 1272, 1265, 853, 740, 1276, 463, 1328, - 1318, 0, 1320, 0, 0, 0, 0, 1299, -2, 0, - 1463, 1465, 1466, 1469, 1470, 1471, 1522, 1523, 1524, 0, - 0, 1474, 1519, 1520, 1521, 1475, 0, 0, 0, 0, - 0, 1826, 1827, 1515, 0, 0, 1433, 1435, 1436, 1437, - 1438, 1439, 1440, 1441, 1442, 1434, 0, 0, 0, 1425, - 1427, 477, 0, 0, 1921, 1115, 360, 0, 0, 984, - 986, 981, 982, 905, 0, 0, 0, 0, 119, 121, - 136, 0, 812, 176, 0, 813, 147, 0, 168, 0, - 1256, 0, 1566, 0, 0, 0, 1625, 1612, 0, 0, - 0, 0, 0, 1830, 1831, 1832, 0, 1572, 1576, 1230, - 0, 67, 0, 84, 1195, 85, 1195, 0, 0, 0, - 0, 1073, 1074, 1082, 1083, 0, 1085, 1086, 560, 1095, - 1103, 1107, 1110, 0, 1162, 1291, 0, 1238, 1204, 1344, - 1921, 1242, 1291, 0, 1336, 1921, 1921, 1257, 0, 1269, - 0, 1281, 0, 1275, 846, 452, 0, 1278, 1314, 1319, - 1321, 1323, 0, 1327, 1325, 1300, -2, 0, 1308, 0, - 0, 1472, 1473, 0, 0, 1725, 1921, 0, 1505, 0, - 1162, 1162, 1162, 1162, 0, 529, 487, 0, 961, 975, - 0, 912, 0, 0, 0, 0, 0, 802, 137, 0, - 146, 165, 0, 178, 179, 0, 0, 0, 0, 1248, - 0, 1513, 1514, 0, 1601, 0, 0, 0, 1605, 1606, - 1607, 1608, 1195, 69, 0, 86, 87, 0, 1195, 0, - 1050, 0, 1084, 1109, 1111, 1161, 1231, 0, 1328, 1343, - 0, 1233, 1335, 0, 0, 0, 1268, 1280, 0, 1283, - 738, 1277, 1295, 0, 1324, 1301, 1309, 0, 1304, 0, - 0, 0, 1518, 0, 1479, 0, 1484, 1493, 1506, 0, - 0, 1414, 0, 1416, 0, 1420, 0, 1422, 0, 0, - 489, 985, 987, 0, 1776, 907, 908, 0, 815, 805, - 148, 152, 0, 174, 171, 0, 180, 0, 0, 0, - 0, 1244, 0, 1511, 0, 1602, 1603, 1604, 66, 68, - 70, 1195, 88, 0, 1052, 1053, 1066, 1163, 1921, 1921, - 0, 0, 0, 1169, 1170, 1921, 1921, 1921, 1174, 0, - 1316, 1348, 1337, 1338, 1339, 1282, 1315, 1303, 0, -2, - 1311, 0, 0, 1778, 1788, 1789, 1477, 1483, 1492, 1494, - 1495, 0, 1507, 1508, 1509, 1516, 1162, 1162, 1162, 1162, - 1424, 906, 0, 0, 814, 0, 139, 0, 0, 169, - 170, 172, 0, 181, 0, 183, 184, 0, 0, 1613, - 90, 1054, 0, 0, 1166, 1167, 0, 0, 0, 0, - 1292, 0, 1294, 1305, -2, 0, 1313, 0, 1478, 1496, - 0, 1497, 0, 0, 0, 1415, 1417, 1421, 1423, 1776, - 909, 816, 1254, 0, 153, 0, 155, 157, 158, 1449, - 166, 167, 173, 182, 0, 0, 1039, 1055, 0, 1164, - 1165, 1168, 1171, 1172, 1173, 0, 1296, 1312, 1779, 1498, - 1500, 1501, 0, 0, 1499, 0, 140, 141, 0, 154, - 0, 0, 1249, 1512, 1056, 1293, 1290, 1502, 1504, 1503, - 910, 0, 0, 156, 1450, 142, 143, 144, 0, 1451, + 1353, 1354, 1355, 1358, 1359, 1360, 1361, 0, 0, 1364, + 1365, 1366, 1367, 1368, 1451, 1452, 1453, 1369, 1370, 1371, + 1372, 1373, 1374, 1375, 1393, 1394, 1395, 1396, 1397, 1398, + 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 0, 0, + 1388, 0, 0, 0, 1094, 0, 0, 0, 0, 0, + 1134, 546, 0, 0, 547, 1109, 0, 1127, 0, 1121, + 1122, 0, 0, 768, 916, 362, 0, 961, 952, 0, + 936, 0, 938, 958, 939, 959, 0, 0, 943, 0, + 945, 0, 941, 942, 947, 940, 916, 928, 968, 993, + 970, 973, 975, 976, 982, 0, 0, 0, 0, 273, + 282, 283, 284, 291, 0, 572, 297, 868, 1404, 726, + 727, 1295, 1296, 734, 0, 1051, 905, 0, 0, 130, + 133, 0, 128, 0, 0, 0, 0, 120, 118, 1907, + 0, 0, 812, 174, 0, 0, 0, 788, 0, 793, + 790, 774, 784, 773, 781, 782, 801, 1408, 1409, 1410, + 1411, 0, 790, 764, 763, 868, 810, 0, 860, 861, + 0, 1467, 400, 0, 1141, 194, 199, 200, 201, 195, + 193, 1148, 0, 1150, 0, 1253, 0, 0, 1818, 1593, + 1561, 0, 1563, 1565, 1598, 1599, 1601, 1602, 1603, 1604, + 1605, 1566, 0, 1186, 1662, 0, 1664, 1672, 1673, 0, + 1723, 1727, 0, 0, 0, 0, 0, 0, 1636, 1637, + 1641, 1642, 1643, 1644, 1646, 1647, 1648, 1649, 1650, 1651, + 1652, 1653, 1654, 1655, 1656, 856, 1626, 0, 0, 0, + 0, 0, 0, 0, 835, 0, 0, 0, 64, 0, + 64, 1259, 1261, 103, 105, 0, 99, 100, 101, 996, + 1237, 1407, 1226, 0, 1227, 0, 0, 80, 82, 0, + 2069, 0, 0, 0, 0, 1203, 1024, 1040, 1036, 0, + 0, 0, 0, 1414, 1415, 1417, 1418, 1419, 0, 1062, + 0, 0, 1082, 1083, 1084, 1096, 0, 558, 559, 0, + 0, 0, 571, 567, 568, 569, 549, 1133, 1116, 0, + 0, 1105, 0, 0, 1115, 0, 1208, 1929, 1929, 1929, + 1237, 0, 0, 1338, 1929, 1929, 0, 1245, 1247, 1237, + 0, 0, 1342, 1281, 0, 0, 1272, 0, 991, 0, + 0, 916, 745, 748, 749, 846, 627, 665, 669, 666, + 916, 1281, 453, 1302, 0, 0, 0, 0, 0, 1334, + 0, 0, 1306, 0, 485, 515, 0, -2, 0, 1455, + 0, 1440, 1455, 0, 0, 1454, 0, 474, 514, 0, + 0, 0, 528, 0, 534, 535, 1165, 531, 532, 1494, + 0, 533, 0, 519, 0, 525, 1356, 1357, 0, 1362, + 1363, 0, 1387, 0, 0, 464, 465, 538, 0, 0, + 0, 539, 540, 545, 1135, 1136, 1102, 0, 1116, 0, + 1126, 0, 1123, 1124, 856, 0, 0, 933, 962, 0, + 0, 934, 0, 935, 937, 960, 0, 954, 944, 946, + 361, 977, 0, 0, 979, 980, 981, 972, 299, 822, + 0, 1048, 0, 890, 0, 0, 923, 0, 19, 0, + 0, 123, 1917, 1920, 814, 0, 811, 175, 0, 0, + 0, 0, 778, 789, 772, 1412, 762, 825, 812, 0, + 866, 867, 196, 191, 1149, 1263, 0, 1254, 0, 1518, + 1575, 0, 1674, 0, 0, 1631, 1628, 1631, 1630, 1622, + 0, 1579, 0, 1581, 1582, 1583, 0, 1585, 1586, 0, + 833, 0, 60, 0, 63, 61, 0, 107, 1222, 0, + 1237, 0, 0, 0, 1232, 0, 0, 83, 0, 0, + 0, 0, 0, 0, 89, 0, 0, 1033, 1035, 0, + 1068, 1342, 0, 1068, 1095, 1081, 0, 0, 560, 561, + 0, 564, 570, 1097, 0, 0, 1099, 1100, 1101, 0, + 0, 1113, 0, 0, 0, 0, 1196, 1198, 1214, 0, + 0, 0, -2, 1249, 0, -2, 1242, 0, 1287, 0, + 1279, 0, 1271, 0, 1274, 916, 916, -2, 742, 747, + 0, 670, 1287, 1304, 0, 1325, 0, 0, 0, 0, + 0, 0, 0, 1305, 0, 1318, 516, 1456, -2, 1470, + 1472, 0, 1213, 1475, 1476, 0, 0, 0, 0, 0, + 0, 1525, 1484, 0, 0, 1488, 1489, 1490, 0, 0, + 1493, 0, 1836, 1837, 0, 1497, 0, 0, 0, 0, + 0, 0, 0, 1434, 475, 476, 0, 478, 479, 1165, + 0, 530, 1495, 518, 472, 1929, 488, 1386, 1389, 1390, + 544, 541, 542, 1105, 1108, 1119, 1128, 769, 849, 363, + 364, 963, 0, 953, 955, 986, 983, 0, 0, 869, + 1052, 906, 914, 2297, 2299, 2296, 124, 129, 0, 0, + 816, 0, 813, 0, 807, 809, 185, 777, 814, 855, + 145, 177, 0, 0, 1562, 0, 0, 0, 1663, 1713, + 1714, 1634, 1635, 0, 1623, 0, 1617, 1618, 1619, 1624, + 0, 0, 836, 831, 65, 106, 0, 1223, 1229, 1230, + 1231, 1234, 1235, 1236, 69, 1203, 0, 1203, 0, 0, + 0, 1027, 1041, 0, 1054, 1061, 1075, 1219, 1416, 1060, + 0, 0, 557, 562, 0, 565, 566, 1117, 1116, 0, + 1103, 1104, 0, 1111, 0, 0, 1209, 1210, 1211, 1339, + 1340, 1341, 1297, 1244, 0, -2, 1350, 0, 1240, 1263, + 1297, 0, 1275, 0, 1282, 0, 1280, 1273, 856, 743, + 1284, 463, 1336, 1326, 0, 1328, 0, 0, 0, 0, + 1307, -2, 0, 1471, 1473, 1474, 1477, 1478, 1479, 1530, + 1531, 1532, 0, 0, 1482, 1527, 1528, 1529, 1483, 0, + 0, 0, 0, 0, 1834, 1835, 1523, 0, 0, 1441, + 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1442, 0, + 0, 0, 1433, 1435, 477, 529, 0, 1166, 1929, 1929, + 0, 0, 0, 1172, 1173, 1929, 1929, 1929, 1177, 1178, + 0, 1929, 1929, 0, 1929, 1118, 360, 0, 0, 987, + 989, 984, 985, 908, 0, 0, 0, 0, 119, 121, + 136, 0, 815, 176, 0, 816, 147, 0, 168, 0, + 1264, 0, 1574, 0, 0, 0, 1633, 1620, 0, 0, + 0, 0, 0, 1838, 1839, 1840, 0, 1580, 1584, 1238, + 0, 67, 0, 84, 1203, 85, 1203, 0, 0, 0, + 0, 1076, 1077, 1085, 1086, 0, 1088, 1089, 563, 1098, + 1106, 1110, 1113, 0, 1165, 1299, 0, 1246, 1212, 1352, + 1929, 1250, 1299, 0, 1344, 1929, 1929, 1265, 0, 1277, + 0, 1289, 0, 1283, 849, 452, 0, 1286, 1322, 1327, + 1329, 1331, 0, 1335, 1333, 1308, -2, 0, 1316, 0, + 0, 1480, 1481, 0, 0, 1733, 1929, 0, 1513, 0, + 1165, 1165, 1165, 1165, 0, 536, 537, 0, 0, 1169, + 1170, 0, 0, 0, 0, 0, 0, 0, 487, 0, + 964, 978, 0, 915, 0, 0, 0, 0, 0, 805, + 137, 0, 146, 165, 0, 178, 179, 0, 0, 0, + 0, 1256, 0, 1521, 1522, 0, 1609, 0, 0, 0, + 1613, 1614, 1615, 1616, 1203, 69, 0, 86, 87, 0, + 1203, 0, 1053, 0, 1087, 1112, 1114, 1164, 1239, 0, + 1336, 1351, 0, 1241, 1343, 0, 0, 0, 1276, 1288, + 0, 1291, 741, 1285, 1303, 0, 1332, 1309, 1317, 0, + 1312, 0, 0, 0, 1526, 0, 1487, 0, 1492, 1501, + 1514, 0, 0, 1422, 0, 1424, 0, 1428, 0, 1430, + 0, 0, 1167, 1168, 1171, 1174, 1175, 1176, 1179, 1180, + 1181, 1182, 489, 988, 990, 0, 1784, 910, 911, 0, + 818, 808, 148, 152, 0, 174, 171, 0, 180, 0, + 0, 0, 0, 1252, 0, 1519, 0, 1610, 1611, 1612, + 66, 68, 70, 1203, 88, 0, 1055, 1056, 1069, 0, + 1324, 1356, 1345, 1346, 1347, 1290, 1323, 1311, 0, -2, + 1319, 0, 0, 1786, 1796, 1797, 1485, 1491, 1500, 1502, + 1503, 0, 1515, 1516, 1517, 1524, 1165, 1165, 1165, 1165, + 1432, 909, 0, 0, 817, 0, 139, 0, 0, 169, + 170, 172, 0, 181, 0, 183, 184, 0, 0, 1621, + 90, 1057, 1300, 0, 1302, 1313, -2, 0, 1321, 0, + 1486, 1504, 0, 1505, 0, 0, 0, 1423, 1425, 1429, + 1431, 1784, 912, 819, 1262, 0, 153, 0, 155, 157, + 158, 1457, 166, 167, 173, 182, 0, 0, 1042, 1058, + 0, 0, 1304, 1320, 1787, 1506, 1508, 1509, 0, 0, + 1507, 0, 140, 141, 0, 154, 0, 0, 1257, 1520, + 1059, 1301, 1298, 1510, 1512, 1511, 913, 0, 0, 156, + 1458, 142, 143, 144, 0, 1459, } var yyTok1 = [...]int{ @@ -10426,14 +10468,14 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 121, 3, 3, 3, 152, 144, 3, 88, 89, 149, 147, 172, 148, 171, 150, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 683, 680, - 131, 130, 132, 3, 684, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 685, 682, + 131, 130, 132, 3, 686, 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, 154, 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, 681, 143, 682, 155, + 3, 3, 3, 683, 143, 684, 155, } var yyTok2 = [...]int{ @@ -10547,7 +10589,7 @@ var yyTok3 = [...]int{ 57990, 665, 57991, 666, 57992, 667, 57993, 668, 57994, 669, 57995, 670, 57996, 671, 57997, 672, 57998, 673, 57999, 674, 58000, 675, 58001, 676, 58002, 677, 58003, 678, 58004, 679, - 0, + 58005, 680, 58006, 681, 0, } var yyErrorMessages = [...]struct { @@ -10897,13 +10939,13 @@ yydefault: case 2: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:864 +//line mysql_sql.y:865 { yylex.(*Lexer).AppendStmt(yyDollar[1].statementUnion()) } case 4: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:871 +//line mysql_sql.y:872 { if yyDollar[1].statementUnion() != nil { yylex.(*Lexer).AppendStmt(yyDollar[1].statementUnion()) @@ -10911,7 +10953,7 @@ yydefault: } case 5: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:877 +//line mysql_sql.y:878 { if yyDollar[3].statementUnion() != nil { yylex.(*Lexer).AppendStmt(yyDollar[3].statementUnion()) @@ -10920,7 +10962,7 @@ yydefault: case 6: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:885 +//line mysql_sql.y:886 { yyLOCAL = tree.NewCompoundStmt(yyDollar[2].statementsUnion()) } @@ -10928,7 +10970,7 @@ yydefault: case 7: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Statement -//line mysql_sql.y:891 +//line mysql_sql.y:892 { yyLOCAL = []tree.Statement{yyDollar[1].statementUnion()} } @@ -10936,7 +10978,7 @@ yydefault: case 8: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Statement -//line mysql_sql.y:895 +//line mysql_sql.y:896 { yyLOCAL = append(yyDollar[1].statementsUnion(), yyDollar[3].statementUnion()) } @@ -10944,7 +10986,7 @@ yydefault: case 18: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:910 +//line mysql_sql.y:911 { yyLOCAL = yyDollar[1].statementUnion() } @@ -10952,7 +10994,7 @@ yydefault: case 19: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:914 +//line mysql_sql.y:915 { yyLOCAL = tree.Statement(nil) } @@ -10960,7 +11002,7 @@ yydefault: case 20: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:920 +//line mysql_sql.y:921 { yyLOCAL = yyDollar[1].statementUnion() } @@ -10968,7 +11010,7 @@ yydefault: case 22: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:925 +//line mysql_sql.y:926 { yyLOCAL = yyDollar[1].statementUnion() } @@ -10976,7 +11018,7 @@ yydefault: case 23: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:929 +//line mysql_sql.y:930 { yyLOCAL = tree.Statement(nil) } @@ -10984,7 +11026,7 @@ yydefault: case 51: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:962 +//line mysql_sql.y:963 { yyLOCAL = yyDollar[1].selectUnion() } @@ -10992,7 +11034,7 @@ yydefault: case 60: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:976 +//line mysql_sql.y:977 { var timestamp = yyDollar[2].str var isS3 = false @@ -11007,7 +11049,7 @@ yydefault: case 61: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:987 +//line mysql_sql.y:988 { var timestamp = yyDollar[2].str var isS3 = true @@ -11021,32 +11063,32 @@ yydefault: yyVAL.union = yyLOCAL case 62: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:999 +//line mysql_sql.y:1000 { yyVAL.str = "" } case 63: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:1003 +//line mysql_sql.y:1004 { yyVAL.str = yyDollar[2].str } case 64: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:1008 +//line mysql_sql.y:1009 { yyVAL.str = "" } case 65: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:1012 +//line mysql_sql.y:1013 { yyVAL.str = yyDollar[2].str } case 66: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1018 +//line mysql_sql.y:1019 { yyLOCAL = &tree.CreateCDC{ IfNotExists: yyDollar[3].ifNotExistsUnion(), @@ -11063,7 +11105,7 @@ yydefault: case 67: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:1033 +//line mysql_sql.y:1034 { yyLOCAL = yyDollar[1].strsUnion() } @@ -11071,7 +11113,7 @@ yydefault: case 68: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:1037 +//line mysql_sql.y:1038 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } @@ -11079,7 +11121,7 @@ yydefault: case 69: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:1041 +//line mysql_sql.y:1042 { yyLOCAL = []string{} } @@ -11087,7 +11129,7 @@ yydefault: case 70: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:1045 +//line mysql_sql.y:1046 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) @@ -11096,7 +11138,7 @@ yydefault: case 71: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1052 +//line mysql_sql.y:1053 { yyLOCAL = &tree.ShowCDC{ Option: yyDollar[3].allCDCOptionUnion(), @@ -11106,7 +11148,7 @@ yydefault: case 72: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1060 +//line mysql_sql.y:1061 { yyLOCAL = &tree.PauseCDC{ Option: yyDollar[3].allCDCOptionUnion(), @@ -11116,7 +11158,7 @@ yydefault: case 73: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1068 +//line mysql_sql.y:1069 { yyLOCAL = tree.NewDropCDC(yyDollar[3].allCDCOptionUnion(), yyDollar[4].boolValUnion()) } @@ -11124,7 +11166,7 @@ yydefault: case 74: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.AllOrNotCDC -//line mysql_sql.y:1074 +//line mysql_sql.y:1075 { yyLOCAL = &tree.AllOrNotCDC{ All: true, @@ -11135,7 +11177,7 @@ yydefault: case 75: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AllOrNotCDC -//line mysql_sql.y:1081 +//line mysql_sql.y:1082 { yyLOCAL = &tree.AllOrNotCDC{ All: false, @@ -11146,7 +11188,7 @@ yydefault: case 76: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1090 +//line mysql_sql.y:1091 { yyLOCAL = &tree.ResumeCDC{ TaskName: tree.Identifier(yyDollar[4].cstrUnion().Compare()), @@ -11156,7 +11198,7 @@ yydefault: case 77: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1098 +//line mysql_sql.y:1099 { yyLOCAL = &tree.RestartCDC{ TaskName: tree.Identifier(yyDollar[4].cstrUnion().Compare()), @@ -11166,7 +11208,7 @@ yydefault: case 78: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1106 +//line mysql_sql.y:1107 { yyLOCAL = &tree.CreateSnapShot{ IfNotExists: yyDollar[3].ifNotExistsUnion(), @@ -11178,7 +11220,7 @@ yydefault: case 79: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ObjectInfo -//line mysql_sql.y:1116 +//line mysql_sql.y:1117 { spLevel := tree.SnapshotLevelType{ Level: tree.SNAPSHOTLEVELCLUSTER, @@ -11192,7 +11234,7 @@ yydefault: case 80: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ObjectInfo -//line mysql_sql.y:1126 +//line mysql_sql.y:1127 { spLevel := tree.SnapshotLevelType{ Level: tree.SNAPSHOTLEVELACCOUNT, @@ -11206,7 +11248,7 @@ yydefault: case 81: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ObjectInfo -//line mysql_sql.y:1136 +//line mysql_sql.y:1137 { spLevel := tree.SnapshotLevelType{ Level: tree.SNAPSHOTLEVELACCOUNT, @@ -11220,7 +11262,7 @@ yydefault: case 82: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ObjectInfo -//line mysql_sql.y:1146 +//line mysql_sql.y:1147 { spLevel := tree.SnapshotLevelType{ Level: tree.SNAPSHOTLEVELDATABASE, @@ -11234,7 +11276,7 @@ yydefault: case 83: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ObjectInfo -//line mysql_sql.y:1156 +//line mysql_sql.y:1157 { spLevel := tree.SnapshotLevelType{ Level: tree.SNAPSHOTLEVELTABLE, @@ -11248,7 +11290,7 @@ yydefault: case 84: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1168 +//line mysql_sql.y:1169 { yyLOCAL = &tree.CreatePitr{ IfNotExists: yyDollar[3].ifNotExistsUnion(), @@ -11263,7 +11305,7 @@ yydefault: case 85: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1179 +//line mysql_sql.y:1180 { yyLOCAL = &tree.CreatePitr{ IfNotExists: yyDollar[3].ifNotExistsUnion(), @@ -11278,7 +11320,7 @@ yydefault: case 86: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1190 +//line mysql_sql.y:1191 { yyLOCAL = &tree.CreatePitr{ IfNotExists: yyDollar[3].ifNotExistsUnion(), @@ -11294,7 +11336,7 @@ yydefault: case 87: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1202 +//line mysql_sql.y:1203 { yyLOCAL = &tree.CreatePitr{ IfNotExists: yyDollar[3].ifNotExistsUnion(), @@ -11310,7 +11352,7 @@ yydefault: case 88: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1214 +//line mysql_sql.y:1215 { yyLOCAL = &tree.CreatePitr{ IfNotExists: yyDollar[3].ifNotExistsUnion(), @@ -11327,7 +11369,7 @@ yydefault: case 89: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1227 +//line mysql_sql.y:1228 { yyLOCAL = &tree.CreatePitr{ IfNotExists: yyDollar[3].ifNotExistsUnion(), @@ -11342,7 +11384,7 @@ yydefault: case 90: yyDollar = yyS[yypt-13 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1238 +//line mysql_sql.y:1239 { yyLOCAL = &tree.CreatePitr{ IfNotExists: yyDollar[3].ifNotExistsUnion(), @@ -11359,7 +11401,7 @@ yydefault: case 91: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:1253 +//line mysql_sql.y:1254 { yyLOCAL = yyDollar[1].item.(int64) } @@ -11367,7 +11409,7 @@ yydefault: case 92: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1260 +//line mysql_sql.y:1261 { var account tree.Identifier var database tree.Identifier @@ -11403,7 +11445,7 @@ yydefault: case 93: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1292 +//line mysql_sql.y:1293 { var account tree.Identifier var database tree.Identifier @@ -11444,7 +11486,7 @@ yydefault: case 94: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1329 +//line mysql_sql.y:1330 { yyLOCAL = &tree.RestoreSnapShot{ Level: tree.RESTORELEVELCLUSTER, @@ -11455,7 +11497,7 @@ yydefault: case 95: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1336 +//line mysql_sql.y:1337 { result := &tree.RestoreSnapShot{ Level: tree.RESTORELEVELACCOUNT, @@ -11473,7 +11515,7 @@ yydefault: case 96: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:1352 +//line mysql_sql.y:1353 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } @@ -11481,7 +11523,7 @@ yydefault: case 97: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:1356 +//line mysql_sql.y:1357 { yyLOCAL = tree.IdentifierList{ tree.Identifier(yyDollar[1].cstrUnion().Compare()), @@ -11492,7 +11534,7 @@ yydefault: case 98: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:1365 +//line mysql_sql.y:1366 { yyLOCAL = tree.IdentifierList{ tree.Identifier(yyDollar[1].cstrUnion().Compare()), @@ -11503,7 +11545,7 @@ yydefault: case 99: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:1372 +//line mysql_sql.y:1373 { yyLOCAL = tree.IdentifierList{ tree.Identifier(yyDollar[1].cstrUnion().Compare()), @@ -11514,32 +11556,32 @@ yydefault: yyVAL.union = yyLOCAL case 100: yyDollar = yyS[yypt-5 : yypt+1] -//line mysql_sql.y:1382 +//line mysql_sql.y:1383 { yyVAL.str = yyDollar[4].cstrUnion().Compare() } case 101: yyDollar = yyS[yypt-5 : yypt+1] -//line mysql_sql.y:1386 +//line mysql_sql.y:1387 { yyVAL.str = strings.ToLower(yyDollar[4].str) } case 102: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:1391 +//line mysql_sql.y:1392 { yyVAL.str = "" } case 103: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:1395 +//line mysql_sql.y:1396 { yyVAL.str = yyDollar[3].cstrUnion().Compare() } case 104: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1401 +//line mysql_sql.y:1402 { yyLOCAL = &tree.RestorePitr{ Level: tree.RESTORELEVELACCOUNT, @@ -11551,7 +11593,7 @@ yydefault: case 105: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1409 +//line mysql_sql.y:1410 { yyLOCAL = &tree.RestorePitr{ Level: tree.RESTORELEVELDATABASE, @@ -11564,7 +11606,7 @@ yydefault: case 106: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1418 +//line mysql_sql.y:1419 { yyLOCAL = &tree.RestorePitr{ Level: tree.RESTORELEVELTABLE, @@ -11578,7 +11620,7 @@ yydefault: case 107: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1428 +//line mysql_sql.y:1429 { yyLOCAL = &tree.RestorePitr{ Level: tree.RESTORELEVELACCOUNT, @@ -11592,7 +11634,7 @@ yydefault: case 108: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1438 +//line mysql_sql.y:1439 { yyLOCAL = &tree.RestorePitr{ Level: tree.RESTORELEVELCLUSTER, @@ -11604,7 +11646,7 @@ yydefault: case 109: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1448 +//line mysql_sql.y:1449 { var connectionId uint64 switch v := yyDollar[3].item.(type) { @@ -11627,7 +11669,7 @@ yydefault: case 110: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.KillOption -//line mysql_sql.y:1468 +//line mysql_sql.y:1469 { yyLOCAL = tree.KillOption{ Exist: false, @@ -11637,7 +11679,7 @@ yydefault: case 111: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.KillOption -//line mysql_sql.y:1474 +//line mysql_sql.y:1475 { yyLOCAL = tree.KillOption{ Exist: true, @@ -11648,7 +11690,7 @@ yydefault: case 112: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.KillOption -//line mysql_sql.y:1481 +//line mysql_sql.y:1482 { yyLOCAL = tree.KillOption{ Exist: true, @@ -11659,7 +11701,7 @@ yydefault: case 113: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StatementOption -//line mysql_sql.y:1489 +//line mysql_sql.y:1490 { yyLOCAL = tree.StatementOption{ Exist: false, @@ -11669,7 +11711,7 @@ yydefault: case 114: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.StatementOption -//line mysql_sql.y:1495 +//line mysql_sql.y:1496 { yyLOCAL = tree.StatementOption{ Exist: true, @@ -11680,7 +11722,7 @@ yydefault: case 115: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1504 +//line mysql_sql.y:1505 { yyLOCAL = &tree.CallStmt{ Name: yyDollar[2].procNameUnion(), @@ -11691,7 +11733,7 @@ yydefault: case 116: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1513 +//line mysql_sql.y:1514 { yyLOCAL = &tree.LeaveStmt{ Name: tree.Identifier(yyDollar[2].cstrUnion().Compare()), @@ -11701,7 +11743,7 @@ yydefault: case 117: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1521 +//line mysql_sql.y:1522 { yyLOCAL = &tree.IterateStmt{ Name: tree.Identifier(yyDollar[2].cstrUnion().Compare()), @@ -11711,7 +11753,7 @@ yydefault: case 118: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1529 +//line mysql_sql.y:1530 { yyLOCAL = &tree.WhileStmt{ Name: "", @@ -11723,7 +11765,7 @@ yydefault: case 119: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1537 +//line mysql_sql.y:1538 { yyLOCAL = &tree.WhileStmt{ Name: tree.Identifier(yyDollar[1].cstrUnion().Compare()), @@ -11735,7 +11777,7 @@ yydefault: case 120: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1547 +//line mysql_sql.y:1548 { yyLOCAL = &tree.RepeatStmt{ Name: "", @@ -11747,7 +11789,7 @@ yydefault: case 121: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1555 +//line mysql_sql.y:1556 { yyLOCAL = &tree.RepeatStmt{ Name: tree.Identifier(yyDollar[1].cstrUnion().Compare()), @@ -11759,7 +11801,7 @@ yydefault: case 122: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1565 +//line mysql_sql.y:1566 { yyLOCAL = &tree.LoopStmt{ Name: "", @@ -11770,7 +11812,7 @@ yydefault: case 123: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1572 +//line mysql_sql.y:1573 { yyLOCAL = &tree.LoopStmt{ Name: tree.Identifier(yyDollar[1].cstrUnion().Compare()), @@ -11781,7 +11823,7 @@ yydefault: case 124: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1581 +//line mysql_sql.y:1582 { yyLOCAL = &tree.IfStmt{ Cond: yyDollar[2].exprUnion(), @@ -11794,7 +11836,7 @@ yydefault: case 125: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.ElseIfStmt -//line mysql_sql.y:1591 +//line mysql_sql.y:1592 { yyLOCAL = nil } @@ -11802,7 +11844,7 @@ yydefault: case 126: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.ElseIfStmt -//line mysql_sql.y:1595 +//line mysql_sql.y:1596 { yyLOCAL = yyDollar[1].elseIfClauseListUnion() } @@ -11810,7 +11852,7 @@ yydefault: case 127: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.ElseIfStmt -//line mysql_sql.y:1601 +//line mysql_sql.y:1602 { yyLOCAL = []*tree.ElseIfStmt{yyDollar[1].elseIfClauseUnion()} } @@ -11818,7 +11860,7 @@ yydefault: case 128: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.ElseIfStmt -//line mysql_sql.y:1605 +//line mysql_sql.y:1606 { yyLOCAL = append(yyDollar[1].elseIfClauseListUnion(), yyDollar[2].elseIfClauseUnion()) } @@ -11826,7 +11868,7 @@ yydefault: case 129: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.ElseIfStmt -//line mysql_sql.y:1611 +//line mysql_sql.y:1612 { yyLOCAL = &tree.ElseIfStmt{ Cond: yyDollar[2].exprUnion(), @@ -11837,7 +11879,7 @@ yydefault: case 130: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1620 +//line mysql_sql.y:1621 { yyLOCAL = &tree.CaseStmt{ Expr: yyDollar[2].exprUnion(), @@ -11849,7 +11891,7 @@ yydefault: case 131: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.WhenStmt -//line mysql_sql.y:1630 +//line mysql_sql.y:1631 { yyLOCAL = []*tree.WhenStmt{yyDollar[1].whenClause2Union()} } @@ -11857,7 +11899,7 @@ yydefault: case 132: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.WhenStmt -//line mysql_sql.y:1634 +//line mysql_sql.y:1635 { yyLOCAL = append(yyDollar[1].whenClauseList2Union(), yyDollar[2].whenClause2Union()) } @@ -11865,7 +11907,7 @@ yydefault: case 133: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.WhenStmt -//line mysql_sql.y:1640 +//line mysql_sql.y:1641 { yyLOCAL = &tree.WhenStmt{ Cond: yyDollar[2].exprUnion(), @@ -11876,7 +11918,7 @@ yydefault: case 134: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.Statement -//line mysql_sql.y:1649 +//line mysql_sql.y:1650 { yyLOCAL = nil } @@ -11884,7 +11926,7 @@ yydefault: case 135: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.Statement -//line mysql_sql.y:1653 +//line mysql_sql.y:1654 { yyLOCAL = yyDollar[2].statementsUnion() } @@ -11892,7 +11934,7 @@ yydefault: case 136: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1659 +//line mysql_sql.y:1660 { ep := &tree.ExportParam{ Outfile: true, @@ -11912,7 +11954,7 @@ yydefault: case 137: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1677 +//line mysql_sql.y:1678 { yyLOCAL = &tree.Load{ Local: yyDollar[3].boolValUnion(), @@ -11928,7 +11970,7 @@ yydefault: case 138: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:1691 +//line mysql_sql.y:1692 { yyLOCAL = &tree.LoadExtension{ Name: tree.Identifier(yyDollar[2].str), @@ -11938,7 +11980,7 @@ yydefault: case 139: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:1698 +//line mysql_sql.y:1699 { yyLOCAL = nil } @@ -11946,7 +11988,7 @@ yydefault: case 140: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:1702 +//line mysql_sql.y:1703 { yyLOCAL = yyDollar[2].updateExprsUnion() } @@ -11954,7 +11996,7 @@ yydefault: case 141: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:1708 +//line mysql_sql.y:1709 { yyLOCAL = tree.UpdateExprs{yyDollar[1].updateExprUnion()} } @@ -11962,7 +12004,7 @@ yydefault: case 142: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:1712 +//line mysql_sql.y:1713 { yyLOCAL = append(yyDollar[1].updateExprsUnion(), yyDollar[3].updateExprUnion()) } @@ -11970,7 +12012,7 @@ yydefault: case 143: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UpdateExpr -//line mysql_sql.y:1718 +//line mysql_sql.y:1719 { yyLOCAL = &tree.UpdateExpr{ Names: []*tree.UnresolvedName{yyDollar[1].unresolvedNameUnion()}, @@ -11981,7 +12023,7 @@ yydefault: case 144: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UpdateExpr -//line mysql_sql.y:1725 +//line mysql_sql.y:1726 { yyLOCAL = &tree.UpdateExpr{ Names: []*tree.UnresolvedName{yyDollar[1].unresolvedNameUnion()}, @@ -11992,7 +12034,7 @@ yydefault: case 145: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:1733 +//line mysql_sql.y:1734 { yyLOCAL = false } @@ -12000,7 +12042,7 @@ yydefault: case 146: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:1737 +//line mysql_sql.y:1738 { str := strings.ToLower(yyDollar[2].str) if str == "true" { @@ -12016,7 +12058,7 @@ yydefault: case 147: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:1749 +//line mysql_sql.y:1750 { yyLOCAL = true } @@ -12024,7 +12066,7 @@ yydefault: case 148: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:1753 +//line mysql_sql.y:1754 { str := strings.ToLower(yyDollar[2].str) if str == "true" { @@ -12040,7 +12082,7 @@ yydefault: case 149: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:1767 +//line mysql_sql.y:1768 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } @@ -12048,7 +12090,7 @@ yydefault: case 150: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:1771 +//line mysql_sql.y:1772 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) @@ -12057,7 +12099,7 @@ yydefault: case 151: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:1776 +//line mysql_sql.y:1777 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) @@ -12067,7 +12109,7 @@ yydefault: case 152: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.LoadColumn -//line mysql_sql.y:1783 +//line mysql_sql.y:1784 { yyLOCAL = nil } @@ -12075,7 +12117,7 @@ yydefault: case 153: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.LoadColumn -//line mysql_sql.y:1787 +//line mysql_sql.y:1788 { yyLOCAL = nil } @@ -12083,7 +12125,7 @@ yydefault: case 154: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.LoadColumn -//line mysql_sql.y:1791 +//line mysql_sql.y:1792 { yyLOCAL = yyDollar[2].loadColumnsUnion() } @@ -12091,7 +12133,7 @@ yydefault: case 155: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.LoadColumn -//line mysql_sql.y:1797 +//line mysql_sql.y:1798 { switch yyDollar[1].loadColumnUnion().(type) { case *tree.UnresolvedName: @@ -12104,7 +12146,7 @@ yydefault: case 156: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.LoadColumn -//line mysql_sql.y:1806 +//line mysql_sql.y:1807 { switch yyDollar[3].loadColumnUnion().(type) { case *tree.UnresolvedName: @@ -12117,7 +12159,7 @@ yydefault: case 157: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.LoadColumn -//line mysql_sql.y:1817 +//line mysql_sql.y:1818 { yyLOCAL = yyDollar[1].unresolvedNameUnion() } @@ -12125,7 +12167,7 @@ yydefault: case 158: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.LoadColumn -//line mysql_sql.y:1821 +//line mysql_sql.y:1822 { yyLOCAL = yyDollar[1].varExprUnion() } @@ -12133,7 +12175,7 @@ yydefault: case 159: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.VarExpr -//line mysql_sql.y:1827 +//line mysql_sql.y:1828 { yyLOCAL = []*tree.VarExpr{yyDollar[1].varExprUnion()} } @@ -12141,7 +12183,7 @@ yydefault: case 160: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.VarExpr -//line mysql_sql.y:1831 +//line mysql_sql.y:1832 { yyLOCAL = append(yyDollar[1].varExprsUnion(), yyDollar[3].varExprUnion()) } @@ -12149,7 +12191,7 @@ yydefault: case 161: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.VarExpr -//line mysql_sql.y:1837 +//line mysql_sql.y:1838 { yyLOCAL = yyDollar[1].varExprUnion() } @@ -12157,7 +12199,7 @@ yydefault: case 162: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.VarExpr -//line mysql_sql.y:1841 +//line mysql_sql.y:1842 { yyLOCAL = yyDollar[1].varExprUnion() } @@ -12165,7 +12207,7 @@ yydefault: case 163: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.VarExpr -//line mysql_sql.y:1847 +//line mysql_sql.y:1848 { v := strings.ToLower(yyDollar[1].str) var isGlobal bool @@ -12187,7 +12229,7 @@ yydefault: case 164: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.VarExpr -//line mysql_sql.y:1867 +//line mysql_sql.y:1868 { // vs := strings.Split($1, ".") // var r string @@ -12209,7 +12251,7 @@ yydefault: case 165: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:1886 +//line mysql_sql.y:1887 { yyLOCAL = 0 } @@ -12217,7 +12259,7 @@ yydefault: case 166: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:1890 +//line mysql_sql.y:1891 { yyLOCAL = yyDollar[2].item.(int64) } @@ -12225,7 +12267,7 @@ yydefault: case 167: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:1894 +//line mysql_sql.y:1895 { yyLOCAL = yyDollar[2].item.(int64) } @@ -12233,7 +12275,7 @@ yydefault: case 168: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:1899 +//line mysql_sql.y:1900 { yyLOCAL = nil } @@ -12241,7 +12283,7 @@ yydefault: case 169: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:1903 +//line mysql_sql.y:1904 { yyLOCAL = &tree.Lines{ StartingBy: yyDollar[2].str, @@ -12254,7 +12296,7 @@ yydefault: case 170: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:1912 +//line mysql_sql.y:1913 { yyLOCAL = &tree.Lines{ StartingBy: yyDollar[3].str, @@ -12266,32 +12308,32 @@ yydefault: yyVAL.union = yyLOCAL case 171: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:1922 +//line mysql_sql.y:1923 { yyVAL.str = "" } case 173: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:1929 +//line mysql_sql.y:1930 { yyVAL.str = yyDollar[3].str } case 174: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:1934 +//line mysql_sql.y:1935 { yyVAL.str = "\n" } case 176: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:1941 +//line mysql_sql.y:1942 { yyVAL.str = yyDollar[3].str } case 177: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:1946 +//line mysql_sql.y:1947 { yyLOCAL = nil } @@ -12299,7 +12341,7 @@ yydefault: case 178: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:1950 +//line mysql_sql.y:1951 { res := &tree.Fields{ Terminated: &tree.Terminated{ @@ -12329,7 +12371,7 @@ yydefault: case 179: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Fields -//line mysql_sql.y:1978 +//line mysql_sql.y:1979 { yyLOCAL = []*tree.Fields{yyDollar[1].fieldsUnion()} } @@ -12337,7 +12379,7 @@ yydefault: case 180: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.Fields -//line mysql_sql.y:1982 +//line mysql_sql.y:1983 { yyLOCAL = append(yyDollar[1].fieldsListUnion(), yyDollar[2].fieldsUnion()) } @@ -12345,7 +12387,7 @@ yydefault: case 181: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:1988 +//line mysql_sql.y:1989 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -12357,7 +12399,7 @@ yydefault: case 182: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:1996 +//line mysql_sql.y:1997 { str := yyDollar[4].str if str != "\\" && len(str) > 1 { @@ -12381,7 +12423,7 @@ yydefault: case 183: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:2016 +//line mysql_sql.y:2017 { str := yyDollar[3].str if str != "\\" && len(str) > 1 { @@ -12404,7 +12446,7 @@ yydefault: case 184: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:2035 +//line mysql_sql.y:2036 { str := yyDollar[3].str if str != "\\" && len(str) > 1 { @@ -12427,7 +12469,7 @@ yydefault: case 186: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.DuplicateKey -//line mysql_sql.y:2060 +//line mysql_sql.y:2061 { yyLOCAL = &tree.DuplicateKeyError{} } @@ -12435,7 +12477,7 @@ yydefault: case 187: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.DuplicateKey -//line mysql_sql.y:2064 +//line mysql_sql.y:2065 { yyLOCAL = &tree.DuplicateKeyIgnore{} } @@ -12443,7 +12485,7 @@ yydefault: case 188: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.DuplicateKey -//line mysql_sql.y:2068 +//line mysql_sql.y:2069 { yyLOCAL = &tree.DuplicateKeyReplace{} } @@ -12451,7 +12493,7 @@ yydefault: case 189: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:2073 +//line mysql_sql.y:2074 { yyLOCAL = false } @@ -12459,7 +12501,7 @@ yydefault: case 190: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:2077 +//line mysql_sql.y:2078 { yyLOCAL = true } @@ -12467,7 +12509,7 @@ yydefault: case 191: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2083 +//line mysql_sql.y:2084 { yyLOCAL = &tree.Grant{ Typ: tree.GrantTypePrivilege, @@ -12484,7 +12526,7 @@ yydefault: case 192: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2096 +//line mysql_sql.y:2097 { yyLOCAL = &tree.Grant{ Typ: tree.GrantTypeRole, @@ -12499,7 +12541,7 @@ yydefault: case 193: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2107 +//line mysql_sql.y:2108 { yyLOCAL = &tree.Grant{ Typ: tree.GrantTypeProxy, @@ -12515,7 +12557,7 @@ yydefault: case 194: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:2120 +//line mysql_sql.y:2121 { yyLOCAL = false } @@ -12523,7 +12565,7 @@ yydefault: case 195: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:2124 +//line mysql_sql.y:2125 { yyLOCAL = true } @@ -12531,7 +12573,7 @@ yydefault: case 196: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2134 +//line mysql_sql.y:2135 { yyLOCAL = &tree.Revoke{ Typ: tree.RevokeTypePrivilege, @@ -12548,7 +12590,7 @@ yydefault: case 197: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2147 +//line mysql_sql.y:2148 { yyLOCAL = &tree.Revoke{ Typ: tree.RevokeTypeRole, @@ -12563,7 +12605,7 @@ yydefault: case 198: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.PrivilegeLevel -//line mysql_sql.y:2160 +//line mysql_sql.y:2161 { yyLOCAL = &tree.PrivilegeLevel{ Level: tree.PRIVILEGE_LEVEL_TYPE_STAR, @@ -12573,7 +12615,7 @@ yydefault: case 199: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.PrivilegeLevel -//line mysql_sql.y:2166 +//line mysql_sql.y:2167 { yyLOCAL = &tree.PrivilegeLevel{ Level: tree.PRIVILEGE_LEVEL_TYPE_STAR_STAR, @@ -12583,7 +12625,7 @@ yydefault: case 200: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.PrivilegeLevel -//line mysql_sql.y:2172 +//line mysql_sql.y:2173 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) yyLOCAL = &tree.PrivilegeLevel{ @@ -12595,7 +12637,7 @@ yydefault: case 201: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.PrivilegeLevel -//line mysql_sql.y:2180 +//line mysql_sql.y:2181 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -12609,7 +12651,7 @@ yydefault: case 202: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.PrivilegeLevel -//line mysql_sql.y:2190 +//line mysql_sql.y:2191 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) yyLOCAL = &tree.PrivilegeLevel{ @@ -12621,7 +12663,7 @@ yydefault: case 203: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ObjectType -//line mysql_sql.y:2200 +//line mysql_sql.y:2201 { yyLOCAL = tree.OBJECT_TYPE_TABLE } @@ -12629,7 +12671,7 @@ yydefault: case 204: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ObjectType -//line mysql_sql.y:2204 +//line mysql_sql.y:2205 { yyLOCAL = tree.OBJECT_TYPE_DATABASE } @@ -12637,7 +12679,7 @@ yydefault: case 205: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ObjectType -//line mysql_sql.y:2208 +//line mysql_sql.y:2209 { yyLOCAL = tree.OBJECT_TYPE_FUNCTION } @@ -12645,7 +12687,7 @@ yydefault: case 206: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ObjectType -//line mysql_sql.y:2212 +//line mysql_sql.y:2213 { yyLOCAL = tree.OBJECT_TYPE_PROCEDURE } @@ -12653,7 +12695,7 @@ yydefault: case 207: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ObjectType -//line mysql_sql.y:2216 +//line mysql_sql.y:2217 { yyLOCAL = tree.OBJECT_TYPE_VIEW } @@ -12661,7 +12703,7 @@ yydefault: case 208: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ObjectType -//line mysql_sql.y:2220 +//line mysql_sql.y:2221 { yyLOCAL = tree.OBJECT_TYPE_ACCOUNT } @@ -12669,7 +12711,7 @@ yydefault: case 209: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Privilege -//line mysql_sql.y:2226 +//line mysql_sql.y:2227 { yyLOCAL = []*tree.Privilege{yyDollar[1].privilegeUnion()} } @@ -12677,7 +12719,7 @@ yydefault: case 210: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Privilege -//line mysql_sql.y:2230 +//line mysql_sql.y:2231 { yyLOCAL = append(yyDollar[1].privilegesUnion(), yyDollar[3].privilegeUnion()) } @@ -12685,7 +12727,7 @@ yydefault: case 211: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Privilege -//line mysql_sql.y:2236 +//line mysql_sql.y:2237 { yyLOCAL = &tree.Privilege{ Type: yyDollar[1].privilegeTypeUnion(), @@ -12696,7 +12738,7 @@ yydefault: case 212: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Privilege -//line mysql_sql.y:2243 +//line mysql_sql.y:2244 { yyLOCAL = &tree.Privilege{ Type: yyDollar[1].privilegeTypeUnion(), @@ -12707,7 +12749,7 @@ yydefault: case 213: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.UnresolvedName -//line mysql_sql.y:2252 +//line mysql_sql.y:2253 { yyLOCAL = []*tree.UnresolvedName{yyDollar[1].unresolvedNameUnion()} } @@ -12715,7 +12757,7 @@ yydefault: case 214: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.UnresolvedName -//line mysql_sql.y:2256 +//line mysql_sql.y:2257 { yyLOCAL = append(yyDollar[1].unresolveNamesUnion(), yyDollar[3].unresolvedNameUnion()) } @@ -12723,7 +12765,7 @@ yydefault: case 215: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2262 +//line mysql_sql.y:2263 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_ALL } @@ -12731,7 +12773,7 @@ yydefault: case 216: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2266 +//line mysql_sql.y:2267 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CREATE_ACCOUNT } @@ -12739,7 +12781,7 @@ yydefault: case 217: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2270 +//line mysql_sql.y:2271 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_DROP_ACCOUNT } @@ -12747,7 +12789,7 @@ yydefault: case 218: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2274 +//line mysql_sql.y:2275 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_ALTER_ACCOUNT } @@ -12755,7 +12797,7 @@ yydefault: case 219: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2278 +//line mysql_sql.y:2279 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_UPGRADE_ACCOUNT } @@ -12763,7 +12805,7 @@ yydefault: case 220: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2282 +//line mysql_sql.y:2283 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_ALL } @@ -12771,7 +12813,7 @@ yydefault: case 221: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2286 +//line mysql_sql.y:2287 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_ALTER_TABLE } @@ -12779,7 +12821,7 @@ yydefault: case 222: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2290 +//line mysql_sql.y:2291 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_ALTER_VIEW } @@ -12787,7 +12829,7 @@ yydefault: case 223: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2294 +//line mysql_sql.y:2295 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CREATE } @@ -12795,7 +12837,7 @@ yydefault: case 224: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2298 +//line mysql_sql.y:2299 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CREATE_USER } @@ -12803,7 +12845,7 @@ yydefault: case 225: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2302 +//line mysql_sql.y:2303 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_DROP_USER } @@ -12811,7 +12853,7 @@ yydefault: case 226: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2306 +//line mysql_sql.y:2307 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_ALTER_USER } @@ -12819,7 +12861,7 @@ yydefault: case 227: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2310 +//line mysql_sql.y:2311 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CREATE_TABLESPACE } @@ -12827,7 +12869,7 @@ yydefault: case 228: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2314 +//line mysql_sql.y:2315 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_TRIGGER } @@ -12835,7 +12877,7 @@ yydefault: case 229: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2318 +//line mysql_sql.y:2319 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_DELETE } @@ -12843,7 +12885,7 @@ yydefault: case 230: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2322 +//line mysql_sql.y:2323 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_DROP_TABLE } @@ -12851,7 +12893,7 @@ yydefault: case 231: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2326 +//line mysql_sql.y:2327 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_DROP_VIEW } @@ -12859,7 +12901,7 @@ yydefault: case 232: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2330 +//line mysql_sql.y:2331 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_EXECUTE } @@ -12867,7 +12909,7 @@ yydefault: case 233: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2334 +//line mysql_sql.y:2335 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_INDEX } @@ -12875,7 +12917,7 @@ yydefault: case 234: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2338 +//line mysql_sql.y:2339 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_INSERT } @@ -12883,7 +12925,7 @@ yydefault: case 235: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2342 +//line mysql_sql.y:2343 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_SELECT } @@ -12891,7 +12933,7 @@ yydefault: case 236: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2346 +//line mysql_sql.y:2347 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_SUPER } @@ -12899,7 +12941,7 @@ yydefault: case 237: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2350 +//line mysql_sql.y:2351 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CREATE_DATABASE } @@ -12907,7 +12949,7 @@ yydefault: case 238: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2354 +//line mysql_sql.y:2355 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_DROP_DATABASE } @@ -12915,7 +12957,7 @@ yydefault: case 239: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2358 +//line mysql_sql.y:2359 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_SHOW_DATABASES } @@ -12923,7 +12965,7 @@ yydefault: case 240: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2362 +//line mysql_sql.y:2363 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CONNECT } @@ -12931,7 +12973,7 @@ yydefault: case 241: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2366 +//line mysql_sql.y:2367 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_MANAGE_GRANTS } @@ -12939,7 +12981,7 @@ yydefault: case 242: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2370 +//line mysql_sql.y:2371 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_OWNERSHIP } @@ -12947,7 +12989,7 @@ yydefault: case 243: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2374 +//line mysql_sql.y:2375 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_SHOW_TABLES } @@ -12955,7 +12997,7 @@ yydefault: case 244: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2378 +//line mysql_sql.y:2379 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CREATE_TABLE } @@ -12963,7 +13005,7 @@ yydefault: case 245: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2382 +//line mysql_sql.y:2383 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_UPDATE } @@ -12971,7 +13013,7 @@ yydefault: case 246: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2386 +//line mysql_sql.y:2387 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_GRANT_OPTION } @@ -12979,7 +13021,7 @@ yydefault: case 247: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2390 +//line mysql_sql.y:2391 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_REFERENCES } @@ -12987,7 +13029,7 @@ yydefault: case 248: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2394 +//line mysql_sql.y:2395 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_REFERENCE } @@ -12995,7 +13037,7 @@ yydefault: case 249: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2398 +//line mysql_sql.y:2399 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_REPLICATION_SLAVE } @@ -13003,7 +13045,7 @@ yydefault: case 250: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2402 +//line mysql_sql.y:2403 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_REPLICATION_CLIENT } @@ -13011,7 +13053,7 @@ yydefault: case 251: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2406 +//line mysql_sql.y:2407 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_USAGE } @@ -13019,7 +13061,7 @@ yydefault: case 252: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2410 +//line mysql_sql.y:2411 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_RELOAD } @@ -13027,7 +13069,7 @@ yydefault: case 253: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2414 +//line mysql_sql.y:2415 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_FILE } @@ -13035,7 +13077,7 @@ yydefault: case 254: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2418 +//line mysql_sql.y:2419 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CREATE_TEMPORARY_TABLES } @@ -13043,7 +13085,7 @@ yydefault: case 255: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2422 +//line mysql_sql.y:2423 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_LOCK_TABLES } @@ -13051,7 +13093,7 @@ yydefault: case 256: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2426 +//line mysql_sql.y:2427 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CREATE_VIEW } @@ -13059,7 +13101,7 @@ yydefault: case 257: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2430 +//line mysql_sql.y:2431 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_SHOW_VIEW } @@ -13067,7 +13109,7 @@ yydefault: case 258: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2434 +//line mysql_sql.y:2435 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CREATE_ROLE } @@ -13075,7 +13117,7 @@ yydefault: case 259: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2438 +//line mysql_sql.y:2439 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_DROP_ROLE } @@ -13083,7 +13125,7 @@ yydefault: case 260: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2442 +//line mysql_sql.y:2443 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_ALTER_ROLE } @@ -13091,7 +13133,7 @@ yydefault: case 261: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2446 +//line mysql_sql.y:2447 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_CREATE_ROUTINE } @@ -13099,7 +13141,7 @@ yydefault: case 262: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2450 +//line mysql_sql.y:2451 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_ALTER_ROUTINE } @@ -13107,7 +13149,7 @@ yydefault: case 263: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2454 +//line mysql_sql.y:2455 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_EVENT } @@ -13115,7 +13157,7 @@ yydefault: case 264: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2458 +//line mysql_sql.y:2459 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_SHUTDOWN } @@ -13123,7 +13165,7 @@ yydefault: case 265: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.PrivilegeType -//line mysql_sql.y:2462 +//line mysql_sql.y:2463 { yyLOCAL = tree.PRIVILEGE_TYPE_STATIC_TRUNCATE } @@ -13131,7 +13173,7 @@ yydefault: case 273: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2477 +//line mysql_sql.y:2478 { yyLOCAL = &tree.SetLogserviceSettings{ Name: yyDollar[4].str, @@ -13142,7 +13184,7 @@ yydefault: case 274: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2486 +//line mysql_sql.y:2487 { yyLOCAL = &tree.SetTransaction{ Global: false, @@ -13153,7 +13195,7 @@ yydefault: case 275: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2493 +//line mysql_sql.y:2494 { yyLOCAL = &tree.SetTransaction{ Global: true, @@ -13164,7 +13206,7 @@ yydefault: case 276: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2500 +//line mysql_sql.y:2501 { yyLOCAL = &tree.SetTransaction{ Global: false, @@ -13175,7 +13217,7 @@ yydefault: case 277: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2509 +//line mysql_sql.y:2510 { var connID uint32 switch v := yyDollar[5].item.(type) { @@ -13195,7 +13237,7 @@ yydefault: case 278: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.TransactionCharacteristic -//line mysql_sql.y:2527 +//line mysql_sql.y:2528 { yyLOCAL = []*tree.TransactionCharacteristic{yyDollar[1].transactionCharacteristicUnion()} } @@ -13203,7 +13245,7 @@ yydefault: case 279: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.TransactionCharacteristic -//line mysql_sql.y:2531 +//line mysql_sql.y:2532 { yyLOCAL = append(yyDollar[1].transactionCharacteristicListUnion(), yyDollar[3].transactionCharacteristicUnion()) } @@ -13211,7 +13253,7 @@ yydefault: case 280: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.TransactionCharacteristic -//line mysql_sql.y:2537 +//line mysql_sql.y:2538 { yyLOCAL = &tree.TransactionCharacteristic{ IsLevel: true, @@ -13222,7 +13264,7 @@ yydefault: case 281: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.TransactionCharacteristic -//line mysql_sql.y:2544 +//line mysql_sql.y:2545 { yyLOCAL = &tree.TransactionCharacteristic{ Access: yyDollar[1].accessModeUnion(), @@ -13232,7 +13274,7 @@ yydefault: case 282: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IsolationLevelType -//line mysql_sql.y:2552 +//line mysql_sql.y:2553 { yyLOCAL = tree.ISOLATION_LEVEL_REPEATABLE_READ } @@ -13240,7 +13282,7 @@ yydefault: case 283: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IsolationLevelType -//line mysql_sql.y:2556 +//line mysql_sql.y:2557 { yyLOCAL = tree.ISOLATION_LEVEL_READ_COMMITTED } @@ -13248,7 +13290,7 @@ yydefault: case 284: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IsolationLevelType -//line mysql_sql.y:2560 +//line mysql_sql.y:2561 { yyLOCAL = tree.ISOLATION_LEVEL_READ_UNCOMMITTED } @@ -13256,7 +13298,7 @@ yydefault: case 285: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IsolationLevelType -//line mysql_sql.y:2564 +//line mysql_sql.y:2565 { yyLOCAL = tree.ISOLATION_LEVEL_SERIALIZABLE } @@ -13264,7 +13306,7 @@ yydefault: case 286: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccessModeType -//line mysql_sql.y:2570 +//line mysql_sql.y:2571 { yyLOCAL = tree.ACCESS_MODE_READ_WRITE } @@ -13272,7 +13314,7 @@ yydefault: case 287: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccessModeType -//line mysql_sql.y:2574 +//line mysql_sql.y:2575 { yyLOCAL = tree.ACCESS_MODE_READ_ONLY } @@ -13280,7 +13322,7 @@ yydefault: case 288: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2580 +//line mysql_sql.y:2581 { yyLOCAL = &tree.SetRole{ SecondaryRole: false, @@ -13291,7 +13333,7 @@ yydefault: case 289: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2587 +//line mysql_sql.y:2588 { yyLOCAL = &tree.SetRole{ SecondaryRole: true, @@ -13302,7 +13344,7 @@ yydefault: case 290: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2594 +//line mysql_sql.y:2595 { yyLOCAL = &tree.SetRole{ SecondaryRole: true, @@ -13313,7 +13355,7 @@ yydefault: case 291: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2603 +//line mysql_sql.y:2604 { dr := yyDollar[4].setDefaultRoleUnion() dr.Users = yyDollar[6].usersUnion() @@ -13323,7 +13365,7 @@ yydefault: case 292: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.SetDefaultRole -//line mysql_sql.y:2633 +//line mysql_sql.y:2634 { yyLOCAL = &tree.SetDefaultRole{Type: tree.SET_DEFAULT_ROLE_TYPE_NONE, Roles: nil} } @@ -13331,7 +13373,7 @@ yydefault: case 293: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.SetDefaultRole -//line mysql_sql.y:2637 +//line mysql_sql.y:2638 { yyLOCAL = &tree.SetDefaultRole{Type: tree.SET_DEFAULT_ROLE_TYPE_ALL, Roles: nil} } @@ -13339,7 +13381,7 @@ yydefault: case 294: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.SetDefaultRole -//line mysql_sql.y:2641 +//line mysql_sql.y:2642 { yyLOCAL = &tree.SetDefaultRole{Type: tree.SET_DEFAULT_ROLE_TYPE_NORMAL, Roles: yyDollar[1].rolesUnion()} } @@ -13347,7 +13389,7 @@ yydefault: case 295: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2647 +//line mysql_sql.y:2648 { yyLOCAL = &tree.SetVar{Assignments: yyDollar[2].varAssignmentExprsUnion()} } @@ -13355,7 +13397,7 @@ yydefault: case 296: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2653 +//line mysql_sql.y:2654 { yyLOCAL = &tree.SetPassword{Password: yyDollar[4].str} } @@ -13363,21 +13405,21 @@ yydefault: case 297: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2657 +//line mysql_sql.y:2658 { yyLOCAL = &tree.SetPassword{User: yyDollar[4].userUnion(), Password: yyDollar[6].str} } yyVAL.union = yyLOCAL case 299: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:2664 +//line mysql_sql.y:2665 { yyVAL.str = yyDollar[3].str } case 300: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.VarAssignmentExpr -//line mysql_sql.y:2670 +//line mysql_sql.y:2671 { yyLOCAL = []*tree.VarAssignmentExpr{yyDollar[1].varAssignmentExprUnion()} } @@ -13385,7 +13427,7 @@ yydefault: case 301: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.VarAssignmentExpr -//line mysql_sql.y:2674 +//line mysql_sql.y:2675 { yyLOCAL = append(yyDollar[1].varAssignmentExprsUnion(), yyDollar[3].varAssignmentExprUnion()) } @@ -13393,7 +13435,7 @@ yydefault: case 302: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2680 +//line mysql_sql.y:2681 { yyLOCAL = &tree.VarAssignmentExpr{ System: true, @@ -13405,7 +13447,7 @@ yydefault: case 303: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2688 +//line mysql_sql.y:2689 { yyLOCAL = &tree.VarAssignmentExpr{ System: true, @@ -13418,7 +13460,7 @@ yydefault: case 304: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2697 +//line mysql_sql.y:2698 { yyLOCAL = &tree.VarAssignmentExpr{ System: true, @@ -13431,7 +13473,7 @@ yydefault: case 305: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2706 +//line mysql_sql.y:2707 { yyLOCAL = &tree.VarAssignmentExpr{ System: true, @@ -13443,7 +13485,7 @@ yydefault: case 306: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2714 +//line mysql_sql.y:2715 { yyLOCAL = &tree.VarAssignmentExpr{ System: true, @@ -13455,7 +13497,7 @@ yydefault: case 307: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2722 +//line mysql_sql.y:2723 { vs := strings.Split(yyDollar[1].str, ".") var isGlobal bool @@ -13482,7 +13524,7 @@ yydefault: case 308: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2745 +//line mysql_sql.y:2746 { v := strings.ToLower(yyDollar[1].str) var isGlobal bool @@ -13505,7 +13547,7 @@ yydefault: case 309: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2764 +//line mysql_sql.y:2765 { yyLOCAL = &tree.VarAssignmentExpr{ Name: strings.ToLower(yyDollar[1].str), @@ -13516,7 +13558,7 @@ yydefault: case 310: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2771 +//line mysql_sql.y:2772 { yyLOCAL = &tree.VarAssignmentExpr{ Name: strings.ToLower(yyDollar[1].str), @@ -13527,7 +13569,7 @@ yydefault: case 311: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2778 +//line mysql_sql.y:2779 { yyLOCAL = &tree.VarAssignmentExpr{ Name: strings.ToLower(yyDollar[1].str), @@ -13539,7 +13581,7 @@ yydefault: case 312: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2786 +//line mysql_sql.y:2787 { yyLOCAL = &tree.VarAssignmentExpr{ Name: strings.ToLower(yyDollar[1].str), @@ -13550,7 +13592,7 @@ yydefault: case 313: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2793 +//line mysql_sql.y:2794 { yyLOCAL = &tree.VarAssignmentExpr{ Name: strings.ToLower(yyDollar[1].str), @@ -13561,7 +13603,7 @@ yydefault: case 314: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.VarAssignmentExpr -//line mysql_sql.y:2800 +//line mysql_sql.y:2801 { yyLOCAL = &tree.VarAssignmentExpr{ Name: strings.ToLower(yyDollar[1].str), @@ -13572,7 +13614,7 @@ yydefault: case 315: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:2809 +//line mysql_sql.y:2810 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_char) } @@ -13580,7 +13622,7 @@ yydefault: case 316: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:2813 +//line mysql_sql.y:2814 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_char) } @@ -13588,39 +13630,39 @@ yydefault: case 317: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:2817 +//line mysql_sql.y:2818 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 318: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:2823 +//line mysql_sql.y:2824 { yyVAL.str = string(yyDollar[1].str) } case 319: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:2827 +//line mysql_sql.y:2828 { yyVAL.str = yyDollar[1].str } case 320: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:2833 +//line mysql_sql.y:2834 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 321: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:2837 +//line mysql_sql.y:2838 { yyVAL.str = yyDollar[1].cstrUnion().Compare() + "." + yyDollar[3].cstrUnion().Compare() } case 322: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:2843 +//line mysql_sql.y:2844 { yyLOCAL = []string{yyDollar[1].str} } @@ -13628,7 +13670,7 @@ yydefault: case 323: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:2847 +//line mysql_sql.y:2848 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } @@ -13636,7 +13678,7 @@ yydefault: case 330: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2861 +//line mysql_sql.y:2862 { yyLOCAL = &tree.SavePoint{Name: tree.Identifier(yyDollar[2].cstrUnion().Compare())} } @@ -13644,7 +13686,7 @@ yydefault: case 331: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2867 +//line mysql_sql.y:2868 { yyLOCAL = &tree.ReleaseSavePoint{Name: tree.Identifier(yyDollar[3].cstrUnion().Compare())} } @@ -13652,7 +13694,7 @@ yydefault: case 332: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2873 +//line mysql_sql.y:2874 { yyLOCAL = &tree.RollbackToSavePoint{Name: tree.Identifier(yyDollar[3].cstrUnion().Compare())} } @@ -13660,7 +13702,7 @@ yydefault: case 333: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2878 +//line mysql_sql.y:2879 { yyLOCAL = &tree.RollbackToSavePoint{Name: tree.Identifier(yyDollar[4].cstrUnion().Compare())} } @@ -13668,7 +13710,7 @@ yydefault: case 334: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2883 +//line mysql_sql.y:2884 { yyLOCAL = &tree.RollbackToSavePoint{Name: tree.Identifier(yyDollar[5].cstrUnion().Compare())} } @@ -13676,7 +13718,7 @@ yydefault: case 335: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2888 +//line mysql_sql.y:2889 { yyLOCAL = &tree.RollbackToSavePoint{Name: tree.Identifier(yyDollar[4].cstrUnion().Compare())} } @@ -13684,7 +13726,7 @@ yydefault: case 336: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2894 +//line mysql_sql.y:2895 { yyLOCAL = &tree.RollbackTransaction{Type: yyDollar[2].completionTypeUnion()} } @@ -13692,7 +13734,7 @@ yydefault: case 337: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2900 +//line mysql_sql.y:2901 { yyLOCAL = &tree.CommitTransaction{Type: yyDollar[2].completionTypeUnion()} } @@ -13700,7 +13742,7 @@ yydefault: case 338: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.CompletionType -//line mysql_sql.y:2905 +//line mysql_sql.y:2906 { yyLOCAL = tree.COMPLETION_TYPE_NO_CHAIN } @@ -13708,7 +13750,7 @@ yydefault: case 339: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.CompletionType -//line mysql_sql.y:2909 +//line mysql_sql.y:2910 { yyLOCAL = tree.COMPLETION_TYPE_NO_CHAIN } @@ -13716,7 +13758,7 @@ yydefault: case 340: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CompletionType -//line mysql_sql.y:2913 +//line mysql_sql.y:2914 { yyLOCAL = tree.COMPLETION_TYPE_CHAIN } @@ -13724,7 +13766,7 @@ yydefault: case 341: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.CompletionType -//line mysql_sql.y:2917 +//line mysql_sql.y:2918 { yyLOCAL = tree.COMPLETION_TYPE_CHAIN } @@ -13732,7 +13774,7 @@ yydefault: case 342: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CompletionType -//line mysql_sql.y:2921 +//line mysql_sql.y:2922 { yyLOCAL = tree.COMPLETION_TYPE_RELEASE } @@ -13740,7 +13782,7 @@ yydefault: case 343: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.CompletionType -//line mysql_sql.y:2925 +//line mysql_sql.y:2926 { yyLOCAL = tree.COMPLETION_TYPE_RELEASE } @@ -13748,7 +13790,7 @@ yydefault: case 344: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.CompletionType -//line mysql_sql.y:2929 +//line mysql_sql.y:2930 { yyLOCAL = tree.COMPLETION_TYPE_NO_CHAIN } @@ -13756,7 +13798,7 @@ yydefault: case 345: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.CompletionType -//line mysql_sql.y:2933 +//line mysql_sql.y:2934 { yyLOCAL = tree.COMPLETION_TYPE_NO_CHAIN } @@ -13764,7 +13806,7 @@ yydefault: case 346: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.CompletionType -//line mysql_sql.y:2937 +//line mysql_sql.y:2938 { yyLOCAL = tree.COMPLETION_TYPE_NO_CHAIN } @@ -13772,7 +13814,7 @@ yydefault: case 347: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2943 +//line mysql_sql.y:2944 { yyLOCAL = &tree.BeginTransaction{} } @@ -13780,7 +13822,7 @@ yydefault: case 348: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2947 +//line mysql_sql.y:2948 { yyLOCAL = &tree.BeginTransaction{} } @@ -13788,7 +13830,7 @@ yydefault: case 349: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2951 +//line mysql_sql.y:2952 { yyLOCAL = &tree.BeginTransaction{} } @@ -13796,7 +13838,7 @@ yydefault: case 350: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2955 +//line mysql_sql.y:2956 { m := tree.MakeTransactionModes(tree.READ_WRITE_MODE_READ_WRITE) yyLOCAL = &tree.BeginTransaction{Modes: m} @@ -13805,7 +13847,7 @@ yydefault: case 351: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2960 +//line mysql_sql.y:2961 { m := tree.MakeTransactionModes(tree.READ_WRITE_MODE_READ_ONLY) yyLOCAL = &tree.BeginTransaction{Modes: m} @@ -13814,7 +13856,7 @@ yydefault: case 352: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2965 +//line mysql_sql.y:2966 { yyLOCAL = &tree.BeginTransaction{} } @@ -13822,7 +13864,7 @@ yydefault: case 353: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2971 +//line mysql_sql.y:2972 { name := yyDollar[2].cstrUnion() secondaryRole := false @@ -13839,7 +13881,7 @@ yydefault: case 354: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2984 +//line mysql_sql.y:2985 { name := yylex.(*Lexer).GetDbOrTblNameCStr("") secondaryRole := false @@ -13856,7 +13898,7 @@ yydefault: case 355: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:2997 +//line mysql_sql.y:2998 { name := yylex.(*Lexer).GetDbOrTblNameCStr("") secondaryRole := false @@ -13873,7 +13915,7 @@ yydefault: case 356: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3010 +//line mysql_sql.y:3011 { name := yylex.(*Lexer).GetDbOrTblNameCStr("") secondaryRole := true @@ -13890,7 +13932,7 @@ yydefault: case 357: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3023 +//line mysql_sql.y:3024 { name := yylex.(*Lexer).GetDbOrTblNameCStr("") secondaryRole := true @@ -13907,7 +13949,7 @@ yydefault: case 359: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3039 +//line mysql_sql.y:3040 { yyDollar[2].statementUnion().(*tree.Update).With = yyDollar[1].withClauseUnion() yyLOCAL = yyDollar[2].statementUnion() @@ -13916,7 +13958,7 @@ yydefault: case 360: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3046 +//line mysql_sql.y:3047 { // Single-table syntax yyLOCAL = &tree.Update{ @@ -13931,7 +13973,7 @@ yydefault: case 361: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3057 +//line mysql_sql.y:3058 { // Multiple-table syntax yyLOCAL = &tree.Update{ @@ -13944,7 +13986,7 @@ yydefault: case 362: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:3068 +//line mysql_sql.y:3069 { yyLOCAL = tree.UpdateExprs{yyDollar[1].updateExprUnion()} } @@ -13952,7 +13994,7 @@ yydefault: case 363: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:3072 +//line mysql_sql.y:3073 { yyLOCAL = append(yyDollar[1].updateExprsUnion(), yyDollar[3].updateExprUnion()) } @@ -13960,7 +14002,7 @@ yydefault: case 364: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UpdateExpr -//line mysql_sql.y:3078 +//line mysql_sql.y:3079 { yyLOCAL = &tree.UpdateExpr{Names: []*tree.UnresolvedName{yyDollar[1].unresolvedNameUnion()}, Expr: yyDollar[3].exprUnion()} } @@ -13968,7 +14010,7 @@ yydefault: case 367: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3088 +//line mysql_sql.y:3089 { yyLOCAL = &tree.LockTableStmt{TableLocks: yyDollar[3].tableLocksUnion()} } @@ -13976,7 +14018,7 @@ yydefault: case 368: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableLock -//line mysql_sql.y:3094 +//line mysql_sql.y:3095 { yyLOCAL = []tree.TableLock{yyDollar[1].tableLockUnion()} } @@ -13984,7 +14026,7 @@ yydefault: case 369: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableLock -//line mysql_sql.y:3098 +//line mysql_sql.y:3099 { yyLOCAL = append(yyDollar[1].tableLocksUnion(), yyDollar[3].tableLockUnion()) } @@ -13992,7 +14034,7 @@ yydefault: case 370: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableLock -//line mysql_sql.y:3104 +//line mysql_sql.y:3105 { yyLOCAL = tree.TableLock{Table: *yyDollar[1].tableNameUnion(), LockType: yyDollar[2].tableLockTypeUnion()} } @@ -14000,7 +14042,7 @@ yydefault: case 371: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableLockType -//line mysql_sql.y:3110 +//line mysql_sql.y:3111 { yyLOCAL = tree.TableLockRead } @@ -14008,7 +14050,7 @@ yydefault: case 372: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableLockType -//line mysql_sql.y:3114 +//line mysql_sql.y:3115 { yyLOCAL = tree.TableLockReadLocal } @@ -14016,7 +14058,7 @@ yydefault: case 373: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableLockType -//line mysql_sql.y:3118 +//line mysql_sql.y:3119 { yyLOCAL = tree.TableLockWrite } @@ -14024,7 +14066,7 @@ yydefault: case 374: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableLockType -//line mysql_sql.y:3122 +//line mysql_sql.y:3123 { yyLOCAL = tree.TableLockLowPriorityWrite } @@ -14032,7 +14074,7 @@ yydefault: case 375: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3128 +//line mysql_sql.y:3129 { yyLOCAL = &tree.UnLockTableStmt{} } @@ -14040,7 +14082,7 @@ yydefault: case 383: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3141 +//line mysql_sql.y:3142 { yyLOCAL = yyDollar[1].selectUnion() } @@ -14048,7 +14090,7 @@ yydefault: case 384: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3147 +//line mysql_sql.y:3148 { yyLOCAL = tree.NewPrepareStmt(tree.Identifier(yyDollar[2].str), yyDollar[4].statementUnion()) } @@ -14056,7 +14098,7 @@ yydefault: case 385: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3151 +//line mysql_sql.y:3152 { yyLOCAL = tree.NewPrepareString(tree.Identifier(yyDollar[2].str), yyDollar[4].str) } @@ -14064,7 +14106,7 @@ yydefault: case 386: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3155 +//line mysql_sql.y:3156 { yyLOCAL = tree.NewPrepareVar(tree.Identifier(yyDollar[2].str), yyDollar[4].varExprUnion()) } @@ -14072,7 +14114,7 @@ yydefault: case 387: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3161 +//line mysql_sql.y:3162 { yyLOCAL = tree.NewExecute(tree.Identifier(yyDollar[2].str)) } @@ -14080,7 +14122,7 @@ yydefault: case 388: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3165 +//line mysql_sql.y:3166 { yyLOCAL = tree.NewExecuteWithVariables(tree.Identifier(yyDollar[2].str), yyDollar[4].varExprsUnion()) } @@ -14088,7 +14130,7 @@ yydefault: case 389: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3171 +//line mysql_sql.y:3172 { yyLOCAL = tree.NewDeallocate(tree.Identifier(yyDollar[3].str), false) } @@ -14096,7 +14138,7 @@ yydefault: case 390: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3177 +//line mysql_sql.y:3178 { yyLOCAL = tree.NewReset(tree.Identifier(yyDollar[3].str)) } @@ -14104,7 +14146,7 @@ yydefault: case 396: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3188 +//line mysql_sql.y:3189 { yyLOCAL = yyDollar[1].selectUnion() } @@ -14112,7 +14154,7 @@ yydefault: case 397: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3194 +//line mysql_sql.y:3195 { yyLOCAL = &tree.ShowColumns{Table: yyDollar[2].unresolvedObjectNameUnion()} } @@ -14120,7 +14162,7 @@ yydefault: case 398: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3198 +//line mysql_sql.y:3199 { yyLOCAL = &tree.ShowColumns{Table: yyDollar[2].unresolvedObjectNameUnion(), ColName: yyDollar[3].unresolvedNameUnion()} } @@ -14128,7 +14170,7 @@ yydefault: case 399: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3202 +//line mysql_sql.y:3203 { yyLOCAL = tree.NewExplainFor("", uint64(yyDollar[4].item.(int64))) } @@ -14136,7 +14178,7 @@ yydefault: case 400: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3206 +//line mysql_sql.y:3207 { yyLOCAL = tree.NewExplainFor(yyDollar[4].str, uint64(yyDollar[7].item.(int64))) } @@ -14144,7 +14186,7 @@ yydefault: case 401: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3210 +//line mysql_sql.y:3211 { yyLOCAL = tree.NewExplainStmt(yyDollar[2].statementUnion(), "text") } @@ -14152,7 +14194,7 @@ yydefault: case 402: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3214 +//line mysql_sql.y:3215 { options := []tree.OptionElem{ tree.MakeOptionElem(tree.VerboseOption, "NULL"), @@ -14163,7 +14205,7 @@ yydefault: case 403: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3221 +//line mysql_sql.y:3222 { options := []tree.OptionElem{ tree.MakeOptionElem(tree.AnalyzeOption, "NULL"), @@ -14174,7 +14216,7 @@ yydefault: case 404: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3228 +//line mysql_sql.y:3229 { options := []tree.OptionElem{ tree.MakeOptionElem(tree.AnalyzeOption, "NULL"), @@ -14186,7 +14228,7 @@ yydefault: case 405: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3236 +//line mysql_sql.y:3237 { options := []tree.OptionElem{ tree.MakeOptionElem(tree.PhyPlanOption, "NULL"), @@ -14197,7 +14239,7 @@ yydefault: case 406: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3243 +//line mysql_sql.y:3244 { options := []tree.OptionElem{ tree.MakeOptionElem(tree.PhyPlanOption, "NULL"), @@ -14209,7 +14251,7 @@ yydefault: case 407: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3251 +//line mysql_sql.y:3252 { options := []tree.OptionElem{ tree.MakeOptionElem(tree.PhyPlanOption, "NULL"), @@ -14221,7 +14263,7 @@ yydefault: case 408: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3259 +//line mysql_sql.y:3260 { yyLOCAL = tree.MakeExplainStmt(yyDollar[5].statementUnion(), yyDollar[3].explainOptionsUnion()) } @@ -14229,7 +14271,7 @@ yydefault: case 409: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3263 +//line mysql_sql.y:3264 { yyLOCAL = tree.MakeExplainStmt(yyDollar[3].statementUnion(), nil) } @@ -14237,7 +14279,7 @@ yydefault: case 410: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3267 +//line mysql_sql.y:3268 { options := []tree.OptionElem{ tree.MakeOptionElem(tree.VerboseOption, "NULL"), @@ -14248,7 +14290,7 @@ yydefault: case 411: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3274 +//line mysql_sql.y:3275 { options := []tree.OptionElem{ tree.MakeOptionElem(tree.AnalyzeOption, "NULL"), @@ -14259,7 +14301,7 @@ yydefault: case 412: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3281 +//line mysql_sql.y:3282 { options := []tree.OptionElem{ tree.MakeOptionElem(tree.AnalyzeOption, "NULL"), @@ -14271,7 +14313,7 @@ yydefault: case 427: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.OptionElem -//line mysql_sql.y:3319 +//line mysql_sql.y:3320 { yyLOCAL = []tree.OptionElem{yyDollar[1].explainOptionUnion()} } @@ -14279,7 +14321,7 @@ yydefault: case 428: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.OptionElem -//line mysql_sql.y:3323 +//line mysql_sql.y:3324 { yyLOCAL = append(yyDollar[1].explainOptionsUnion(), yyDollar[3].explainOptionUnion()) } @@ -14287,45 +14329,45 @@ yydefault: case 429: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.OptionElem -//line mysql_sql.y:3329 +//line mysql_sql.y:3330 { yyLOCAL = tree.MakeOptionElem(yyDollar[1].str, yyDollar[2].str) } yyVAL.union = yyLOCAL case 430: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:3335 +//line mysql_sql.y:3336 { yyVAL.str = yyDollar[1].str } case 431: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:3340 +//line mysql_sql.y:3341 { yyVAL.str = "true" } case 432: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:3341 +//line mysql_sql.y:3342 { yyVAL.str = "false" } case 433: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:3342 +//line mysql_sql.y:3343 { yyVAL.str = yyDollar[1].str } case 434: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:3343 +//line mysql_sql.y:3344 { yyVAL.str = yyDollar[1].str } case 435: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3347 +//line mysql_sql.y:3348 { yyLOCAL = tree.NewAnalyzeStmt(yyDollar[3].tableNameUnion(), yyDollar[5].identifierListUnion()) } @@ -14333,7 +14375,7 @@ yydefault: case 436: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3353 +//line mysql_sql.y:3354 { yyLOCAL = &tree.UpgradeStatement{ Target: yyDollar[3].upgrade_targetUnion(), @@ -14344,7 +14386,7 @@ yydefault: case 437: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Target -//line mysql_sql.y:3362 +//line mysql_sql.y:3363 { yyLOCAL = &tree.Target{ AccountName: yyDollar[1].str, @@ -14355,7 +14397,7 @@ yydefault: case 438: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Target -//line mysql_sql.y:3369 +//line mysql_sql.y:3370 { yyLOCAL = &tree.Target{ AccountName: "", @@ -14366,7 +14408,7 @@ yydefault: case 439: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:3377 +//line mysql_sql.y:3378 { yyLOCAL = -1 } @@ -14374,7 +14416,7 @@ yydefault: case 440: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:3381 +//line mysql_sql.y:3382 { res := yyDollar[3].item.(int64) if res <= 0 { @@ -14387,7 +14429,7 @@ yydefault: case 452: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3406 +//line mysql_sql.y:3407 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].tableNameUnion() @@ -14412,7 +14454,7 @@ yydefault: case 453: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3429 +//line mysql_sql.y:3430 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].tableNameUnion() @@ -14424,7 +14466,7 @@ yydefault: case 454: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3439 +//line mysql_sql.y:3440 { var table = yyDollar[3].tableNameUnion() alterTable := tree.NewAlterTable(table) @@ -14435,7 +14477,7 @@ yydefault: case 455: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3446 +//line mysql_sql.y:3447 { var table = yyDollar[3].tableNameUnion() alterTable := tree.NewAlterTable(table) @@ -14446,7 +14488,7 @@ yydefault: case 456: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3455 +//line mysql_sql.y:3456 { alterTables := yyDollar[3].renameTableOptionsUnion() renameTables := tree.NewRenameTable(alterTables) @@ -14456,7 +14498,7 @@ yydefault: case 457: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.AlterTable -//line mysql_sql.y:3463 +//line mysql_sql.y:3464 { yyLOCAL = []*tree.AlterTable{yyDollar[1].renameTableOptionUnion()} } @@ -14464,7 +14506,7 @@ yydefault: case 458: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.AlterTable -//line mysql_sql.y:3467 +//line mysql_sql.y:3468 { yyLOCAL = append(yyDollar[1].renameTableOptionsUnion(), yyDollar[3].renameTableOptionUnion()) } @@ -14472,7 +14514,7 @@ yydefault: case 459: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AlterTable -//line mysql_sql.y:3473 +//line mysql_sql.y:3474 { var table = yyDollar[1].tableNameUnion() alterTable := tree.NewAlterTable(table) @@ -14484,7 +14526,7 @@ yydefault: case 460: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterTableOptions -//line mysql_sql.y:3483 +//line mysql_sql.y:3484 { yyLOCAL = []tree.AlterTableOption{yyDollar[1].alterTableOptionUnion()} } @@ -14492,7 +14534,7 @@ yydefault: case 461: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOptions -//line mysql_sql.y:3487 +//line mysql_sql.y:3488 { yyLOCAL = append(yyDollar[1].alterTableOptionsUnion(), yyDollar[3].alterTableOptionUnion()) } @@ -14500,7 +14542,7 @@ yydefault: case 462: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterPartitionOption -//line mysql_sql.y:3493 +//line mysql_sql.y:3494 { yyLOCAL = yyDollar[1].alterPartitionOptionUnion() } @@ -14508,7 +14550,7 @@ yydefault: case 463: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.AlterPartitionOption -//line mysql_sql.y:3497 +//line mysql_sql.y:3498 { yyDollar[3].partitionByUnion().Num = uint64(yyDollar[4].int64ValUnion()) var PartBy = yyDollar[3].partitionByUnion() @@ -14534,7 +14576,7 @@ yydefault: case 464: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3521 +//line mysql_sql.y:3522 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -14546,7 +14588,7 @@ yydefault: case 465: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3531 +//line mysql_sql.y:3532 { var ifExists = yyDollar[3].boolValUnion() var oldName = yyDollar[4].cstrUnion().Compare() @@ -14557,7 +14599,7 @@ yydefault: case 466: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterPartitionOption -//line mysql_sql.y:3540 +//line mysql_sql.y:3541 { var typ = tree.AlterPartitionAddPartition var partitions = yyDollar[3].partitionsUnion() @@ -14571,7 +14613,7 @@ yydefault: case 467: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterPartitionOption -//line mysql_sql.y:3550 +//line mysql_sql.y:3551 { var typ = tree.AlterPartitionDropPartition var partitionNames = yyDollar[3].PartitionNamesUnion() @@ -14591,7 +14633,7 @@ yydefault: case 468: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterPartitionOption -//line mysql_sql.y:3566 +//line mysql_sql.y:3567 { var typ = tree.AlterPartitionTruncatePartition var partitionNames = yyDollar[3].PartitionNamesUnion() @@ -14611,7 +14653,7 @@ yydefault: case 469: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:3584 +//line mysql_sql.y:3585 { yyLOCAL = nil } @@ -14619,7 +14661,7 @@ yydefault: case 470: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:3588 +//line mysql_sql.y:3589 { yyLOCAL = yyDollar[1].PartitionNamesUnion() } @@ -14627,7 +14669,7 @@ yydefault: case 471: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:3594 +//line mysql_sql.y:3595 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } @@ -14635,7 +14677,7 @@ yydefault: case 472: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:3598 +//line mysql_sql.y:3599 { yyLOCAL = append(yyDollar[1].PartitionNamesUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } @@ -14643,7 +14685,7 @@ yydefault: case 473: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3604 +//line mysql_sql.y:3605 { var def = yyDollar[2].tableDefUnion() opt := tree.NewAlterOptionAdd(def) @@ -14653,7 +14695,7 @@ yydefault: case 474: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3610 +//line mysql_sql.y:3611 { var typ = tree.AlterTableModifyColumn var newColumn = yyDollar[3].columnTableDefUnion() @@ -14665,7 +14707,7 @@ yydefault: case 475: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3618 +//line mysql_sql.y:3619 { // Type OldColumnName NewColumn Position var typ = tree.AlterTableChangeColumn @@ -14679,7 +14721,7 @@ yydefault: case 476: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3628 +//line mysql_sql.y:3629 { var typ = tree.AlterTableRenameColumn var oldColumnName = yyDollar[3].unresolvedNameUnion() @@ -14691,7 +14733,7 @@ yydefault: case 477: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3636 +//line mysql_sql.y:3637 { var typ = tree.AlterTableAlterColumn var columnName = yyDollar[3].unresolvedNameUnion() @@ -14705,7 +14747,7 @@ yydefault: case 478: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3646 +//line mysql_sql.y:3647 { var typ = tree.AlterTableAlterColumn var columnName = yyDollar[3].unresolvedNameUnion() @@ -14719,7 +14761,7 @@ yydefault: case 479: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3656 +//line mysql_sql.y:3657 { var typ = tree.AlterTableAlterColumn var columnName = yyDollar[3].unresolvedNameUnion() @@ -14733,7 +14775,7 @@ yydefault: case 480: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3666 +//line mysql_sql.y:3667 { var orderByClauseType = tree.AlterTableOrderByColumn var orderByColumnList = yyDollar[3].alterColumnOrderByUnion() @@ -14744,7 +14786,7 @@ yydefault: case 481: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3673 +//line mysql_sql.y:3674 { yyLOCAL = tree.AlterTableOption(yyDollar[2].alterTableOptionUnion()) } @@ -14752,7 +14794,7 @@ yydefault: case 482: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3677 +//line mysql_sql.y:3678 { yyLOCAL = tree.AlterTableOption(yyDollar[2].alterTableOptionUnion()) } @@ -14760,7 +14802,7 @@ yydefault: case 483: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3681 +//line mysql_sql.y:3682 { yyLOCAL = tree.AlterTableOption(yyDollar[1].tableOptionUnion()) } @@ -14768,7 +14810,7 @@ yydefault: case 484: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3685 +//line mysql_sql.y:3686 { yyLOCAL = tree.AlterTableOption(yyDollar[3].alterTableOptionUnion()) } @@ -14776,7 +14818,7 @@ yydefault: case 485: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3689 +//line mysql_sql.y:3690 { var column = yyDollar[3].columnTableDefUnion() var position = yyDollar[4].alterColPositionUnion() @@ -14787,7 +14829,7 @@ yydefault: case 486: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3696 +//line mysql_sql.y:3697 { var checkType = yyDollar[1].str var enforce bool @@ -14797,7 +14839,7 @@ yydefault: case 487: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3702 +//line mysql_sql.y:3703 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[4].str) } @@ -14805,7 +14847,7 @@ yydefault: case 488: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3706 +//line mysql_sql.y:3707 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[5].str) } @@ -14813,7 +14855,7 @@ yydefault: case 489: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3710 +//line mysql_sql.y:3711 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[5].str) } @@ -14821,7 +14863,7 @@ yydefault: case 490: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3714 +//line mysql_sql.y:3715 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[1].str) } @@ -14829,7 +14871,7 @@ yydefault: case 491: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3718 +//line mysql_sql.y:3719 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[1].str) } @@ -14837,7 +14879,7 @@ yydefault: case 492: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3722 +//line mysql_sql.y:3723 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[1].str) } @@ -14845,7 +14887,7 @@ yydefault: case 493: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3726 +//line mysql_sql.y:3727 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[1].str) } @@ -14853,33 +14895,33 @@ yydefault: case 494: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3730 +//line mysql_sql.y:3731 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[1].str) } yyVAL.union = yyLOCAL case 495: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:3735 +//line mysql_sql.y:3736 { yyVAL.str = "" } case 512: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:3766 +//line mysql_sql.y:3767 { yyVAL.str = "" } case 513: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:3770 +//line mysql_sql.y:3771 { yyVAL.str = string("COLUMN") } case 514: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ColumnPosition -//line mysql_sql.y:3775 +//line mysql_sql.y:3776 { var typ = tree.ColumnPositionNone var relativeColumn *tree.UnresolvedName @@ -14889,7 +14931,7 @@ yydefault: case 515: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ColumnPosition -//line mysql_sql.y:3781 +//line mysql_sql.y:3782 { var typ = tree.ColumnPositionFirst var relativeColumn *tree.UnresolvedName @@ -14899,7 +14941,7 @@ yydefault: case 516: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ColumnPosition -//line mysql_sql.y:3787 +//line mysql_sql.y:3788 { var typ = tree.ColumnPositionAfter var relativeColumn = yyDollar[2].unresolvedNameUnion() @@ -14909,7 +14951,7 @@ yydefault: case 517: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.AlterColumnOrder -//line mysql_sql.y:3795 +//line mysql_sql.y:3796 { yyLOCAL = []*tree.AlterColumnOrder{yyDollar[1].alterColumnOrderUnion()} } @@ -14917,7 +14959,7 @@ yydefault: case 518: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.AlterColumnOrder -//line mysql_sql.y:3799 +//line mysql_sql.y:3800 { yyLOCAL = append(yyDollar[1].alterColumnOrderByUnion(), yyDollar[3].alterColumnOrderUnion()) } @@ -14925,7 +14967,7 @@ yydefault: case 519: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AlterColumnOrder -//line mysql_sql.y:3805 +//line mysql_sql.y:3806 { var column = yyDollar[1].unresolvedNameUnion() var direction = yyDollar[2].directionUnion() @@ -14935,7 +14977,7 @@ yydefault: case 520: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3813 +//line mysql_sql.y:3814 { var name = yyDollar[1].unresolvedObjectNameUnion() yyLOCAL = tree.NewAlterOptionTableName(name) @@ -14944,7 +14986,7 @@ yydefault: case 521: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3820 +//line mysql_sql.y:3821 { var dropType = tree.AlterTableDropIndex var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) @@ -14954,7 +14996,7 @@ yydefault: case 522: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3826 +//line mysql_sql.y:3827 { var dropType = tree.AlterTableDropKey var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) @@ -14964,7 +15006,7 @@ yydefault: case 523: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3832 +//line mysql_sql.y:3833 { var dropType = tree.AlterTableDropColumn var name = tree.Identifier(yyDollar[1].cstrUnion().Compare()) @@ -14974,7 +15016,7 @@ yydefault: case 524: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3838 +//line mysql_sql.y:3839 { var dropType = tree.AlterTableDropColumn var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) @@ -14984,7 +15026,7 @@ yydefault: case 525: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3844 +//line mysql_sql.y:3845 { var dropType = tree.AlterTableDropForeignKey var name = tree.Identifier(yyDollar[3].cstrUnion().Compare()) @@ -14995,7 +15037,7 @@ yydefault: case 526: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3851 +//line mysql_sql.y:3852 { yyLOCAL = &tree.AlterOptionDrop{ Typ: tree.AlterTableDropForeignKey, @@ -15006,7 +15048,7 @@ yydefault: case 527: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3858 +//line mysql_sql.y:3859 { var dropType = tree.AlterTableDropPrimaryKey var name = tree.Identifier("") @@ -15016,7 +15058,7 @@ yydefault: case 528: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3866 +//line mysql_sql.y:3867 { var indexName = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var visibility = yyDollar[3].indexVisibilityUnion() @@ -15024,71 +15066,110 @@ yydefault: } yyVAL.union = yyLOCAL case 529: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3872 +//line mysql_sql.y:3873 { - val := int64(yyDollar[6].item.(int64)) - if val <= 0 { - yylex.Error("LISTS should be greater than 0") - return 1 + var io *tree.IndexOption = nil + if yyDollar[5].indexOptionUnion() == nil { + io = tree.NewIndexOption() + io.IType = tree.INDEX_TYPE_IVFFLAT + } else { + io = yyDollar[5].indexOptionUnion() + io.IType = tree.INDEX_TYPE_IVFFLAT } - var keyType = tree.INDEX_TYPE_IVFFLAT - var algoParamList = val var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) - yyLOCAL = tree.NewAlterOptionAlterReIndex(name, keyType, algoParamList) + var auto_update = yyDollar[4].boolValUnion() + io.AutoUpdate = auto_update + yyLOCAL = tree.NewAlterOptionAlterAutoUpdate(name, io) } yyVAL.union = yyLOCAL case 530: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3884 +//line mysql_sql.y:3888 { - var keyType = tree.INDEX_TYPE_HNSW + var io *tree.IndexOption = nil + if yyDollar[4].indexOptionUnion() == nil { + io = tree.NewIndexOption() + io.IType = tree.INDEX_TYPE_IVFFLAT + } else { + io = yyDollar[4].indexOptionUnion() + io.IType = tree.INDEX_TYPE_IVFFLAT + } var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) - yyLOCAL = tree.NewAlterOptionAlterReIndex(name, keyType, 0) + yyLOCAL = tree.NewAlterOptionAlterReIndex(name, io) } yyVAL.union = yyLOCAL case 531: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3890 +//line mysql_sql.y:3901 + { + + var io *tree.IndexOption = nil + io = tree.NewIndexOption() + io.IType = tree.INDEX_TYPE_HNSW + var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) + yyLOCAL = tree.NewAlterOptionAlterReIndex(name, io) + } + yyVAL.union = yyLOCAL + case 532: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL tree.AlterTableOption +//line mysql_sql.y:3910 { var checkType = yyDollar[1].str var enforce = yyDollar[3].boolValUnion() yyLOCAL = tree.NewAlterOptionAlterCheck(checkType, enforce) } yyVAL.union = yyLOCAL - case 532: + case 533: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3896 +//line mysql_sql.y:3916 { var checkType = yyDollar[1].str var enforce = yyDollar[3].boolValUnion() yyLOCAL = tree.NewAlterOptionAlterCheck(checkType, enforce) } yyVAL.union = yyLOCAL - case 533: + case 534: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.VisibleType -//line mysql_sql.y:3904 +//line mysql_sql.y:3924 { yyLOCAL = tree.VISIBLE_TYPE_VISIBLE } yyVAL.union = yyLOCAL - case 534: + case 535: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.VisibleType -//line mysql_sql.y:3908 +//line mysql_sql.y:3928 { yyLOCAL = tree.VISIBLE_TYPE_INVISIBLE } yyVAL.union = yyLOCAL - case 535: + case 536: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL bool +//line mysql_sql.y:3934 + { + yyLOCAL = true + } + yyVAL.union = yyLOCAL + case 537: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL bool +//line mysql_sql.y:3938 + { + yyLOCAL = false + } + yyVAL.union = yyLOCAL + case 538: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3914 +//line mysql_sql.y:3944 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].exprUnion() @@ -15105,10 +15186,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 536: + case 539: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3932 +//line mysql_sql.y:3962 { var accountName = "" var dbName = yyDollar[3].str @@ -15124,10 +15205,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 537: + case 540: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3947 +//line mysql_sql.y:3977 { var accountName = "" var dbName = yyDollar[3].str @@ -15143,10 +15224,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 538: + case 541: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3962 +//line mysql_sql.y:3992 { var accountName = yyDollar[4].str var dbName = "" @@ -15162,10 +15243,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 539: + case 542: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3977 +//line mysql_sql.y:4007 { assignments := []*tree.VarAssignmentExpr{ { @@ -15178,20 +15259,20 @@ yydefault: yyLOCAL = &tree.SetVar{Assignments: assignments} } yyVAL.union = yyLOCAL - case 540: + case 543: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AlterAccountAuthOption -//line mysql_sql.y:3990 +//line mysql_sql.y:4020 { yyLOCAL = tree.AlterAccountAuthOption{ Exist: false, } } yyVAL.union = yyLOCAL - case 541: + case 544: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AlterAccountAuthOption -//line mysql_sql.y:3996 +//line mysql_sql.y:4026 { yyLOCAL = tree.AlterAccountAuthOption{ Exist: true, @@ -15201,10 +15282,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 542: + case 545: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4007 +//line mysql_sql.y:4037 { // Create temporary variables with meaningful names ifExists := yyDollar[3].boolValUnion() @@ -15217,10 +15298,10 @@ yydefault: yyLOCAL = tree.NewAlterUser(ifExists, users, role, miscOpt, commentOrAttribute) } yyVAL.union = yyLOCAL - case 543: + case 546: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4019 +//line mysql_sql.y:4049 { ifExists := yyDollar[3].boolValUnion() var Username = yyDollar[4].usernameRecordUnion().Username @@ -15232,10 +15313,10 @@ yydefault: yyLOCAL = tree.NewAlterUser(ifExists, users, nil, miscOpt, commentOrAttribute) } yyVAL.union = yyLOCAL - case 544: + case 547: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4030 +//line mysql_sql.y:4060 { ifExists := yyDollar[3].boolValUnion() var Username = yyDollar[4].usernameRecordUnion().Username @@ -15247,18 +15328,18 @@ yydefault: yyLOCAL = tree.NewAlterUser(ifExists, users, nil, miscOpt, commentOrAttribute) } yyVAL.union = yyLOCAL - case 545: + case 548: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:4042 +//line mysql_sql.y:4072 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 546: + case 549: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:4046 +//line mysql_sql.y:4076 { var UserName = yyDollar[3].str yyLOCAL = tree.NewRole( @@ -15266,66 +15347,66 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 547: + case 550: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4054 +//line mysql_sql.y:4084 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 548: + case 551: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4058 +//line mysql_sql.y:4088 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 549: + case 552: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4063 +//line mysql_sql.y:4093 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 550: + case 553: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4067 +//line mysql_sql.y:4097 { yyLOCAL = yyDollar[1].userMiscOptionUnion() } yyVAL.union = yyLOCAL - case 551: + case 554: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4083 +//line mysql_sql.y:4113 { yyLOCAL = tree.NewUserMiscOptionAccountUnlock() } yyVAL.union = yyLOCAL - case 552: + case 555: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4087 +//line mysql_sql.y:4117 { yyLOCAL = tree.NewUserMiscOptionAccountLock() } yyVAL.union = yyLOCAL - case 553: + case 556: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4091 +//line mysql_sql.y:4121 { yyLOCAL = tree.NewUserMiscOptionPasswordExpireNone() } yyVAL.union = yyLOCAL - case 554: + case 557: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4095 +//line mysql_sql.y:4125 { var Value = yyDollar[3].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordExpireInterval( @@ -15333,34 +15414,34 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 555: + case 558: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4102 +//line mysql_sql.y:4132 { yyLOCAL = tree.NewUserMiscOptionPasswordExpireNever() } yyVAL.union = yyLOCAL - case 556: + case 559: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4106 +//line mysql_sql.y:4136 { yyLOCAL = tree.NewUserMiscOptionPasswordExpireDefault() } yyVAL.union = yyLOCAL - case 557: + case 560: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4110 +//line mysql_sql.y:4140 { yyLOCAL = tree.NewUserMiscOptionPasswordHistoryDefault() } yyVAL.union = yyLOCAL - case 558: + case 561: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4114 +//line mysql_sql.y:4144 { var Value = yyDollar[3].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordHistoryCount( @@ -15368,18 +15449,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 559: + case 562: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4121 +//line mysql_sql.y:4151 { yyLOCAL = tree.NewUserMiscOptionPasswordReuseIntervalDefault() } yyVAL.union = yyLOCAL - case 560: + case 563: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4125 +//line mysql_sql.y:4155 { var Value = yyDollar[4].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordReuseIntervalCount( @@ -15387,34 +15468,34 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 561: + case 564: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4132 +//line mysql_sql.y:4162 { yyLOCAL = tree.NewUserMiscOptionPasswordRequireCurrentNone() } yyVAL.union = yyLOCAL - case 562: + case 565: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4136 +//line mysql_sql.y:4166 { yyLOCAL = tree.NewUserMiscOptionPasswordRequireCurrentDefault() } yyVAL.union = yyLOCAL - case 563: + case 566: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4140 +//line mysql_sql.y:4170 { yyLOCAL = tree.NewUserMiscOptionPasswordRequireCurrentOptional() } yyVAL.union = yyLOCAL - case 564: + case 567: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4144 +//line mysql_sql.y:4174 { var Value = yyDollar[2].item.(int64) yyLOCAL = tree.NewUserMiscOptionFailedLoginAttempts( @@ -15422,10 +15503,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 565: + case 568: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4151 +//line mysql_sql.y:4181 { var Value = yyDollar[2].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordLockTimeCount( @@ -15433,54 +15514,54 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 566: + case 569: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4158 +//line mysql_sql.y:4188 { yyLOCAL = tree.NewUserMiscOptionPasswordLockTimeUnbounded() } yyVAL.union = yyLOCAL - case 567: + case 570: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:4164 +//line mysql_sql.y:4194 { yyVAL.item = nil } - case 568: + case 571: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4169 +//line mysql_sql.y:4199 { yyVAL.item = nil } - case 608: + case 611: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4218 +//line mysql_sql.y:4248 { yyLOCAL = &tree.ShowLogserviceReplicas{} } yyVAL.union = yyLOCAL - case 609: + case 612: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4224 +//line mysql_sql.y:4254 { yyLOCAL = &tree.ShowLogserviceStores{} } yyVAL.union = yyLOCAL - case 610: + case 613: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4230 +//line mysql_sql.y:4260 { yyLOCAL = &tree.ShowLogserviceSettings{} } yyVAL.union = yyLOCAL - case 611: + case 614: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4236 +//line mysql_sql.y:4266 { yyLOCAL = &tree.ShowCollation{ Like: yyDollar[3].comparisionExprUnion(), @@ -15488,50 +15569,50 @@ yydefault: } } yyVAL.union = yyLOCAL - case 612: + case 615: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4245 +//line mysql_sql.y:4275 { yyLOCAL = &tree.ShowStages{ Like: yyDollar[3].comparisionExprUnion(), } } yyVAL.union = yyLOCAL - case 613: + case 616: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4253 +//line mysql_sql.y:4283 { yyLOCAL = &tree.ShowSnapShots{ Where: yyDollar[3].whereUnion(), } } yyVAL.union = yyLOCAL - case 614: + case 617: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4261 +//line mysql_sql.y:4291 { yyLOCAL = &tree.ShowPitr{ Where: yyDollar[3].whereUnion(), } } yyVAL.union = yyLOCAL - case 615: + case 618: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4269 +//line mysql_sql.y:4299 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELACCOUNT, } } yyVAL.union = yyLOCAL - case 616: + case 619: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4275 +//line mysql_sql.y:4305 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELDATABASE, @@ -15539,10 +15620,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 617: + case 620: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4282 +//line mysql_sql.y:4312 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELTABLE, @@ -15551,10 +15632,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 618: + case 621: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4290 +//line mysql_sql.y:4320 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELACCOUNT, @@ -15562,26 +15643,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 619: + case 622: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4299 +//line mysql_sql.y:4329 { yyLOCAL = &tree.ShowGrants{ShowGrantType: tree.GrantForUser} } yyVAL.union = yyLOCAL - case 620: + case 623: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4303 +//line mysql_sql.y:4333 { yyLOCAL = &tree.ShowGrants{Username: yyDollar[4].usernameRecordUnion().Username, Hostname: yyDollar[4].usernameRecordUnion().Hostname, Roles: yyDollar[5].rolesUnion(), ShowGrantType: tree.GrantForUser} } yyVAL.union = yyLOCAL - case 621: + case 624: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4307 +//line mysql_sql.y:4337 { s := &tree.ShowGrants{} roles := []*tree.Role{ @@ -15592,44 +15673,44 @@ yydefault: yyLOCAL = s } yyVAL.union = yyLOCAL - case 622: + case 625: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:4318 +//line mysql_sql.y:4348 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 623: + case 626: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:4322 +//line mysql_sql.y:4352 { yyLOCAL = yyDollar[2].rolesUnion() } yyVAL.union = yyLOCAL - case 624: + case 627: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4328 +//line mysql_sql.y:4358 { yyLOCAL = &tree.ShowTableStatus{DbName: yyDollar[5].str, Like: yyDollar[6].comparisionExprUnion(), Where: yyDollar[7].whereUnion()} } yyVAL.union = yyLOCAL - case 625: + case 628: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4333 +//line mysql_sql.y:4363 { } - case 627: + case 630: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4337 +//line mysql_sql.y:4367 { } - case 629: + case 632: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4342 +//line mysql_sql.y:4372 { yyLOCAL = &tree.ShowFunctionOrProcedureStatus{ Like: yyDollar[4].comparisionExprUnion(), @@ -15638,10 +15719,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 630: + case 633: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4352 +//line mysql_sql.y:4382 { yyLOCAL = &tree.ShowFunctionOrProcedureStatus{ Like: yyDollar[4].comparisionExprUnion(), @@ -15650,68 +15731,68 @@ yydefault: } } yyVAL.union = yyLOCAL - case 631: + case 634: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4362 +//line mysql_sql.y:4392 { yyLOCAL = &tree.ShowRolesStmt{ Like: yyDollar[3].comparisionExprUnion(), } } yyVAL.union = yyLOCAL - case 632: + case 635: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4370 +//line mysql_sql.y:4400 { yyLOCAL = &tree.ShowNodeList{} } yyVAL.union = yyLOCAL - case 633: + case 636: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4376 +//line mysql_sql.y:4406 { yyLOCAL = &tree.ShowLocks{} } yyVAL.union = yyLOCAL - case 634: + case 637: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4382 +//line mysql_sql.y:4412 { yyLOCAL = &tree.ShowTableNumber{DbName: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 635: + case 638: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4388 +//line mysql_sql.y:4418 { yyLOCAL = &tree.ShowColumnNumber{Table: yyDollar[3].unresolvedObjectNameUnion(), DbName: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 636: + case 639: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4394 +//line mysql_sql.y:4424 { yyLOCAL = &tree.ShowTableValues{Table: yyDollar[3].unresolvedObjectNameUnion(), DbName: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 637: + case 640: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4400 +//line mysql_sql.y:4430 { yyLOCAL = &tree.ShowTableSize{Table: yyDollar[3].unresolvedObjectNameUnion(), DbName: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 638: + case 641: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4406 +//line mysql_sql.y:4436 { s := yyDollar[2].statementUnion().(*tree.ShowTarget) s.Like = yyDollar[3].comparisionExprUnion() @@ -15719,74 +15800,74 @@ yydefault: yyLOCAL = s } yyVAL.union = yyLOCAL - case 639: + case 642: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4415 +//line mysql_sql.y:4445 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowConfig} } yyVAL.union = yyLOCAL - case 640: + case 643: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4419 +//line mysql_sql.y:4449 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowCharset} } yyVAL.union = yyLOCAL - case 641: + case 644: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4423 +//line mysql_sql.y:4453 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowEngines} } yyVAL.union = yyLOCAL - case 642: + case 645: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4427 +//line mysql_sql.y:4457 { yyLOCAL = &tree.ShowTarget{DbName: yyDollar[3].str, Type: tree.ShowTriggers} } yyVAL.union = yyLOCAL - case 643: + case 646: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4431 +//line mysql_sql.y:4461 { yyLOCAL = &tree.ShowTarget{DbName: yyDollar[3].str, Type: tree.ShowEvents} } yyVAL.union = yyLOCAL - case 644: + case 647: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4435 +//line mysql_sql.y:4465 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowPlugins} } yyVAL.union = yyLOCAL - case 645: + case 648: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4439 +//line mysql_sql.y:4469 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowPrivileges} } yyVAL.union = yyLOCAL - case 646: + case 649: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4443 +//line mysql_sql.y:4473 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowProfiles} } yyVAL.union = yyLOCAL - case 647: + case 650: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4449 +//line mysql_sql.y:4479 { yyLOCAL = &tree.ShowIndex{ TableName: yyDollar[4].unresolvedObjectNameUnion(), @@ -15795,20 +15876,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 648: + case 651: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4458 +//line mysql_sql.y:4488 { } - case 649: + case 652: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:4460 +//line mysql_sql.y:4490 { } - case 653: + case 656: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4469 +//line mysql_sql.y:4499 { yyLOCAL = &tree.ShowVariables{ Global: yyDollar[2].boolValUnion(), @@ -15817,10 +15898,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 654: + case 657: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4479 +//line mysql_sql.y:4509 { yyLOCAL = &tree.ShowStatus{ Global: yyDollar[2].boolValUnion(), @@ -15829,58 +15910,58 @@ yydefault: } } yyVAL.union = yyLOCAL - case 655: + case 658: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4488 +//line mysql_sql.y:4518 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 656: + case 659: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4492 +//line mysql_sql.y:4522 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 657: + case 660: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4496 +//line mysql_sql.y:4526 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 658: + case 661: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4502 +//line mysql_sql.y:4532 { yyLOCAL = &tree.ShowWarnings{} } yyVAL.union = yyLOCAL - case 659: + case 662: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4508 +//line mysql_sql.y:4538 { yyLOCAL = &tree.ShowErrors{} } yyVAL.union = yyLOCAL - case 660: + case 663: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4514 +//line mysql_sql.y:4544 { yyLOCAL = &tree.ShowProcessList{Full: yyDollar[2].fullOptUnion()} } yyVAL.union = yyLOCAL - case 661: + case 664: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4520 +//line mysql_sql.y:4550 { yyLOCAL = &tree.ShowSequences{ DBName: yyDollar[3].str, @@ -15888,10 +15969,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 662: + case 665: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4529 +//line mysql_sql.y:4559 { yyLOCAL = &tree.ShowTables{ Open: false, @@ -15903,10 +15984,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 663: + case 666: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4540 +//line mysql_sql.y:4570 { yyLOCAL = &tree.ShowTables{ Open: true, @@ -15917,10 +15998,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 664: + case 667: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4552 +//line mysql_sql.y:4582 { yyLOCAL = &tree.ShowDatabases{ Like: yyDollar[3].comparisionExprUnion(), @@ -15929,18 +16010,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 665: + case 668: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4560 +//line mysql_sql.y:4590 { yyLOCAL = &tree.ShowDatabases{Like: yyDollar[3].comparisionExprUnion(), Where: yyDollar[4].whereUnion()} } yyVAL.union = yyLOCAL - case 666: + case 669: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4566 +//line mysql_sql.y:4596 { yyLOCAL = &tree.ShowColumns{ Ext: false, @@ -15953,10 +16034,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 667: + case 670: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4578 +//line mysql_sql.y:4608 { yyLOCAL = &tree.ShowColumns{ Ext: true, @@ -15969,110 +16050,110 @@ yydefault: } } yyVAL.union = yyLOCAL - case 668: + case 671: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4592 +//line mysql_sql.y:4622 { yyLOCAL = &tree.ShowAccounts{Like: yyDollar[3].comparisionExprUnion()} } yyVAL.union = yyLOCAL - case 669: + case 672: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4598 +//line mysql_sql.y:4628 { yyLOCAL = &tree.ShowPublications{Like: yyDollar[3].comparisionExprUnion()} } yyVAL.union = yyLOCAL - case 670: + case 673: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4604 +//line mysql_sql.y:4634 { yyLOCAL = &tree.ShowAccountUpgrade{} } yyVAL.union = yyLOCAL - case 671: + case 674: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4610 +//line mysql_sql.y:4640 { yyLOCAL = &tree.ShowSubscriptions{Like: yyDollar[3].comparisionExprUnion()} } yyVAL.union = yyLOCAL - case 672: + case 675: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4614 +//line mysql_sql.y:4644 { yyLOCAL = &tree.ShowSubscriptions{All: true, Like: yyDollar[4].comparisionExprUnion()} } yyVAL.union = yyLOCAL - case 673: + case 676: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ComparisonExpr -//line mysql_sql.y:4619 +//line mysql_sql.y:4649 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 674: + case 677: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ComparisonExpr -//line mysql_sql.y:4623 +//line mysql_sql.y:4653 { yyLOCAL = tree.NewComparisonExpr(tree.LIKE, nil, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 675: + case 678: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ComparisonExpr -//line mysql_sql.y:4627 +//line mysql_sql.y:4657 { yyLOCAL = tree.NewComparisonExpr(tree.ILIKE, nil, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 676: + case 679: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4632 +//line mysql_sql.y:4662 { yyVAL.str = "" } - case 677: + case 680: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4636 +//line mysql_sql.y:4666 { yyVAL.str = yyDollar[2].cstrUnion().Compare() } - case 678: + case 681: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4642 +//line mysql_sql.y:4672 { yyLOCAL = yyDollar[2].unresolvedObjectNameUnion() } yyVAL.union = yyLOCAL - case 683: + case 686: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4655 +//line mysql_sql.y:4685 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 684: + case 687: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4659 +//line mysql_sql.y:4689 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 685: + case 688: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4665 +//line mysql_sql.y:4695 { yyLOCAL = &tree.ShowCreateTable{ Name: yyDollar[4].unresolvedObjectNameUnion(), @@ -16080,10 +16161,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 686: + case 689: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4673 +//line mysql_sql.y:4703 { yyLOCAL = &tree.ShowCreateView{ Name: yyDollar[4].unresolvedObjectNameUnion(), @@ -16091,10 +16172,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 687: + case 690: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4680 +//line mysql_sql.y:4710 { yyLOCAL = &tree.ShowCreateDatabase{ IfNotExists: yyDollar[4].ifNotExistsUnion(), @@ -16103,140 +16184,140 @@ yydefault: } } yyVAL.union = yyLOCAL - case 688: + case 691: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4688 +//line mysql_sql.y:4718 { yyLOCAL = &tree.ShowCreatePublications{Name: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 689: + case 692: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4694 +//line mysql_sql.y:4724 { yyLOCAL = &tree.ShowBackendServers{} } yyVAL.union = yyLOCAL - case 690: + case 693: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4700 +//line mysql_sql.y:4730 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedObjectName(tblName) } yyVAL.union = yyLOCAL - case 691: + case 694: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4705 +//line mysql_sql.y:4735 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedObjectName(dbName, tblName) } yyVAL.union = yyLOCAL - case 692: + case 695: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:4713 +//line mysql_sql.y:4743 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } - case 693: + case 696: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4719 +//line mysql_sql.y:4749 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedObjectName(tblName) } yyVAL.union = yyLOCAL - case 694: + case 697: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4724 +//line mysql_sql.y:4754 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedObjectName(dbName, tblName) } yyVAL.union = yyLOCAL - case 695: + case 698: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4730 +//line mysql_sql.y:4760 { yyLOCAL = tree.NewUnresolvedObjectName(yyDollar[1].cstrUnion().Compare(), yyDollar[3].cstrUnion().Compare(), yyDollar[5].cstrUnion().Compare()) } yyVAL.union = yyLOCAL - case 696: + case 699: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4736 +//line mysql_sql.y:4766 { yyLOCAL = tree.NewTruncateTable(yyDollar[2].tableNameUnion()) } yyVAL.union = yyLOCAL - case 697: + case 700: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4740 +//line mysql_sql.y:4770 { yyLOCAL = tree.NewTruncateTable(yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 716: + case 719: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4768 +//line mysql_sql.y:4798 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].tableNamesUnion() yyLOCAL = tree.NewDropSequence(ifExists, name) } yyVAL.union = yyLOCAL - case 717: + case 720: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4776 +//line mysql_sql.y:4806 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].exprUnion() yyLOCAL = tree.NewDropAccount(ifExists, name) } yyVAL.union = yyLOCAL - case 718: + case 721: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4784 +//line mysql_sql.y:4814 { var ifExists = yyDollar[3].boolValUnion() var users = yyDollar[4].usersUnion() yyLOCAL = tree.NewDropUser(ifExists, users) } yyVAL.union = yyLOCAL - case 719: + case 722: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:4792 +//line mysql_sql.y:4822 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } yyVAL.union = yyLOCAL - case 720: + case 723: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:4796 +//line mysql_sql.y:4826 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } yyVAL.union = yyLOCAL - case 721: + case 724: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:4802 +//line mysql_sql.y:4832 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -16248,20 +16329,20 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 722: + case 725: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4815 +//line mysql_sql.y:4845 { var ifExists = yyDollar[3].boolValUnion() var roles = yyDollar[4].rolesUnion() yyLOCAL = tree.NewDropRole(ifExists, roles) } yyVAL.union = yyLOCAL - case 723: + case 726: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4823 +//line mysql_sql.y:4853 { var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) var tableName = yyDollar[6].tableNameUnion() @@ -16269,126 +16350,126 @@ yydefault: yyLOCAL = tree.NewDropIndex(name, tableName, ifExists) } yyVAL.union = yyLOCAL - case 724: + case 727: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4832 +//line mysql_sql.y:4862 { var ifExists = yyDollar[4].boolValUnion() var names = yyDollar[5].tableNamesUnion() yyLOCAL = tree.NewDropTable(ifExists, names) } yyVAL.union = yyLOCAL - case 725: + case 728: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4838 +//line mysql_sql.y:4868 { var ifExists = yyDollar[3].boolValUnion() var names = yyDollar[4].tableNamesUnion() yyLOCAL = tree.NewDropTable(ifExists, names) } yyVAL.union = yyLOCAL - case 726: + case 729: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4846 +//line mysql_sql.y:4876 { var ifExists = yyDollar[3].boolValUnion() var names = yyDollar[4].tableNamesUnion() yyLOCAL = tree.NewDropConnector(ifExists, names) } yyVAL.union = yyLOCAL - case 727: + case 730: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4854 +//line mysql_sql.y:4884 { var ifExists = yyDollar[3].boolValUnion() var names = yyDollar[4].tableNamesUnion() yyLOCAL = tree.NewDropView(ifExists, names) } yyVAL.union = yyLOCAL - case 728: + case 731: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4862 +//line mysql_sql.y:4892 { var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) var ifExists = yyDollar[3].boolValUnion() yyLOCAL = tree.NewDropDatabase(name, ifExists) } yyVAL.union = yyLOCAL - case 729: + case 732: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4868 +//line mysql_sql.y:4898 { var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) var ifExists = yyDollar[3].boolValUnion() yyLOCAL = tree.NewDropDatabase(name, ifExists) } yyVAL.union = yyLOCAL - case 730: + case 733: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4876 +//line mysql_sql.y:4906 { yyLOCAL = tree.NewDeallocate(tree.Identifier(yyDollar[3].str), true) } yyVAL.union = yyLOCAL - case 731: + case 734: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4882 +//line mysql_sql.y:4912 { var name = yyDollar[3].functionNameUnion() var args = yyDollar[5].funcArgsUnion() yyLOCAL = tree.NewDropFunction(name, args) } yyVAL.union = yyLOCAL - case 732: + case 735: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4890 +//line mysql_sql.y:4920 { var name = yyDollar[3].procNameUnion() var ifExists = false yyLOCAL = tree.NewDropProcedure(name, ifExists) } yyVAL.union = yyLOCAL - case 733: + case 736: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4896 +//line mysql_sql.y:4926 { var name = yyDollar[5].procNameUnion() var ifExists = true yyLOCAL = tree.NewDropProcedure(name, ifExists) } yyVAL.union = yyLOCAL - case 736: + case 739: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4906 +//line mysql_sql.y:4936 { yyDollar[2].statementUnion().(*tree.Delete).With = yyDollar[1].withClauseUnion() yyLOCAL = yyDollar[2].statementUnion() } yyVAL.union = yyLOCAL - case 737: + case 740: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4911 +//line mysql_sql.y:4941 { yyDollar[2].statementUnion().(*tree.Delete).With = yyDollar[1].withClauseUnion() yyLOCAL = yyDollar[2].statementUnion() } yyVAL.union = yyLOCAL - case 738: + case 741: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4918 +//line mysql_sql.y:4948 { // Single-Table Syntax t := &tree.AliasedTableExpr{ @@ -16405,10 +16486,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 739: + case 742: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4934 +//line mysql_sql.y:4964 { // Multiple-Table Syntax yyLOCAL = &tree.Delete{ @@ -16418,10 +16499,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 740: + case 743: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4945 +//line mysql_sql.y:4975 { // Multiple-Table Syntax yyLOCAL = &tree.Delete{ @@ -16431,36 +16512,36 @@ yydefault: } } yyVAL.union = yyLOCAL - case 741: + case 744: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExprs -//line mysql_sql.y:4956 +//line mysql_sql.y:4986 { yyLOCAL = tree.TableExprs{yyDollar[1].tableNameUnion()} } yyVAL.union = yyLOCAL - case 742: + case 745: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExprs -//line mysql_sql.y:4960 +//line mysql_sql.y:4990 { yyLOCAL = append(yyDollar[1].tableExprsUnion(), yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 743: + case 746: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:4966 +//line mysql_sql.y:4996 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, nil) } yyVAL.union = yyLOCAL - case 744: + case 747: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:4972 +//line mysql_sql.y:5002 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -16468,35 +16549,35 @@ yydefault: yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, nil) } yyVAL.union = yyLOCAL - case 745: + case 748: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4981 +//line mysql_sql.y:5011 { } - case 746: + case 749: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4983 +//line mysql_sql.y:5013 { } - case 747: + case 750: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4986 +//line mysql_sql.y:5016 { } - case 752: + case 755: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4995 +//line mysql_sql.y:5025 { } - case 754: + case 757: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4999 +//line mysql_sql.y:5029 { } - case 756: + case 759: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5004 +//line mysql_sql.y:5034 { rep := yyDollar[4].replaceUnion() rep.Table = yyDollar[2].tableExprUnion() @@ -16504,10 +16585,10 @@ yydefault: yyLOCAL = rep } yyVAL.union = yyLOCAL - case 757: + case 760: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5013 +//line mysql_sql.y:5043 { vc := tree.NewValuesClause(yyDollar[2].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16515,20 +16596,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 758: + case 761: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5020 +//line mysql_sql.y:5050 { yyLOCAL = &tree.Replace{ Rows: yyDollar[1].selectUnion(), } } yyVAL.union = yyLOCAL - case 759: + case 762: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5026 +//line mysql_sql.y:5056 { vc := tree.NewValuesClause(yyDollar[5].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16537,10 +16618,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 760: + case 763: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5034 +//line mysql_sql.y:5064 { vc := tree.NewValuesClause(yyDollar[4].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16548,10 +16629,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 761: + case 764: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5041 +//line mysql_sql.y:5071 { yyLOCAL = &tree.Replace{ Columns: yyDollar[2].identifierListUnion(), @@ -16559,10 +16640,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 762: + case 765: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5048 +//line mysql_sql.y:5078 { if yyDollar[2].assignmentsUnion() == nil { yylex.Error("the set list of replace can not be empty") @@ -16581,10 +16662,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 763: + case 766: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5068 +//line mysql_sql.y:5098 { ins := yyDollar[4].insertUnion() ins.Table = yyDollar[2].tableExprUnion() @@ -16593,10 +16674,10 @@ yydefault: yyLOCAL = ins } yyVAL.union = yyLOCAL - case 764: + case 767: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5076 +//line mysql_sql.y:5106 { ins := yyDollar[5].insertUnion() ins.Table = yyDollar[3].tableExprUnion() @@ -16605,26 +16686,26 @@ yydefault: yyLOCAL = ins } yyVAL.union = yyLOCAL - case 765: + case 768: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5086 +//line mysql_sql.y:5116 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 766: + case 769: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5090 +//line mysql_sql.y:5120 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 767: + case 770: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5096 +//line mysql_sql.y:5126 { vc := tree.NewValuesClause(yyDollar[2].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16632,20 +16713,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 768: + case 771: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5103 +//line mysql_sql.y:5133 { yyLOCAL = &tree.Insert{ Rows: yyDollar[1].selectUnion(), } } yyVAL.union = yyLOCAL - case 769: + case 772: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5109 +//line mysql_sql.y:5139 { vc := tree.NewValuesClause(yyDollar[5].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16654,10 +16735,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 770: + case 773: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5117 +//line mysql_sql.y:5147 { vc := tree.NewValuesClause(yyDollar[4].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16665,10 +16746,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 771: + case 774: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5124 +//line mysql_sql.y:5154 { yyLOCAL = &tree.Insert{ Columns: yyDollar[2].identifierListUnion(), @@ -16676,10 +16757,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 772: + case 775: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5131 +//line mysql_sql.y:5161 { if yyDollar[2].assignmentsUnion() == nil { yylex.Error("the set list of insert can not be empty") @@ -16698,58 +16779,58 @@ yydefault: } } yyVAL.union = yyLOCAL - case 773: + case 776: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5150 +//line mysql_sql.y:5180 { yyLOCAL = []*tree.UpdateExpr{} } yyVAL.union = yyLOCAL - case 774: + case 777: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5154 +//line mysql_sql.y:5184 { yyLOCAL = yyDollar[5].updateExprsUnion() } yyVAL.union = yyLOCAL - case 775: + case 778: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5158 +//line mysql_sql.y:5188 { yyLOCAL = []*tree.UpdateExpr{nil} } yyVAL.union = yyLOCAL - case 776: + case 779: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5163 +//line mysql_sql.y:5193 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 777: + case 780: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5167 +//line mysql_sql.y:5197 { yyLOCAL = []*tree.Assignment{yyDollar[1].assignmentUnion()} } yyVAL.union = yyLOCAL - case 778: + case 781: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5171 +//line mysql_sql.y:5201 { yyLOCAL = append(yyDollar[1].assignmentsUnion(), yyDollar[3].assignmentUnion()) } yyVAL.union = yyLOCAL - case 779: + case 782: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Assignment -//line mysql_sql.y:5177 +//line mysql_sql.y:5207 { yyLOCAL = &tree.Assignment{ Column: tree.Identifier(yyDollar[1].str), @@ -16757,155 +16838,155 @@ yydefault: } } yyVAL.union = yyLOCAL - case 780: + case 783: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5186 +//line mysql_sql.y:5216 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 781: + case 784: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5190 +//line mysql_sql.y:5220 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 782: + case 785: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:5196 +//line mysql_sql.y:5226 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } - case 783: + case 786: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:5200 +//line mysql_sql.y:5230 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) } - case 784: + case 787: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5206 +//line mysql_sql.y:5236 { yyLOCAL = []tree.Exprs{yyDollar[1].exprsUnion()} } yyVAL.union = yyLOCAL - case 785: + case 788: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5210 +//line mysql_sql.y:5240 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 786: + case 789: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5216 +//line mysql_sql.y:5246 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 787: + case 790: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5221 +//line mysql_sql.y:5251 { } - case 789: + case 792: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5225 +//line mysql_sql.y:5255 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 791: + case 794: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5232 +//line mysql_sql.y:5262 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 792: + case 795: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5236 +//line mysql_sql.y:5266 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 794: + case 797: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5243 +//line mysql_sql.y:5273 { yyLOCAL = &tree.DefaultVal{} } yyVAL.union = yyLOCAL - case 795: + case 798: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5248 +//line mysql_sql.y:5278 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 796: + case 799: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5252 +//line mysql_sql.y:5282 { yyLOCAL = yyDollar[3].identifierListUnion() } yyVAL.union = yyLOCAL - case 797: + case 800: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5258 +//line mysql_sql.y:5288 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } yyVAL.union = yyLOCAL - case 798: + case 801: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5262 +//line mysql_sql.y:5292 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } yyVAL.union = yyLOCAL - case 799: + case 802: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5268 +//line mysql_sql.y:5298 { yyLOCAL = yyDollar[2].tableNameUnion() } yyVAL.union = yyLOCAL - case 800: + case 803: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5272 +//line mysql_sql.y:5302 { yyLOCAL = yyDollar[1].tableNameUnion() } yyVAL.union = yyLOCAL - case 801: + case 804: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ExportParam -//line mysql_sql.y:5277 +//line mysql_sql.y:5307 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 802: + case 805: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.ExportParam -//line mysql_sql.y:5281 +//line mysql_sql.y:5311 { yyLOCAL = &tree.ExportParam{ Outfile: true, @@ -16918,10 +16999,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 803: + case 806: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5294 +//line mysql_sql.y:5324 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -16933,10 +17014,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 804: + case 807: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5305 +//line mysql_sql.y:5335 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -16948,10 +17029,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 805: + case 808: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5316 +//line mysql_sql.y:5346 { str := yyDollar[7].str if str != "\\" && len(str) > 1 { @@ -16974,10 +17055,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 806: + case 809: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5338 +//line mysql_sql.y:5368 { str := yyDollar[4].str if str != "\\" && len(str) > 1 { @@ -17000,10 +17081,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 807: + case 810: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:5361 +//line mysql_sql.y:5391 { yyLOCAL = &tree.Lines{ TerminatedBy: &tree.Terminated{ @@ -17012,10 +17093,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 808: + case 811: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:5369 +//line mysql_sql.y:5399 { yyLOCAL = &tree.Lines{ TerminatedBy: &tree.Terminated{ @@ -17024,18 +17105,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 809: + case 812: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5378 +//line mysql_sql.y:5408 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 810: + case 813: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5382 +//line mysql_sql.y:5412 { str := strings.ToLower(yyDollar[2].str) if str == "true" { @@ -17048,131 +17129,131 @@ yydefault: } } yyVAL.union = yyLOCAL - case 811: + case 814: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:5395 +//line mysql_sql.y:5425 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 812: + case 815: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:5399 +//line mysql_sql.y:5429 { yyLOCAL = yyDollar[2].item.(int64) } yyVAL.union = yyLOCAL - case 813: + case 816: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5404 +//line mysql_sql.y:5434 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 814: + case 817: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5408 +//line mysql_sql.y:5438 { yyLOCAL = yyDollar[3].strsUnion() } yyVAL.union = yyLOCAL - case 815: + case 818: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5414 +//line mysql_sql.y:5444 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].cstrUnion().Compare()) } yyVAL.union = yyLOCAL - case 816: + case 819: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5419 +//line mysql_sql.y:5449 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].cstrUnion().Compare()) } yyVAL.union = yyLOCAL - case 818: + case 821: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5426 +//line mysql_sql.y:5456 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion()} } yyVAL.union = yyLOCAL - case 819: + case 822: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5432 +//line mysql_sql.y:5462 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), RankOption: yyDollar[5].rankOptionUnion(), Ep: yyDollar[6].exportParmUnion(), SelectLockInfo: yyDollar[7].selectLockInfoUnion()} } yyVAL.union = yyLOCAL - case 820: + case 823: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5436 +//line mysql_sql.y:5466 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Ep: yyDollar[4].exportParmUnion()} } yyVAL.union = yyLOCAL - case 821: + case 824: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5440 +//line mysql_sql.y:5470 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), RankOption: yyDollar[5].rankOptionUnion(), Ep: yyDollar[6].exportParmUnion()} } yyVAL.union = yyLOCAL - case 822: + case 825: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5444 +//line mysql_sql.y:5474 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), TimeWindow: yyDollar[3].timeWindowUnion(), OrderBy: yyDollar[4].orderByUnion(), Limit: yyDollar[5].limitUnion(), RankOption: yyDollar[6].rankOptionUnion(), Ep: yyDollar[7].exportParmUnion(), SelectLockInfo: yyDollar[8].selectLockInfoUnion(), With: yyDollar[1].withClauseUnion()} } yyVAL.union = yyLOCAL - case 823: + case 826: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5448 +//line mysql_sql.y:5478 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), OrderBy: yyDollar[3].orderByUnion(), Ep: yyDollar[4].exportParmUnion(), With: yyDollar[1].withClauseUnion()} } yyVAL.union = yyLOCAL - case 824: + case 827: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5452 +//line mysql_sql.y:5482 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), RankOption: yyDollar[5].rankOptionUnion(), Ep: yyDollar[6].exportParmUnion(), With: yyDollar[1].withClauseUnion()} } yyVAL.union = yyLOCAL - case 825: + case 828: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5457 +//line mysql_sql.y:5487 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 826: + case 829: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5461 +//line mysql_sql.y:5491 { yyLOCAL = yyDollar[1].timeWindowUnion() } yyVAL.union = yyLOCAL - case 827: + case 830: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5467 +//line mysql_sql.y:5497 { yyLOCAL = &tree.TimeWindow{ Interval: yyDollar[1].timeIntervalUnion(), @@ -17181,10 +17262,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 828: + case 831: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.Interval -//line mysql_sql.y:5477 +//line mysql_sql.y:5507 { str := fmt.Sprintf("%v", yyDollar[5].item) v, errStr := util.GetInt64(yyDollar[5].item) @@ -17199,18 +17280,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 829: + case 832: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Sliding -//line mysql_sql.y:5492 +//line mysql_sql.y:5522 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 830: + case 833: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Sliding -//line mysql_sql.y:5496 +//line mysql_sql.y:5526 { str := fmt.Sprintf("%v", yyDollar[3].item) v, errStr := util.GetInt64(yyDollar[3].item) @@ -17224,28 +17305,28 @@ yydefault: } } yyVAL.union = yyLOCAL - case 831: + case 834: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5510 +//line mysql_sql.y:5540 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 832: + case 835: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5514 +//line mysql_sql.y:5544 { yyLOCAL = &tree.Fill{ Mode: yyDollar[3].fillModeUnion(), } } yyVAL.union = yyLOCAL - case 833: + case 836: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5520 +//line mysql_sql.y:5550 { yyLOCAL = &tree.Fill{ Mode: tree.FillValue, @@ -17253,50 +17334,50 @@ yydefault: } } yyVAL.union = yyLOCAL - case 834: + case 837: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5529 +//line mysql_sql.y:5559 { yyLOCAL = tree.FillPrev } yyVAL.union = yyLOCAL - case 835: + case 838: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5533 +//line mysql_sql.y:5563 { yyLOCAL = tree.FillNext } yyVAL.union = yyLOCAL - case 836: + case 839: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5537 +//line mysql_sql.y:5567 { yyLOCAL = tree.FillNone } yyVAL.union = yyLOCAL - case 837: + case 840: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5541 +//line mysql_sql.y:5571 { yyLOCAL = tree.FillNull } yyVAL.union = yyLOCAL - case 838: + case 841: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5545 +//line mysql_sql.y:5575 { yyLOCAL = tree.FillLinear } yyVAL.union = yyLOCAL - case 839: + case 842: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.With -//line mysql_sql.y:5551 +//line mysql_sql.y:5581 { yyLOCAL = &tree.With{ IsRecursive: false, @@ -17304,10 +17385,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 840: + case 843: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.With -//line mysql_sql.y:5558 +//line mysql_sql.y:5588 { yyLOCAL = &tree.With{ IsRecursive: true, @@ -17315,26 +17396,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 841: + case 844: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.CTE -//line mysql_sql.y:5567 +//line mysql_sql.y:5597 { yyLOCAL = []*tree.CTE{yyDollar[1].cteUnion()} } yyVAL.union = yyLOCAL - case 842: + case 845: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.CTE -//line mysql_sql.y:5571 +//line mysql_sql.y:5601 { yyLOCAL = append(yyDollar[1].cteListUnion(), yyDollar[3].cteUnion()) } yyVAL.union = yyLOCAL - case 843: + case 846: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.CTE -//line mysql_sql.y:5577 +//line mysql_sql.y:5607 { yyLOCAL = &tree.CTE{ Name: &tree.AliasClause{Alias: tree.Identifier(yyDollar[1].cstrUnion().Compare()), Cols: yyDollar[2].identifierListUnion()}, @@ -17342,74 +17423,74 @@ yydefault: } } yyVAL.union = yyLOCAL - case 844: + case 847: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5585 +//line mysql_sql.y:5615 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 845: + case 848: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5589 +//line mysql_sql.y:5619 { yyLOCAL = yyDollar[2].identifierListUnion() } yyVAL.union = yyLOCAL - case 846: + case 849: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5594 +//line mysql_sql.y:5624 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 847: + case 850: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5598 +//line mysql_sql.y:5628 { yyLOCAL = yyDollar[1].limitUnion() } yyVAL.union = yyLOCAL - case 848: + case 851: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5604 +//line mysql_sql.y:5634 { yyLOCAL = &tree.Limit{Count: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 849: + case 852: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5608 +//line mysql_sql.y:5638 { yyLOCAL = &tree.Limit{Offset: yyDollar[2].exprUnion(), Count: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 850: + case 853: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5612 +//line mysql_sql.y:5642 { yyLOCAL = &tree.Limit{Offset: yyDollar[4].exprUnion(), Count: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 851: + case 854: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.RankOption -//line mysql_sql.y:5617 +//line mysql_sql.y:5647 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 852: + case 855: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.RankOption -//line mysql_sql.y:5621 +//line mysql_sql.y:5651 { // Parse option strings to extract key=value pairs into a map optionMap := make(map[string]string) @@ -17444,140 +17525,140 @@ yydefault: } } yyVAL.union = yyLOCAL - case 853: + case 856: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5656 +//line mysql_sql.y:5686 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 854: + case 857: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5660 +//line mysql_sql.y:5690 { yyLOCAL = yyDollar[1].orderByUnion() } yyVAL.union = yyLOCAL - case 855: + case 858: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5666 +//line mysql_sql.y:5696 { yyLOCAL = yyDollar[3].orderByUnion() } yyVAL.union = yyLOCAL - case 856: + case 859: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5672 +//line mysql_sql.y:5702 { yyLOCAL = tree.OrderBy{yyDollar[1].orderUnion()} } yyVAL.union = yyLOCAL - case 857: + case 860: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5676 +//line mysql_sql.y:5706 { yyLOCAL = append(yyDollar[1].orderByUnion(), yyDollar[3].orderUnion()) } yyVAL.union = yyLOCAL - case 858: + case 861: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Order -//line mysql_sql.y:5682 +//line mysql_sql.y:5712 { yyLOCAL = &tree.Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].directionUnion(), NullsPosition: yyDollar[3].nullsPositionUnion()} } yyVAL.union = yyLOCAL - case 859: + case 862: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5687 +//line mysql_sql.y:5717 { yyLOCAL = tree.DefaultDirection } yyVAL.union = yyLOCAL - case 860: + case 863: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5691 +//line mysql_sql.y:5721 { yyLOCAL = tree.Ascending } yyVAL.union = yyLOCAL - case 861: + case 864: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5695 +//line mysql_sql.y:5725 { yyLOCAL = tree.Descending } yyVAL.union = yyLOCAL - case 862: + case 865: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5700 +//line mysql_sql.y:5730 { yyLOCAL = tree.DefaultNullsPosition } yyVAL.union = yyLOCAL - case 863: + case 866: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5704 +//line mysql_sql.y:5734 { yyLOCAL = tree.NullsFirst } yyVAL.union = yyLOCAL - case 864: + case 867: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5708 +//line mysql_sql.y:5738 { yyLOCAL = tree.NullsLast } yyVAL.union = yyLOCAL - case 865: + case 868: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SelectLockInfo -//line mysql_sql.y:5713 +//line mysql_sql.y:5743 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 866: + case 869: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SelectLockInfo -//line mysql_sql.y:5717 +//line mysql_sql.y:5747 { yyLOCAL = &tree.SelectLockInfo{ LockType: tree.SelectLockForUpdate, } } yyVAL.union = yyLOCAL - case 867: + case 870: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5725 +//line mysql_sql.y:5755 { yyLOCAL = &tree.ParenSelect{Select: yyDollar[2].selectUnion()} } yyVAL.union = yyLOCAL - case 868: + case 871: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5729 +//line mysql_sql.y:5759 { yyLOCAL = &tree.ParenSelect{Select: &tree.Select{Select: yyDollar[2].selectStatementUnion()}} } yyVAL.union = yyLOCAL - case 869: + case 872: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5733 +//line mysql_sql.y:5763 { valuesStmt := yyDollar[2].statementUnion().(*tree.ValuesStatement) yyLOCAL = &tree.ParenSelect{Select: &tree.Select{ @@ -17590,18 +17671,18 @@ yydefault: }} } yyVAL.union = yyLOCAL - case 870: + case 873: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5747 +//line mysql_sql.y:5777 { yyLOCAL = yyDollar[1].selectStatementUnion() } yyVAL.union = yyLOCAL - case 871: + case 874: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5751 +//line mysql_sql.y:5781 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17612,10 +17693,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 872: + case 875: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5761 +//line mysql_sql.y:5791 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17626,10 +17707,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 873: + case 876: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5771 +//line mysql_sql.y:5801 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17640,10 +17721,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 874: + case 877: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5781 +//line mysql_sql.y:5811 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17654,10 +17735,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 875: + case 878: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5793 +//line mysql_sql.y:5823 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17666,10 +17747,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 876: + case 879: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5801 +//line mysql_sql.y:5831 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17678,10 +17759,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 877: + case 880: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5809 +//line mysql_sql.y:5839 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17690,10 +17771,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 878: + case 881: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5818 +//line mysql_sql.y:5848 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17702,10 +17783,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 879: + case 882: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5826 +//line mysql_sql.y:5856 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17714,10 +17795,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 880: + case 883: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5834 +//line mysql_sql.y:5864 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17726,10 +17807,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 881: + case 884: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5842 +//line mysql_sql.y:5872 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17738,10 +17819,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 882: + case 885: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5850 +//line mysql_sql.y:5880 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17750,10 +17831,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 883: + case 886: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5858 +//line mysql_sql.y:5888 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17762,10 +17843,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 884: + case 887: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5866 +//line mysql_sql.y:5896 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17774,10 +17855,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 885: + case 888: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5874 +//line mysql_sql.y:5904 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17786,10 +17867,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 886: + case 889: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5882 +//line mysql_sql.y:5912 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17798,10 +17879,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 887: + case 890: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5892 +//line mysql_sql.y:5922 { yyLOCAL = &tree.SelectClause{ Distinct: tree.QuerySpecOptionDistinct&yyDollar[2].selectOptionsUnion() != 0, @@ -17814,146 +17895,146 @@ yydefault: } } yyVAL.union = yyLOCAL - case 888: + case 891: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5906 +//line mysql_sql.y:5936 { yyLOCAL = tree.QuerySpecOptionNone } yyVAL.union = yyLOCAL - case 889: + case 892: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5910 +//line mysql_sql.y:5940 { yyLOCAL = yyDollar[1].selectOptionsUnion() } yyVAL.union = yyLOCAL - case 890: + case 893: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5916 +//line mysql_sql.y:5946 { yyLOCAL = yyDollar[1].selectOptionUnion() } yyVAL.union = yyLOCAL - case 891: + case 894: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5920 +//line mysql_sql.y:5950 { yyLOCAL = yyDollar[1].selectOptionsUnion() | yyDollar[2].selectOptionUnion() } yyVAL.union = yyLOCAL - case 892: + case 895: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5926 +//line mysql_sql.y:5956 { yyLOCAL = tree.QuerySpecOptionSqlSmallResult } yyVAL.union = yyLOCAL - case 893: + case 896: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5930 +//line mysql_sql.y:5960 { yyLOCAL = tree.QuerySpecOptionSqlBigResult } yyVAL.union = yyLOCAL - case 894: + case 897: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5934 +//line mysql_sql.y:5964 { yyLOCAL = tree.QuerySpecOptionSqlBufferResult } yyVAL.union = yyLOCAL - case 895: + case 898: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5938 +//line mysql_sql.y:5968 { yyLOCAL = tree.QuerySpecOptionStraightJoin } yyVAL.union = yyLOCAL - case 896: + case 899: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5942 +//line mysql_sql.y:5972 { yyLOCAL = tree.QuerySpecOptionHighPriority } yyVAL.union = yyLOCAL - case 897: + case 900: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5946 +//line mysql_sql.y:5976 { yyLOCAL = tree.QuerySpecOptionSqlCalcFoundRows } yyVAL.union = yyLOCAL - case 898: + case 901: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5950 +//line mysql_sql.y:5980 { yyLOCAL = tree.QuerySpecOptionSqlNoCache } yyVAL.union = yyLOCAL - case 899: + case 902: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5954 +//line mysql_sql.y:5984 { yyLOCAL = tree.QuerySpecOptionAll } yyVAL.union = yyLOCAL - case 900: + case 903: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5958 +//line mysql_sql.y:5988 { yyLOCAL = tree.QuerySpecOptionDistinct } yyVAL.union = yyLOCAL - case 901: + case 904: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5962 +//line mysql_sql.y:5992 { yyLOCAL = tree.QuerySpecOptionDistinctRow } yyVAL.union = yyLOCAL - case 902: + case 905: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5984 +//line mysql_sql.y:6014 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 903: + case 906: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5988 +//line mysql_sql.y:6018 { yyLOCAL = &tree.Where{Type: tree.AstHaving, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 904: + case 907: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5993 +//line mysql_sql.y:6023 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 905: + case 908: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5997 +//line mysql_sql.y:6027 { exprsList := []tree.Exprs{yyDollar[3].exprsUnion()} yyLOCAL = &tree.GroupByClause{ @@ -17964,10 +18045,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 906: + case 909: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6007 +//line mysql_sql.y:6037 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: yyDollar[6].rowsExprsUnion(), @@ -17977,10 +18058,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 907: + case 910: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6016 +//line mysql_sql.y:6046 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: []tree.Exprs{yyDollar[5].exprsUnion()}, @@ -17990,10 +18071,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 908: + case 911: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6025 +//line mysql_sql.y:6055 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: []tree.Exprs{yyDollar[5].exprsUnion()}, @@ -18003,106 +18084,106 @@ yydefault: } } yyVAL.union = yyLOCAL - case 909: + case 912: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6036 +//line mysql_sql.y:6066 { yyLOCAL = []tree.Exprs{yyDollar[2].exprsUnion()} } yyVAL.union = yyLOCAL - case 910: + case 913: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6040 +//line mysql_sql.y:6070 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[4].exprsUnion()) } yyVAL.union = yyLOCAL - case 911: + case 914: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6046 +//line mysql_sql.y:6076 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 912: + case 915: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6050 +//line mysql_sql.y:6080 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 913: + case 916: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:6055 +//line mysql_sql.y:6085 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 914: + case 917: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:6059 +//line mysql_sql.y:6089 { yyLOCAL = &tree.Where{Type: tree.AstWhere, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 915: + case 918: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectExprs -//line mysql_sql.y:6065 +//line mysql_sql.y:6095 { yyLOCAL = tree.SelectExprs{yyDollar[1].selectExprUnion()} } yyVAL.union = yyLOCAL - case 916: + case 919: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectExprs -//line mysql_sql.y:6069 +//line mysql_sql.y:6099 { yyLOCAL = append(yyDollar[1].selectExprsUnion(), yyDollar[3].selectExprUnion()) } yyVAL.union = yyLOCAL - case 917: + case 920: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6075 +//line mysql_sql.y:6105 { yyLOCAL = tree.SelectExpr{Expr: tree.StarExpr()} } yyVAL.union = yyLOCAL - case 918: + case 921: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6079 +//line mysql_sql.y:6109 { yyLOCAL = tree.SelectExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].cstrUnion()} } yyVAL.union = yyLOCAL - case 919: + case 922: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6083 +//line mysql_sql.y:6113 { yyLOCAL = tree.SelectExpr{Expr: tree.NewUnresolvedNameWithStar(yyDollar[1].cstrUnion())} } yyVAL.union = yyLOCAL - case 920: + case 923: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6087 +//line mysql_sql.y:6117 { yyLOCAL = tree.SelectExpr{Expr: tree.NewUnresolvedNameWithStar(yyDollar[1].cstrUnion(), yyDollar[3].cstrUnion())} } yyVAL.union = yyLOCAL - case 921: + case 924: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6092 +//line mysql_sql.y:6122 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} tn := tree.NewTableName(tree.Identifier(""), prefix, nil) @@ -18111,28 +18192,28 @@ yydefault: } } yyVAL.union = yyLOCAL - case 922: + case 925: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6100 +//line mysql_sql.y:6130 { yyLOCAL = yyDollar[1].fromUnion() } yyVAL.union = yyLOCAL - case 923: + case 926: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6106 +//line mysql_sql.y:6136 { yyLOCAL = &tree.From{ Tables: tree.TableExprs{yyDollar[2].tableExprUnion()}, } } yyVAL.union = yyLOCAL - case 924: + case 927: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6114 +//line mysql_sql.y:6144 { if t, ok := yyDollar[1].tableExprUnion().(*tree.JoinTableExpr); ok { yyLOCAL = t @@ -18143,34 +18224,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 925: + case 928: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6124 +//line mysql_sql.y:6154 { yyLOCAL = &tree.JoinTableExpr{Left: yyDollar[1].tableExprUnion(), Right: yyDollar[3].tableExprUnion(), JoinType: tree.JOIN_TYPE_CROSS} } yyVAL.union = yyLOCAL - case 928: + case 931: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6134 +//line mysql_sql.y:6164 { yyLOCAL = yyDollar[1].joinTableExprUnion() } yyVAL.union = yyLOCAL - case 929: + case 932: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6138 +//line mysql_sql.y:6168 { yyLOCAL = yyDollar[1].applyTableExprUnion() } yyVAL.union = yyLOCAL - case 930: + case 933: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6144 +//line mysql_sql.y:6174 { if strings.Contains(yyDollar[2].str, ":") { ss := strings.SplitN(yyDollar[2].str, ":", 2) @@ -18191,10 +18272,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 931: + case 934: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6164 +//line mysql_sql.y:6194 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18204,10 +18285,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 932: + case 935: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6173 +//line mysql_sql.y:6203 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18217,10 +18298,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 933: + case 936: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6182 +//line mysql_sql.y:6212 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18229,10 +18310,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 934: + case 937: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6190 +//line mysql_sql.y:6220 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18242,10 +18323,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 935: + case 938: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ApplyTableExpr -//line mysql_sql.y:6201 +//line mysql_sql.y:6231 { yyLOCAL = &tree.ApplyTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18254,27 +18335,27 @@ yydefault: } } yyVAL.union = yyLOCAL - case 936: + case 939: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6211 +//line mysql_sql.y:6241 { yyVAL.str = tree.APPLY_TYPE_CROSS } - case 937: + case 940: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6215 +//line mysql_sql.y:6245 { yyVAL.str = tree.APPLY_TYPE_OUTER } - case 938: + case 941: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6221 +//line mysql_sql.y:6251 { yyVAL.str = tree.JOIN_TYPE_NATURAL } - case 939: + case 942: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6225 +//line mysql_sql.y:6255 { if yyDollar[2].str == tree.JOIN_TYPE_LEFT { yyVAL.str = tree.JOIN_TYPE_NATURAL_LEFT @@ -18282,40 +18363,40 @@ yydefault: yyVAL.str = tree.JOIN_TYPE_NATURAL_RIGHT } } - case 940: + case 943: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6235 +//line mysql_sql.y:6265 { yyVAL.str = tree.JOIN_TYPE_LEFT } - case 941: + case 944: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6239 +//line mysql_sql.y:6269 { yyVAL.str = tree.JOIN_TYPE_LEFT } - case 942: + case 945: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6243 +//line mysql_sql.y:6273 { yyVAL.str = tree.JOIN_TYPE_RIGHT } - case 943: + case 946: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6247 +//line mysql_sql.y:6277 { yyVAL.str = tree.JOIN_TYPE_RIGHT } - case 944: + case 947: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6253 +//line mysql_sql.y:6283 { yyVAL.str = tree.JOIN_TYPE_DEDUP } - case 945: + case 948: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6259 +//line mysql_sql.y:6289 { yyLOCAL = &tree.ValuesStatement{ Rows: yyDollar[2].rowsExprsUnion(), @@ -18324,148 +18405,148 @@ yydefault: } } yyVAL.union = yyLOCAL - case 946: + case 949: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6269 +//line mysql_sql.y:6299 { yyLOCAL = []tree.Exprs{yyDollar[1].exprsUnion()} } yyVAL.union = yyLOCAL - case 947: + case 950: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6273 +//line mysql_sql.y:6303 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 948: + case 951: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:6279 +//line mysql_sql.y:6309 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 949: + case 952: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6285 +//line mysql_sql.y:6315 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 950: + case 953: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6289 +//line mysql_sql.y:6319 { yyLOCAL = &tree.OnJoinCond{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 951: + case 954: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6295 +//line mysql_sql.y:6325 { yyVAL.str = yyDollar[1].str } - case 952: + case 955: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6301 +//line mysql_sql.y:6331 { yyVAL.str = yyDollar[2].str } - case 953: + case 956: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6307 +//line mysql_sql.y:6337 { yyVAL.str = tree.JOIN_TYPE_STRAIGHT } - case 954: + case 957: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6313 +//line mysql_sql.y:6343 { yyVAL.str = tree.JOIN_TYPE_INNER } - case 955: + case 958: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6317 +//line mysql_sql.y:6347 { yyVAL.str = tree.JOIN_TYPE_INNER } - case 956: + case 959: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6321 +//line mysql_sql.y:6351 { yyVAL.str = tree.JOIN_TYPE_CROSS } - case 957: + case 960: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6325 +//line mysql_sql.y:6355 { yyVAL.str = tree.JOIN_TYPE_CENTROIDX + ":" + yyDollar[2].str } - case 958: + case 961: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6331 +//line mysql_sql.y:6361 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 959: + case 962: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6335 +//line mysql_sql.y:6365 { yyLOCAL = yyDollar[1].joinCondUnion() } yyVAL.union = yyLOCAL - case 960: + case 963: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6341 +//line mysql_sql.y:6371 { yyLOCAL = &tree.OnJoinCond{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 961: + case 964: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6345 +//line mysql_sql.y:6375 { yyLOCAL = &tree.UsingJoinCond{Cols: yyDollar[3].identifierListUnion()} } yyVAL.union = yyLOCAL - case 962: + case 965: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:6351 +//line mysql_sql.y:6381 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } yyVAL.union = yyLOCAL - case 963: + case 966: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:6355 +//line mysql_sql.y:6385 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } yyVAL.union = yyLOCAL - case 964: + case 967: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6361 +//line mysql_sql.y:6391 { yyLOCAL = yyDollar[1].aliasedTableExprUnion() } yyVAL.union = yyLOCAL - case 965: + case 968: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6365 +//line mysql_sql.y:6395 { yyLOCAL = &tree.AliasedTableExpr{ Expr: yyDollar[1].parenTableExprUnion(), @@ -18476,10 +18557,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 966: + case 969: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6375 +//line mysql_sql.y:6405 { if yyDollar[2].str != "" { yyLOCAL = &tree.AliasedTableExpr{ @@ -18493,26 +18574,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 967: + case 970: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6388 +//line mysql_sql.y:6418 { yyLOCAL = yyDollar[2].tableExprUnion() } yyVAL.union = yyLOCAL - case 968: + case 971: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ParenTableExpr -//line mysql_sql.y:6394 +//line mysql_sql.y:6424 { yyLOCAL = &tree.ParenTableExpr{Expr: yyDollar[1].selectStatementUnion().(*tree.ParenSelect).Select} } yyVAL.union = yyLOCAL - case 969: + case 972: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6400 +//line mysql_sql.y:6430 { name := tree.NewUnresolvedName(yyDollar[1].cstrUnion()) yyLOCAL = &tree.TableFunction{ @@ -18525,10 +18606,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 970: + case 973: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AliasedTableExpr -//line mysql_sql.y:6414 +//line mysql_sql.y:6444 { yyLOCAL = &tree.AliasedTableExpr{ Expr: yyDollar[1].tableNameUnion(), @@ -18539,34 +18620,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 971: + case 974: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6425 +//line mysql_sql.y:6455 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 973: + case 976: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6432 +//line mysql_sql.y:6462 { yyLOCAL = []*tree.IndexHint{yyDollar[1].indexHintUnion()} } yyVAL.union = yyLOCAL - case 974: + case 977: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6436 +//line mysql_sql.y:6466 { yyLOCAL = append(yyDollar[1].indexHintListUnion(), yyDollar[2].indexHintUnion()) } yyVAL.union = yyLOCAL - case 975: + case 978: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.IndexHint -//line mysql_sql.y:6442 +//line mysql_sql.y:6472 { yyLOCAL = &tree.IndexHint{ IndexNames: yyDollar[4].strsUnion(), @@ -18575,182 +18656,182 @@ yydefault: } } yyVAL.union = yyLOCAL - case 976: + case 979: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6452 +//line mysql_sql.y:6482 { yyLOCAL = tree.HintUse } yyVAL.union = yyLOCAL - case 977: + case 980: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6456 +//line mysql_sql.y:6486 { yyLOCAL = tree.HintIgnore } yyVAL.union = yyLOCAL - case 978: + case 981: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6460 +//line mysql_sql.y:6490 { yyLOCAL = tree.HintForce } yyVAL.union = yyLOCAL - case 979: + case 982: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6465 +//line mysql_sql.y:6495 { yyLOCAL = tree.HintForScan } yyVAL.union = yyLOCAL - case 980: + case 983: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6469 +//line mysql_sql.y:6499 { yyLOCAL = tree.HintForJoin } yyVAL.union = yyLOCAL - case 981: + case 984: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6473 +//line mysql_sql.y:6503 { yyLOCAL = tree.HintForOrderBy } yyVAL.union = yyLOCAL - case 982: + case 985: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6477 +//line mysql_sql.y:6507 { yyLOCAL = tree.HintForGroupBy } yyVAL.union = yyLOCAL - case 983: + case 986: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6482 +//line mysql_sql.y:6512 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 984: + case 987: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6486 +//line mysql_sql.y:6516 { yyLOCAL = []string{yyDollar[1].cstrUnion().Compare()} } yyVAL.union = yyLOCAL - case 985: + case 988: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6490 +//line mysql_sql.y:6520 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].cstrUnion().Compare()) } yyVAL.union = yyLOCAL - case 986: + case 989: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6494 +//line mysql_sql.y:6524 { yyLOCAL = []string{yyDollar[1].str} } yyVAL.union = yyLOCAL - case 987: + case 990: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6498 +//line mysql_sql.y:6528 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL - case 988: + case 991: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6503 +//line mysql_sql.y:6533 { yyVAL.str = "" } - case 989: + case 992: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6507 +//line mysql_sql.y:6537 { yyVAL.str = yyDollar[1].str } - case 990: + case 993: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6511 +//line mysql_sql.y:6541 { yyVAL.str = yyDollar[2].str } - case 991: + case 994: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6517 +//line mysql_sql.y:6547 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } - case 992: + case 995: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6521 +//line mysql_sql.y:6551 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].str) } - case 993: + case 996: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6526 +//line mysql_sql.y:6556 { yyLOCAL = tree.NewCStr("", 1) } yyVAL.union = yyLOCAL - case 994: + case 997: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6530 +//line mysql_sql.y:6560 { yyLOCAL = yyDollar[1].cstrUnion() } yyVAL.union = yyLOCAL - case 995: + case 998: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6534 +//line mysql_sql.y:6564 { yyLOCAL = yyDollar[2].cstrUnion() } yyVAL.union = yyLOCAL - case 996: + case 999: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6538 +//line mysql_sql.y:6568 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 997: + case 1000: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6542 +//line mysql_sql.y:6572 { yyLOCAL = tree.NewCStr(yyDollar[2].str, 1) } yyVAL.union = yyLOCAL - case 998: + case 1001: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6548 +//line mysql_sql.y:6578 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1021: + case 1024: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6590 +//line mysql_sql.y:6620 { var Language = yyDollar[3].str var Name = tree.Identifier(yyDollar[5].str) @@ -18762,135 +18843,135 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1022: + case 1025: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6603 +//line mysql_sql.y:6633 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1023: + case 1026: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6609 +//line mysql_sql.y:6639 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1024: + case 1027: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6615 +//line mysql_sql.y:6645 { yyLOCAL = tree.NewCreateProcedure( yyDollar[2].sourceOptionalUnion(), yyDollar[4].procNameUnion(), yyDollar[6].procArgsUnion(), yyDollar[8].str, yyDollar[9].str, ) } yyVAL.union = yyLOCAL - case 1025: + case 1028: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ProcedureName -//line mysql_sql.y:6623 +//line mysql_sql.y:6653 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewProcedureName(tree.Identifier(yyDollar[1].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1026: + case 1029: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ProcedureName -//line mysql_sql.y:6628 +//line mysql_sql.y:6658 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(dbName), ExplicitSchema: true} yyLOCAL = tree.NewProcedureName(tree.Identifier(yyDollar[3].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1027: + case 1030: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6635 +//line mysql_sql.y:6665 { yyLOCAL = tree.ProcedureArgs(nil) } yyVAL.union = yyLOCAL - case 1029: + case 1032: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6642 +//line mysql_sql.y:6672 { yyLOCAL = tree.ProcedureArgs{yyDollar[1].procArgUnion()} } yyVAL.union = yyLOCAL - case 1030: + case 1033: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6646 +//line mysql_sql.y:6676 { yyLOCAL = append(yyDollar[1].procArgsUnion(), yyDollar[3].procArgUnion()) } yyVAL.union = yyLOCAL - case 1031: + case 1034: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ProcedureArg -//line mysql_sql.y:6652 +//line mysql_sql.y:6682 { yyLOCAL = tree.ProcedureArg(yyDollar[1].procArgDeclUnion()) } yyVAL.union = yyLOCAL - case 1032: + case 1035: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ProcedureArgDecl -//line mysql_sql.y:6658 +//line mysql_sql.y:6688 { yyLOCAL = tree.NewProcedureArgDecl(yyDollar[1].procArgTypeUnion(), yyDollar[2].unresolvedNameUnion(), yyDollar[3].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1033: + case 1036: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6663 +//line mysql_sql.y:6693 { yyLOCAL = tree.TYPE_IN } yyVAL.union = yyLOCAL - case 1034: + case 1037: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6667 +//line mysql_sql.y:6697 { yyLOCAL = tree.TYPE_IN } yyVAL.union = yyLOCAL - case 1035: + case 1038: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6671 +//line mysql_sql.y:6701 { yyLOCAL = tree.TYPE_OUT } yyVAL.union = yyLOCAL - case 1036: + case 1039: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6675 +//line mysql_sql.y:6705 { yyLOCAL = tree.TYPE_INOUT } yyVAL.union = yyLOCAL - case 1037: + case 1040: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6680 +//line mysql_sql.y:6710 { yyVAL.str = "sql" } - case 1038: + case 1041: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6684 +//line mysql_sql.y:6714 { yyVAL.str = yyDollar[2].str } - case 1039: + case 1042: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6690 +//line mysql_sql.y:6720 { if yyDollar[13].str == "" { yylex.Error("no function body error") @@ -18922,127 +19003,127 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1040: + case 1043: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FunctionName -//line mysql_sql.y:6723 +//line mysql_sql.y:6753 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewFuncName(tree.Identifier(yyDollar[1].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1041: + case 1044: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FunctionName -//line mysql_sql.y:6728 +//line mysql_sql.y:6758 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(dbName), ExplicitSchema: true} yyLOCAL = tree.NewFuncName(tree.Identifier(yyDollar[3].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1042: + case 1045: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6735 +//line mysql_sql.y:6765 { yyLOCAL = tree.FunctionArgs(nil) } yyVAL.union = yyLOCAL - case 1044: + case 1047: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6742 +//line mysql_sql.y:6772 { yyLOCAL = tree.FunctionArgs{yyDollar[1].funcArgUnion()} } yyVAL.union = yyLOCAL - case 1045: + case 1048: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6746 +//line mysql_sql.y:6776 { yyLOCAL = append(yyDollar[1].funcArgsUnion(), yyDollar[3].funcArgUnion()) } yyVAL.union = yyLOCAL - case 1046: + case 1049: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FunctionArg -//line mysql_sql.y:6752 +//line mysql_sql.y:6782 { yyLOCAL = tree.FunctionArg(yyDollar[1].funcArgDeclUnion()) } yyVAL.union = yyLOCAL - case 1047: + case 1050: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6758 +//line mysql_sql.y:6788 { yyLOCAL = tree.NewFunctionArgDecl(nil, yyDollar[1].columnTypeUnion(), nil) } yyVAL.union = yyLOCAL - case 1048: + case 1051: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6762 +//line mysql_sql.y:6792 { yyLOCAL = tree.NewFunctionArgDecl(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), nil) } yyVAL.union = yyLOCAL - case 1049: + case 1052: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6766 +//line mysql_sql.y:6796 { yyLOCAL = tree.NewFunctionArgDecl(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1050: + case 1053: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6772 +//line mysql_sql.y:6802 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1051: + case 1054: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReturnType -//line mysql_sql.y:6778 +//line mysql_sql.y:6808 { yyLOCAL = tree.NewReturnType(yyDollar[1].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1052: + case 1055: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6784 +//line mysql_sql.y:6814 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1053: + case 1056: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6788 +//line mysql_sql.y:6818 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1054: + case 1057: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6793 +//line mysql_sql.y:6823 { yyVAL.str = "" } - case 1056: + case 1059: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6800 +//line mysql_sql.y:6830 { yyVAL.str = yyDollar[2].str } - case 1057: + case 1060: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6806 +//line mysql_sql.y:6836 { var Replace bool var Name = yyDollar[5].tableNameUnion() @@ -19058,10 +19139,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1058: + case 1061: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6821 +//line mysql_sql.y:6851 { var Replace = yyDollar[2].sourceOptionalUnion() var Name = yyDollar[5].tableNameUnion() @@ -19077,10 +19158,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1059: + case 1062: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6838 +//line mysql_sql.y:6868 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = yyDollar[4].exprUnion() @@ -19096,81 +19177,81 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1060: + case 1063: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6855 +//line mysql_sql.y:6885 { yyVAL.str = yyDollar[1].str } - case 1061: + case 1064: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6859 +//line mysql_sql.y:6889 { yyVAL.str = yyVAL.str + yyDollar[2].str } - case 1062: + case 1065: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6865 +//line mysql_sql.y:6895 { yyVAL.str = "ALGORITHM = " + yyDollar[3].str } - case 1063: + case 1066: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6869 +//line mysql_sql.y:6899 { yyVAL.str = "DEFINER = " } - case 1064: + case 1067: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6873 +//line mysql_sql.y:6903 { yyVAL.str = "SQL SECURITY " + yyDollar[3].str } - case 1065: + case 1068: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6878 +//line mysql_sql.y:6908 { yyVAL.str = "" } - case 1066: + case 1069: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:6882 +//line mysql_sql.y:6912 { yyVAL.str = "WITH " + yyDollar[2].str + " CHECK OPTION" } - case 1072: + case 1075: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6896 +//line mysql_sql.y:6926 { yyVAL.str = "" } - case 1075: + case 1078: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6904 +//line mysql_sql.y:6934 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1076: + case 1079: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6910 +//line mysql_sql.y:6940 { var str = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1077: + case 1080: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6915 +//line mysql_sql.y:6945 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1078: + case 1081: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AccountAuthOption -//line mysql_sql.y:6921 +//line mysql_sql.y:6951 { var Equal = yyDollar[2].str var AdminName = yyDollar[3].exprUnion() @@ -19182,36 +19263,36 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1079: + case 1082: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6934 +//line mysql_sql.y:6964 { var str = yyDollar[1].str yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1080: + case 1083: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6939 +//line mysql_sql.y:6969 { var str = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1081: + case 1084: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6944 +//line mysql_sql.y:6974 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1082: + case 1085: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6950 +//line mysql_sql.y:6980 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByPassword, @@ -19219,10 +19300,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1083: + case 1086: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6957 +//line mysql_sql.y:6987 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByPassword, @@ -19230,10 +19311,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1084: + case 1087: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6964 +//line mysql_sql.y:6994 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByRandomPassword, @@ -19241,10 +19322,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1085: + case 1088: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6971 +//line mysql_sql.y:7001 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedWithSSL, @@ -19252,10 +19333,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1086: + case 1089: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6978 +//line mysql_sql.y:7008 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedWithSSL, @@ -19263,20 +19344,20 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1087: + case 1090: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6986 +//line mysql_sql.y:7016 { as := tree.NewAccountStatus() as.Exist = false yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1088: + case 1091: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6992 +//line mysql_sql.y:7022 { as := tree.NewAccountStatus() as.Exist = true @@ -19284,10 +19365,10 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1089: + case 1092: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6999 +//line mysql_sql.y:7029 { as := tree.NewAccountStatus() as.Exist = true @@ -19295,10 +19376,10 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1090: + case 1093: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:7006 +//line mysql_sql.y:7036 { as := tree.NewAccountStatus() as.Exist = true @@ -19306,20 +19387,20 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1091: + case 1094: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountComment -//line mysql_sql.y:7014 +//line mysql_sql.y:7044 { ac := tree.NewAccountComment() ac.Exist = false yyLOCAL = *ac } yyVAL.union = yyLOCAL - case 1092: + case 1095: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountComment -//line mysql_sql.y:7020 +//line mysql_sql.y:7050 { ac := tree.NewAccountComment() ac.Exist = true @@ -19327,10 +19408,10 @@ yydefault: yyLOCAL = *ac } yyVAL.union = yyLOCAL - case 1093: + case 1096: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7029 +//line mysql_sql.y:7059 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Users = yyDollar[4].usersUnion() @@ -19346,10 +19427,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1094: + case 1097: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7046 +//line mysql_sql.y:7076 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19366,10 +19447,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1095: + case 1098: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7062 +//line mysql_sql.y:7092 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19387,30 +19468,30 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1096: + case 1099: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7081 +//line mysql_sql.y:7111 { yyLOCAL = &tree.AccountsSetOption{ All: true, } } yyVAL.union = yyLOCAL - case 1097: + case 1100: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7087 +//line mysql_sql.y:7117 { yyLOCAL = &tree.AccountsSetOption{ SetAccounts: yyDollar[2].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1098: + case 1101: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7095 +//line mysql_sql.y:7125 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19428,20 +19509,20 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1099: + case 1102: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7113 +//line mysql_sql.y:7143 { yyLOCAL = tree.StageStatus{ Exist: false, } } yyVAL.union = yyLOCAL - case 1100: + case 1103: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7119 +//line mysql_sql.y:7149 { yyLOCAL = tree.StageStatus{ Exist: true, @@ -19449,10 +19530,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1101: + case 1104: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7126 +//line mysql_sql.y:7156 { yyLOCAL = tree.StageStatus{ Exist: true, @@ -19460,20 +19541,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1102: + case 1105: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageComment -//line mysql_sql.y:7134 +//line mysql_sql.y:7164 { yyLOCAL = tree.StageComment{ Exist: false, } } yyVAL.union = yyLOCAL - case 1103: + case 1106: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageComment -//line mysql_sql.y:7140 +//line mysql_sql.y:7170 { yyLOCAL = tree.StageComment{ Exist: true, @@ -19481,20 +19562,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1104: + case 1107: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageUrl -//line mysql_sql.y:7148 +//line mysql_sql.y:7178 { yyLOCAL = tree.StageUrl{ Exist: false, } } yyVAL.union = yyLOCAL - case 1105: + case 1108: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageUrl -//line mysql_sql.y:7154 +//line mysql_sql.y:7184 { yyLOCAL = tree.StageUrl{ Exist: true, @@ -19502,20 +19583,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1106: + case 1109: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageCredentials -//line mysql_sql.y:7162 +//line mysql_sql.y:7192 { yyLOCAL = tree.StageCredentials{ Exist: false, } } yyVAL.union = yyLOCAL - case 1107: + case 1110: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.StageCredentials -//line mysql_sql.y:7168 +//line mysql_sql.y:7198 { yyLOCAL = tree.StageCredentials{ Exist: true, @@ -19523,61 +19604,61 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1108: + case 1111: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7177 +//line mysql_sql.y:7207 { yyLOCAL = yyDollar[1].strsUnion() } yyVAL.union = yyLOCAL - case 1109: + case 1112: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7181 +//line mysql_sql.y:7211 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } yyVAL.union = yyLOCAL - case 1110: + case 1113: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7186 +//line mysql_sql.y:7216 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 1111: + case 1114: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7190 +//line mysql_sql.y:7220 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1112: + case 1115: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:7197 +//line mysql_sql.y:7227 { yyVAL.str = yyDollar[3].str } - case 1113: + case 1116: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7202 +//line mysql_sql.y:7232 { yyVAL.str = "" } - case 1114: + case 1117: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7206 +//line mysql_sql.y:7236 { yyVAL.str = yyDollar[2].str } - case 1115: + case 1118: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7212 +//line mysql_sql.y:7242 { var ifNotExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19588,10 +19669,10 @@ yydefault: yyLOCAL = tree.NewAlterStage(ifNotExists, name, urlOption, credentialsOption, statusOption, comment) } yyVAL.union = yyLOCAL - case 1116: + case 1119: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7224 +//line mysql_sql.y:7254 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19602,116 +19683,116 @@ yydefault: yyLOCAL = tree.NewAlterPublication(ifExists, name, accountsSet, dbName, table, comment) } yyVAL.union = yyLOCAL - case 1117: + case 1120: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7235 +//line mysql_sql.y:7265 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1118: + case 1121: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7239 +//line mysql_sql.y:7269 { yyLOCAL = &tree.AccountsSetOption{ All: true, } } yyVAL.union = yyLOCAL - case 1119: + case 1122: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7245 +//line mysql_sql.y:7275 { yyLOCAL = &tree.AccountsSetOption{ SetAccounts: yyDollar[2].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1120: + case 1123: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7251 +//line mysql_sql.y:7281 { yyLOCAL = &tree.AccountsSetOption{ AddAccounts: yyDollar[3].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1121: + case 1124: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7257 +//line mysql_sql.y:7287 { yyLOCAL = &tree.AccountsSetOption{ DropAccounts: yyDollar[3].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1122: + case 1125: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7264 +//line mysql_sql.y:7294 { yyVAL.str = "" } - case 1123: + case 1126: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7268 +//line mysql_sql.y:7298 { yyVAL.str = yyDollar[2].str } - case 1124: + case 1127: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:7273 +//line mysql_sql.y:7303 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1125: + case 1128: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:7277 +//line mysql_sql.y:7307 { yyLOCAL = yyDollar[2].tableNamesUnion() } yyVAL.union = yyLOCAL - case 1126: + case 1129: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7283 +//line mysql_sql.y:7313 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropPublication(ifExists, name) } yyVAL.union = yyLOCAL - case 1127: + case 1130: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7291 +//line mysql_sql.y:7321 { var ifNotExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropStage(ifNotExists, name) } yyVAL.union = yyLOCAL - case 1128: + case 1131: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7299 +//line mysql_sql.y:7329 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropSnapShot(ifExists, name) } yyVAL.union = yyLOCAL - case 1129: + case 1132: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7307 +//line mysql_sql.y:7337 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19723,16 +19804,16 @@ yydefault: } yyVAL.union = yyLOCAL - case 1130: + case 1133: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7320 +//line mysql_sql.y:7350 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1131: + case 1134: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7325 +//line mysql_sql.y:7355 { var Exist = false var IsComment bool @@ -19745,10 +19826,10 @@ yydefault: } yyVAL.union = yyLOCAL - case 1132: + case 1135: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7337 +//line mysql_sql.y:7367 { var Exist = true var IsComment = true @@ -19760,10 +19841,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1133: + case 1136: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7348 +//line mysql_sql.y:7378 { var Exist = true var IsComment = false @@ -19775,26 +19856,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1134: + case 1137: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7456 +//line mysql_sql.y:7486 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } yyVAL.union = yyLOCAL - case 1135: + case 1138: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7460 +//line mysql_sql.y:7490 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } yyVAL.union = yyLOCAL - case 1136: + case 1139: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:7466 +//line mysql_sql.y:7496 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -19806,26 +19887,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1137: + case 1140: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7479 +//line mysql_sql.y:7509 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } yyVAL.union = yyLOCAL - case 1138: + case 1141: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7483 +//line mysql_sql.y:7513 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } yyVAL.union = yyLOCAL - case 1139: + case 1142: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:7489 +//line mysql_sql.y:7519 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -19837,50 +19918,50 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1140: + case 1143: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7502 +//line mysql_sql.y:7532 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: "%"} } yyVAL.union = yyLOCAL - case 1141: + case 1144: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7506 +//line mysql_sql.y:7536 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: yyDollar[3].str} } yyVAL.union = yyLOCAL - case 1142: + case 1145: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7510 +//line mysql_sql.y:7540 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1143: + case 1146: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7515 +//line mysql_sql.y:7545 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1144: + case 1147: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7519 +//line mysql_sql.y:7549 { yyLOCAL = yyDollar[1].userIdentifiedUnion() } yyVAL.union = yyLOCAL - case 1145: + case 1148: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7525 +//line mysql_sql.y:7555 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedByPassword, @@ -19888,20 +19969,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1146: + case 1149: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7532 +//line mysql_sql.y:7562 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedByRandomPassword, } } yyVAL.union = yyLOCAL - case 1147: + case 1150: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7538 +//line mysql_sql.y:7568 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedWithSSL, @@ -19909,16 +19990,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1148: + case 1151: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7547 +//line mysql_sql.y:7577 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1150: + case 1153: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7554 +//line mysql_sql.y:7584 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Roles = yyDollar[4].rolesUnion() @@ -19928,26 +20009,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1151: + case 1154: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:7565 +//line mysql_sql.y:7595 { yyLOCAL = []*tree.Role{yyDollar[1].roleUnion()} } yyVAL.union = yyLOCAL - case 1152: + case 1155: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:7569 +//line mysql_sql.y:7599 { yyLOCAL = append(yyDollar[1].rolesUnion(), yyDollar[3].roleUnion()) } yyVAL.union = yyLOCAL - case 1153: + case 1156: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:7575 +//line mysql_sql.y:7605 { var UserName = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewRole( @@ -19955,66 +20036,66 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1154: + case 1157: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7584 +//line mysql_sql.y:7614 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1155: + case 1158: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7588 +//line mysql_sql.y:7618 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1156: + case 1159: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7592 +//line mysql_sql.y:7622 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1157: + case 1160: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7597 +//line mysql_sql.y:7627 { yyLOCAL = tree.INDEX_CATEGORY_NONE } yyVAL.union = yyLOCAL - case 1158: + case 1161: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7601 +//line mysql_sql.y:7631 { yyLOCAL = tree.INDEX_CATEGORY_FULLTEXT } yyVAL.union = yyLOCAL - case 1159: + case 1162: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7605 +//line mysql_sql.y:7635 { yyLOCAL = tree.INDEX_CATEGORY_SPATIAL } yyVAL.union = yyLOCAL - case 1160: + case 1163: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7609 +//line mysql_sql.y:7639 { yyLOCAL = tree.INDEX_CATEGORY_UNIQUE } yyVAL.union = yyLOCAL - case 1161: + case 1164: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7615 +//line mysql_sql.y:7645 { var io *tree.IndexOption = nil if yyDollar[11].indexOptionUnion() == nil && yyDollar[5].indexTypeUnion() != tree.INDEX_TYPE_INVALID { @@ -20045,18 +20126,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1162: + case 1165: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7646 +//line mysql_sql.y:7676 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1163: + case 1166: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7650 +//line mysql_sql.y:7680 { // Merge the options if yyDollar[1].indexOptionUnion() == nil { @@ -20084,25 +20165,33 @@ yydefault: opt1.HnswEfSearch = opt2.HnswEfSearch } else if opt2.Async { opt1.Async = opt2.Async + } else if opt2.ForceSync { + opt1.ForceSync = opt2.ForceSync + } else if opt2.AutoUpdate { + opt1.AutoUpdate = opt2.AutoUpdate + } else if opt2.Day > 0 { + opt1.Day = opt2.Day + } else if opt2.Hour > 0 { + opt1.Hour = opt2.Hour } yyLOCAL = opt1 } } yyVAL.union = yyLOCAL - case 1164: + case 1167: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7684 +//line mysql_sql.y:7722 { io := tree.NewIndexOption() io.KeyBlockSize = uint64(yyDollar[3].item.(int64)) yyLOCAL = io } yyVAL.union = yyLOCAL - case 1165: + case 1168: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7690 +//line mysql_sql.y:7728 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20115,60 +20204,60 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1166: + case 1169: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7702 +//line mysql_sql.y:7740 { io := tree.NewIndexOption() io.AlgoParamVectorOpType = yyDollar[2].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1167: + case 1170: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7708 +//line mysql_sql.y:7746 { io := tree.NewIndexOption() io.Comment = yyDollar[2].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1168: + case 1171: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7714 +//line mysql_sql.y:7752 { io := tree.NewIndexOption() io.ParserName = yyDollar[3].cstrUnion().Compare() yyLOCAL = io } yyVAL.union = yyLOCAL - case 1169: + case 1172: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7720 +//line mysql_sql.y:7758 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_VISIBLE yyLOCAL = io } yyVAL.union = yyLOCAL - case 1170: + case 1173: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7726 +//line mysql_sql.y:7764 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_INVISIBLE yyLOCAL = io } yyVAL.union = yyLOCAL - case 1171: + case 1174: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7732 +//line mysql_sql.y:7770 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20180,10 +20269,10 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1172: + case 1175: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7743 +//line mysql_sql.y:7781 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20195,10 +20284,10 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1173: + case 1176: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7754 +//line mysql_sql.y:7792 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20210,36 +20299,96 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1174: + case 1177: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7765 +//line mysql_sql.y:7803 { io := tree.NewIndexOption() io.Async = true yyLOCAL = io } yyVAL.union = yyLOCAL - case 1175: + case 1178: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL *tree.IndexOption +//line mysql_sql.y:7809 + { + io := tree.NewIndexOption() + io.ForceSync = true + yyLOCAL = io + } + yyVAL.union = yyLOCAL + case 1179: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL *tree.IndexOption +//line mysql_sql.y:7815 + { + io := tree.NewIndexOption() + io.AutoUpdate = true + yyLOCAL = io + } + yyVAL.union = yyLOCAL + case 1180: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL *tree.IndexOption +//line mysql_sql.y:7821 + { + io := tree.NewIndexOption() + io.AutoUpdate = false + yyLOCAL = io + } + yyVAL.union = yyLOCAL + case 1181: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL *tree.IndexOption +//line mysql_sql.y:7827 + { + val := int64(yyDollar[3].item.(int64)) + if val < 0 { + yylex.Error("DAY should be greater than or equal to 0") + return 1 + } + io := tree.NewIndexOption() + io.Day = val + yyLOCAL = io + } + yyVAL.union = yyLOCAL + case 1182: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL *tree.IndexOption +//line mysql_sql.y:7838 + { + val := int64(yyDollar[3].item.(int64)) + if val < 0 || val > 23 { + yylex.Error("HOUR should be between 0 and 23") + return 1 + } + io := tree.NewIndexOption() + io.Hour = val + yyLOCAL = io + } + yyVAL.union = yyLOCAL + case 1183: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:7774 +//line mysql_sql.y:7852 { yyLOCAL = []*tree.KeyPart{yyDollar[1].keyPartUnion()} } yyVAL.union = yyLOCAL - case 1176: + case 1184: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:7778 +//line mysql_sql.y:7856 { yyLOCAL = append(yyDollar[1].keyPartsUnion(), yyDollar[3].keyPartUnion()) } yyVAL.union = yyLOCAL - case 1177: + case 1185: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:7784 +//line mysql_sql.y:7862 { // Order is parsed but just ignored as MySQL dtree. var ColName = yyDollar[1].unresolvedNameUnion() @@ -20254,10 +20403,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1178: + case 1186: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:7798 +//line mysql_sql.y:7876 { var ColName *tree.UnresolvedName var Length int @@ -20271,74 +20420,74 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1179: + case 1187: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7812 +//line mysql_sql.y:7890 { yyLOCAL = tree.INDEX_TYPE_INVALID } yyVAL.union = yyLOCAL - case 1180: + case 1188: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7816 +//line mysql_sql.y:7894 { yyLOCAL = tree.INDEX_TYPE_BTREE } yyVAL.union = yyLOCAL - case 1181: + case 1189: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7820 +//line mysql_sql.y:7898 { yyLOCAL = tree.INDEX_TYPE_IVFFLAT } yyVAL.union = yyLOCAL - case 1182: + case 1190: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7824 +//line mysql_sql.y:7902 { yyLOCAL = tree.INDEX_TYPE_HNSW } yyVAL.union = yyLOCAL - case 1183: + case 1191: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7828 +//line mysql_sql.y:7906 { yyLOCAL = tree.INDEX_TYPE_MASTER } yyVAL.union = yyLOCAL - case 1184: + case 1192: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7832 +//line mysql_sql.y:7910 { yyLOCAL = tree.INDEX_TYPE_HASH } yyVAL.union = yyLOCAL - case 1185: + case 1193: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7836 +//line mysql_sql.y:7914 { yyLOCAL = tree.INDEX_TYPE_RTREE } yyVAL.union = yyLOCAL - case 1186: + case 1194: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7840 +//line mysql_sql.y:7918 { yyLOCAL = tree.INDEX_TYPE_BSI } yyVAL.union = yyLOCAL - case 1187: + case 1195: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7846 +//line mysql_sql.y:7924 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].str) @@ -20352,10 +20501,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1188: + case 1196: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7860 +//line mysql_sql.y:7938 { var t = tree.NewCloneDatabase() t.DstDatabase = tree.Identifier(yyDollar[4].str) @@ -20365,92 +20514,92 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1189: + case 1197: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:7870 +//line mysql_sql.y:7948 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1190: + case 1198: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:7874 +//line mysql_sql.y:7952 { var From = tree.Identifier(yyDollar[2].str) var Publication = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewSubscriptionOption(From, Publication) } yyVAL.union = yyLOCAL - case 1193: + case 1201: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7885 +//line mysql_sql.y:7963 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1194: + case 1202: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7889 +//line mysql_sql.y:7967 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1195: + case 1203: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7894 +//line mysql_sql.y:7972 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1196: + case 1204: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7898 +//line mysql_sql.y:7976 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1197: + case 1205: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7903 +//line mysql_sql.y:7981 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1198: + case 1206: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7907 +//line mysql_sql.y:7985 { yyLOCAL = yyDollar[1].createOptionsUnion() } yyVAL.union = yyLOCAL - case 1199: + case 1207: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7913 +//line mysql_sql.y:7991 { yyLOCAL = []tree.CreateOption{yyDollar[1].createOptionUnion()} } yyVAL.union = yyLOCAL - case 1200: + case 1208: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7917 +//line mysql_sql.y:7995 { yyLOCAL = append(yyDollar[1].createOptionsUnion(), yyDollar[2].createOptionUnion()) } yyVAL.union = yyLOCAL - case 1201: + case 1209: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7923 +//line mysql_sql.y:8001 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Charset = yyDollar[4].str @@ -20460,10 +20609,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1202: + case 1210: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7932 +//line mysql_sql.y:8010 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Collate = yyDollar[4].str @@ -20473,35 +20622,35 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1203: + case 1211: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7941 +//line mysql_sql.y:8019 { var Encrypt = yyDollar[4].str yyLOCAL = tree.NewCreateOptionEncryption(Encrypt) } yyVAL.union = yyLOCAL - case 1204: + case 1212: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7947 +//line mysql_sql.y:8025 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1205: + case 1213: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7951 +//line mysql_sql.y:8029 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1206: + case 1214: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7957 +//line mysql_sql.y:8035 { var TableName = yyDollar[4].tableNameUnion() var Options = yyDollar[7].connectorOptionsUnion() @@ -20511,18 +20660,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1207: + case 1215: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7968 +//line mysql_sql.y:8046 { yyLOCAL = &tree.ShowConnectors{} } yyVAL.union = yyLOCAL - case 1208: + case 1216: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7974 +//line mysql_sql.y:8052 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20539,10 +20688,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1209: + case 1217: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7992 +//line mysql_sql.y:8070 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20559,10 +20708,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1210: + case 1218: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8010 +//line mysql_sql.y:8088 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20579,10 +20728,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1211: + case 1219: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8028 +//line mysql_sql.y:8106 { var Replace = yyDollar[2].sourceOptionalUnion() var IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -20598,26 +20747,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1212: + case 1220: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8044 +//line mysql_sql.y:8122 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1213: + case 1221: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8048 +//line mysql_sql.y:8126 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1214: + case 1222: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8054 +//line mysql_sql.y:8132 { t := tree.NewDataBranchCreateTable() t.CreateTable.Table = *yyDollar[5].tableNameUnion() @@ -20628,10 +20777,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1215: + case 1223: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8064 +//line mysql_sql.y:8142 { t := tree.NewDataBranchCreateDatabase() t.DstDatabase = tree.Identifier(yyDollar[5].str) @@ -20641,30 +20790,30 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1216: + case 1224: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8073 +//line mysql_sql.y:8151 { t := tree.NewDataBranchDeleteTable() t.TableName = *yyDollar[5].tableNameUnion() yyLOCAL = t } yyVAL.union = yyLOCAL - case 1217: + case 1225: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8079 +//line mysql_sql.y:8157 { t := tree.NewDataBranchDeleteDatabase() t.DatabaseName = tree.Identifier(yyDollar[5].str) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1218: + case 1226: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8085 +//line mysql_sql.y:8163 { t := tree.NewDataBranchDiff() t.TargetTable = *yyDollar[4].tableNameUnion() @@ -20673,10 +20822,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1219: + case 1227: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8093 +//line mysql_sql.y:8171 { t := tree.NewDataBranchMerge() t.SrcTable = *yyDollar[4].tableNameUnion() @@ -20685,38 +20834,38 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1220: + case 1228: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8102 +//line mysql_sql.y:8180 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1221: + case 1229: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8106 +//line mysql_sql.y:8184 { yyLOCAL = &tree.DiffOutputOpt{ As: *yyDollar[3].tableNameUnion(), } } yyVAL.union = yyLOCAL - case 1222: + case 1230: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8112 +//line mysql_sql.y:8190 { yyLOCAL = &tree.DiffOutputOpt{ DirPath: yyDollar[3].str, } } yyVAL.union = yyLOCAL - case 1223: + case 1231: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8118 +//line mysql_sql.y:8196 { x := yyDollar[3].item.(int64) yyLOCAL = &tree.DiffOutputOpt{ @@ -20724,76 +20873,76 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1224: + case 1232: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8125 +//line mysql_sql.y:8203 { yyLOCAL = &tree.DiffOutputOpt{ Count: true, } } yyVAL.union = yyLOCAL - case 1225: + case 1233: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8133 +//line mysql_sql.y:8211 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1226: + case 1234: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8137 +//line mysql_sql.y:8215 { yyLOCAL = &tree.ConflictOpt{ Opt: tree.CONFLICT_FAIL, } } yyVAL.union = yyLOCAL - case 1227: + case 1235: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8143 +//line mysql_sql.y:8221 { yyLOCAL = &tree.ConflictOpt{ Opt: tree.CONFLICT_SKIP, } } yyVAL.union = yyLOCAL - case 1228: + case 1236: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8149 +//line mysql_sql.y:8227 { yyLOCAL = &tree.ConflictOpt{ Opt: tree.CONFLICT_ACCEPT, } } yyVAL.union = yyLOCAL - case 1229: + case 1237: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ToAccountOpt -//line mysql_sql.y:8157 +//line mysql_sql.y:8235 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1230: + case 1238: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ToAccountOpt -//line mysql_sql.y:8161 +//line mysql_sql.y:8239 { yyLOCAL = &tree.ToAccountOpt{ AccountName: tree.Identifier(yyDollar[3].cstrUnion().Compare()), } } yyVAL.union = yyLOCAL - case 1231: + case 1239: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8169 +//line mysql_sql.y:8247 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -20806,10 +20955,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1232: + case 1240: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8181 +//line mysql_sql.y:8259 { t := tree.NewCreateTable() t.IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -20819,10 +20968,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1233: + case 1241: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8190 +//line mysql_sql.y:8268 { t := tree.NewCreateTable() t.IsClusterTable = true @@ -20835,10 +20984,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1234: + case 1242: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8202 +//line mysql_sql.y:8280 { t := tree.NewCreateTable() t.IsDynamicTable = true @@ -20849,10 +20998,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1235: + case 1243: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8212 +//line mysql_sql.y:8290 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20863,10 +21012,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1236: + case 1244: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8222 +//line mysql_sql.y:8300 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20878,10 +21027,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1237: + case 1245: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8233 +//line mysql_sql.y:8311 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20892,10 +21041,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1238: + case 1246: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8243 +//line mysql_sql.y:8321 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20907,10 +21056,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1239: + case 1247: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8254 +//line mysql_sql.y:8332 { t := tree.NewCreateTable() t.IsAsLike = true @@ -20919,10 +21068,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1240: + case 1248: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8262 +//line mysql_sql.y:8340 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -20932,10 +21081,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1241: + case 1249: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8271 +//line mysql_sql.y:8349 { t := tree.NewCloneTable() t.CreateTable.Table = *yyDollar[5].tableNameUnion() @@ -20946,19 +21095,19 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1242: + case 1250: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8283 +//line mysql_sql.y:8361 { yyLOCAL = yyDollar[1].loadParamUnion() yyLOCAL.Tail = yyDollar[2].tailParamUnion() } yyVAL.union = yyLOCAL - case 1243: + case 1251: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8290 +//line mysql_sql.y:8368 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20969,10 +21118,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1244: + case 1252: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8300 +//line mysql_sql.y:8378 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20986,10 +21135,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1245: + case 1253: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8313 +//line mysql_sql.y:8391 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20998,10 +21147,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1246: + case 1254: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8321 +//line mysql_sql.y:8399 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21011,10 +21160,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1247: + case 1255: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8330 +//line mysql_sql.y:8408 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21023,55 +21172,55 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1248: + case 1256: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8339 +//line mysql_sql.y:8417 { yyVAL.str = "" } - case 1249: + case 1257: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:8343 +//line mysql_sql.y:8421 { yyVAL.str = yyDollar[4].str } - case 1250: + case 1258: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8349 +//line mysql_sql.y:8427 { yyLOCAL = yyDollar[1].strsUnion() } yyVAL.union = yyLOCAL - case 1251: + case 1259: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8353 +//line mysql_sql.y:8431 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } yyVAL.union = yyLOCAL - case 1252: + case 1260: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8358 +//line mysql_sql.y:8436 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 1253: + case 1261: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8362 +//line mysql_sql.y:8440 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1254: + case 1262: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.TailParameter -//line mysql_sql.y:8369 +//line mysql_sql.y:8447 { yyLOCAL = &tree.TailParameter{ Charset: yyDollar[1].str, @@ -21083,22 +21232,22 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1255: + case 1263: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8381 +//line mysql_sql.y:8459 { yyVAL.str = "" } - case 1256: + case 1264: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8385 +//line mysql_sql.y:8463 { yyVAL.str = yyDollar[2].str } - case 1257: + case 1265: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8391 +//line mysql_sql.y:8469 { var Name = yyDollar[4].tableNameUnion() var Type = yyDollar[5].columnTypeUnion() @@ -21120,10 +21269,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1258: + case 1266: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8412 +//line mysql_sql.y:8490 { locale := "" fstr := "bigint" @@ -21138,44 +21287,44 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1259: + case 1267: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8426 +//line mysql_sql.y:8504 { yyLOCAL = yyDollar[2].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1260: + case 1268: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8430 +//line mysql_sql.y:8508 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1261: + case 1269: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8434 +//line mysql_sql.y:8512 { yyLOCAL = &tree.TypeOption{ Type: yyDollar[2].columnTypeUnion(), } } yyVAL.union = yyLOCAL - case 1262: + case 1270: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8440 +//line mysql_sql.y:8518 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1263: + case 1271: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8444 +//line mysql_sql.y:8522 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -21183,10 +21332,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1264: + case 1272: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8451 +//line mysql_sql.y:8529 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -21194,10 +21343,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1265: + case 1273: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8458 +//line mysql_sql.y:8536 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -21205,10 +21354,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1266: + case 1274: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8465 +//line mysql_sql.y:8543 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -21216,42 +21365,42 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1267: + case 1275: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8472 +//line mysql_sql.y:8550 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1268: + case 1276: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8476 +//line mysql_sql.y:8554 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1269: + case 1277: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8480 +//line mysql_sql.y:8558 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1270: + case 1278: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8484 +//line mysql_sql.y:8562 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1271: + case 1279: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8488 +//line mysql_sql.y:8566 { yyLOCAL = &tree.MinValueOption{ Minus: false, @@ -21259,10 +21408,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1272: + case 1280: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8495 +//line mysql_sql.y:8573 { yyLOCAL = &tree.MinValueOption{ Minus: true, @@ -21270,18 +21419,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1273: + case 1281: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8502 +//line mysql_sql.y:8580 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1274: + case 1282: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8506 +//line mysql_sql.y:8584 { yyLOCAL = &tree.MaxValueOption{ Minus: false, @@ -21289,10 +21438,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1275: + case 1283: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8513 +//line mysql_sql.y:8591 { yyLOCAL = &tree.MaxValueOption{ Minus: true, @@ -21300,46 +21449,46 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1276: + case 1284: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8520 +//line mysql_sql.y:8598 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1277: + case 1285: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8524 +//line mysql_sql.y:8602 { yyLOCAL = &tree.CycleOption{ Cycle: false, } } yyVAL.union = yyLOCAL - case 1278: + case 1286: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8530 +//line mysql_sql.y:8608 { yyLOCAL = &tree.CycleOption{ Cycle: true, } } yyVAL.union = yyLOCAL - case 1279: + case 1287: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8536 +//line mysql_sql.y:8614 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1280: + case 1288: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8540 +//line mysql_sql.y:8618 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -21347,10 +21496,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1281: + case 1289: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8547 +//line mysql_sql.y:8625 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -21358,10 +21507,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1282: + case 1290: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8554 +//line mysql_sql.y:8632 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -21369,10 +21518,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1283: + case 1291: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8561 +//line mysql_sql.y:8639 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -21380,58 +21529,58 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1284: + case 1292: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8568 +//line mysql_sql.y:8646 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1285: + case 1293: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8572 +//line mysql_sql.y:8650 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1286: + case 1294: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8577 +//line mysql_sql.y:8655 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1287: + case 1295: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8581 +//line mysql_sql.y:8659 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1288: + case 1296: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8585 +//line mysql_sql.y:8663 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1289: + case 1297: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8590 +//line mysql_sql.y:8668 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1290: + case 1298: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8594 +//line mysql_sql.y:8672 { yyDollar[3].partitionByUnion().Num = uint64(yyDollar[4].int64ValUnion()) var PartBy = yyDollar[3].partitionByUnion() @@ -21444,18 +21593,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1291: + case 1299: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8607 +//line mysql_sql.y:8685 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1292: + case 1300: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8611 +//line mysql_sql.y:8689 { var ColumnList = []*tree.UnresolvedName{yyDollar[3].unresolvedNameUnion()} yyLOCAL = tree.NewClusterByOption( @@ -21464,10 +21613,10 @@ yydefault: } yyVAL.union = yyLOCAL - case 1293: + case 1301: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8619 +//line mysql_sql.y:8697 { var ColumnList = yyDollar[4].unresolveNamesUnion() yyLOCAL = tree.NewClusterByOption( @@ -21475,18 +21624,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1294: + case 1302: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8627 +//line mysql_sql.y:8705 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1295: + case 1303: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8631 +//line mysql_sql.y:8709 { var IsSubPartition = true var PType = yyDollar[3].partitionByUnion().PType @@ -21500,42 +21649,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1296: + case 1304: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8645 +//line mysql_sql.y:8723 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1297: + case 1305: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8649 +//line mysql_sql.y:8727 { yyLOCAL = yyDollar[2].partitionsUnion() } yyVAL.union = yyLOCAL - case 1298: + case 1306: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8655 +//line mysql_sql.y:8733 { yyLOCAL = []*tree.Partition{yyDollar[1].partitionUnion()} } yyVAL.union = yyLOCAL - case 1299: + case 1307: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8659 +//line mysql_sql.y:8737 { yyLOCAL = append(yyDollar[1].partitionsUnion(), yyDollar[3].partitionUnion()) } yyVAL.union = yyLOCAL - case 1300: + case 1308: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8665 +//line mysql_sql.y:8743 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -21549,10 +21698,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1301: + case 1309: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8678 +//line mysql_sql.y:8756 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -21566,42 +21715,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1302: + case 1310: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8692 +//line mysql_sql.y:8770 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1303: + case 1311: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8696 +//line mysql_sql.y:8774 { yyLOCAL = yyDollar[2].subPartitionsUnion() } yyVAL.union = yyLOCAL - case 1304: + case 1312: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8702 +//line mysql_sql.y:8780 { yyLOCAL = []*tree.SubPartition{yyDollar[1].subPartitionUnion()} } yyVAL.union = yyLOCAL - case 1305: + case 1313: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8706 +//line mysql_sql.y:8784 { yyLOCAL = append(yyDollar[1].subPartitionsUnion(), yyDollar[3].subPartitionUnion()) } yyVAL.union = yyLOCAL - case 1306: + case 1314: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:8712 +//line mysql_sql.y:8790 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options []tree.TableOption @@ -21611,10 +21760,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1307: + case 1315: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:8721 +//line mysql_sql.y:8799 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options = yyDollar[3].tableOptionsUnion() @@ -21624,53 +21773,53 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1308: + case 1316: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8732 +//line mysql_sql.y:8810 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1309: + case 1317: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8736 +//line mysql_sql.y:8814 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1310: + case 1318: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8741 +//line mysql_sql.y:8819 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1311: + case 1319: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8745 +//line mysql_sql.y:8823 { expr := tree.NewMaxValue() var valueList = tree.Exprs{expr} yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1312: + case 1320: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8751 +//line mysql_sql.y:8829 { var valueList = yyDollar[5].exprsUnion() yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1313: + case 1321: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8756 +//line mysql_sql.y:8834 { var valueList = yyDollar[4].exprsUnion() yyLOCAL = tree.NewValuesIn( @@ -21678,18 +21827,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1314: + case 1322: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8764 +//line mysql_sql.y:8842 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1315: + case 1323: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8768 +//line mysql_sql.y:8846 { res := yyDollar[2].item.(int64) if res == 0 { @@ -21699,18 +21848,18 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1316: + case 1324: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8778 +//line mysql_sql.y:8856 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1317: + case 1325: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8782 +//line mysql_sql.y:8860 { res := yyDollar[2].item.(int64) if res == 0 { @@ -21720,10 +21869,10 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1318: + case 1326: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8793 +//line mysql_sql.y:8871 { rangeTyp := tree.NewRangeType() rangeTyp.Expr = yyDollar[3].exprUnion() @@ -21732,10 +21881,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1319: + case 1327: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8801 +//line mysql_sql.y:8879 { rangeTyp := tree.NewRangeType() rangeTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -21744,10 +21893,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1320: + case 1328: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8809 +//line mysql_sql.y:8887 { listTyp := tree.NewListType() listTyp.Expr = yyDollar[3].exprUnion() @@ -21756,10 +21905,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1321: + case 1329: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8817 +//line mysql_sql.y:8895 { listTyp := tree.NewListType() listTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -21768,10 +21917,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1323: + case 1331: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8828 +//line mysql_sql.y:8906 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -21781,10 +21930,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1324: + case 1332: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8837 +//line mysql_sql.y:8915 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -21795,10 +21944,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1325: + case 1333: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8847 +//line mysql_sql.y:8925 { Linear := yyDollar[1].boolValUnion() Expr := yyDollar[4].exprUnion() @@ -21808,58 +21957,58 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1326: + case 1334: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8857 +//line mysql_sql.y:8935 { yyLOCAL = 2 } yyVAL.union = yyLOCAL - case 1327: + case 1335: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8861 +//line mysql_sql.y:8939 { yyLOCAL = yyDollar[3].item.(int64) } yyVAL.union = yyLOCAL - case 1328: + case 1336: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8866 +//line mysql_sql.y:8944 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1329: + case 1337: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8870 +//line mysql_sql.y:8948 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1330: + case 1338: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:8876 +//line mysql_sql.y:8954 { yyLOCAL = []*tree.ConnectorOption{yyDollar[1].connectorOptionUnion()} } yyVAL.union = yyLOCAL - case 1331: + case 1339: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:8880 +//line mysql_sql.y:8958 { yyLOCAL = append(yyDollar[1].connectorOptionsUnion(), yyDollar[3].connectorOptionUnion()) } yyVAL.union = yyLOCAL - case 1332: + case 1340: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:8886 +//line mysql_sql.y:8964 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -21869,10 +22018,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1333: + case 1341: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:8895 +//line mysql_sql.y:8973 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -21882,42 +22031,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1334: + case 1342: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8905 +//line mysql_sql.y:8983 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1335: + case 1343: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8909 +//line mysql_sql.y:8987 { yyLOCAL = yyDollar[3].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1336: + case 1344: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8915 +//line mysql_sql.y:8993 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1337: + case 1345: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8919 +//line mysql_sql.y:8997 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1338: + case 1346: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8925 +//line mysql_sql.y:9003 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -21927,10 +22076,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1339: + case 1347: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8934 +//line mysql_sql.y:9012 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -21940,364 +22089,364 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1340: + case 1348: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8944 +//line mysql_sql.y:9022 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1341: + case 1349: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8948 +//line mysql_sql.y:9026 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1342: + case 1350: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8954 +//line mysql_sql.y:9032 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1343: + case 1351: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8958 +//line mysql_sql.y:9036 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1344: + case 1352: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8962 +//line mysql_sql.y:9040 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1345: + case 1353: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8968 +//line mysql_sql.y:9046 { yyLOCAL = tree.NewTableOptionAUTOEXTEND_SIZE(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1346: + case 1354: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8972 +//line mysql_sql.y:9050 { yyLOCAL = tree.NewTableOptionAutoIncrement(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1347: + case 1355: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8976 +//line mysql_sql.y:9054 { yyLOCAL = tree.NewTableOptionAvgRowLength(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1348: + case 1356: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8980 +//line mysql_sql.y:9058 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1349: + case 1357: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8984 +//line mysql_sql.y:9062 { yyLOCAL = tree.NewTableOptionCollate(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1350: + case 1358: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8988 +//line mysql_sql.y:9066 { yyLOCAL = tree.NewTableOptionChecksum(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1351: + case 1359: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8992 +//line mysql_sql.y:9070 { str := util.DealCommentString(yyDollar[3].str) yyLOCAL = tree.NewTableOptionComment(str) } yyVAL.union = yyLOCAL - case 1352: + case 1360: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8997 +//line mysql_sql.y:9075 { yyLOCAL = tree.NewTableOptionCompression(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1353: + case 1361: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9001 +//line mysql_sql.y:9079 { yyLOCAL = tree.NewTableOptionConnection(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1354: + case 1362: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9005 +//line mysql_sql.y:9083 { yyLOCAL = tree.NewTableOptionDataDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1355: + case 1363: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9009 +//line mysql_sql.y:9087 { yyLOCAL = tree.NewTableOptionIndexDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1356: + case 1364: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9013 +//line mysql_sql.y:9091 { yyLOCAL = tree.NewTableOptionDelayKeyWrite(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1357: + case 1365: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9017 +//line mysql_sql.y:9095 { yyLOCAL = tree.NewTableOptionEncryption(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1358: + case 1366: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9021 +//line mysql_sql.y:9099 { yyLOCAL = tree.NewTableOptionEngine(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1359: + case 1367: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9025 +//line mysql_sql.y:9103 { yyLOCAL = tree.NewTableOptionEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1360: + case 1368: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9029 +//line mysql_sql.y:9107 { yyLOCAL = tree.NewTableOptionInsertMethod(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1361: + case 1369: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9033 +//line mysql_sql.y:9111 { yyLOCAL = tree.NewTableOptionKeyBlockSize(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1362: + case 1370: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9037 +//line mysql_sql.y:9115 { yyLOCAL = tree.NewTableOptionMaxRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1363: + case 1371: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9041 +//line mysql_sql.y:9119 { yyLOCAL = tree.NewTableOptionMinRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1364: + case 1372: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9045 +//line mysql_sql.y:9123 { t := tree.NewTableOptionPackKeys() t.Value = yyDollar[3].item.(int64) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1365: + case 1373: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9051 +//line mysql_sql.y:9129 { t := tree.NewTableOptionPackKeys() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1366: + case 1374: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9057 +//line mysql_sql.y:9135 { yyLOCAL = tree.NewTableOptionPassword(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1367: + case 1375: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9061 +//line mysql_sql.y:9139 { yyLOCAL = tree.NewTableOptionRowFormat(yyDollar[3].rowFormatTypeUnion()) } yyVAL.union = yyLOCAL - case 1368: + case 1376: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9065 +//line mysql_sql.y:9143 { yyLOCAL = tree.NewTTableOptionStartTrans(true) } yyVAL.union = yyLOCAL - case 1369: + case 1377: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9069 +//line mysql_sql.y:9147 { yyLOCAL = tree.NewTTableOptionSecondaryEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1370: + case 1378: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9073 +//line mysql_sql.y:9151 { t := tree.NewTableOptionStatsAutoRecalc() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1371: + case 1379: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9079 +//line mysql_sql.y:9157 { t := tree.NewTableOptionStatsAutoRecalc() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1372: + case 1380: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9085 +//line mysql_sql.y:9163 { t := tree.NewTableOptionStatsPersistent() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1373: + case 1381: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9091 +//line mysql_sql.y:9169 { t := tree.NewTableOptionStatsPersistent() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1374: + case 1382: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9097 +//line mysql_sql.y:9175 { t := tree.NewTableOptionStatsSamplePages() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1375: + case 1383: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9103 +//line mysql_sql.y:9181 { t := tree.NewTableOptionStatsSamplePages() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1376: + case 1384: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9109 +//line mysql_sql.y:9187 { yyLOCAL = tree.NewTableOptionTablespace(yyDollar[3].cstrUnion().Compare(), "") } yyVAL.union = yyLOCAL - case 1377: + case 1385: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9113 +//line mysql_sql.y:9191 { yyLOCAL = tree.NewTableOptionTablespace("", yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1378: + case 1386: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9117 +//line mysql_sql.y:9195 { yyLOCAL = tree.NewTableOptionUnion(yyDollar[4].tableNamesUnion()) } yyVAL.union = yyLOCAL - case 1379: + case 1387: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9121 +//line mysql_sql.y:9199 { var Preperties = yyDollar[3].propertiesUnion() yyLOCAL = tree.NewTableOptionProperties(Preperties) } yyVAL.union = yyLOCAL - case 1380: + case 1388: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:9128 +//line mysql_sql.y:9206 { yyLOCAL = []tree.Property{yyDollar[1].propertyUnion()} } yyVAL.union = yyLOCAL - case 1381: + case 1389: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:9132 +//line mysql_sql.y:9210 { yyLOCAL = append(yyDollar[1].propertiesUnion(), yyDollar[3].propertyUnion()) } yyVAL.union = yyLOCAL - case 1382: + case 1390: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Property -//line mysql_sql.y:9138 +//line mysql_sql.y:9216 { var Key = yyDollar[1].str var Value = yyDollar[3].str @@ -22307,96 +22456,96 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1383: + case 1391: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9149 +//line mysql_sql.y:9227 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1384: + case 1392: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9153 +//line mysql_sql.y:9231 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1385: + case 1393: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9159 +//line mysql_sql.y:9237 { yyLOCAL = tree.ROW_FORMAT_DEFAULT } yyVAL.union = yyLOCAL - case 1386: + case 1394: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9163 +//line mysql_sql.y:9241 { yyLOCAL = tree.ROW_FORMAT_DYNAMIC } yyVAL.union = yyLOCAL - case 1387: + case 1395: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9167 +//line mysql_sql.y:9245 { yyLOCAL = tree.ROW_FORMAT_FIXED } yyVAL.union = yyLOCAL - case 1388: + case 1396: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9171 +//line mysql_sql.y:9249 { yyLOCAL = tree.ROW_FORMAT_COMPRESSED } yyVAL.union = yyLOCAL - case 1389: + case 1397: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9175 +//line mysql_sql.y:9253 { yyLOCAL = tree.ROW_FORMAT_REDUNDANT } yyVAL.union = yyLOCAL - case 1390: + case 1398: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9179 +//line mysql_sql.y:9257 { yyLOCAL = tree.ROW_FORMAT_COMPACT } yyVAL.union = yyLOCAL - case 1395: + case 1403: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:9193 +//line mysql_sql.y:9271 { yyLOCAL = tree.TableNames{yyDollar[1].tableNameUnion()} } yyVAL.union = yyLOCAL - case 1396: + case 1404: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:9197 +//line mysql_sql.y:9275 { yyLOCAL = append(yyDollar[1].tableNamesUnion(), yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 1397: + case 1405: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:9206 +//line mysql_sql.y:9284 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[2].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1398: + case 1406: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:9212 +//line mysql_sql.y:9290 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -22404,18 +22553,18 @@ yydefault: yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[4].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1399: + case 1407: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9220 +//line mysql_sql.y:9298 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1400: + case 1408: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9224 +//line mysql_sql.y:9302 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPTIME, @@ -22423,10 +22572,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1401: + case 1409: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9231 +//line mysql_sql.y:9309 { var str = yyDollar[4].cstrUnion().Compare() yyLOCAL = &tree.AtTimeStamp{ @@ -22436,10 +22585,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1402: + case 1410: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9240 +//line mysql_sql.y:9318 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPSNAPSHOT, @@ -22448,10 +22597,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1403: + case 1411: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9248 +//line mysql_sql.y:9326 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATMOTIMESTAMP, @@ -22459,10 +22608,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1404: + case 1412: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9255 +//line mysql_sql.y:9333 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ASOFTIMESTAMP, @@ -22470,74 +22619,74 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1405: + case 1413: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9263 +//line mysql_sql.y:9341 { yyLOCAL = tree.TableDefs(nil) } yyVAL.union = yyLOCAL - case 1407: + case 1415: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9270 +//line mysql_sql.y:9348 { yyLOCAL = tree.TableDefs{yyDollar[1].tableDefUnion()} } yyVAL.union = yyLOCAL - case 1408: + case 1416: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9274 +//line mysql_sql.y:9352 { yyLOCAL = append(yyDollar[1].tableDefsUnion(), yyDollar[3].tableDefUnion()) } yyVAL.union = yyLOCAL - case 1409: + case 1417: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9280 +//line mysql_sql.y:9358 { yyLOCAL = tree.TableDef(yyDollar[1].columnTableDefUnion()) } yyVAL.union = yyLOCAL - case 1410: + case 1418: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9284 +//line mysql_sql.y:9362 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1411: + case 1419: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9288 +//line mysql_sql.y:9366 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1412: + case 1420: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9294 +//line mysql_sql.y:9372 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1413: + case 1421: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9298 +//line mysql_sql.y:9376 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1414: + case 1422: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9304 +//line mysql_sql.y:9382 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -22551,10 +22700,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1415: + case 1423: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9317 +//line mysql_sql.y:9395 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -22568,10 +22717,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1416: + case 1424: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9330 +//line mysql_sql.y:9408 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -22613,10 +22762,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1417: + case 1425: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9371 +//line mysql_sql.y:9449 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -22657,10 +22806,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1418: + case 1426: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9413 +//line mysql_sql.y:9491 { if yyDollar[1].str != "" { switch v := yyDollar[2].tableDefUnion().(type) { @@ -22675,18 +22824,18 @@ yydefault: yyLOCAL = yyDollar[2].tableDefUnion() } yyVAL.union = yyLOCAL - case 1419: + case 1427: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9427 +//line mysql_sql.y:9505 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1420: + case 1428: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9433 +//line mysql_sql.y:9511 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22700,10 +22849,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1421: + case 1429: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9446 +//line mysql_sql.y:9524 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22717,10 +22866,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1422: + case 1430: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9459 +//line mysql_sql.y:9537 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22734,10 +22883,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1423: + case 1431: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9472 +//line mysql_sql.y:9550 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22751,10 +22900,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1424: + case 1432: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9485 +//line mysql_sql.y:9563 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var KeyParts = yyDollar[6].keyPartsUnion() @@ -22770,10 +22919,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1425: + case 1433: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9500 +//line mysql_sql.y:9578 { var Expr = yyDollar[3].exprUnion() var Enforced = yyDollar[5].boolValUnion() @@ -22783,327 +22932,327 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1426: + case 1434: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9510 +//line mysql_sql.y:9588 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1428: + case 1436: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9516 +//line mysql_sql.y:9594 { yyVAL.str = "" } - case 1429: + case 1437: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9520 +//line mysql_sql.y:9598 { yyVAL.str = yyDollar[1].str } - case 1432: + case 1440: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9530 +//line mysql_sql.y:9608 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = "" } yyVAL.union = yyLOCAL - case 1433: + case 1441: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9536 +//line mysql_sql.y:9614 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1434: + case 1442: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9542 +//line mysql_sql.y:9620 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].cstrUnion().Compare() yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1446: + case 1454: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9564 +//line mysql_sql.y:9642 { yyVAL.str = "" } - case 1447: + case 1455: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9568 +//line mysql_sql.y:9646 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1448: + case 1456: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ColumnTableDef -//line mysql_sql.y:9574 +//line mysql_sql.y:9652 { yyLOCAL = tree.NewColumnTableDef(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[3].columnAttributesUnion()) } yyVAL.union = yyLOCAL - case 1449: + case 1457: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9580 +//line mysql_sql.y:9658 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1450: + case 1458: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9584 +//line mysql_sql.y:9662 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1451: + case 1459: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9589 +//line mysql_sql.y:9667 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1452: + case 1460: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9597 +//line mysql_sql.y:9675 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1453: + case 1461: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9601 +//line mysql_sql.y:9679 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1454: + case 1462: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9605 +//line mysql_sql.y:9683 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1455: + case 1463: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9609 +//line mysql_sql.y:9687 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1456: + case 1464: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9615 +//line mysql_sql.y:9693 { yyLOCAL = yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) } yyVAL.union = yyLOCAL - case 1457: + case 1465: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9621 +//line mysql_sql.y:9699 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1458: + case 1466: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9625 +//line mysql_sql.y:9703 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1459: + case 1467: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9630 +//line mysql_sql.y:9708 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1460: + case 1468: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9637 +//line mysql_sql.y:9715 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1461: + case 1469: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9641 +//line mysql_sql.y:9719 { yyLOCAL = yyDollar[1].columnAttributesUnion() } yyVAL.union = yyLOCAL - case 1462: + case 1470: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9647 +//line mysql_sql.y:9725 { yyLOCAL = []tree.ColumnAttribute{yyDollar[1].columnAttributeUnion()} } yyVAL.union = yyLOCAL - case 1463: + case 1471: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9651 +//line mysql_sql.y:9729 { yyLOCAL = append(yyDollar[1].columnAttributesUnion(), yyDollar[2].columnAttributeUnion()) } yyVAL.union = yyLOCAL - case 1464: + case 1472: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9657 +//line mysql_sql.y:9735 { yyLOCAL = tree.NewAttributeNull(true) } yyVAL.union = yyLOCAL - case 1465: + case 1473: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9661 +//line mysql_sql.y:9739 { yyLOCAL = tree.NewAttributeNull(false) } yyVAL.union = yyLOCAL - case 1466: + case 1474: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9665 +//line mysql_sql.y:9743 { yyLOCAL = tree.NewAttributeDefault(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1467: + case 1475: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9669 +//line mysql_sql.y:9747 { yyLOCAL = tree.NewAttributeAutoIncrement() } yyVAL.union = yyLOCAL - case 1468: + case 1476: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9673 +//line mysql_sql.y:9751 { yyLOCAL = yyDollar[1].columnAttributeUnion() } yyVAL.union = yyLOCAL - case 1469: + case 1477: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9677 +//line mysql_sql.y:9755 { str := util.DealCommentString(yyDollar[2].str) yyLOCAL = tree.NewAttributeComment(tree.NewNumVal(str, str, false, tree.P_char)) } yyVAL.union = yyLOCAL - case 1470: + case 1478: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9682 +//line mysql_sql.y:9760 { yyLOCAL = tree.NewAttributeCollate(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1471: + case 1479: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9686 +//line mysql_sql.y:9764 { yyLOCAL = tree.NewAttributeColumnFormat(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1472: + case 1480: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9690 +//line mysql_sql.y:9768 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1473: + case 1481: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9694 +//line mysql_sql.y:9772 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1474: + case 1482: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9698 +//line mysql_sql.y:9776 { yyLOCAL = tree.NewAttributeStorage(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1475: + case 1483: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9702 +//line mysql_sql.y:9780 { yyLOCAL = tree.NewAttributeAutoRandom(int(yyDollar[2].int64ValUnion())) } yyVAL.union = yyLOCAL - case 1476: + case 1484: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9706 +//line mysql_sql.y:9784 { yyLOCAL = yyDollar[1].attributeReferenceUnion() } yyVAL.union = yyLOCAL - case 1477: + case 1485: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9710 +//line mysql_sql.y:9788 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), false, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1478: + case 1486: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9714 +//line mysql_sql.y:9792 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), yyDollar[6].boolValUnion(), yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1479: + case 1487: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9718 +//line mysql_sql.y:9796 { name := tree.NewUnresolvedColName(yyDollar[3].str) var es tree.Exprs = nil @@ -23118,98 +23267,98 @@ yydefault: yyLOCAL = tree.NewAttributeOnUpdate(expr) } yyVAL.union = yyLOCAL - case 1480: + case 1488: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9732 +//line mysql_sql.y:9810 { yyLOCAL = tree.NewAttributeLowCardinality() } yyVAL.union = yyLOCAL - case 1481: + case 1489: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9736 +//line mysql_sql.y:9814 { yyLOCAL = tree.NewAttributeVisable(true) } yyVAL.union = yyLOCAL - case 1482: + case 1490: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9740 +//line mysql_sql.y:9818 { yyLOCAL = tree.NewAttributeVisable(false) } yyVAL.union = yyLOCAL - case 1483: + case 1491: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9744 +//line mysql_sql.y:9822 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1484: + case 1492: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9748 +//line mysql_sql.y:9826 { yyLOCAL = tree.NewAttributeHeader(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1485: + case 1493: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9752 +//line mysql_sql.y:9830 { yyLOCAL = tree.NewAttributeHeaders() } yyVAL.union = yyLOCAL - case 1486: + case 1494: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9758 +//line mysql_sql.y:9836 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1487: + case 1495: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9762 +//line mysql_sql.y:9840 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1488: + case 1496: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9767 +//line mysql_sql.y:9845 { yyVAL.str = "" } - case 1489: + case 1497: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9771 +//line mysql_sql.y:9849 { yyVAL.str = yyDollar[1].str } - case 1490: + case 1498: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9777 +//line mysql_sql.y:9855 { yyVAL.str = "" } - case 1491: + case 1499: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9781 +//line mysql_sql.y:9859 { yyVAL.str = yyDollar[2].cstrUnion().Compare() } - case 1492: + case 1500: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AttributeReference -//line mysql_sql.y:9787 +//line mysql_sql.y:9865 { var TableName = yyDollar[2].tableNameUnion() var KeyParts = yyDollar[3].keyPartsUnion() @@ -23225,10 +23374,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1493: + case 1501: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9804 +//line mysql_sql.y:9882 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -23236,10 +23385,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1494: + case 1502: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9811 +//line mysql_sql.y:9889 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -23247,10 +23396,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1495: + case 1503: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9818 +//line mysql_sql.y:9896 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -23258,10 +23407,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1496: + case 1504: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9825 +//line mysql_sql.y:9903 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -23269,10 +23418,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1497: + case 1505: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9832 +//line mysql_sql.y:9910 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[2].referenceOptionTypeUnion(), @@ -23280,354 +23429,354 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1498: + case 1506: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9841 +//line mysql_sql.y:9919 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1499: + case 1507: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9847 +//line mysql_sql.y:9925 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1500: + case 1508: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9853 +//line mysql_sql.y:9931 { yyLOCAL = tree.REFERENCE_OPTION_RESTRICT } yyVAL.union = yyLOCAL - case 1501: + case 1509: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9857 +//line mysql_sql.y:9935 { yyLOCAL = tree.REFERENCE_OPTION_CASCADE } yyVAL.union = yyLOCAL - case 1502: + case 1510: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9861 +//line mysql_sql.y:9939 { yyLOCAL = tree.REFERENCE_OPTION_SET_NULL } yyVAL.union = yyLOCAL - case 1503: + case 1511: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9865 +//line mysql_sql.y:9943 { yyLOCAL = tree.REFERENCE_OPTION_NO_ACTION } yyVAL.union = yyLOCAL - case 1504: + case 1512: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9869 +//line mysql_sql.y:9947 { yyLOCAL = tree.REFERENCE_OPTION_SET_DEFAULT } yyVAL.union = yyLOCAL - case 1505: + case 1513: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9874 +//line mysql_sql.y:9952 { yyLOCAL = tree.MATCH_INVALID } yyVAL.union = yyLOCAL - case 1507: + case 1515: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9881 +//line mysql_sql.y:9959 { yyLOCAL = tree.MATCH_FULL } yyVAL.union = yyLOCAL - case 1508: + case 1516: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9885 +//line mysql_sql.y:9963 { yyLOCAL = tree.MATCH_PARTIAL } yyVAL.union = yyLOCAL - case 1509: + case 1517: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9889 +//line mysql_sql.y:9967 { yyLOCAL = tree.MATCH_SIMPLE } yyVAL.union = yyLOCAL - case 1510: + case 1518: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9894 +//line mysql_sql.y:9972 { yyLOCAL = tree.FULLTEXT_DEFAULT } yyVAL.union = yyLOCAL - case 1511: + case 1519: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9898 +//line mysql_sql.y:9976 { yyLOCAL = tree.FULLTEXT_NL } yyVAL.union = yyLOCAL - case 1512: + case 1520: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9902 +//line mysql_sql.y:9980 { yyLOCAL = tree.FULLTEXT_NL_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1513: + case 1521: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9906 +//line mysql_sql.y:9984 { yyLOCAL = tree.FULLTEXT_BOOLEAN } yyVAL.union = yyLOCAL - case 1514: + case 1522: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9910 +//line mysql_sql.y:9988 { yyLOCAL = tree.FULLTEXT_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1515: + case 1523: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:9915 +//line mysql_sql.y:9993 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1516: + case 1524: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:9919 +//line mysql_sql.y:9997 { yyLOCAL = yyDollar[2].keyPartsUnion() } yyVAL.union = yyLOCAL - case 1517: + case 1525: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9924 +//line mysql_sql.y:10002 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 1518: + case 1526: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9928 +//line mysql_sql.y:10006 { yyLOCAL = yyDollar[2].item.(int64) } yyVAL.union = yyLOCAL - case 1525: + case 1533: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Subquery -//line mysql_sql.y:9944 +//line mysql_sql.y:10022 { yyLOCAL = &tree.Subquery{Select: yyDollar[1].selectStatementUnion(), Exists: false} } yyVAL.union = yyLOCAL - case 1526: + case 1534: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9950 +//line mysql_sql.y:10028 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_AND, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1527: + case 1535: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9954 +//line mysql_sql.y:10032 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_OR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1528: + case 1536: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9958 +//line mysql_sql.y:10036 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_XOR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1529: + case 1537: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9962 +//line mysql_sql.y:10040 { yyLOCAL = tree.NewBinaryExpr(tree.PLUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1530: + case 1538: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9966 +//line mysql_sql.y:10044 { yyLOCAL = tree.NewBinaryExpr(tree.MINUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1531: + case 1539: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9970 +//line mysql_sql.y:10048 { yyLOCAL = tree.NewBinaryExpr(tree.MULTI, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1532: + case 1540: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9974 +//line mysql_sql.y:10052 { yyLOCAL = tree.NewBinaryExpr(tree.DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1533: + case 1541: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9978 +//line mysql_sql.y:10056 { yyLOCAL = tree.NewBinaryExpr(tree.INTEGER_DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1534: + case 1542: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9982 +//line mysql_sql.y:10060 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1535: + case 1543: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9986 +//line mysql_sql.y:10064 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1536: + case 1544: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9990 +//line mysql_sql.y:10068 { yyLOCAL = tree.NewBinaryExpr(tree.LEFT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1537: + case 1545: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9994 +//line mysql_sql.y:10072 { yyLOCAL = tree.NewBinaryExpr(tree.RIGHT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1538: + case 1546: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9998 +//line mysql_sql.y:10076 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1539: + case 1547: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10004 +//line mysql_sql.y:10082 { yyLOCAL = yyDollar[1].unresolvedNameUnion() } yyVAL.union = yyLOCAL - case 1540: + case 1548: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10008 +//line mysql_sql.y:10086 { yyLOCAL = yyDollar[1].varExprUnion() } yyVAL.union = yyLOCAL - case 1541: + case 1549: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10012 +//line mysql_sql.y:10090 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1542: + case 1550: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10016 +//line mysql_sql.y:10094 { yyLOCAL = tree.NewParentExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1543: + case 1551: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10020 +//line mysql_sql.y:10098 { yyLOCAL = tree.NewTuple(append(yyDollar[2].exprsUnion(), yyDollar[4].exprUnion())) } yyVAL.union = yyLOCAL - case 1544: + case 1552: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10024 +//line mysql_sql.y:10102 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_PLUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1545: + case 1553: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10028 +//line mysql_sql.y:10106 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MINUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1546: + case 1554: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10032 +//line mysql_sql.y:10110 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_TILDE, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1547: + case 1555: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10036 +//line mysql_sql.y:10114 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MARK, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1548: + case 1556: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10040 +//line mysql_sql.y:10118 { hint := strings.ToLower(yyDollar[2].cstrUnion().Compare()) switch hint { @@ -23670,35 +23819,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1549: + case 1557: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10082 +//line mysql_sql.y:10160 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1550: + case 1558: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10086 +//line mysql_sql.y:10164 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1551: + case 1559: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10090 +//line mysql_sql.y:10168 { yyDollar[2].subqueryUnion().Exists = true yyLOCAL = yyDollar[2].subqueryUnion() } yyVAL.union = yyLOCAL - case 1552: + case 1560: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10095 +//line mysql_sql.y:10173 { yyLOCAL = &tree.CaseExpr{ Expr: yyDollar[2].exprUnion(), @@ -23707,50 +23856,50 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1553: + case 1561: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10103 +//line mysql_sql.y:10181 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1554: + case 1562: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10107 +//line mysql_sql.y:10185 { yyLOCAL = tree.NewSerialExtractExpr(yyDollar[3].exprUnion(), yyDollar[5].exprUnion(), yyDollar[7].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1555: + case 1563: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10111 +//line mysql_sql.y:10189 { yyLOCAL = tree.NewBitCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1556: + case 1564: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10115 +//line mysql_sql.y:10193 { yyLOCAL = tree.NewCastExpr(yyDollar[1].exprUnion(), yyDollar[3].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1557: + case 1565: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10119 +//line mysql_sql.y:10197 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1558: + case 1566: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10123 +//line mysql_sql.y:10201 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) @@ -23761,66 +23910,66 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1559: + case 1567: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10133 +//line mysql_sql.y:10211 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1560: + case 1568: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10137 +//line mysql_sql.y:10215 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1561: + case 1569: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10141 +//line mysql_sql.y:10219 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1562: + case 1570: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10145 +//line mysql_sql.y:10223 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1563: + case 1571: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10149 +//line mysql_sql.y:10227 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1564: + case 1572: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10153 +//line mysql_sql.y:10231 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1565: + case 1573: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10157 +//line mysql_sql.y:10235 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1566: + case 1574: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10161 +//line mysql_sql.y:10239 { val, err := tree.NewFullTextMatchFuncExpression(yyDollar[3].keyPartsUnion(), yyDollar[7].str, yyDollar[8].fullTextSearchTypeUnion()) if err != nil { @@ -23830,16 +23979,16 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1567: + case 1575: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10172 +//line mysql_sql.y:10250 { yyVAL.str = yyDollar[1].str } - case 1568: + case 1576: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10178 +//line mysql_sql.y:10256 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23849,10 +23998,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1569: + case 1577: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10187 +//line mysql_sql.y:10265 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23862,10 +24011,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1570: + case 1578: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10196 +//line mysql_sql.y:10274 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23875,10 +24024,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1571: + case 1579: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10207 +//line mysql_sql.y:10285 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, "block") @@ -23889,10 +24038,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1572: + case 1580: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10217 +//line mysql_sql.y:10295 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, yyDollar[8].str) @@ -23903,10 +24052,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1573: + case 1581: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10227 +//line mysql_sql.y:10305 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), true, nil) if err != nil { @@ -23916,10 +24065,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1574: + case 1582: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10236 +//line mysql_sql.y:10314 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), true, nil) if err != nil { @@ -23929,10 +24078,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1575: + case 1583: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10246 +//line mysql_sql.y:10324 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), "block") @@ -23943,10 +24092,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1576: + case 1584: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10256 +//line mysql_sql.y:10334 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), yyDollar[8].str) @@ -23957,10 +24106,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1577: + case 1585: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10266 +//line mysql_sql.y:10344 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -23970,10 +24119,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1578: + case 1586: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10275 +//line mysql_sql.y:10353 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -23983,58 +24132,58 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1579: + case 1587: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10285 +//line mysql_sql.y:10363 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1580: + case 1588: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10289 +//line mysql_sql.y:10367 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1581: + case 1589: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10294 +//line mysql_sql.y:10372 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1582: + case 1590: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10298 +//line mysql_sql.y:10376 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1583: + case 1591: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10304 +//line mysql_sql.y:10382 { yyLOCAL = []*tree.When{yyDollar[1].whenClauseUnion()} } yyVAL.union = yyLOCAL - case 1584: + case 1592: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10308 +//line mysql_sql.y:10386 { yyLOCAL = append(yyDollar[1].whenClauseListUnion(), yyDollar[2].whenClauseUnion()) } yyVAL.union = yyLOCAL - case 1585: + case 1593: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.When -//line mysql_sql.y:10314 +//line mysql_sql.y:10392 { yyLOCAL = &tree.When{ Cond: yyDollar[2].exprUnion(), @@ -24042,9 +24191,9 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1586: + case 1594: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10323 +//line mysql_sql.y:10401 { t := yyVAL.columnTypeUnion() str := strings.ToLower(t.InternalType.FamilyString) @@ -24057,10 +24206,10 @@ yydefault: } } } - case 1587: + case 1595: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10335 +//line mysql_sql.y:10413 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -24078,10 +24227,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1588: + case 1596: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10352 +//line mysql_sql.y:10430 { locale := "" yyLOCAL = &tree.T{ @@ -24096,10 +24245,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1590: + case 1598: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10369 +//line mysql_sql.y:10447 { locale := "" yyLOCAL = &tree.T{ @@ -24113,10 +24262,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1591: + case 1599: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10382 +//line mysql_sql.y:10460 { locale := "" yyLOCAL = &tree.T{ @@ -24130,10 +24279,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1592: + case 1600: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10395 +//line mysql_sql.y:10473 { locale := "" yyLOCAL = &tree.T{ @@ -24146,10 +24295,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1593: + case 1601: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10407 +//line mysql_sql.y:10485 { locale := "" yyLOCAL = &tree.T{ @@ -24164,10 +24313,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1594: + case 1602: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10421 +//line mysql_sql.y:10499 { locale := "" yyLOCAL = &tree.T{ @@ -24183,10 +24332,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1595: + case 1603: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10436 +//line mysql_sql.y:10514 { locale := "" yyLOCAL = &tree.T{ @@ -24202,10 +24351,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1596: + case 1604: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10451 +//line mysql_sql.y:10529 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -24223,10 +24372,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1597: + case 1605: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10468 +//line mysql_sql.y:10546 { locale := "" yyLOCAL = &tree.T{ @@ -24241,95 +24390,95 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1598: + case 1606: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10484 +//line mysql_sql.y:10562 { } - case 1602: + case 1610: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10491 +//line mysql_sql.y:10569 { yyLOCAL = &tree.FrameBound{Type: tree.Following, UnBounded: true} } yyVAL.union = yyLOCAL - case 1603: + case 1611: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10495 +//line mysql_sql.y:10573 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1604: + case 1612: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10499 +//line mysql_sql.y:10577 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1605: + case 1613: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10505 +//line mysql_sql.y:10583 { yyLOCAL = &tree.FrameBound{Type: tree.CurrentRow} } yyVAL.union = yyLOCAL - case 1606: + case 1614: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10509 +//line mysql_sql.y:10587 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, UnBounded: true} } yyVAL.union = yyLOCAL - case 1607: + case 1615: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10513 +//line mysql_sql.y:10591 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1608: + case 1616: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10517 +//line mysql_sql.y:10595 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1609: + case 1617: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10523 +//line mysql_sql.y:10601 { yyLOCAL = tree.Rows } yyVAL.union = yyLOCAL - case 1610: + case 1618: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10527 +//line mysql_sql.y:10605 { yyLOCAL = tree.Range } yyVAL.union = yyLOCAL - case 1611: + case 1619: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10531 +//line mysql_sql.y:10609 { yyLOCAL = tree.Groups } yyVAL.union = yyLOCAL - case 1612: + case 1620: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10537 +//line mysql_sql.y:10615 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -24338,10 +24487,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1613: + case 1621: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10545 +//line mysql_sql.y:10623 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -24351,82 +24500,82 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1614: + case 1622: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10555 +//line mysql_sql.y:10633 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1615: + case 1623: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10559 +//line mysql_sql.y:10637 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1616: + case 1624: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10565 +//line mysql_sql.y:10643 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1617: + case 1625: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10570 +//line mysql_sql.y:10648 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1618: + case 1626: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10574 +//line mysql_sql.y:10652 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1619: + case 1627: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10579 +//line mysql_sql.y:10657 { yyVAL.str = "," } - case 1620: + case 1628: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10583 +//line mysql_sql.y:10661 { yyVAL.str = yyDollar[2].str } - case 1621: + case 1629: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10588 +//line mysql_sql.y:10666 { yyVAL.str = "1,vector_l2_ops,random,false" } - case 1622: + case 1630: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10592 +//line mysql_sql.y:10670 { yyVAL.str = yyDollar[2].str } - case 1623: + case 1631: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10597 +//line mysql_sql.y:10675 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1625: + case 1633: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10604 +//line mysql_sql.y:10682 { hasFrame := true var f *tree.FrameClause @@ -24451,10 +24600,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1626: + case 1634: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10630 +//line mysql_sql.y:10708 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24467,10 +24616,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1627: + case 1635: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10642 +//line mysql_sql.y:10720 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24483,10 +24632,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1628: + case 1636: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10654 +//line mysql_sql.y:10732 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24498,10 +24647,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1629: + case 1637: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10665 +//line mysql_sql.y:10743 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24513,10 +24662,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1630: + case 1638: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10676 +//line mysql_sql.y:10754 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -24528,10 +24677,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1631: + case 1639: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10687 +//line mysql_sql.y:10765 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24542,10 +24691,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1632: + case 1640: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10697 +//line mysql_sql.y:10775 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24556,10 +24705,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1633: + case 1641: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10707 +//line mysql_sql.y:10785 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24571,10 +24720,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1634: + case 1642: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10718 +//line mysql_sql.y:10796 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24586,10 +24735,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1635: + case 1643: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10729 +//line mysql_sql.y:10807 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24601,10 +24750,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1636: + case 1644: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10740 +//line mysql_sql.y:10818 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24616,10 +24765,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1637: + case 1645: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10751 +//line mysql_sql.y:10829 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -24631,10 +24780,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1638: + case 1646: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10762 +//line mysql_sql.y:10840 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24646,10 +24795,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1639: + case 1647: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10773 +//line mysql_sql.y:10851 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24661,10 +24810,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1640: + case 1648: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10784 +//line mysql_sql.y:10862 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24676,10 +24825,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1641: + case 1649: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10795 +//line mysql_sql.y:10873 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24691,10 +24840,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1642: + case 1650: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10806 +//line mysql_sql.y:10884 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24706,10 +24855,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1643: + case 1651: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10817 +//line mysql_sql.y:10895 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24721,10 +24870,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1644: + case 1652: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10828 +//line mysql_sql.y:10906 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24736,10 +24885,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1645: + case 1653: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10839 +//line mysql_sql.y:10917 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24751,10 +24900,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1646: + case 1654: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10850 +//line mysql_sql.y:10928 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24766,10 +24915,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1647: + case 1655: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10861 +//line mysql_sql.y:10939 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24781,10 +24930,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1648: + case 1656: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10872 +//line mysql_sql.y:10950 { name := tree.NewUnresolvedColName(yyDollar[1].str) var columnList tree.Exprs @@ -24802,10 +24951,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1652: + case 1660: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10896 +//line mysql_sql.y:10974 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24815,10 +24964,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1653: + case 1661: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10905 +//line mysql_sql.y:10983 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24828,10 +24977,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1654: + case 1662: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10914 +//line mysql_sql.y:10992 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24841,10 +24990,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1655: + case 1663: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10923 +//line mysql_sql.y:11001 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24854,10 +25003,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1656: + case 1664: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10932 +//line mysql_sql.y:11010 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24869,10 +25018,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1657: + case 1665: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10943 +//line mysql_sql.y:11021 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24882,10 +25031,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1658: + case 1666: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10952 +//line mysql_sql.y:11030 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24896,10 +25045,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1659: + case 1667: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10962 +//line mysql_sql.y:11040 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24909,10 +25058,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1660: + case 1668: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10971 +//line mysql_sql.y:11049 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24922,10 +25071,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1661: + case 1669: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10980 +//line mysql_sql.y:11058 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24935,10 +25084,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1662: + case 1670: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10989 +//line mysql_sql.y:11067 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24948,10 +25097,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1663: + case 1671: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10998 +//line mysql_sql.y:11076 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(0), "0", false, tree.P_int64) @@ -24964,10 +25113,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1664: + case 1672: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11010 +//line mysql_sql.y:11088 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(1), "1", false, tree.P_int64) @@ -24979,10 +25128,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1665: + case 1673: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11021 +//line mysql_sql.y:11099 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(2), "2", false, tree.P_int64) @@ -24996,10 +25145,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1666: + case 1674: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11034 +//line mysql_sql.y:11112 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(3), "3", false, tree.P_int64) @@ -25012,10 +25161,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1667: + case 1675: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11046 +//line mysql_sql.y:11124 { column := tree.NewUnresolvedColName(yyDollar[3].str) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -25026,16 +25175,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1674: + case 1682: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:11068 +//line mysql_sql.y:11146 { yyVAL.str = yyDollar[1].str } - case 1703: + case 1711: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11104 +//line mysql_sql.y:11182 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -25049,10 +25198,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1704: + case 1712: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11117 +//line mysql_sql.y:11195 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -25066,10 +25215,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1705: + case 1713: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11130 +//line mysql_sql.y:11208 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -25081,10 +25230,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1706: + case 1714: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11141 +//line mysql_sql.y:11219 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -25096,10 +25245,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1707: + case 1715: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11153 +//line mysql_sql.y:11231 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25109,10 +25258,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1708: + case 1716: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11162 +//line mysql_sql.y:11240 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25121,10 +25270,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1709: + case 1717: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11170 +//line mysql_sql.y:11248 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25133,10 +25282,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1710: + case 1718: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11178 +//line mysql_sql.y:11256 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -25150,10 +25299,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1711: + case 1719: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11191 +//line mysql_sql.y:11269 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25163,10 +25312,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1712: + case 1720: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11200 +//line mysql_sql.y:11278 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -25178,10 +25327,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1713: + case 1721: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11211 +//line mysql_sql.y:11289 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -25193,10 +25342,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1714: + case 1722: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11222 +//line mysql_sql.y:11300 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25206,10 +25355,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1715: + case 1723: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11231 +//line mysql_sql.y:11309 { cn := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) es := yyDollar[3].exprsUnion() @@ -25222,10 +25371,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1716: + case 1724: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11243 +//line mysql_sql.y:11321 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -25236,10 +25385,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1717: + case 1725: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11253 +//line mysql_sql.y:11331 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -25250,10 +25399,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1718: + case 1726: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11263 +//line mysql_sql.y:11341 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25263,10 +25412,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1719: + case 1727: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11272 +//line mysql_sql.y:11350 { es := tree.Exprs{yyDollar[3].exprUnion()} es = append(es, yyDollar[5].exprUnion()) @@ -25278,10 +25427,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1720: + case 1728: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11283 +//line mysql_sql.y:11361 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25291,10 +25440,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1721: + case 1729: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11292 +//line mysql_sql.y:11370 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -25305,10 +25454,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1722: + case 1730: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11302 +//line mysql_sql.y:11380 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25318,10 +25467,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1723: + case 1731: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11311 +//line mysql_sql.y:11389 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25331,10 +25480,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1724: + case 1732: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11320 +//line mysql_sql.y:11398 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25344,34 +25493,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1725: + case 1733: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11330 +//line mysql_sql.y:11408 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1726: + case 1734: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11334 +//line mysql_sql.y:11412 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1727: + case 1735: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11340 +//line mysql_sql.y:11418 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1728: + case 1736: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11344 +//line mysql_sql.y:11422 { ival, errStr := util.GetInt64(yyDollar[2].item) if errStr != "" { @@ -25382,20 +25531,20 @@ yydefault: yyLOCAL = tree.NewNumVal(ival, str, false, tree.P_int64) } yyVAL.union = yyLOCAL - case 1735: + case 1743: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:11363 +//line mysql_sql.y:11441 { } - case 1736: + case 1744: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:11365 +//line mysql_sql.y:11443 { } - case 1771: + case 1779: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11407 +//line mysql_sql.y:11485 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -25407,106 +25556,106 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1772: + case 1780: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11419 +//line mysql_sql.y:11497 { yyLOCAL = tree.FUNC_TYPE_DEFAULT } yyVAL.union = yyLOCAL - case 1773: + case 1781: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11423 +//line mysql_sql.y:11501 { yyLOCAL = tree.FUNC_TYPE_DISTINCT } yyVAL.union = yyLOCAL - case 1774: + case 1782: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11427 +//line mysql_sql.y:11505 { yyLOCAL = tree.FUNC_TYPE_ALL } yyVAL.union = yyLOCAL - case 1775: + case 1783: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Tuple -//line mysql_sql.y:11433 +//line mysql_sql.y:11511 { yyLOCAL = tree.NewTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1776: + case 1784: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11438 +//line mysql_sql.y:11516 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1777: + case 1785: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11442 +//line mysql_sql.y:11520 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1778: + case 1786: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11448 +//line mysql_sql.y:11526 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1779: + case 1787: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11452 +//line mysql_sql.y:11530 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1780: + case 1788: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11458 +//line mysql_sql.y:11536 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1781: + case 1789: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11462 +//line mysql_sql.y:11540 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1782: + case 1790: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11469 +//line mysql_sql.y:11547 { yyLOCAL = tree.NewAndExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1783: + case 1791: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11473 +//line mysql_sql.y:11551 { yyLOCAL = tree.NewOrExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1784: + case 1792: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11477 +//line mysql_sql.y:11555 { name := tree.NewUnresolvedColName("concat") yyLOCAL = &tree.FuncExpr{ @@ -25516,355 +25665,355 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1785: + case 1793: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11486 +//line mysql_sql.y:11564 { yyLOCAL = tree.NewXorExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1786: + case 1794: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11490 +//line mysql_sql.y:11568 { yyLOCAL = tree.NewNotExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1787: + case 1795: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11494 +//line mysql_sql.y:11572 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1788: + case 1796: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11499 +//line mysql_sql.y:11577 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1789: + case 1797: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11503 +//line mysql_sql.y:11581 { yyLOCAL = tree.NewMaxValue() } yyVAL.union = yyLOCAL - case 1790: + case 1798: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11509 +//line mysql_sql.y:11587 { yyLOCAL = tree.NewIsNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1791: + case 1799: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11513 +//line mysql_sql.y:11591 { yyLOCAL = tree.NewIsNotNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1792: + case 1800: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11517 +//line mysql_sql.y:11595 { yyLOCAL = tree.NewIsUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1793: + case 1801: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11521 +//line mysql_sql.y:11599 { yyLOCAL = tree.NewIsNotUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1794: + case 1802: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11525 +//line mysql_sql.y:11603 { yyLOCAL = tree.NewIsTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1795: + case 1803: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11529 +//line mysql_sql.y:11607 { yyLOCAL = tree.NewIsNotTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1796: + case 1804: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11533 +//line mysql_sql.y:11611 { yyLOCAL = tree.NewIsFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1797: + case 1805: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11537 +//line mysql_sql.y:11615 { yyLOCAL = tree.NewIsNotFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1798: + case 1806: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11541 +//line mysql_sql.y:11619 { yyLOCAL = tree.NewComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1799: + case 1807: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11545 +//line mysql_sql.y:11623 { yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) } yyVAL.union = yyLOCAL - case 1801: + case 1809: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11553 +//line mysql_sql.y:11631 { yyLOCAL = tree.NewComparisonExpr(tree.IN, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1802: + case 1810: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11557 +//line mysql_sql.y:11635 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_IN, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1803: + case 1811: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11561 +//line mysql_sql.y:11639 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.LIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1804: + case 1812: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11565 +//line mysql_sql.y:11643 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_LIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1805: + case 1813: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11569 +//line mysql_sql.y:11647 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.ILIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1806: + case 1814: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11573 +//line mysql_sql.y:11651 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_ILIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1807: + case 1815: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11577 +//line mysql_sql.y:11655 { yyLOCAL = tree.NewComparisonExpr(tree.REG_MATCH, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1808: + case 1816: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11581 +//line mysql_sql.y:11659 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_REG_MATCH, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1809: + case 1817: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11585 +//line mysql_sql.y:11663 { yyLOCAL = tree.NewRangeCond(false, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1810: + case 1818: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11589 +//line mysql_sql.y:11667 { yyLOCAL = tree.NewRangeCond(true, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[6].exprUnion()) } yyVAL.union = yyLOCAL - case 1812: + case 1820: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11595 +//line mysql_sql.y:11673 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1813: + case 1821: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11599 +//line mysql_sql.y:11677 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1814: + case 1822: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11605 +//line mysql_sql.y:11683 { yyLOCAL = yyDollar[1].tupleUnion() } yyVAL.union = yyLOCAL - case 1815: + case 1823: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11609 +//line mysql_sql.y:11687 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1816: + case 1824: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11616 +//line mysql_sql.y:11694 { yyLOCAL = tree.ALL } yyVAL.union = yyLOCAL - case 1817: + case 1825: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11620 +//line mysql_sql.y:11698 { yyLOCAL = tree.ANY } yyVAL.union = yyLOCAL - case 1818: + case 1826: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11624 +//line mysql_sql.y:11702 { yyLOCAL = tree.SOME } yyVAL.union = yyLOCAL - case 1819: + case 1827: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11630 +//line mysql_sql.y:11708 { yyLOCAL = tree.EQUAL } yyVAL.union = yyLOCAL - case 1820: + case 1828: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11634 +//line mysql_sql.y:11712 { yyLOCAL = tree.LESS_THAN } yyVAL.union = yyLOCAL - case 1821: + case 1829: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11638 +//line mysql_sql.y:11716 { yyLOCAL = tree.GREAT_THAN } yyVAL.union = yyLOCAL - case 1822: + case 1830: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11642 +//line mysql_sql.y:11720 { yyLOCAL = tree.LESS_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1823: + case 1831: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11646 +//line mysql_sql.y:11724 { yyLOCAL = tree.GREAT_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1824: + case 1832: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11650 +//line mysql_sql.y:11728 { yyLOCAL = tree.NOT_EQUAL } yyVAL.union = yyLOCAL - case 1825: + case 1833: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11654 +//line mysql_sql.y:11732 { yyLOCAL = tree.NULL_SAFE_EQUAL } yyVAL.union = yyLOCAL - case 1826: + case 1834: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11660 +//line mysql_sql.y:11738 { yyLOCAL = tree.NewAttributePrimaryKey() } yyVAL.union = yyLOCAL - case 1827: + case 1835: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11664 +//line mysql_sql.y:11742 { yyLOCAL = tree.NewAttributeUniqueKey() } yyVAL.union = yyLOCAL - case 1828: + case 1836: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11668 +//line mysql_sql.y:11746 { yyLOCAL = tree.NewAttributeUnique() } yyVAL.union = yyLOCAL - case 1829: + case 1837: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11672 +//line mysql_sql.y:11750 { yyLOCAL = tree.NewAttributeKey() } yyVAL.union = yyLOCAL - case 1830: + case 1838: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11678 +//line mysql_sql.y:11756 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -25878,35 +26027,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1831: + case 1839: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11691 +//line mysql_sql.y:11769 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1832: + case 1840: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11696 +//line mysql_sql.y:11774 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1833: + case 1841: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11702 +//line mysql_sql.y:11780 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1834: + case 1842: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11706 +//line mysql_sql.y:11784 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -25920,51 +26069,51 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1835: + case 1843: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11719 +//line mysql_sql.y:11797 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1836: + case 1844: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11724 +//line mysql_sql.y:11802 { yyLOCAL = tree.NewNumVal(true, "true", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1837: + case 1845: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11728 +//line mysql_sql.y:11806 { yyLOCAL = tree.NewNumVal(false, "false", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1838: + case 1846: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11732 +//line mysql_sql.y:11810 { yyLOCAL = tree.NewNumVal("null", "null", false, tree.P_null) } yyVAL.union = yyLOCAL - case 1839: + case 1847: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11736 +//line mysql_sql.y:11814 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_hexnum) } yyVAL.union = yyLOCAL - case 1840: + case 1848: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11740 +//line mysql_sql.y:11818 { if strings.HasPrefix(yyDollar[2].str, "0x") { yyDollar[2].str = yyDollar[2].str[2:] @@ -25972,69 +26121,69 @@ yydefault: yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1841: + case 1849: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11747 +//line mysql_sql.y:11825 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1842: + case 1850: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11751 +//line mysql_sql.y:11829 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1843: + case 1851: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11755 +//line mysql_sql.y:11833 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1844: + case 1852: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11759 +//line mysql_sql.y:11837 { yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_ScoreBinary) } yyVAL.union = yyLOCAL - case 1845: + case 1853: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11765 +//line mysql_sql.y:11843 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.Unsigned = yyDollar[2].unsignedOptUnion() yyLOCAL.InternalType.Zerofill = yyDollar[3].zeroFillOptUnion() } yyVAL.union = yyLOCAL - case 1849: + case 1857: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11776 +//line mysql_sql.y:11854 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.DisplayWith = yyDollar[2].lengthOptUnion() } yyVAL.union = yyLOCAL - case 1850: + case 1858: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11781 +//line mysql_sql.y:11859 { yyLOCAL = yyDollar[1].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1851: + case 1859: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11787 +//line mysql_sql.y:11865 { locale := "" yyLOCAL = &tree.T{ @@ -26047,10 +26196,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1852: + case 1860: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11799 +//line mysql_sql.y:11877 { locale := "" yyLOCAL = &tree.T{ @@ -26063,10 +26212,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1853: + case 1861: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11811 +//line mysql_sql.y:11889 { locale := "" yyLOCAL = &tree.T{ @@ -26079,10 +26228,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1854: + case 1862: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11823 +//line mysql_sql.y:11901 { locale := "" yyLOCAL = &tree.T{ @@ -26096,10 +26245,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1855: + case 1863: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11836 +//line mysql_sql.y:11914 { locale := "" yyLOCAL = &tree.T{ @@ -26113,10 +26262,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1856: + case 1864: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11849 +//line mysql_sql.y:11927 { locale := "" yyLOCAL = &tree.T{ @@ -26130,10 +26279,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1857: + case 1865: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11862 +//line mysql_sql.y:11940 { locale := "" yyLOCAL = &tree.T{ @@ -26147,10 +26296,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1858: + case 1866: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11875 +//line mysql_sql.y:11953 { locale := "" yyLOCAL = &tree.T{ @@ -26164,10 +26313,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1859: + case 1867: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11888 +//line mysql_sql.y:11966 { locale := "" yyLOCAL = &tree.T{ @@ -26181,10 +26330,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1860: + case 1868: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11901 +//line mysql_sql.y:11979 { locale := "" yyLOCAL = &tree.T{ @@ -26198,10 +26347,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1861: + case 1869: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11914 +//line mysql_sql.y:11992 { locale := "" yyLOCAL = &tree.T{ @@ -26215,10 +26364,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1862: + case 1870: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11927 +//line mysql_sql.y:12005 { locale := "" yyLOCAL = &tree.T{ @@ -26232,10 +26381,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1863: + case 1871: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11940 +//line mysql_sql.y:12018 { locale := "" yyLOCAL = &tree.T{ @@ -26249,10 +26398,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1864: + case 1872: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11953 +//line mysql_sql.y:12031 { locale := "" yyLOCAL = &tree.T{ @@ -26266,10 +26415,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1865: + case 1873: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11968 +//line mysql_sql.y:12046 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -26297,10 +26446,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1866: + case 1874: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11995 +//line mysql_sql.y:12073 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -26342,10 +26491,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1867: + case 1875: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12037 +//line mysql_sql.y:12115 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -26382,10 +26531,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1868: + case 1876: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12073 +//line mysql_sql.y:12151 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -26422,10 +26571,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1869: + case 1877: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12109 +//line mysql_sql.y:12187 { locale := "" yyLOCAL = &tree.T{ @@ -26441,10 +26590,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1870: + case 1878: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12126 +//line mysql_sql.y:12204 { locale := "" yyLOCAL = &tree.T{ @@ -26457,10 +26606,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1871: + case 1879: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12138 +//line mysql_sql.y:12216 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -26481,10 +26630,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1872: + case 1880: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12158 +//line mysql_sql.y:12236 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -26505,10 +26654,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1873: + case 1881: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12178 +//line mysql_sql.y:12256 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -26529,10 +26678,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1874: + case 1882: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12198 +//line mysql_sql.y:12276 { locale := "" yyLOCAL = &tree.T{ @@ -26547,10 +26696,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1875: + case 1883: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12214 +//line mysql_sql.y:12292 { locale := "" yyLOCAL = &tree.T{ @@ -26564,10 +26713,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1876: + case 1884: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12227 +//line mysql_sql.y:12305 { locale := "" yyLOCAL = &tree.T{ @@ -26581,10 +26730,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1877: + case 1885: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12240 +//line mysql_sql.y:12318 { locale := "" yyLOCAL = &tree.T{ @@ -26598,10 +26747,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1878: + case 1886: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12253 +//line mysql_sql.y:12331 { locale := "" yyLOCAL = &tree.T{ @@ -26615,10 +26764,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1879: + case 1887: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12266 +//line mysql_sql.y:12344 { locale := "" yyLOCAL = &tree.T{ @@ -26631,10 +26780,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1880: + case 1888: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12278 +//line mysql_sql.y:12356 { locale := "" yyLOCAL = &tree.T{ @@ -26647,10 +26796,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1881: + case 1889: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12290 +//line mysql_sql.y:12368 { locale := "" yyLOCAL = &tree.T{ @@ -26663,10 +26812,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1882: + case 1890: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12302 +//line mysql_sql.y:12380 { locale := "" yyLOCAL = &tree.T{ @@ -26679,10 +26828,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1883: + case 1891: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12314 +//line mysql_sql.y:12392 { locale := "" yyLOCAL = &tree.T{ @@ -26695,10 +26844,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1884: + case 1892: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12326 +//line mysql_sql.y:12404 { locale := "" yyLOCAL = &tree.T{ @@ -26711,10 +26860,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1885: + case 1893: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12338 +//line mysql_sql.y:12416 { locale := "" yyLOCAL = &tree.T{ @@ -26727,10 +26876,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1886: + case 1894: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12350 +//line mysql_sql.y:12428 { locale := "" yyLOCAL = &tree.T{ @@ -26743,10 +26892,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1887: + case 1895: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12362 +//line mysql_sql.y:12440 { locale := "" yyLOCAL = &tree.T{ @@ -26759,10 +26908,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1888: + case 1896: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12374 +//line mysql_sql.y:12452 { locale := "" yyLOCAL = &tree.T{ @@ -26775,10 +26924,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1889: + case 1897: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12386 +//line mysql_sql.y:12464 { locale := "" yyLOCAL = &tree.T{ @@ -26792,10 +26941,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1890: + case 1898: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12399 +//line mysql_sql.y:12477 { locale := "" yyLOCAL = &tree.T{ @@ -26809,10 +26958,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1891: + case 1899: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12412 +//line mysql_sql.y:12490 { locale := "" yyLOCAL = &tree.T{ @@ -26826,10 +26975,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1892: + case 1900: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12425 +//line mysql_sql.y:12503 { locale := "" yyLOCAL = &tree.T{ @@ -26843,10 +26992,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1893: + case 1901: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12438 +//line mysql_sql.y:12516 { locale := "" yyLOCAL = &tree.T{ @@ -26860,20 +27009,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1894: + case 1902: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12453 +//line mysql_sql.y:12531 { yyLOCAL = &tree.Do{ Exprs: yyDollar[2].exprsUnion(), } } yyVAL.union = yyLOCAL - case 1895: + case 1903: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12461 +//line mysql_sql.y:12539 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -26882,10 +27031,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1896: + case 1904: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12470 +//line mysql_sql.y:12548 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -26894,10 +27043,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1897: + case 1905: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12480 +//line mysql_sql.y:12558 { locale := "" yyLOCAL = &tree.T{ @@ -26910,75 +27059,75 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1898: + case 1906: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12503 +//line mysql_sql.y:12581 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1899: + case 1907: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12508 +//line mysql_sql.y:12586 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1900: + case 1908: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12514 +//line mysql_sql.y:12592 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1902: + case 1910: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12521 +//line mysql_sql.y:12599 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1903: + case 1911: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12525 +//line mysql_sql.y:12603 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1904: + case 1912: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12530 +//line mysql_sql.y:12608 { yyLOCAL = int32(-1) } yyVAL.union = yyLOCAL - case 1905: + case 1913: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12534 +//line mysql_sql.y:12612 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1906: + case 1914: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12540 +//line mysql_sql.y:12618 { yyLOCAL = tree.GetDisplayWith(int32(yyDollar[2].item.(int64))) } yyVAL.union = yyLOCAL - case 1907: + case 1915: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12546 +//line mysql_sql.y:12624 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.NotDefineDisplayWidth, @@ -26986,10 +27135,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1908: + case 1916: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12553 +//line mysql_sql.y:12631 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26997,10 +27146,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1909: + case 1917: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12560 +//line mysql_sql.y:12638 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27008,10 +27157,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1910: + case 1918: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12569 +//line mysql_sql.y:12647 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: 38, // this is the default precision for decimal @@ -27019,10 +27168,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1911: + case 1919: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12576 +//line mysql_sql.y:12654 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27030,10 +27179,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1912: + case 1920: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12583 +//line mysql_sql.y:12661 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27041,52 +27190,52 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1913: + case 1921: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12592 +//line mysql_sql.y:12670 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1914: + case 1922: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12596 +//line mysql_sql.y:12674 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1915: + case 1923: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12600 +//line mysql_sql.y:12678 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1916: + case 1924: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12606 +//line mysql_sql.y:12684 { } - case 1917: + case 1925: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12608 +//line mysql_sql.y:12686 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1921: + case 1929: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12618 +//line mysql_sql.y:12696 { yyVAL.str = "" } - case 1922: + case 1930: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:12622 +//line mysql_sql.y:12700 { yyVAL.str = string(yyDollar[1].str) } diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.y b/pkg/sql/parsers/dialect/mysql/mysql_sql.y index ef785413778ea..f92b6d7f370ae 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.y +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.y @@ -376,7 +376,7 @@ import ( // Secondary Index %token PARSER VISIBLE INVISIBLE BTREE HASH RTREE BSI IVFFLAT MASTER HNSW -%token ZONEMAP LEADING BOTH TRAILING UNKNOWN LISTS OP_TYPE REINDEX EF_SEARCH EF_CONSTRUCTION M ASYNC +%token ZONEMAP LEADING BOTH TRAILING UNKNOWN LISTS OP_TYPE REINDEX EF_SEARCH EF_CONSTRUCTION M ASYNC FORCE_SYNC AUTO_UPDATE // Alter %token EXPIRE ACCOUNT ACCOUNTS UNLOCK DAY NEVER PUMP MYSQL_COMPATIBILITY_MODE UNIQUE_CHECK_ON_AUTOINCR @@ -644,6 +644,7 @@ import ( %type alter_column_order %type alter_column_order_list %type visibility +%type auto_update %type AllOrPartitionNameList PartitionNameList %type table_option source_option @@ -3868,23 +3869,42 @@ alter_table_alter: var visibility = $3 $$ = tree.NewAlterOptionAlterIndex(indexName, visibility) } -| REINDEX ident IVFFLAT LISTS equal_opt INTEGRAL +| INDEX ident IVFFLAT auto_update index_option_list { - val := int64($6.(int64)) - if val <= 0 { - yylex.Error("LISTS should be greater than 0") - return 1 - } - var keyType = tree.INDEX_TYPE_IVFFLAT - var algoParamList = val + var io *tree.IndexOption = nil + if $5 == nil { + io = tree.NewIndexOption() + io.IType = tree.INDEX_TYPE_IVFFLAT + } else { + io = $5 + io.IType = tree.INDEX_TYPE_IVFFLAT + } var name = tree.Identifier($2.Compare()) - $$ = tree.NewAlterOptionAlterReIndex(name, keyType, algoParamList) + var auto_update = $4 + io.AutoUpdate = auto_update + $$ = tree.NewAlterOptionAlterAutoUpdate(name, io) + } +| REINDEX ident IVFFLAT index_option_list + { + var io *tree.IndexOption = nil + if $4 == nil { + io = tree.NewIndexOption() + io.IType = tree.INDEX_TYPE_IVFFLAT + } else { + io = $4 + io.IType = tree.INDEX_TYPE_IVFFLAT + } + var name = tree.Identifier($2.Compare()) + $$ = tree.NewAlterOptionAlterReIndex(name, io) } | REINDEX ident HNSW { - var keyType = tree.INDEX_TYPE_HNSW + + var io *tree.IndexOption = nil + io = tree.NewIndexOption() + io.IType = tree.INDEX_TYPE_HNSW var name = tree.Identifier($2.Compare()) - $$ = tree.NewAlterOptionAlterReIndex(name, keyType, 0) + $$ = tree.NewAlterOptionAlterReIndex(name, io) } | CHECK ident enforce { @@ -3909,6 +3929,16 @@ visibility: $$ = tree.VISIBLE_TYPE_INVISIBLE } +auto_update: + AUTO_UPDATE '=' TRUE + { + $$ = true + } +| AUTO_UPDATE '=' FALSE + { + $$ = false + } + alter_account_stmt: ALTER ACCOUNT exists_opt account_name_or_param alter_account_auth_option account_status_option account_comment_opt { @@ -7674,7 +7704,15 @@ index_option_list: opt1.HnswEfSearch = opt2.HnswEfSearch } else if opt2.Async { opt1.Async = opt2.Async - } + } else if opt2.ForceSync { + opt1.ForceSync = opt2.ForceSync + } else if opt2.AutoUpdate { + opt1.AutoUpdate = opt2.AutoUpdate + } else if opt2.Day > 0 { + opt1.Day = opt2.Day + } else if opt2.Hour > 0 { + opt1.Hour = opt2.Hour + } $$ = opt1 } } @@ -7767,7 +7805,47 @@ index_option: io.Async = true $$ = io } - +| FORCE_SYNC + { + io := tree.NewIndexOption() + io.ForceSync = true + $$ = io + } +| AUTO_UPDATE '=' TRUE + { + io := tree.NewIndexOption() + io.AutoUpdate = true + $$ = io + } +| AUTO_UPDATE '=' FALSE + { + io := tree.NewIndexOption() + io.AutoUpdate = false + $$ = io + } +| DAY equal_opt INTEGRAL + { + val := int64($3.(int64)) + if val < 0 { + yylex.Error("DAY should be greater than or equal to 0") + return 1 + } + io := tree.NewIndexOption() + io.Day = val + $$ = io + } +| HOUR equal_opt INTEGRAL + { + val := int64($3.(int64)) + if val < 0 || val > 23 { + yylex.Error("HOUR should be between 0 and 23") + return 1 + } + io := tree.NewIndexOption() + io.Hour = val + $$ = io + } + index_column_list: index_column diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go index 1cc0400ae056a..d6d0ee653778a 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go @@ -179,8 +179,17 @@ var ( input: "select cluster_centers(a kmeans '5,vector_cosine_ops,random,true') from t1;", output: "select cluster_centers(a, 5,vector_cosine_ops,random,true) from t1", }, { - input: "alter table t1 alter reindex idx1 IVFFLAT lists = 5", - output: "alter table t1 alter reindex idx1 ivfflat lists = 5", + input: "alter table t1 alter reindex idx1 IVFFLAT lists = 5 force_sync", + output: "alter table t1 alter reindex idx1 ivfflat lists = 5 force_sync", + }, { + input: "alter table t1 alter reindex idx1 IVFFLAT force_sync", + output: "alter table t1 alter reindex idx1 ivfflat force_sync", + }, { + input: "alter table t1 alter index idx1 IVFFLAT auto_update = true day = 33 hour = 12", + output: "alter table t1 alter index idx1 ivfflat auto_update = true day = 33 hour = 12", + }, { + input: "alter table t1 alter index idx1 IVFFLAT auto_update = false", + output: "alter table t1 alter index idx1 ivfflat auto_update = false", }, { input: "create connector for s with (\"type\"='kafka', \"topic\"= 'user', \"partition\" = '1', \"value\"= 'json', \"bootstrap.servers\" = '127.0.0.1:62610');", output: "create connector for s with (type = kafka, topic = user, partition = 1, value = json, bootstrap.servers = 127.0.0.1:62610)", @@ -1581,6 +1590,12 @@ var ( }, { input: "create index idx using ivfflat on A (a) LISTS 10", output: "create index idx using ivfflat on a (a) LISTS 10 ", + }, { + input: "create index idx using ivfflat on A (a) LISTS 10 AUTO_UPDATE=TRUE DAY 10 HOUR 23", + output: "create index idx using ivfflat on a (a) LISTS 10 AUTO_UPDATE=TRUE DAY 10 HOUR 23 ", + }, { + input: "create index idx using ivfflat on A (a) LISTS 10 AUTO_UPDATE=FALSE", + output: "create index idx using ivfflat on a (a) LISTS 10 ", }, { input: "create index idx using ivfflat on A (a) LISTS 10 op_type 'vector_l2_ops'", output: "create index idx using ivfflat on a (a) LISTS 10 OP_TYPE vector_l2_ops ", diff --git a/pkg/sql/parsers/tree/alter.go b/pkg/sql/parsers/tree/alter.go index 0eaf10acf7844..126a0c9c49424 100644 --- a/pkg/sql/parsers/tree/alter.go +++ b/pkg/sql/parsers/tree/alter.go @@ -75,6 +75,12 @@ func init() { reuse.DefaultOptions[AlterOptionAlterCheck](), //. ) // WithEnableChecker() + reuse.CreatePool[AlterOptionAlterAutoUpdate]( + func() *AlterOptionAlterAutoUpdate { return &AlterOptionAlterAutoUpdate{} }, + func(a *AlterOptionAlterAutoUpdate) { a.reset() }, + reuse.DefaultOptions[AlterOptionAlterAutoUpdate](), //. + ) // WithEnableChecker() + reuse.CreatePool[AlterOptionAdd]( func() *AlterOptionAdd { return &AlterOptionAdd{} }, func(a *AlterOptionAdd) { a.reset() }, @@ -576,6 +582,8 @@ func (node *AlterTable) reset() { opt.Free() case *AlterOptionAlterReIndex: opt.Free() + case *AlterOptionAlterAutoUpdate: + opt.Free() case *AlterOptionAlterCheck: opt.Free() case *AlterOptionAdd: @@ -782,13 +790,15 @@ type AlterOptionAlterReIndex struct { Name Identifier KeyType IndexType AlgoParamList int64 + ForceSync bool } -func NewAlterOptionAlterReIndex(name Identifier, keyType IndexType, algoParamList int64) *AlterOptionAlterReIndex { +func NewAlterOptionAlterReIndex(name Identifier, option *IndexOption) *AlterOptionAlterReIndex { a := reuse.Alloc[AlterOptionAlterReIndex](nil) a.Name = name - a.KeyType = keyType - a.AlgoParamList = algoParamList + a.KeyType = option.IType + a.AlgoParamList = option.AlgoParamList + a.ForceSync = option.ForceSync return a } @@ -804,6 +814,10 @@ func (node *AlterOptionAlterReIndex) Format(ctx *FmtCtx) { if node.AlgoParamList != 0 { ctx.WriteString(fmt.Sprintf(" lists = %d", node.AlgoParamList)) } + if node.ForceSync { + ctx.WriteString(" ") + ctx.WriteString("force_sync") + } } func (node AlterOptionAlterReIndex) TypeName() string { return "tree.AlterOptionAlterReIndex" } @@ -812,6 +826,52 @@ func (node *AlterOptionAlterReIndex) reset() { *node = AlterOptionAlterReIndex{} } +type AlterOptionAlterAutoUpdate struct { + alterOptionImpl + Name Identifier + KeyType IndexType + AutoUpdate bool + Day int64 + Hour int64 +} + +func NewAlterOptionAlterAutoUpdate(name Identifier, option *IndexOption) *AlterOptionAlterAutoUpdate { + a := reuse.Alloc[AlterOptionAlterAutoUpdate](nil) + a.Name = name + a.KeyType = option.IType + a.AutoUpdate = option.AutoUpdate + a.Day = option.Day + a.Hour = option.Hour + return a +} + +func (node *AlterOptionAlterAutoUpdate) Free() { reuse.Free[AlterOptionAlterAutoUpdate](node, nil) } + +func (node *AlterOptionAlterAutoUpdate) Format(ctx *FmtCtx) { + ctx.WriteString("alter index ") + node.Name.Format(ctx) + if node.KeyType != INDEX_TYPE_INVALID { + ctx.WriteString(" ") + ctx.WriteString(node.KeyType.ToString()) + } + + ctx.WriteString(fmt.Sprintf(" auto_update = %v", node.AutoUpdate)) + + if node.Day != 0 { + ctx.WriteString(fmt.Sprintf(" day = %d", node.Day)) + } + if node.Hour != 0 { + ctx.WriteString(fmt.Sprintf(" hour = %d", node.Hour)) + } + +} + +func (node AlterOptionAlterAutoUpdate) TypeName() string { return "tree.AlterOptionAlterAutoUpdate" } + +func (node *AlterOptionAlterAutoUpdate) reset() { + *node = AlterOptionAlterAutoUpdate{} +} + type AlterOptionAlterCheck struct { alterOptionImpl Type string diff --git a/pkg/sql/parsers/tree/create.go b/pkg/sql/parsers/tree/create.go index a36ce08fd750d..fa9cdfaf56fcc 100644 --- a/pkg/sql/parsers/tree/create.go +++ b/pkg/sql/parsers/tree/create.go @@ -2070,6 +2070,10 @@ type IndexOption struct { HnswEfConstruction int64 HnswEfSearch int64 Async bool + ForceSync bool + AutoUpdate bool + Day int64 + Hour int64 } // Must follow the following sequence when test @@ -2078,7 +2082,8 @@ func (node *IndexOption) Format(ctx *FmtCtx) { node.Comment != "" || node.Visible != VISIBLE_TYPE_INVALID || node.AlgoParamList != 0 || node.AlgoParamVectorOpType != "" || node.HnswM != 0 || node.HnswEfConstruction != 0 || - node.HnswEfSearch != 0 { + node.HnswEfSearch != 0 || node.AutoUpdate || node.Day != 0 || + node.Hour != 0 { ctx.WriteByte(' ') } if node.KeyBlockSize != 0 { @@ -2127,6 +2132,23 @@ func (node *IndexOption) Format(ctx *FmtCtx) { if node.Async { ctx.WriteString("ASYNC ") } + if node.ForceSync { + ctx.WriteString("FORCE_SYNC ") + } + if node.AutoUpdate { + ctx.WriteString("AUTO_UPDATE=TRUE ") + } + if node.Day != 0 { + ctx.WriteString("DAY ") + ctx.WriteString(strconv.FormatInt(node.Day, 10)) + ctx.WriteByte(' ') + } + if node.Hour != 0 { + ctx.WriteString("HOUR ") + ctx.WriteString(strconv.FormatInt(node.Hour, 10)) + ctx.WriteByte(' ') + } + } func (node IndexOption) TypeName() string { return "tree.IndexOption" } diff --git a/pkg/sql/plan/build_alter_table.go b/pkg/sql/plan/build_alter_table.go index 3412b6d918fb5..36a5588a070fb 100644 --- a/pkg/sql/plan/build_alter_table.go +++ b/pkg/sql/plan/build_alter_table.go @@ -495,6 +495,8 @@ func ResolveAlterTableAlgorithm( algorithm = plan.AlterTable_INPLACE case *tree.AlterOptionAlterReIndex: algorithm = plan.AlterTable_INPLACE + case *tree.AlterOptionAlterAutoUpdate: + algorithm = plan.AlterTable_INPLACE case *tree.TableOptionComment: algorithm = plan.AlterTable_INPLACE case *tree.AlterOptionTableName: diff --git a/pkg/sql/plan/build_ddl.go b/pkg/sql/plan/build_ddl.go index 4ce680a077678..a2c0bd1f3f842 100644 --- a/pkg/sql/plan/build_ddl.go +++ b/pkg/sql/plan/build_ddl.go @@ -3999,13 +3999,14 @@ func buildAlterTableInplace(stmt *tree.AlterTable, ctx CompilerContext) (*Plan, switch opt.KeyType { case tree.INDEX_TYPE_IVFFLAT: - if opt.AlgoParamList <= 0 { + if opt.AlgoParamList < 0 { return nil, moerr.NewInternalErrorf( ctx.GetContext(), - "lists should be > 0.", + "lists should be >= 0. lists = 0 will keep the original configuration.", ) } alterTableReIndex.IndexAlgoParamList = opt.AlgoParamList + alterTableReIndex.ForceSync = opt.ForceSync case tree.INDEX_TYPE_HNSW: // PASS: keep options on change for incremental update default: @@ -4037,6 +4038,57 @@ func buildAlterTableInplace(stmt *tree.AlterTable, ctx CompilerContext) (*Plan, }, } + case *tree.AlterOptionAlterAutoUpdate: + alterTableAutoUpdate := new(plan.AlterTableAlterAutoUpdate) + constraintName := string(opt.Name) + alterTableAutoUpdate.IndexName = constraintName + + switch opt.KeyType { + case tree.INDEX_TYPE_IVFFLAT: + if opt.Day < 0 { + return nil, moerr.NewInternalErrorf( + ctx.GetContext(), + "day should be >= 0.", + ) + } + if opt.Hour < 0 || opt.Hour > 23 { + return nil, moerr.NewInternalErrorf( + ctx.GetContext(), + "hour should be between 0 and 23.", + ) + } + alterTableAutoUpdate.AutoUpdate = opt.AutoUpdate + alterTableAutoUpdate.Day = opt.Day + alterTableAutoUpdate.Hour = opt.Hour + default: + return nil, moerr.NewInternalErrorf( + ctx.GetContext(), + unsupportedErrFmt, + opt.KeyType.ToString(), + ) + } + + name_not_found := true + // check index + for _, indexdef := range tableDef.Indexes { + if constraintName == indexdef.IndexName { + name_not_found = false + break + } + } + if name_not_found { + return nil, moerr.NewInternalErrorf( + ctx.GetContext(), + "Can't REINDEX '%s'; check that column/key exists", + constraintName, + ) + } + alterTable.Actions[i] = &plan.AlterTable_Action{ + Action: &plan.AlterTable_Action_AlterAutoUpdate{ + AlterAutoUpdate: alterTableAutoUpdate, + }, + } + case *tree.TableOptionComment: if getNumOfCharacters(opt.Comment) > maxLengthOfTableComment { return nil, moerr.NewInvalidInputf( diff --git a/pkg/testutil/testengine/testdata.go b/pkg/testutil/testengine/testdata.go index 4c6a8e52670f9..82751e0144740 100644 --- a/pkg/testutil/testengine/testdata.go +++ b/pkg/testutil/testengine/testdata.go @@ -812,3 +812,29 @@ func CreateCompressFileTable(db engine.Database) { } } } + +func CreateIvfSrcTable(db engine.Database) { + ctx := context.TODO() + { + var attrs []engine.TableDef + + { + attrs = append(attrs, &engine.AttributeDef{ + Attr: engine.Attribute{ + Alg: compress.Lz4, + Name: "a", + Type: types.T_int64.ToType(), + Primary: true, + }}) + attrs = append(attrs, &engine.AttributeDef{ + Attr: engine.Attribute{ + Alg: compress.Lz4, + Name: "b", + Type: types.T_array_float32.ToType(), + }}) + } + if err := db.Create(ctx, "ivfsrc", attrs); err != nil { + logutil.Fatal(err.Error()) + } + } +} diff --git a/pkg/testutil/testengine/testengine.go b/pkg/testutil/testengine/testengine.go index c9102649b031e..21778baa95f76 100644 --- a/pkg/testutil/testengine/testengine.go +++ b/pkg/testutil/testengine/testengine.go @@ -111,6 +111,7 @@ func New( CreateCustomer(db) CreateLineorder(db) CreateCompressFileTable(db) + CreateIvfSrcTable(db) if err = txnOp.Commit(ctx); err != nil { panic(err) diff --git a/pkg/vectorindex/idxcron/cmd.go b/pkg/vectorindex/idxcron/cmd.go new file mode 100644 index 0000000000000..5a9843aca83f4 --- /dev/null +++ b/pkg/vectorindex/idxcron/cmd.go @@ -0,0 +1,215 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package idxcron + +import ( + "context" + "fmt" + "os" + "time" + + "github.com/bytedance/sonic" + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/defines" + "github.com/matrixorigin/matrixone/pkg/txn/client" + "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" +) + +// always replace with the new data +func RegisterUpdate(ctx context.Context, + cnUUID string, + txn client.TxnOperator, + tableId uint64, + dbname string, + tablename string, + indexname string, + action string, + metadata string, +) (err error) { + + var tenantId uint32 + if tenantId, err = defines.GetAccountId(ctx); err != nil { + return + } + + duration := 5 * time.Minute + newctx := context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + newctx, cancel := context.WithTimeout(newctx, duration) + defer cancel() + sqlctx := sqlexec.NewSqlContext(newctx, cnUUID, txn, catalog.System_Account, nil) + sqlproc := sqlexec.NewSqlProcessWithContext(sqlctx) + + status := IndexUpdateStatus{Status: Status_Ok, Msg: "index update registered", Time: time.Now()} + bytes, err := sonic.Marshal(&status) + if err != nil { + return + } + + sql := fmt.Sprintf("REPLACE INTO mo_catalog.mo_index_update VALUES (%d, %d, '%s', '%s', '%s', '%s', '%s', '%s', now(), now())", + tenantId, + tableId, + dbname, + tablename, + indexname, + action, + metadata, + string(bytes)) + + res, err := runCmdSql(sqlproc, sql) + if err != nil { + return + } + defer res.Close() + + return +} + +// if action == "*", remove all actions +func UnregisterUpdate(ctx context.Context, + cnUUID string, + txn client.TxnOperator, + tableId uint64, + indexname string, + action string, +) (err error) { + + var tenantId uint32 + if tenantId, err = defines.GetAccountId(ctx); err != nil { + return + } + + duration := 5 * time.Minute + newctx := context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + newctx, cancel := context.WithTimeout(newctx, duration) + defer cancel() + sqlctx := sqlexec.NewSqlContext(newctx, cnUUID, txn, catalog.System_Account, nil) + sqlproc := sqlexec.NewSqlProcessWithContext(sqlctx) + + var sql string + if action == Action_Wildcard { + sql = fmt.Sprintf("DELETE FROM mo_catalog.mo_index_update WHERE account_id = %d AND table_id = %d AND index_name = '%s'", + tenantId, tableId, indexname) + } else { + sql = fmt.Sprintf("DELETE FROM mo_catalog.mo_index_update WHERE account_id = %d AND table_id = %d AND index_name = '%s' AND action = '%s'", + tenantId, tableId, indexname, action) + } + + os.Stderr.WriteString(sql) + os.Stderr.WriteString("\n") + + res, err := runCmdSql(sqlproc, sql) + if err != nil { + return + } + defer res.Close() + + return +} + +func UnregisterUpdateByDbName(ctx context.Context, + cnUUID string, + txn client.TxnOperator, + dbName string) (err error) { + + var tenantId uint32 + if tenantId, err = defines.GetAccountId(ctx); err != nil { + return + } + + duration := 5 * time.Minute + newctx := context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + newctx, cancel := context.WithTimeout(newctx, duration) + defer cancel() + sqlctx := sqlexec.NewSqlContext(newctx, cnUUID, txn, catalog.System_Account, nil) + sqlproc := sqlexec.NewSqlProcessWithContext(sqlctx) + + // check compatibility. skip it if mo_index_update table not found + sql := fmt.Sprintf("SELECT COUNT(*) FROM mo_catalog.mo_tables WHERE account_id = 0 AND relname = '%s' AND reldatabase = '%s'", + catalog.MO_INDEX_UPDATE, + catalog.MO_CATALOG) + res, err := runCmdSql(sqlproc, sql) + if err != nil { + return + } + if len(res.Batches) == 0 { + return + } + res.Close() + + sql = fmt.Sprintf("DELETE FROM mo_catalog.mo_index_update WHERE account_id = %d AND db_name = '%s'", tenantId, dbName) + res, err = runCmdSql(sqlproc, sql) + if err != nil { + return + } + res.Close() + + return +} + +func UnregisterUpdateByTableId(ctx context.Context, + cnUUID string, + txn client.TxnOperator, + tableId uint64) (err error) { + + var tenantId uint32 + if tenantId, err = defines.GetAccountId(ctx); err != nil { + return + } + + duration := 5 * time.Minute + newctx := context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + newctx, cancel := context.WithTimeout(newctx, duration) + defer cancel() + sqlctx := sqlexec.NewSqlContext(newctx, cnUUID, txn, catalog.System_Account, nil) + sqlproc := sqlexec.NewSqlProcessWithContext(sqlctx) + + sql := fmt.Sprintf("DELETE FROM mo_catalog.mo_index_update WHERE account_id = %d AND table_id = %d", tenantId, tableId) + res, err := runCmdSql(sqlproc, sql) + if err != nil { + return + } + defer res.Close() + + return +} + +func RenameSrcTable(ctx context.Context, + cnUUID string, + txn client.TxnOperator, + dbId, tableId uint64, + oldTableName, newTablename string) (err error) { + + var tenantId uint32 + if tenantId, err = defines.GetAccountId(ctx); err != nil { + return + } + + duration := 5 * time.Minute + newctx := context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + newctx, cancel := context.WithTimeout(newctx, duration) + defer cancel() + sqlctx := sqlexec.NewSqlContext(newctx, cnUUID, txn, catalog.System_Account, nil) + sqlproc := sqlexec.NewSqlProcessWithContext(sqlctx) + + sql := fmt.Sprintf("UPDATE mo_catalog.mo_index_update SET table_name = '%s' WHERE account_id = %d AND table_id = %d AND table_name = '%s'", + newTablename, tenantId, tableId, oldTableName) + res, err := runCmdSql(sqlproc, sql) + if err != nil { + return + } + defer res.Close() + + return +} diff --git a/pkg/vectorindex/idxcron/executor.go b/pkg/vectorindex/idxcron/executor.go new file mode 100644 index 0000000000000..f5413000d69f5 --- /dev/null +++ b/pkg/vectorindex/idxcron/executor.go @@ -0,0 +1,587 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package idxcron + +import ( + "context" + "fmt" + "strings" + "sync/atomic" + "time" + + "github.com/bytedance/sonic" + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/common/mpool" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/defines" + "github.com/matrixorigin/matrixone/pkg/logutil" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/pb/task" + "github.com/matrixorigin/matrixone/pkg/txn/client" + "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" + "github.com/matrixorigin/matrixone/pkg/vm/engine" +) + +/* ++----------------+---------------------+------+------+---------+-------+---------+ +| Field | Type | Null | Key | Default | Extra | Comment | ++----------------+---------------------+------+------+---------+-------+---------+ +| account_id | INT UNSIGNED(32) | NO | PRI | NULL | | | +| table_id | BIGINT UNSIGNED(64) | NO | PRI | NULL | | | +| db_name | VARCHAR(65535) | NO | PRI | NULL | | | +| table_name | VARCHAR(65535) | NO | PRI | NULL | | | +| index_name | VARCHAR(65535) | NO | PRI | NULL | | | +| action | VARCHAR(65535) | NO | PRI | NULL | | | +| metadata | JSON(0) | NO | | NULL | | | +| status | JSON(0) | NO | | NULL | | | +| create_at | TIMESTAMP(0) | NO | | NULL | | | +| last_update_at | TIMESTAMP(0) | YES | | NULL | | | ++----------------+---------------------+------+------+---------+-------+---------+ +*/ +const ( + Action_Ivfflat_Reindex = "ivfflat_reindex" + Action_Wildcard = "*" + + Status_Error = "error" + Status_Ok = "ok" + Status_Skipped = "skipped" + + OneWeek = 24 * 7 * time.Hour + KmeansTrainPercentParam = "kmeans_train_percent" + KmeansMaxIterationParam = "kmeans_max_iteration" + + Reason_Skipped = "skipped" +) + +var ( + runSaveStatusSql = sqlexec.RunSql + runGetTasksSql = sqlexec.RunSql + runReindexSql = sqlexec.RunSql + runGetCountSql = sqlexec.RunSql + runTxnWithSqlContext = sqlexec.RunTxnWithSqlContext + runCmdSql = sqlexec.RunSql + + getTableDef = getTableDefFunc + getTasks = getTasksFunc +) + +var running atomic.Bool + +type IndexUpdateTaskInfo struct { + DbName string + TableName string + IndexName string + Action string + AccountId uint32 + TableId uint64 + Metadata *sqlexec.Metadata + Status []byte + CreatedAt types.Timestamp + LastUpdateAt *types.Timestamp +} + +type IndexUpdateStatus struct { + Status string `json:"status"` + Msg string `json:"msg,omitempty"` + Time time.Time `json:"time,omitempty"` +} + +// The optimal number of LISTS is estimated the the formula below: +// For datasets with less than one million rows, use lists = rows / 1000. +// For datasets with more than one million rows, use lists = sqrt(rows). +// +// Faiss guidelines suggest using between 30 * nlist and 256 * nlist vectors for training, ideally from a representative sample of your data. +// +// Case 1: ivf_train_percent * dsize < 30 * nlist, always re-index +// Case 2: 30 * nlist < ivf_train_percent * dsize < 256 * nlist, re-index every week +// Case 3: dsize > 256 * nlist, re-index every 1 week and ivf_train_percent = (256 * nlist) / dsize +func (t *IndexUpdateTaskInfo) checkIndexUpdatable(ctx context.Context, dsize uint64, nlist int64, interval time.Duration) (ok bool, reason string, err error) { + now := time.Now() + createdAt := time.Unix(t.CreatedAt.Unix(), 0) + ts := createdAt.Add(interval) + if ts.After(now) { + // skip update when createdAt + delay is after current time + reason = fmt.Sprintf("current time < interval after createdAt (%v < %v)", createdAt.Format("2006-01-02 15:04:05"), ts.Format("2006-01-02 15:04:05")) + return + } + + // If data size is smaller than nlist, skip the reindex + if dsize < uint64(nlist) { + reason = fmt.Sprintf("source data size < Nlist (%d < %d)", dsize, nlist) + return + } + + lower := float64(30 * nlist) + upper := float64(256 * nlist) + + if t.Metadata == nil { + ok = true + return + } + + v, err := t.Metadata.ResolveVariableFunc(KmeansTrainPercentParam, false, true) + if err != nil { + return + } + ivf_train_percent := v.(float64) + + nsample := float64(dsize) * (ivf_train_percent / 100) + + if nsample < lower { + ok = true + return + } else if nsample < upper { + // reindex every week + if t.LastUpdateAt == nil { + ok = true + return + } + + ts = time.Unix(t.LastUpdateAt.Unix(), 0) + ts = ts.Add(interval) + if ts.After(now) { + reason = fmt.Sprintf("training sample size in between lower and upper limit (%f < %f < %f) AND current time < interval after lastUpdatedAt (%v < %v)", + lower, nsample, upper, now.Format("2006-01-02 15:04:05"), ts.Format("2006-01-02 15:04:05")) + return + } else { + // update + ok = true + return + } + + } else { + // reindex every week + if t.LastUpdateAt != nil { + ts = time.Unix(t.LastUpdateAt.Unix(), 0) + ts = ts.Add(2 * interval) + if ts.After(now) { + reason = fmt.Sprintf("training sample size > upper limit ( %f > %f) AND current time < 2*interval after lastUpdatedAt (%v < %v)", + nsample, upper, now.Format("2006-01-02 15:04:05"), ts.Format("2006-01-02 15:04:05")) + return + } + } + + // reindex every week and limit nsample to upper bound + ratio := (upper / float64(dsize)) * 100 + err = t.Metadata.Modify(KmeansTrainPercentParam, ratio) + if err != nil { + return + } + + ok = true + return + } +} + +func (t *IndexUpdateTaskInfo) saveStatus(sqlproc *sqlexec.SqlProcess, updated bool, reason string, err error) error { + + statussqlfmt := "UPDATE mo_catalog.mo_index_update SET status = '%s' WHERE table_id = %d AND account_id = %d AND action = '%s'" + updatesqlfmt := "UPDATE mo_catalog.mo_index_update SET last_update_at = now(), status = '%s' WHERE table_id = %d AND account_id = %d AND action = '%s'" + + // skip update status if index is NOT updated + status := IndexUpdateStatus{Time: time.Now()} + var sqlfmt string + + if err != nil { + // save error status column to mo_index_update + status.Status = Status_Error + status.Msg = err.Error() + sqlfmt = statussqlfmt + } else if !updated { + status.Status = Status_Skipped + status.Msg = reason + sqlfmt = statussqlfmt + } else { + status.Status = Status_Ok + status.Msg = "reindex success" + sqlfmt = updatesqlfmt + } + + bytes, err := sonic.Marshal(&status) + if err != nil { + return err + } + + // update status + sql := fmt.Sprintf(sqlfmt, + string(bytes), t.TableId, t.AccountId, t.Action) + res, err2 := runSaveStatusSql(sqlproc, sql) + if err2 != nil { + return err2 + } + res.Close() + + return nil +} + +type IndexUpdateTaskExecutor struct { + ctx context.Context + cancelFunc context.CancelFunc + cnUUID string + txnEngine engine.Engine + cnTxnClient client.TxnClient + mp *mpool.MPool +} + +func IndexUpdateTaskExecutorFactory( + cnUUID string, + txnEngine engine.Engine, + cnTxnClient client.TxnClient, + mp *mpool.MPool, +) func(ctx context.Context, task task.Task) (err error) { + return func(ctx context.Context, task task.Task) (err error) { + + if !running.CompareAndSwap(false, true) { + return nil + } + + defer func() { + running.Store(false) + }() + + ctx = context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + exec, err := NewIndexUpdateTaskExecutor( + ctx, + cnUUID, + txnEngine, + cnTxnClient, + mp, + ) + if err != nil { + return + } + + err = exec.run(ctx) + return + } +} + +func NewIndexUpdateTaskExecutor( + ctx context.Context, + cnUUID string, + txnEngine engine.Engine, + cnTxnClient client.TxnClient, + mp *mpool.MPool) (*IndexUpdateTaskExecutor, error) { + + exec := &IndexUpdateTaskExecutor{ + cnUUID: cnUUID, + txnEngine: txnEngine, + cnTxnClient: cnTxnClient, + mp: mp, + } + exec.ctx, exec.cancelFunc = context.WithCancel(ctx) + return exec, nil +} + +func getTasksFunc( + ctx context.Context, + txnEngine engine.Engine, + cnTxnClient client.TxnClient, + cnUUID string) ([]*IndexUpdateTaskInfo, error) { + + tasks := make([]*IndexUpdateTaskInfo, 0, 16) + + err := runTxnWithSqlContext(ctx, txnEngine, cnTxnClient, cnUUID, + catalog.System_Account, 5*time.Minute, nil, nil, + func(sqlproc *sqlexec.SqlProcess, data any) error { + + sql := "SELECT db_name, table_name, index_name, action, account_id, table_id, metadata, last_update_at, create_at from mo_catalog.mo_index_update" + res, err := runGetTasksSql(sqlproc, sql) + if err != nil { + return err + } + defer res.Close() + + for _, bat := range res.Batches { + dbvec := bat.Vecs[0] + tblvec := bat.Vecs[1] + idxvec := bat.Vecs[2] + actionvec := bat.Vecs[3] + accountvec := bat.Vecs[4] + tblidvec := bat.Vecs[5] + metavec := bat.Vecs[6] + lastupdatevec := bat.Vecs[7] + createdAtVec := bat.Vecs[8] + + for i := 0; i < bat.RowCount(); i++ { + dbname := dbvec.GetStringAt(i) + tblname := tblvec.GetStringAt(i) + idxname := idxvec.GetStringAt(i) + action := actionvec.GetStringAt(i) + accountId := vector.GetFixedAtWithTypeCheck[uint32](accountvec, i) + tableId := vector.GetFixedAtWithTypeCheck[uint64](tblidvec, i) + createdAt := vector.GetFixedAtWithTypeCheck[types.Timestamp](createdAtVec, i) + + metadata := (*sqlexec.Metadata)(nil) + lastupdate := (*types.Timestamp)(nil) + + if !metavec.IsNull(uint64(i)) { + bytes := metavec.CloneBytesAt(i) + metadata, err = sqlexec.NewMetadata(bytes) + if err != nil { + return err + } + } + + if !lastupdatevec.IsNull(uint64(i)) { + ts := vector.GetFixedAtWithTypeCheck[types.Timestamp](lastupdatevec, i) + lastupdate = &ts + } + + tasks = append(tasks, &IndexUpdateTaskInfo{DbName: dbname, + TableName: tblname, + IndexName: idxname, + Action: action, + AccountId: accountId, + TableId: tableId, + Metadata: metadata, + LastUpdateAt: lastupdate, + CreatedAt: createdAt}) + + } + } + + return nil + }) + + return tasks, err +} + +func getTableDefFunc(sqlproc *sqlexec.SqlProcess, txnEngine engine.Engine, dbname string, tablename string) (tableDef *plan.TableDef, err error) { + + sqlCtx := sqlproc.SqlCtx + txnOp := sqlCtx.Txn() + + // get indexdef + db, err := txnEngine.Database(sqlproc.GetContext(), dbname, txnOp) + if err != nil { + return + } + + rel, err := db.Relation(sqlproc.GetContext(), tablename, nil) + if err != nil { + return + } + + tableDef = rel.CopyTableDef(sqlproc.GetContext()) + return +} + +// return status as SQL to update mo_index_update +func runIvfflatReindex(ctx context.Context, + txnEngine engine.Engine, + txnClient client.TxnClient, + cnUUID string, + task *IndexUpdateTaskInfo, + currentHour int) (updated bool, reason string, err error) { + + if len(task.IndexName) == 0 { + err = moerr.NewInternalErrorNoCtx("table index name is empty string. skip reindex.") + return + } + + resolveVariableFunc := (func(string, bool, bool) (any, error))(nil) + if task.Metadata != nil { + resolveVariableFunc = task.Metadata.ResolveVariableFunc + } + + err = runTxnWithSqlContext(ctx, txnEngine, txnClient, cnUUID, + task.AccountId, 24*time.Hour, resolveVariableFunc, nil, + func(sqlproc *sqlexec.SqlProcess, data any) (err2 error) { + + tableDef, err2 := getTableDef(sqlproc, txnEngine, task.DbName, task.TableName) + if err2 != nil { + return + } + + if tableDef.TblId != task.TableId { + return moerr.NewInternalErrorNoCtx("table id mimstach") + } + + // get number of list from indexDef + lists := int64(0) + auto_update := false + interval := OneWeek + hour := int64(0) + for _, idx := range tableDef.Indexes { + if idx.IndexName == task.IndexName { + listsAst, err2 := sonic.Get([]byte(idx.IndexAlgoParams), catalog.IndexAlgoParamLists) + if err2 != nil { + return err2 + } + lists, err2 = listsAst.Int64() + if err2 != nil { + return err2 + } + + autoUpdateAst, err2 := sonic.Get([]byte(idx.IndexAlgoParams), catalog.AutoUpdate) + if err2 == nil { + auto_update_str, err2 := autoUpdateAst.StrictString() + if err2 != nil { + return err2 + } + + if auto_update_str == "true" { + auto_update = true + } + } + + dayAst, err2 := sonic.Get([]byte(idx.IndexAlgoParams), catalog.Day) + if err2 == nil { + day := int64(0) + day, err2 = dayAst.Int64() + if err2 != nil { + return err2 + } + + // interval in Day + if day > 0 { + interval = time.Duration(day) * 24 * time.Hour + } + } + + hourAst, err2 := sonic.Get([]byte(idx.IndexAlgoParams), catalog.Hour) + if err2 == nil { + hour, err2 = hourAst.Int64() + if err2 != nil { + return err2 + } + } + + break + } + } + + if lists == 0 { + return moerr.NewInternalErrorNoCtx("IVFFLAT index parameter LISTS not found") + } + + if !auto_update || interval == 0 || currentHour != int(hour) { + reason = Reason_Skipped + return + } + + // get number of rows from source table + cntsql := fmt.Sprintf("SELECT COUNT(*) FROM `%s`.`%s`", task.DbName, task.TableName) + res, err2 := runGetCountSql(sqlproc, cntsql) + if err2 != nil { + return + } + defer res.Close() + + dsize := uint64(0) + if len(res.Batches) > 0 { + bat := res.Batches[0] + if bat.RowCount() > 0 { + cntvec := bat.Vecs[0] + dsize = vector.GetFixedAtWithTypeCheck[uint64](cntvec, 0) + } + } + + ok := false + ok, reason, err2 = task.checkIndexUpdatable(ctx, dsize, lists, interval) + if err2 != nil { + return + } + if !ok { + // skip the update + return + } + + // run alter table alter reindex in force synchronous mode to make sure to build index in single transaction + sql := fmt.Sprintf("ALTER TABLE `%s`.`%s` ALTER REINDEX `%s` IVFFLAT FORCE_SYNC", task.DbName, task.TableName, task.IndexName) + res, err2 = runReindexSql(sqlproc, sql) + if err2 != nil { + return + } + res.Close() + + // mark reindex is performed + updated = true + return + }) + + return +} + +func (e *IndexUpdateTaskExecutor) run(ctx context.Context) (err error) { + + logutil.Infof("IndexUpdateTaskExecutor START") + currentHour := time.Now().Hour() + + defer func() { + logutil.Infof("IndexUpdateTaskExecutor END") + }() + + tasks, err := getTasks(ctx, e.txnEngine, e.cnTxnClient, e.cnUUID) + if err != nil { + return err + } + + // do the maintenance such as ivfflat re-index, fulltext batch_delete + for _, t := range tasks { + var ( + err2 error + updated bool + reason string + ) + + select { + case <-ctx.Done(): + return moerr.NewInternalError(ctx, "context cancelled") + default: + } + + switch t.Action { + case Action_Ivfflat_Reindex: + updated, reason, err2 = runIvfflatReindex(ctx, e.txnEngine, e.cnTxnClient, e.cnUUID, t, currentHour) + default: + err2 = moerr.NewInternalErrorNoCtx(fmt.Sprintf("invalid index update action %v", t)) + } + + if !updated && reason == Reason_Skipped { + // skip save Status when update was skipped + continue + } + + runTxnWithSqlContext(ctx, e.txnEngine, e.cnTxnClient, e.cnUUID, + catalog.System_Account, 5*time.Minute, nil, nil, + func(sqlproc *sqlexec.SqlProcess, data any) error { + + return t.saveStatus(sqlproc, updated, reason, err2) + }) + } + + return nil +} + +var IndexUpdateTaskCronExpr = "0 0 * * * *" // run once an hour, beginning of hour +// var IndexUpdateTaskCronExpr = "0 55 23 * * *" // 23:55:00 everyday + +// var IndexUpdateTaskCronExpr = "0 */5 * * * *" // every 5 minutes +// var IndexUpdateTaskCronExpr = "*/15 * * * * *" // every 15 seconds + +const ParamSeparator = " " + +func IndexUpdateTaskMetadata(id task.TaskCode, args ...string) task.TaskMetadata { + return task.TaskMetadata{ + ID: "IndexUpdateTask", + Executor: id, + Context: []byte(strings.Join(args, ParamSeparator)), + Options: task.TaskOptions{Concurrency: 1}, + } +} diff --git a/pkg/vectorindex/idxcron/executor_test.go b/pkg/vectorindex/idxcron/executor_test.go new file mode 100644 index 0000000000000..5f398aa7a5cfb --- /dev/null +++ b/pkg/vectorindex/idxcron/executor_test.go @@ -0,0 +1,782 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package idxcron + +import ( + "context" + "fmt" + "os" + "testing" + "time" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/common/mpool" + "github.com/matrixorigin/matrixone/pkg/container/batch" + "github.com/matrixorigin/matrixone/pkg/container/bytejson" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/defines" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/testutil/testengine" + "github.com/matrixorigin/matrixone/pkg/txn/client" + "github.com/matrixorigin/matrixone/pkg/util/executor" + "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" + "github.com/matrixorigin/matrixone/pkg/vm/engine" + "github.com/prashantv/gostub" + "github.com/stretchr/testify/require" +) + +type TestTask struct { + jstr string + dsize uint64 + nlists int64 + ts types.Timestamp + createdAt types.Timestamp + hour int + skipped bool + expected bool +} + +func getTestCases(t *testing.T) []TestTask { + + tasks := []TestTask{ + { + // data size < nlist + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":1}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(100), + nlists: int64(1000), + ts: types.UnixToTimestamp(0), + createdAt: types.UnixToTimestamp(time.Now().Unix()), + hour: 3, + skipped: false, + expected: false, + }, + + { + // just CreatedAt and skip update + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":1}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(1000000), + nlists: int64(1000), + ts: types.UnixToTimestamp(0), + createdAt: types.UnixToTimestamp(time.Now().Unix()), + hour: 3, + skipped: false, + expected: false, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":1}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(1000000), + nlists: int64(1000), + ts: types.UnixToTimestamp(0), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + hour: 3, + skipped: false, + expected: true, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(1000000), + nlists: int64(1000), + ts: types.UnixToTimestamp(0), + hour: 3, + skipped: false, + expected: true, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(1000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-2 * OneWeek).Unix() + return types.UnixToTimestamp(unixts) + }(), + hour: 3, + skipped: false, + expected: true, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(1000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-time.Hour).Unix() + return types.UnixToTimestamp(unixts) + }(), + hour: 3, + skipped: false, + expected: false, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(10000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-1 * time.Hour).Unix() + return types.UnixToTimestamp(unixts) + }(), + hour: 3, + skipped: false, + expected: false, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(10000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-2 * OneWeek).Unix() + return types.UnixToTimestamp(unixts) + }(), + hour: 3, + skipped: false, + expected: true, + }, + { + jstr: "", + dsize: uint64(10000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-2 * OneWeek).Unix() + return types.UnixToTimestamp(unixts) + }(), + hour: 3, + skipped: false, + expected: true, + }, + { + jstr: "", + dsize: uint64(10000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-2 * OneWeek).Unix() + return types.UnixToTimestamp(unixts) + }(), + hour: 4, // wrong hour + skipped: true, + expected: true, + }, + } + + return tasks +} + +func TestCheckIndexUpdatable(t *testing.T) { + + var err error + tasks := getTestCases(t) + for _, ta := range tasks { + + m := (*sqlexec.Metadata)(nil) + if len(ta.jstr) > 0 { + m, err = sqlexec.NewMetadataFromJson(ta.jstr) + require.Nil(t, err) + } + + info := IndexUpdateTaskInfo{ + DbName: "db", + TableName: "table", + IndexName: "index", + Action: Action_Ivfflat_Reindex, + AccountId: uint32(0), + TableId: uint64(100), + Metadata: m, + LastUpdateAt: &ta.ts, + CreatedAt: ta.createdAt, + } + + ok, _, err := info.checkIndexUpdatable(context.Background(), ta.dsize, ta.nlists, OneWeek) + require.NoError(t, err) + require.Equal(t, ta.expected, ok) + + } + +} + +/* +// return status as SQL to update mo_index_update +func runIvfflatReindex(ctx context.Context, + txnEngine engine.Engine, + txnClient client.TxnClient, + cnUUID string, + task IndexUpdateTaskInfo) (updated bool, err error) { + +*/ + +func newTestIvfTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { + return &plan.TableDef{ + Name: "test_orig_tbl", + TblId: 1, + Name2ColIndex: map[string]int32{ + pkName: 0, + vecColName: 1, + "dummy": 2, // Add another col to make sure pk/vec col indices are used + }, + Cols: []*plan.ColDef{ + {Name: pkName, Typ: plan.Type{Id: int32(pkType)}}, + {Name: vecColName, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: "dummy", Typ: plan.Type{Id: int32(types.T_int32)}}, + }, + Pkey: &plan.PrimaryKeyDef{ + Names: []string{pkName}, + PkeyColName: pkName, + }, + Indexes: []*plan.IndexDef{ + { + IndexName: "ivf_idx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Metadata, + IndexTableName: "meta_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"1000","op_type":"vector_l2_ops", "auto_update":"true", "day":"7", "hour":"3"}`, + }, + { + IndexName: "ivf_idx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Centroids, + IndexTableName: "centriods", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"1000","op_type":"vector_l2_ops", "auto_update":"true", "day":"7", "hour":"3"}`, + }, + { + IndexName: "ivf_idx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Entries, + IndexTableName: "entries", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"1000","op_type":"vector_l2_ops", "auto_update":"true", "day":"7", "hour":"3"}`, + }, + }, + } +} + +func TestGetTableDef(t *testing.T) { + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + catalog.SetupDefines("") + cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + dbname := "test" + tablename := "ivfsrc" + + txnOp, err := sqlexec.GetTxn(ctx, cnEngine, cnClient, "idxcron") + require.NoError(t, err) + + sqlproc := sqlexec.NewSqlProcessWithContext(sqlexec.NewSqlContext(ctx, cnUUID, txnOp, catalog.System_Account, nil)) + + tabledef, err := getTableDef(sqlproc, cnEngine, dbname, tablename) + require.NoError(t, err) + + fmt.Printf("tableDef %v\n", tabledef) +} + +func TestIvfflatReindex(t *testing.T) { + + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + mp := mpool.MustNewZero() + + catalog.SetupDefines("") + cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + tableid := uint64(1) + dbname := "test" + tablename := "test_orig_tbl" + indexname := "ivf_idx" + + stub1 := gostub.Stub(&getTableDef, func(sqlproc *sqlexec.SqlProcess, txnEngine engine.Engine, dbname string, tablename string) (tableDef *plan.TableDef, err error) { + return newTestIvfTableDef("a", types.T_int64, "b", types.T_array_float32, 3), nil + }) + defer stub1.Reset() + + tasks := getTestCases(t) + for _, ta := range tasks { + + func() { + var err error + + m := (*sqlexec.Metadata)(nil) + if len(ta.jstr) > 0 { + m, err = sqlexec.NewMetadataFromJson(ta.jstr) + require.Nil(t, err) + } + + info := IndexUpdateTaskInfo{ + DbName: dbname, + TableName: tablename, + IndexName: indexname, + Action: Action_Ivfflat_Reindex, + AccountId: catalog.System_Account, + TableId: tableid, + Metadata: m, + LastUpdateAt: &ta.ts, + CreatedAt: ta.createdAt, + } + + stub2 := gostub.Stub(&runGetCountSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + bat := batch.NewWithSize(1) + bat.Vecs[0] = vector.NewVec(types.New(types.T_uint64, 8, 0)) + vector.AppendFixed[uint64](bat.Vecs[0], ta.dsize, false, mp) + bat.SetRowCount(1) + return executor.Result{Mp: mp, Batches: []*batch.Batch{bat}}, nil + + }) + defer stub2.Reset() + + stub3 := gostub.Stub(&runReindexSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + return executor.Result{}, nil + }) + defer stub3.Reset() + + updated, reason, err := runIvfflatReindex(ctx, cnEngine, cnClient, cnUUID, &info, ta.hour) + fmt.Printf("updated = %v, reason = %s\n", updated, reason) + require.NoError(t, err) + require.Equal(t, ta.expected && !ta.skipped, updated) + + }() + } +} + +func TestIvfflatReindexAutoUpdateOff(t *testing.T) { + + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + mp := mpool.MustNewZero() + + catalog.SetupDefines("") + cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + tableid := uint64(1) + dbname := "test" + tablename := "test_orig_tbl" + indexname := "ivf_idx" + + stub1 := gostub.Stub(&getTableDef, func(sqlproc *sqlexec.SqlProcess, txnEngine engine.Engine, dbname string, tablename string) (tableDef *plan.TableDef, err error) { + tbldef := newTestIvfTableDef("a", types.T_int64, "b", types.T_array_float32, 3) + + // reset auto_update = false + for _, idxdef := range tbldef.Indexes { + idxdef.IndexAlgoParams = `{"lists":"1000","op_type":"vector_l2_ops", "auto_update":"false"}` + } + return tbldef, nil + }) + defer stub1.Reset() + + tasks := getTestCases(t) + for _, ta := range tasks { + + func() { + var err error + + m := (*sqlexec.Metadata)(nil) + if len(ta.jstr) > 0 { + m, err = sqlexec.NewMetadataFromJson(ta.jstr) + require.Nil(t, err) + } + + info := IndexUpdateTaskInfo{ + DbName: dbname, + TableName: tablename, + IndexName: indexname, + Action: Action_Ivfflat_Reindex, + AccountId: catalog.System_Account, + TableId: tableid, + Metadata: m, + LastUpdateAt: &ta.ts, + CreatedAt: ta.createdAt, + } + + stub2 := gostub.Stub(&runGetCountSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + bat := batch.NewWithSize(1) + bat.Vecs[0] = vector.NewVec(types.New(types.T_uint64, 8, 0)) + vector.AppendFixed[uint64](bat.Vecs[0], ta.dsize, false, mp) + bat.SetRowCount(1) + return executor.Result{Mp: mp, Batches: []*batch.Batch{bat}}, nil + + }) + defer stub2.Reset() + + stub3 := gostub.Stub(&runReindexSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + return executor.Result{}, nil + }) + defer stub3.Reset() + + updated, reason, err := runIvfflatReindex(ctx, cnEngine, cnClient, cnUUID, &info, ta.hour) + fmt.Printf("updated = %v, reason = %s\n", updated, reason) + require.NoError(t, err) + require.Equal(t, false, updated) + require.Equal(t, Reason_Skipped, reason) + + }() + } +} + +func TestExecutorRunFakeTasks(t *testing.T) { + + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + mp := mpool.MustNewZero() + + catalog.SetupDefines("") + cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + tableid := uint64(1) + dbname := "test" + tablename := "test_orig_tbl" + indexname := "ivf_idx" + + // getTableDef + stub1 := gostub.Stub(&getTableDef, func(sqlproc *sqlexec.SqlProcess, txnEngine engine.Engine, dbname string, tablename string) (tableDef *plan.TableDef, err error) { + return newTestIvfTableDef("a", types.T_int64, "b", types.T_array_float32, 3), nil + }) + defer stub1.Reset() + + // runGetCountSql + stub2 := gostub.Stub(&runGetCountSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + bat := batch.NewWithSize(1) + bat.Vecs[0] = vector.NewVec(types.New(types.T_uint64, 8, 0)) + vector.AppendFixed[uint64](bat.Vecs[0], uint64(1000000), false, mp) + bat.SetRowCount(1) + return executor.Result{Mp: mp, Batches: []*batch.Batch{bat}}, nil + + }) + defer stub2.Reset() + + // runReindxSql + stub3 := gostub.Stub(&runReindexSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + return executor.Result{}, nil + }) + defer stub3.Reset() + + //getTasks + stub4 := gostub.Stub(&getTasks, func(ctx context.Context, txnEngine engine.Engine, cnTxnClient client.TxnClient, cnUUID string) ([]*IndexUpdateTaskInfo, error) { + tasks := getTestCases(t) + + ret := make([]*IndexUpdateTaskInfo, 0, len(tasks)) + for _, ta := range tasks { + var err error + m := (*sqlexec.Metadata)(nil) + if len(ta.jstr) > 0 { + m, err = sqlexec.NewMetadataFromJson(ta.jstr) + require.Nil(t, err) + } + + info := IndexUpdateTaskInfo{ + DbName: dbname, + TableName: tablename, + IndexName: indexname, + Action: Action_Ivfflat_Reindex, + AccountId: catalog.System_Account, + TableId: tableid, + Metadata: m, + LastUpdateAt: &ta.ts, + CreatedAt: ta.createdAt, + } + + ret = append(ret, &info) + } + + return ret, nil + }) + defer stub4.Reset() + + // runSavestatusSql + stub5 := gostub.Stub(&runSaveStatusSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + fmt.Println(sql) + return executor.Result{}, nil + }) + defer stub5.Reset() + + exec, err := NewIndexUpdateTaskExecutor(ctx, cnUUID, cnEngine, cnClient, mp) + require.NoError(t, err) + + err = exec.run(ctx) + require.NoError(t, err) +} + +func TestExecutorRunFull(t *testing.T) { + + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + mp := mpool.MustNewZero() + + catalog.SetupDefines("") + cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + tableid := uint64(1) + dbname := "test" + tablename := "test_orig_tbl" + indexname := "ivf_idx" + + // getTableDef + stub1 := gostub.Stub(&getTableDef, func(sqlproc *sqlexec.SqlProcess, txnEngine engine.Engine, dbname string, tablename string) (tableDef *plan.TableDef, err error) { + return newTestIvfTableDef("a", types.T_int64, "b", types.T_array_float32, 3), nil + }) + defer stub1.Reset() + + // runGetCountSql + stub2 := gostub.Stub(&runGetCountSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + bat := batch.NewWithSize(1) + bat.Vecs[0] = vector.NewVec(types.New(types.T_uint64, 8, 0)) + vector.AppendFixed[uint64](bat.Vecs[0], uint64(1000000), false, mp) + bat.SetRowCount(1) + return executor.Result{Mp: mp, Batches: []*batch.Batch{bat}}, nil + + }) + defer stub2.Reset() + + // runReindxSql + stub3 := gostub.Stub(&runReindexSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + return executor.Result{}, nil + }) + defer stub3.Reset() + + // runReindxSql + stub4 := gostub.Stub(&runGetTasksSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + + writer := sqlexec.NewMetadataWriter() + writer.AddFloat("kmeans_train_percent", 10) + writer.AddInt("kmeans_max_iteration", 20) + writer.AddInt("ivf_threads_build", 8) + writer.AddInt8("experimental_ivf_index", 1) + + js, err := writer.Marshal() + require.NoError(t, err) + + os.Stderr.WriteString(fmt.Sprintf("js %v\n", string(js))) + + bj, err := bytejson.ParseFromString(string(js)) + require.NoError(t, err) + + os.Stderr.WriteString(fmt.Sprintf("bj %v\n", bj.String())) + + bat := batch.NewWithSize(9) + bat.Vecs[0] = vector.NewVec(types.New(types.T_varchar, 64, 0)) // db + bat.Vecs[1] = vector.NewVec(types.New(types.T_varchar, 64, 0)) // table + bat.Vecs[2] = vector.NewVec(types.New(types.T_varchar, 64, 0)) // idxname + bat.Vecs[3] = vector.NewVec(types.New(types.T_varchar, 64, 0)) // action + bat.Vecs[4] = vector.NewVec(types.New(types.T_uint32, 4, 0)) // acountid + bat.Vecs[5] = vector.NewVec(types.New(types.T_uint64, 8, 0)) // table id + bat.Vecs[6] = vector.NewVec(types.New(types.T_json, 1024, 0)) // metadata JSON + bat.Vecs[7] = vector.NewVec(types.New(types.T_timestamp, 8, 0)) // last_update_at timestamp + bat.Vecs[8] = vector.NewVec(types.New(types.T_timestamp, 8, 0)) // create_at timestamp + + vector.AppendBytes(bat.Vecs[0], []byte(dbname), false, mp) + vector.AppendBytes(bat.Vecs[1], []byte(tablename), false, mp) + vector.AppendBytes(bat.Vecs[2], []byte(indexname), false, mp) + vector.AppendBytes(bat.Vecs[3], []byte(Action_Ivfflat_Reindex), false, mp) + vector.AppendFixed[uint32](bat.Vecs[4], catalog.System_Account, false, mp) + vector.AppendFixed[uint64](bat.Vecs[5], tableid, false, mp) + err = vector.AppendByteJson(bat.Vecs[6], bj, false, mp) + require.NoError(t, err) + + now := time.Now() + created_at := now.Add(-4 * OneWeek) + last_update_at := now.Add(-2 * OneWeek) + + vector.AppendFixed[types.Timestamp](bat.Vecs[7], types.UnixToTimestamp(last_update_at.Unix()), false, mp) + vector.AppendFixed[types.Timestamp](bat.Vecs[8], types.UnixToTimestamp(created_at.Unix()), false, mp) + + bat.SetRowCount(1) + return executor.Result{Mp: mp, Batches: []*batch.Batch{bat}}, nil + }) + defer stub4.Reset() + + // runSavestatusSql + stub5 := gostub.Stub(&runSaveStatusSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + fmt.Println(sql) + return executor.Result{}, nil + }) + defer stub5.Reset() + + exec, err := NewIndexUpdateTaskExecutor(ctx, cnUUID, cnEngine, cnClient, mp) + require.NoError(t, err) + + err = exec.run(ctx) + require.NoError(t, err) +} + +func TestIndexUpdateTaskInfoSaveStatusError(t *testing.T) { + + tableid := uint64(1) + dbname := "test" + tablename := "test_orig_tbl" + indexname := "ivf_idx" + + info := &IndexUpdateTaskInfo{ + DbName: dbname, + TableName: tablename, + IndexName: indexname, + Action: Action_Ivfflat_Reindex, + AccountId: catalog.System_Account, + TableId: tableid, + Metadata: nil, + LastUpdateAt: nil, + } + + { + // runSavestatusSql + stub5 := gostub.Stub(&runSaveStatusSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + fmt.Println(sql) + return executor.Result{}, nil + }) + defer stub5.Reset() + + err := info.saveStatus(nil, true, "reason", moerr.NewInternalErrorNoCtx("fake error")) + require.NoError(t, err) + + } + + { + // runSavestatusSql + stub5 := gostub.Stub(&runSaveStatusSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + fmt.Println(sql) + return executor.Result{}, moerr.NewInternalErrorNoCtx("fake sql error") + }) + defer stub5.Reset() + + err := info.saveStatus(nil, true, "reason", nil) + require.Error(t, err) + + } + +} + +func TestCmdNoDefine(t *testing.T) { + //ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + //catalog.SetupDefines("") + //cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + + { + err := RenameSrcTable(ctx, cnUUID, nil, 0, 0, "old", "new") + require.Error(t, err) + } + + { + err := UnregisterUpdateByTableId(ctx, cnUUID, nil, 0) + require.Error(t, err) + } + { + err := UnregisterUpdateByDbName(ctx, cnUUID, nil, "") + require.Error(t, err) + } + { + err := UnregisterUpdate(ctx, cnUUID, nil, 0, "idx", "action") + require.Error(t, err) + } + { + err := RegisterUpdate(ctx, cnUUID, nil, 0, "db", "tbl", "idx", "action", "meta") + require.Error(t, err) + } + +} + +func TestCmdSqlError(t *testing.T) { + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + // runCmdSql + stub1 := gostub.Stub(&runCmdSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + fmt.Println(sql) + return executor.Result{}, moerr.NewInternalErrorNoCtx("fake sql error") + }) + defer stub1.Reset() + + //catalog.SetupDefines("") + //cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + + { + err := RenameSrcTable(ctx, cnUUID, nil, 0, 0, "old", "new") + require.Error(t, err) + } + + { + err := UnregisterUpdateByTableId(ctx, cnUUID, nil, 0) + require.Error(t, err) + } + { + err := UnregisterUpdateByDbName(ctx, cnUUID, nil, "") + require.Error(t, err) + } + { + err := UnregisterUpdate(ctx, cnUUID, nil, 0, "idx", "action") + require.Error(t, err) + } + { + err := RegisterUpdate(ctx, cnUUID, nil, 0, "db", "tbl", "idx", "action", "meta") + require.Error(t, err) + } + +} diff --git a/pkg/vectorindex/sqlexec/metadata.go b/pkg/vectorindex/sqlexec/metadata.go new file mode 100644 index 0000000000000..8ceb5147820f9 --- /dev/null +++ b/pkg/vectorindex/sqlexec/metadata.go @@ -0,0 +1,195 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sqlexec + +import ( + "fmt" + + "github.com/bytedance/sonic" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/bytejson" +) + +// Metadata is used to replace ResolveVariableFunc for background job. +// 1. In the frontend, copy all the configurations required with MetadataWriter +// 2. Generate the JSON with MetadataWriter.Marshal() and save it into the database with JSON type +// 3. Use []byte from JSON column to construct ByteJson in Metadata +// 4. set ResolveVaribaleFunc() with Metadata.ResolveVariableFunc() when execute SQL + +const ( + Type_I8 = "I8" + Type_I64 = "I" + Type_F64 = "F" + Type_String = "S" +) + +type Metadata struct { + bj bytejson.ByteJson + typepath bytejson.Path + valpath bytejson.Path +} + +func NewMetadata(data []byte) (*Metadata, error) { + if data == nil { + return nil, moerr.NewInternalErrorNoCtx("metadata is null") + } + + var bj bytejson.ByteJson + bj.Unmarshal(data) + + typepath, _ := bytejson.ParseJsonPath("$.t") + valpath, _ := bytejson.ParseJsonPath("$.v") + + return &Metadata{bj: bj, typepath: typepath, valpath: valpath}, nil +} + +func NewMetadataFromJson(js string) (*Metadata, error) { + if len(js) == 0 { + return nil, moerr.NewInternalErrorNoCtx("metadata is null") + } + + bj, err := bytejson.ParseFromString(js) + if err != nil { + return nil, err + } + + typepath, _ := bytejson.ParseJsonPath("$.t") + valpath, _ := bytejson.ParseJsonPath("$.v") + + return &Metadata{bj: bj, typepath: typepath, valpath: valpath}, nil +} + +func (m *Metadata) GetString() string { + return m.bj.String() +} + +func (m *Metadata) ResolveVariableFunc(varName string, isSystemVar, isGlobalVar bool) (any, error) { + + if m.bj.IsNull() { + return nil, nil + } + + bj := m.bj + + path, err := bytejson.ParseJsonPath("$.cfg." + varName) + if err != nil { + return nil, err + } + + out := bj.QuerySimple([]*bytejson.Path{&path}) + if out.IsNull() { + return nil, moerr.NewInternalErrorNoCtx(fmt.Sprintf("key %s not found", varName)) + } + + typebj := out.QuerySimple([]*bytejson.Path{&m.typepath}) + if typebj.IsNull() { + return nil, moerr.NewInternalErrorNoCtx("type is null") + } + + valbj := out.QuerySimple([]*bytejson.Path{&m.valpath}) + if valbj.IsNull() { + return nil, moerr.NewInternalErrorNoCtx("value is null") + } + + switch string(typebj.GetString()) { + case Type_I8: + return int8(valbj.GetInt64()), nil + case Type_I64: + return valbj.GetInt64(), nil + case Type_F64: + return valbj.GetFloat64(), nil + case Type_String: + return string(valbj.GetString()), nil + } + return nil, moerr.NewInternalErrorNoCtx("invalid configuration type") +} + +func (m *Metadata) Modify(varName string, v any) error { + + if m.bj.IsNull() { + return moerr.NewInternalErrorNoCtx("bytejson is null") + } + + bj := m.bj + + path, err := bytejson.ParseJsonPath(fmt.Sprintf("$.cfg.%s", varName)) + if err != nil { + return err + } + + var cfgvalue string + switch v.(type) { + case float32, float64: + cfgvalue = fmt.Sprintf(`{"t":"%s", "v":%f}`, Type_F64, v) + case int8: + cfgvalue = fmt.Sprintf(`{"t":"%s", "v":%d}`, Type_I8, v) + case int, int32, int64: + cfgvalue = fmt.Sprintf(`{"t":"%s", "v":%d}`, Type_I64, v) + case string: + cfgvalue = fmt.Sprintf(`{"t":"%s", "v":"%s"}`, Type_String, v) + default: + return moerr.NewInternalErrorNoCtx("invalid value type") + } + + val, err := bytejson.ParseFromString(cfgvalue) + if err != nil { + return err + } + + bj, err = bj.Modify([]*bytejson.Path{&path}, []bytejson.ByteJson{val}, bytejson.JsonModifySet) + if err != nil { + return err + } + + //fmt.Println(cfgvalue) + //fmt.Println(bj.String()) + + m.bj = bj + + return nil +} + +type ConfigValue struct { + T string `json:"t"` + V any `json:"v"` +} + +type MetadataWriter struct { + Cfg map[string]ConfigValue `json:"cfg"` +} + +func NewMetadataWriter() *MetadataWriter { + return &MetadataWriter{Cfg: make(map[string]ConfigValue)} +} + +func (w *MetadataWriter) AddInt(key string, value int64) { + w.Cfg[key] = ConfigValue{T: Type_I64, V: value} +} + +func (w *MetadataWriter) AddInt8(key string, value int8) { + w.Cfg[key] = ConfigValue{T: Type_I8, V: value} +} + +func (w *MetadataWriter) AddString(key string, value string) { + w.Cfg[key] = ConfigValue{T: Type_String, V: value} +} + +func (w *MetadataWriter) AddFloat(key string, value float64) { + w.Cfg[key] = ConfigValue{T: Type_F64, V: value} +} + +func (w *MetadataWriter) Marshal() ([]byte, error) { + return sonic.Marshal(w) +} diff --git a/pkg/vectorindex/sqlexec/metadata_test.go b/pkg/vectorindex/sqlexec/metadata_test.go new file mode 100644 index 0000000000000..1eb4d0dda90d5 --- /dev/null +++ b/pkg/vectorindex/sqlexec/metadata_test.go @@ -0,0 +1,240 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sqlexec + +import ( + "fmt" + "testing" + + "github.com/matrixorigin/matrixone/pkg/container/bytejson" + "github.com/stretchr/testify/require" +) + +func TestResolveVariableFunc(t *testing.T) { + jstr := `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":23}, + "action":{"t":"S", "v":"action string"}, + "float":{"t":"F", "v":23.3} + }, "action": "xxx"}` + + m, err := NewMetadataFromJson(jstr) + require.Nil(t, err) + + f := m.ResolveVariableFunc + + v1, err := f("kmeans_train_percent", false, false) + require.Nil(t, err) + require.Equal(t, v1, any(float64(10))) + + v2, err := f("kmeans_max_iteration", false, false) + require.Nil(t, err) + require.Equal(t, v2, any(int64(4))) + + v3, err := f("ivf_threads_build", false, false) + require.Nil(t, err) + require.Equal(t, v3, any(int64(23))) + + v4, err := f("float", false, false) + require.Nil(t, err) + require.Equal(t, v4, any(float64(23.3))) + + v5, err := f("action", false, false) + require.Nil(t, err) + require.Equal(t, v5, any("action string")) +} + +func TestMetadataWriter(t *testing.T) { + + writer := NewMetadataWriter() + writer.AddFloat("kmeans_train_percent", 10) + writer.AddInt("kmeans_max_iteration", 20) + writer.AddString("string_param", "hello") + writer.AddFloat("float_param", 44.56) + + js, err := writer.Marshal() + require.Nil(t, err) + + fmt.Println(string(js)) + + bj, err := bytejson.ParseFromString(string(js)) + require.Nil(t, err) + + bytes, err := bj.Marshal() + require.Nil(t, err) + + m, err := NewMetadata(bytes) + require.Nil(t, err) + + f := m.ResolveVariableFunc + + v1, err := f("kmeans_train_percent", false, false) + require.Nil(t, err) + require.Equal(t, v1, any(float64(10))) + + v2, err := f("kmeans_max_iteration", false, false) + require.Nil(t, err) + require.Equal(t, v2, any(int64(20))) + + v4, err := f("float_param", false, false) + require.Nil(t, err) + require.Equal(t, v4, any(float64(44.56))) + + v5, err := f("string_param", false, false) + require.Nil(t, err) + require.Equal(t, v5, any("hello")) + + err = m.Modify("kmeans_train_percent", 0.2) + require.Nil(t, err) + + v6, err := f("kmeans_train_percent", false, false) + require.Nil(t, err) + require.Equal(t, any(float64(0.2)), v6) + + err = m.Modify("string_param", "world") + require.Nil(t, err) + + v7, err := f("string_param", false, false) + require.Nil(t, err) + require.Equal(t, any("world"), v7) + + err = m.Modify("kmeans_max_iteration", 33) + require.Nil(t, err) + + v8, err := f("kmeans_max_iteration", false, false) + require.Nil(t, err) + require.Equal(t, any(int64(33)), v8) + +} + +func TestMetadataError(t *testing.T) { + + _, err := NewMetadata(nil) + require.NotNil(t, err) + +} +func TestMetadataFromJsonError(t *testing.T) { + _, err := NewMetadataFromJson("") + require.NotNil(t, err) + + _, err = NewMetadataFromJson("{\"a:3}") + require.NotNil(t, err) + + //require.Equal(t, false, json.Valid([]byte("{\"a:3}"))) +} + +func TestMetadataResolveError(t *testing.T) { + + { + // key not found + var bj bytejson.ByteJson + bytes, err := bj.Marshal() + require.Nil(t, err) + + m, err := NewMetadata(bytes) + require.Nil(t, err) + + _, err = m.ResolveVariableFunc("a", false, false) + require.NotNil(t, err) + fmt.Println(err) + } + + { + // invalid json path + var bj bytejson.ByteJson + bytes, err := bj.Marshal() + require.Nil(t, err) + + m, err := NewMetadata(bytes) + require.Nil(t, err) + + _, err = m.ResolveVariableFunc("[", false, false) + require.NotNil(t, err) + fmt.Println(err) + } + + { + // type is nill + //jstr := `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}}}` + jstr := `{"cfg":{"kmeans_train_percent":{"v":10}}}` + + m, err := NewMetadataFromJson(jstr) + require.Nil(t, err) + + _, err = m.ResolveVariableFunc("kmeans_train_percent", false, false) + require.NotNil(t, err) + fmt.Println(err) + + } + + { + // value is nill + jstr := `{"cfg":{"kmeans_train_percent":{"t":"F"}}}` + + m, err := NewMetadataFromJson(jstr) + require.Nil(t, err) + + _, err = m.ResolveVariableFunc("kmeans_train_percent", false, false) + require.NotNil(t, err) + fmt.Println(err) + + } + + { + // invalid type + jstr := `{"cfg":{"kmeans_train_percent":{"t":"Y", "v": 9}}}` + + m, err := NewMetadataFromJson(jstr) + require.Nil(t, err) + + _, err = m.ResolveVariableFunc("kmeans_train_percent", false, false) + require.NotNil(t, err) + fmt.Println(err) + + } + +} + +func TestMetadataModifyError(t *testing.T) { + + { + // key not found + var bj bytejson.ByteJson + bytes, err := bj.Marshal() + require.Nil(t, err) + + m, err := NewMetadata(bytes) + require.Nil(t, err) + + err = m.Modify("[", "v") + require.NotNil(t, err) + fmt.Println(err) + } + + { + // invalid value type + var bj bytejson.ByteJson + bytes, err := bj.Marshal() + require.Nil(t, err) + + m, err := NewMetadata(bytes) + require.Nil(t, err) + + err = m.Modify("a", bj) + require.NotNil(t, err) + fmt.Println(err) + } + +} diff --git a/pkg/vectorindex/sqlexec/sqlexec.go b/pkg/vectorindex/sqlexec/sqlexec.go index 4cd633163b263..d72ec13f2dc67 100644 --- a/pkg/vectorindex/sqlexec/sqlexec.go +++ b/pkg/vectorindex/sqlexec/sqlexec.go @@ -296,7 +296,7 @@ func RunTxn(sqlproc *SqlProcess, execFunc func(executor.TxnExecutor) error) erro } } -func getTxn( +func GetTxn( ctx context.Context, cnEngine engine.Engine, cnTxnClient client.TxnClient, @@ -334,7 +334,7 @@ func RunTxnWithSqlContext(ctx context.Context, newctx, cancel := context.WithTimeout(newctx, duration) defer cancel() - txnOp, err := getTxn(newctx, cnEngine, cnTxnClient, "runTxnWithSqlContext") + txnOp, err := GetTxn(newctx, cnEngine, cnTxnClient, "runTxnWithSqlContext") if err != nil { return err } diff --git a/pkg/vectorindex/types.go b/pkg/vectorindex/types.go index 05df94e64feb0..8f4fb685ad5a9 100644 --- a/pkg/vectorindex/types.go +++ b/pkg/vectorindex/types.go @@ -65,7 +65,7 @@ type IndexTableConfig struct { Nprobe uint `json:"nprobe"` PKeyType int32 `json:"pktype"` KeyPartType int32 `json:"parttype"` - KmeansTrainPercent int64 `json:"kmeans_train_percent"` + KmeansTrainPercent float64 `json:"kmeans_train_percent"` KmeansMaxIteration int64 `json:"kmeans_max_iteration"` Limit uint64 `json:"limit"` LowerBoundType int8 `json:"lower_bound_type"` diff --git a/proto/plan.proto b/proto/plan.proto index 11dda19d64186..d8ea05212580b 100644 --- a/proto/plan.proto +++ b/proto/plan.proto @@ -1350,6 +1350,16 @@ message AlterTableAlterReIndex { string table_name = 2; string index_name = 3; int64 index_algo_param_list = 4; + bool force_sync = 5; +} + +message AlterTableAlterAutoUpdate { + string db_name = 1; + string table_name = 2; + string index_name = 3; + bool auto_update = 4; + int64 day = 5; + int64 hour = 6; } message AlterTableComment { string new_comment = 1; } @@ -1418,6 +1428,7 @@ message AlterTable { // the updated def is copy_table_def AlterReplaceDef alter_replace_def = 11; AlterRenameColumn alter_rename_column = 12; + AlterTableAlterAutoUpdate alter_auto_update = 13; } } string database = 1; diff --git a/proto/task.proto b/proto/task.proto index f63bed7a3c40a..fc8fa9e564ad6 100644 --- a/proto/task.proto +++ b/proto/task.proto @@ -76,6 +76,8 @@ option (gogoproto.protosizer_all) = true; MOTableStats = 8; // ISCP task ISCPExecutor = 9; + // Index Update task + IndexUpdateTaskExecutor = 10; } // TaskMetadata is a task metadata abstraction that can be scheduled for execution at any CN node. @@ -241,4 +243,4 @@ message Details { [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; google.protobuf.Timestamp LastRun = 13 [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; - } \ No newline at end of file + } diff --git a/test/distributed/cases/disttae/mo_table_stats/mo_table_stats3.result b/test/distributed/cases/disttae/mo_table_stats/mo_table_stats3.result index 883cb95921ad5..d646951d9f6bc 100644 --- a/test/distributed/cases/disttae/mo_table_stats/mo_table_stats3.result +++ b/test/distributed/cases/disttae/mo_table_stats/mo_table_stats3.result @@ -1,46 +1,47 @@ use mo_catalog; show table status; Name Engine Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Role_id Role_name -mo_database Tae Dynamic 8 0 2158 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_tables Tae Dynamic 129 0 52461 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_columns Tae Dynamic 1384 0 71602 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_account Tae Dynamic 1 0 1399 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_branch_metadata Tae Dynamic 266 0 6557 0 0 NULL 0 2025-10-18 16:55:23 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_cache null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_cdc_task Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_cdc_watermark Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_configurations null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_data_key Tae Dynamic 1 0 1218 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_foreign_keys Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_indexes Tae Dynamic 116 0 6496 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_iscp_log Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_locks null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_merge_settings Tae Dynamic 1 0 1504 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_mysql_compatibility_mode Tae Dynamic 4 0 1451 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_partition_metadata Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_partition_tables Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_pitr Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_pubs Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_role Tae Dynamic 2 0 1086 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_role_grant Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_role_privs Tae Dynamic 35 0 2713 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_sessions null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_shards Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_shards_metadata Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_snapshots Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_stages Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_stored_procedure Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_subs Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_table_partitions Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_table_stats_alpha Tae Dynamic 103 0 9921 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_transactions null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_upgrade Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_upgrade_tenant Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_user Tae Dynamic 2 0 2159 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_user_defined_function Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_user_grant Tae Dynamic 4 0 1038 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_variables null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_version Tae Dynamic 1 0 1073 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_database Tae Dynamic 8 0 2325 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_tables Tae Dynamic 133 0 60309 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_columns Tae Dynamic 1409 0 78035 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_account Tae Dynamic 1 0 1398 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_branch_metadata Tae Dynamic 102 0 3845 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_cache null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_cdc_task Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_cdc_watermark Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_configurations null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_data_key Tae Dynamic 1 0 1218 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_foreign_keys Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_indexes Tae Dynamic 127 0 9306 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_iscp_log Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_locks null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_merge_settings Tae Dynamic 1 0 1504 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_mysql_compatibility_mode Tae Dynamic 4 0 1818 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_partition_metadata Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_partition_tables Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_pitr Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_pubs Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_role Tae Dynamic 2 0 1083 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_role_grant Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_role_privs Tae Dynamic 35 0 2715 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_sessions null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_shards Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_shards_metadata Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_snapshots Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_stages Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_stored_procedure Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_subs Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_table_partitions Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_table_stats_alpha Tae Dynamic 93 0 9994 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_transactions null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_upgrade Tae Dynamic 1 0 1578 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_upgrade_tenant Tae Dynamic 1 0 1134 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_user Tae Dynamic 2 0 2152 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_user_defined_function Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_user_grant Tae Dynamic 4 0 1039 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_variables null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_version Tae Dynamic 2 0 2133 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_index_update Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-24 12:43:01 NULL NULL utf8mb4_bin NULL 0 moadmin drop database if exists testdb; create database testdb; use testdb; @@ -48,7 +49,7 @@ create table t1 (a int); insert into t1 select * from generate_series(1, 100*1000)g; show table status; Name Engine Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Role_id Role_name -t1 Tae Dynamic 100000 0 804690 0 0 NULL 0 2025-09-02 15:36:09 NULL NULL utf8mb4_bin NULL 0 moadmin +t1 Tae Dynamic 100000 0 804690 0 0 NULL 0 2025-11-24 13:57:41 NULL NULL utf8mb4_bin NULL 0 moadmin drop database testdb; select mo_ctl("cn", "MoTableStats", "recomputing:acc.0"); mo_ctl(cn, MoTableStats, recomputing:acc.0) diff --git a/test/distributed/cases/dml/select/sp_table.result b/test/distributed/cases/dml/select/sp_table.result index 2956077a4bb28..e1bdf77de8e02 100644 --- a/test/distributed/cases/dml/select/sp_table.result +++ b/test/distributed/cases/dml/select/sp_table.result @@ -5,7 +5,6 @@ select relname,relkind from mo_catalog.mo_tables where reldatabase = 'mo_catalog relname relkind mo_account r mo_branch_metadata r -mo_iscp_log r mo_cache v mo_cdc_task r mo_cdc_watermark r @@ -15,12 +14,15 @@ mo_data_key r mo_database r mo_foreign_keys r mo_increment_columns +mo_index_update r mo_indexes r +mo_iscp_log r mo_locks v mo_merge_settings r mo_mysql_compatibility_mode r mo_partition_metadata r mo_partition_tables r +mo_pitr r mo_pubs r mo_role r mo_role_grant r @@ -43,4 +45,3 @@ mo_user_defined_function r mo_user_grant r mo_variables v mo_version r -mo_pitr r diff --git a/test/distributed/cases/dml/show/database_statistics.result b/test/distributed/cases/dml/show/database_statistics.result index c37390903158a..12df7cbc2ae73 100644 --- a/test/distributed/cases/dml/show/database_statistics.result +++ b/test/distributed/cases/dml/show/database_statistics.result @@ -9,7 +9,7 @@ Number of tables in mysql 6 show table_number from mo_catalog; Number of tables in mo_catalog -40 +41 show table_number from system; Number of tables in system 6 diff --git a/test/distributed/cases/dml/show/show.result b/test/distributed/cases/dml/show/show.result index 8d0627cfafc2a..3f574afd79ec7 100644 --- a/test/distributed/cases/dml/show/show.result +++ b/test/distributed/cases/dml/show/show.result @@ -225,8 +225,7 @@ use mo_catalog; show tables; Tables_in_mo_catalog mo_account -mo_branch_metadata mo_branch_metadata -mo_iscp_log +mo_branch_metadata mo_cache mo_cdc_task mo_cdc_watermark @@ -235,7 +234,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode @@ -266,7 +267,7 @@ mo_variables mo_version show table_number from mo_catalog; Number of tables in mo_catalog -39 +41 show column_number from mo_database; Number of columns in mo_database 9 diff --git a/test/distributed/cases/metadata/information_schema.result b/test/distributed/cases/metadata/information_schema.result index 1f45d52e436ed..89652e2cf9b0c 100644 --- a/test/distributed/cases/metadata/information_schema.result +++ b/test/distributed/cases/metadata/information_schema.result @@ -32,6 +32,7 @@ def mo_catalog mo_columns BASE TABLE Tae def mo_catalog mo_data_key BASE TABLE Tae def mo_catalog mo_database BASE TABLE Tae def mo_catalog mo_foreign_keys BASE TABLE Tae +def mo_catalog mo_index_update BASE TABLE Tae def mo_catalog mo_indexes BASE TABLE Tae def mo_catalog mo_iscp_log BASE TABLE Tae def mo_catalog mo_merge_settings BASE TABLE Tae diff --git a/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_async.result b/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_async.result index 1e6186ca6d4e4..d8e1e090215d6 100644 --- a/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_async.result +++ b/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_async.result @@ -3,7 +3,7 @@ drop database if exists hnsw_cdc; create database if not exists hnsw_cdc; use hnsw_cdc; create table t1(a bigint primary key, b vecf32(3),c int,key c_k(c)); -create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; +create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; insert into t1 values (0, "[1,2,3]", 1); UPDATE t1 set b = '[4,5,6]' where a = 0; insert into t1 values (1, "[2,3,4]", 1); @@ -22,7 +22,7 @@ a b c 0 [4, 5, 6] 1 drop table t1; create table t2(a bigint primary key, b vecf32(128)); -create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; +create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; select count(*) from t2; count(*) @@ -42,33 +42,25 @@ create table t3(a bigint primary key, b vecf32(128)); load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; select count(*) from t3; -count(*) -10000 -create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; + +create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; select sleep(10); -sleep(10) -0 + load data infile {'filepath'='$resources/vector/sift128_base_10k_2.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; select count(*) from t3; -count(*) -20000 + select sleep(20); -sleep(20) -0 + select * from t3 order by L2_DISTANCE(b, "[14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7]") ASC LIMIT 1; -a b -9999 [14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7] + select * from t3 order by L2_DISTANCE(b, "[0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1]") ASC LIMIT 1; -a b -0 [0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1] + select * from t3 order by L2_DISTANCE(b, "[59, 0, 0, 1, 1, 1, 5, 100, 41, 0, 0, 4, 57, 34, 31, 115, 4, 0, 0, 12, 30, 33, 43, 85, 21, 0, 0, 14, 25, 9, 10, 60, 99, 11, 0, 0, 0, 0, 10, 55, 68, 1, 0, 3, 115, 65, 42, 115, 32, 3, 0, 4, 13, 21, 104, 115, 81, 15, 15, 23, 9, 2, 21, 75, 43, 20, 1, 0, 10, 2, 2, 20, 52, 35, 32, 61, 79, 8, 7, 41, 50, 106, 96, 20, 8, 2, 11, 39, 115, 48, 53, 11, 3, 0, 2, 43, 35, 11, 0, 1, 13, 7, 0, 1, 115, 58, 54, 29, 1, 2, 0, 3, 32, 115, 99, 34, 1, 0, 0, 0, 35, 15, 52, 44, 9, 0, 0, 18]") ASC LIMIT 1; -a b -10000 [59, 0, 0, 1, 1, 1, 5, 100, 41, 0, 0, 4, 57, 34, 31, 115, 4, 0, 0, 12, 30, 33, 43, 85, 21, 0, 0, 14, 25, 9, 10, 60, 99, 11, 0, 0, 0, 0, 10, 55, 68, 1, 0, 3, 115, 65, 42, 115, 32, 3, 0, 4, 13, 21, 104, 115, 81, 15, 15, 23, 9, 2, 21, 75, 43, 20, 1, 0, 10, 2, 2, 20, 52, 35, 32, 61, 79, 8, 7, 41, 50, 106, 96, 20, 8, 2, 11, 39, 115, 48, 53, 11, 3, 0, 2, 43, 35, 11, 0, 1, 13, 7, 0, 1, 115, 58, 54, 29, 1, 2, 0, 3, 32, 115, 99, 34, 1, 0, 0, 0, 35, 15, 52, 44, 9, 0, 0, 18] + select * from t3 order by L2_DISTANCE(b, "[0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, 0, 3, 133, 133, 8, 46, 1, 2, 13, 15, 29, 87, 50, 22, 1, 0, 16, 25, 6, 18, 49, 5, 2, 0, 2, 3, 59, 70, 19, 18, 2, 0, 11, 42, 37, 30, 13, 133, 13, 4, 53, 28, 3, 8, 42, 77, 6, 11, 103, 36, 0, 0, 32, 7, 15, 59, 27, 2, 0, 2, 5, 14, 5, 55, 52, 51, 3, 2, 5, 133, 21, 10, 38, 26, 1, 0, 64, 71, 3, 10, 118, 53, 5, 6, 28, 33, 26, 73, 15, 0, 0, 0, 22, 13, 15, 133, 133, 4, 0, 0, 15, 107, 62, 46, 91, 9, 1, 7, 16, 28, 4, 0, 27, 33, 4, 15, 25]") ASC LIMIT 1; -a b -19999 [0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, 0, 3, 133, 133, 8, 46, 1, 2, 13, 15, 29, 87, 50, 22, 1, 0, 16, 25, 6, 18, 49, 5, 2, 0, 2, 3, 59, 70, 19, 18, 2, 0, 11, 42, 37, 30, 13, 133, 13, 4, 53, 28, 3, 8, 42, 77, 6, 11, 103, 36, 0, 0, 32, 7, 15, 59, 27, 2, 0, 2, 5, 14, 5, 55, 52, 51, 3, 2, 5, 133, 21, 10, 38, 26, 1, 0, 64, 71, 3, 10, 118, 53, 5, 6, 28, 33, 26, 73, 15, 0, 0, 0, 22, 13, 15, 133, 133, 4, 0, 0, 15, 107, 62, 46, 91, 9, 1, 7, 16, 28, 4, 0, 27, 33, 4, 15, 25] + drop table t3; drop database hnsw_cdc; diff --git a/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_async.sql b/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_async.sql index 2664afde8cbfc..c77745a21d437 100644 --- a/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_async.sql +++ b/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_async.sql @@ -8,7 +8,7 @@ use hnsw_cdc; create table t1(a bigint primary key, b vecf32(3),c int,key c_k(c)); -- empty data -create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; +create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; -- select sleep(10); @@ -40,7 +40,7 @@ drop table t1; -- t2 create table t2(a bigint primary key, b vecf32(128)); -create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; +create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; -- select sleep(10); load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; @@ -72,7 +72,7 @@ load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compr select count(*) from t3; -create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; +create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; select sleep(10); diff --git a/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_f64_async.result b/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_f64_async.result index 3628fa72248fe..479e163634175 100644 --- a/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_f64_async.result +++ b/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_f64_async.result @@ -3,7 +3,7 @@ drop database if exists hnsw_cdc; create database if not exists hnsw_cdc; use hnsw_cdc; create table t1(a bigint primary key, b vecf64(3),c int,key c_k(c)); -create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; +create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; insert into t1 values (0, "[1,2,3]", 1); UPDATE t1 set b = '[4,5,6]' where a = 0; insert into t1 values (1, "[2,3,4]", 1); @@ -22,7 +22,7 @@ a b c 0 [4, 5, 6] 1 drop table t1; create table t2(a bigint primary key, b vecf64(128)); -create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; +create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; select count(*) from t2; count(*) @@ -42,33 +42,25 @@ create table t3(a bigint primary key, b vecf64(128)); load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; select count(*) from t3; -count(*) -10000 -create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; + +create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; select sleep(10); -sleep(10) -0 + load data infile {'filepath'='$resources/vector/sift128_base_10k_2.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; select count(*) from t3; -count(*) -20000 + select sleep(20); -sleep(20) -0 + select * from t3 order by L2_DISTANCE(b, "[14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7]") ASC LIMIT 1; -a b -9999 [14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7] + select * from t3 order by L2_DISTANCE(b, "[0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1]") ASC LIMIT 1; -a b -0 [0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1] + select * from t3 order by L2_DISTANCE(b, "[59, 0, 0, 1, 1, 1, 5, 100, 41, 0, 0, 4, 57, 34, 31, 115, 4, 0, 0, 12, 30, 33, 43, 85, 21, 0, 0, 14, 25, 9, 10, 60, 99, 11, 0, 0, 0, 0, 10, 55, 68, 1, 0, 3, 115, 65, 42, 115, 32, 3, 0, 4, 13, 21, 104, 115, 81, 15, 15, 23, 9, 2, 21, 75, 43, 20, 1, 0, 10, 2, 2, 20, 52, 35, 32, 61, 79, 8, 7, 41, 50, 106, 96, 20, 8, 2, 11, 39, 115, 48, 53, 11, 3, 0, 2, 43, 35, 11, 0, 1, 13, 7, 0, 1, 115, 58, 54, 29, 1, 2, 0, 3, 32, 115, 99, 34, 1, 0, 0, 0, 35, 15, 52, 44, 9, 0, 0, 18]") ASC LIMIT 1; -a b -10000 [59, 0, 0, 1, 1, 1, 5, 100, 41, 0, 0, 4, 57, 34, 31, 115, 4, 0, 0, 12, 30, 33, 43, 85, 21, 0, 0, 14, 25, 9, 10, 60, 99, 11, 0, 0, 0, 0, 10, 55, 68, 1, 0, 3, 115, 65, 42, 115, 32, 3, 0, 4, 13, 21, 104, 115, 81, 15, 15, 23, 9, 2, 21, 75, 43, 20, 1, 0, 10, 2, 2, 20, 52, 35, 32, 61, 79, 8, 7, 41, 50, 106, 96, 20, 8, 2, 11, 39, 115, 48, 53, 11, 3, 0, 2, 43, 35, 11, 0, 1, 13, 7, 0, 1, 115, 58, 54, 29, 1, 2, 0, 3, 32, 115, 99, 34, 1, 0, 0, 0, 35, 15, 52, 44, 9, 0, 0, 18] + select * from t3 order by L2_DISTANCE(b, "[0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, 0, 3, 133, 133, 8, 46, 1, 2, 13, 15, 29, 87, 50, 22, 1, 0, 16, 25, 6, 18, 49, 5, 2, 0, 2, 3, 59, 70, 19, 18, 2, 0, 11, 42, 37, 30, 13, 133, 13, 4, 53, 28, 3, 8, 42, 77, 6, 11, 103, 36, 0, 0, 32, 7, 15, 59, 27, 2, 0, 2, 5, 14, 5, 55, 52, 51, 3, 2, 5, 133, 21, 10, 38, 26, 1, 0, 64, 71, 3, 10, 118, 53, 5, 6, 28, 33, 26, 73, 15, 0, 0, 0, 22, 13, 15, 133, 133, 4, 0, 0, 15, 107, 62, 46, 91, 9, 1, 7, 16, 28, 4, 0, 27, 33, 4, 15, 25]") ASC LIMIT 1; -a b -19999 [0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, 0, 3, 133, 133, 8, 46, 1, 2, 13, 15, 29, 87, 50, 22, 1, 0, 16, 25, 6, 18, 49, 5, 2, 0, 2, 3, 59, 70, 19, 18, 2, 0, 11, 42, 37, 30, 13, 133, 13, 4, 53, 28, 3, 8, 42, 77, 6, 11, 103, 36, 0, 0, 32, 7, 15, 59, 27, 2, 0, 2, 5, 14, 5, 55, 52, 51, 3, 2, 5, 133, 21, 10, 38, 26, 1, 0, 64, 71, 3, 10, 118, 53, 5, 6, 28, 33, 26, 73, 15, 0, 0, 0, 22, 13, 15, 133, 133, 4, 0, 0, 15, 107, 62, 46, 91, 9, 1, 7, 16, 28, 4, 0, 27, 33, 4, 15, 25] + drop table t3; drop database hnsw_cdc; diff --git a/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_f64_async.sql b/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_f64_async.sql index ede04abaa70f8..7ad05cd9f250e 100644 --- a/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_f64_async.sql +++ b/test/distributed/cases/pessimistic_transaction/vector/vector_hnsw_f64_async.sql @@ -8,7 +8,7 @@ use hnsw_cdc; create table t1(a bigint primary key, b vecf64(3),c int,key c_k(c)); -- empty data -create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; +create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; -- select sleep(10); @@ -40,7 +40,7 @@ drop table t1; -- t2 create table t2(a bigint primary key, b vecf64(128)); -create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; +create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; -- select sleep(10); load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; @@ -72,7 +72,7 @@ load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compr select count(*) from t3; -create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 20 EF_CONSTRUCTION 100 EF_SEARCH 100 ASYNC; +create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 64 EF_CONSTRUCTION 200 EF_SEARCH 200 ASYNC; select sleep(10); diff --git a/test/distributed/cases/pessimistic_transaction/vector/vector_ivf_async.result b/test/distributed/cases/pessimistic_transaction/vector/vector_ivf_async.result index 81021eb076f5b..2656ad6dd86d9 100644 --- a/test/distributed/cases/pessimistic_transaction/vector/vector_ivf_async.result +++ b/test/distributed/cases/pessimistic_transaction/vector/vector_ivf_async.result @@ -8,9 +8,9 @@ Table Create Table ivf1_async CREATE TABLE `ivf1_async` (\n `a` int NOT NULL,\n `b` vecf32(128) DEFAULT NULL,\n `c` int DEFAULT NULL,\n PRIMARY KEY (`a`),\n KEY `c_k` (`c`),\n KEY `idx01` USING ivfflat (`b`) lists = 5 op_type 'vector_l2_ops' async \n) desc ivf1_async; Field Type Null Key Default Extra Comment -a INT(32) NO PRI null -b VECF32(128) YES MUL null -c INT(32) YES MUL null +a INT(32) NO PRI null +b VECF32(128) YES MUL null +c INT(32) YES MUL null insert into ivf1_async values(9779, " [10, 15, 0, 0, 5, 46, 5, 5, 4, 0, 0, 0, 28, 118, 12, 5, 75, 44, 5, 0, 6, 32, 6, 49, 41, 74, 9, 1, 0, 0, 0, 9, 1, 9, 16, 41, 71, 80, 3, 0, 0, 4, 3, 5, 51, 106, 11, 3, 112, 28, 13, 1, 4, 8, 3, 104, 118, 14, 1, 1, 0, 0, 0, 88, 3, 27, 46, 118, 108, 49, 2, 0, 1, 46, 118, 118, 27, 12, 0, 0, 33, 118, 118, 8, 0, 0, 0, 4, 118, 95, 40, 0, 0, 0, 1, 11, 27, 38, 12, 12, 18, 29, 3, 2, 13, 30, 94, 78, 30, 19, 9, 3, 31, 45, 70, 42, 15, 1, 3, 12, 14, 22, 16, 2, 3, 17, 24, 13]",4); create table ivf3(a bigint primary key, b vecf32(128)); load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table ivf3 fields terminated by ':' parallel 'true'; @@ -58,6 +58,7 @@ a b c L2_DISTANCE(c, [2,2,3]) 2 3 [1, 3, 3] 1.4142135623730951 3 4 [1, 2, 4] 1.4142135623730951 4 5 [1, 2, 5] 2.23606797749979 +alter table ivf4 alter reindex idx01 ivfflat force_sync; drop table ivf1_async; drop table ivf3; drop table ivf4; diff --git a/test/distributed/cases/pessimistic_transaction/vector/vector_ivf_async.sql b/test/distributed/cases/pessimistic_transaction/vector/vector_ivf_async.sql index b96e90d430d44..5e4354cbbb9ea 100644 --- a/test/distributed/cases/pessimistic_transaction/vector/vector_ivf_async.sql +++ b/test/distributed/cases/pessimistic_transaction/vector/vector_ivf_async.sql @@ -82,6 +82,8 @@ select * from ivf3 order by L2_DISTANCE(b, "[0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, select *, L2_DISTANCE(c, "[2,2,3]") from ivf4 order by L2_DISTANCE(c, "[2,2,3]") LIMIT 6; +alter table ivf4 alter reindex idx01 ivfflat force_sync; + -- end t4 -- drop tables diff --git a/test/distributed/cases/snapshot/clone/clone_sys_db_table_to_new_db_table.result b/test/distributed/cases/snapshot/clone/clone_sys_db_table_to_new_db_table.result index 34893bfb1e38f..7708be303bf11 100644 --- a/test/distributed/cases/snapshot/clone/clone_sys_db_table_to_new_db_table.result +++ b/test/distributed/cases/snapshot/clone/clone_sys_db_table_to_new_db_table.result @@ -138,6 +138,7 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes mo_iscp_log mo_locks @@ -188,6 +189,7 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes mo_iscp_log mo_locks diff --git a/test/distributed/cases/snapshot/cluster/restore_cluster_table.result b/test/distributed/cases/snapshot/cluster/restore_cluster_table.result index 714d91f9fa9c5..e61656f248a35 100644 --- a/test/distributed/cases/snapshot/cluster/restore_cluster_table.result +++ b/test/distributed/cases/snapshot/cluster/restore_cluster_table.result @@ -10,7 +10,6 @@ drop database if exists db01; create database db01; use db01; drop table if exists index03; - create table index03 ( emp_no int not null, birth_date date not null, @@ -25,12 +24,10 @@ partition p02 values less than (200001), partition p03 values less than (300001), partition p04 values less than (400001) ); - insert into index03 values (9001,'1980-12-17', 'SMITH', 'CLERK', 'F', '2008-12-17'), (9002,'1981-02-20', 'ALLEN', 'SALESMAN', 'F', '2008-02-20'), (9003,'1991-02-20', 'Bob', 'TEACHER', 'M', '2008-02-20'), (9004,'1999-02-20', 'MARY', 'PROGRAMMER', 'M', '2008-02-20'); - select * from index03; emp_no birth_date first_name last_name gender hire_date 9001 1980-12-17 SMITH CLERK F 2008-12-17 @@ -225,8 +222,8 @@ id val 3 c select * from mo_catalog.mo_stored_procedure; proc_id name creator args lang body db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci -2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop database if exists udf_db2; create database udf_db2; use udf_db2; @@ -235,15 +232,15 @@ language sql as '$1 + $2'; select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop stage if exists my_ext_stage; create stage my_ext_stage URL='s3://load/files/'; drop stage if exists my_ext_stage1; create stage my_ext_stage1 URL='s3://load/files/' CREDENTIALS={'AWS_KEY_ID'='1a2b3c' ,'AWS_SECRET_KEY'='4x5y6z'}; select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -1 my_ext_stage s3://load/files/ in_use 2025-07-19 05:48:46 -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:48:46 +1 my_ext_stage s3://load/files/ in_use 2025-11-24 15:27:40 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:27:40 drop database if exists test01; drop database if exists test02; drop database if exists test03; @@ -379,7 +376,7 @@ drop snapshot if exists cluster_level_snapshot; create snapshot cluster_level_snapshot for cluster; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -cluster_level_snapshot 2025-07-19 05:48:46.551465 cluster +cluster_level_snapshot 2025-11-24 15:27:40.568684999 cluster use db02; alter table departments add column newcolumn int after department_id; show create table departments; @@ -410,7 +407,6 @@ show tables; Tables_in_mo_catalog mo_account mo_branch_metadata -mo_iscp_log mo_cache mo_cdc_task mo_cdc_watermark @@ -419,7 +415,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode @@ -461,14 +459,14 @@ drop function udf_db2.`addAB`(x int, y int); drop stage if exists my_ext_stage; select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:48:46 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:27:40 use udf_db2; create function `add`(x int, y int) returns int language sql as '$1 + $2'; select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -2 add 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:48:47 2025-07-19 05:48:47 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 add 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop database test01; use test02; select * from v01; @@ -521,7 +519,6 @@ show tables; Tables_in_mo_catalog mo_account mo_branch_metadata -mo_iscp_log mo_cache mo_cdc_task mo_cdc_watermark @@ -530,7 +527,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode @@ -568,15 +567,15 @@ select * from repub01.pri01; Unknown database repub01 select * from mo_catalog.mo_stored_procedure; proc_id name creator args lang body db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci -2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -1 my_ext_stage s3://load/files/ in_use 2025-07-19 05:48:46 -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:48:46 +1 my_ext_stage s3://load/files/ in_use 2025-11-24 15:27:40 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:27:40 select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci select * from test01.sales; id sale_date amount 1 2018-12-25 100.00 @@ -611,8 +610,8 @@ drop database test; drop database repub02; select * from mo_catalog.mo_stored_procedure; proc_id name creator args lang body db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci -2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop database if exists udf_db2; drop function `addab`(x int, y int); function addab doesn't exist @@ -642,7 +641,7 @@ drop snapshot if exists cluster_level_snapshot; create snapshot cluster_level_snapshot for cluster; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -cluster_level_snapshot 2025-07-19 05:48:50.059533 cluster +cluster_level_snapshot 2025-11-24 15:27:42.746783999 cluster use mo_catalog; drop table if exists t2; create cluster table t2(a int); @@ -667,7 +666,7 @@ drop snapshot if exists cluster_level_snapshot; create snapshot cluster_level_snapshot for cluster; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -cluster_level_snapshot 2025-07-19 05:48:50.230761 cluster +cluster_level_snapshot 2025-11-24 15:27:42.914881999 cluster use mo_catalog; drop table if exists t2; create cluster table t2(a int); @@ -692,7 +691,7 @@ drop snapshot if exists account_level_snapshot; create snapshot account_level_snapshot for account; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -account_level_snapshot 2025-07-19 05:48:50.418719 account sys +account_level_snapshot 2025-11-24 15:27:43.112728999 account sys use mo_catalog; drop table if exists t2; create cluster table t2(a int); diff --git a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result index 75f8abfe70964..1b4344ac3abea 100644 --- a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result +++ b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result @@ -10,7 +10,6 @@ drop database if exists db01; create database db01; use db01; drop table if exists index03; - create table index03 ( emp_no int not null, birth_date date not null, @@ -25,12 +24,10 @@ partition p02 values less than (200001), partition p03 values less than (300001), partition p04 values less than (400001) ); - insert into index03 values (9001,'1980-12-17', 'SMITH', 'CLERK', 'F', '2008-12-17'), (9002,'1981-02-20', 'ALLEN', 'SALESMAN', 'F', '2008-02-20'), (9003,'1991-02-20', 'Bob', 'TEACHER', 'M', '2008-02-20'), (9004,'1999-02-20', 'MARY', 'PROGRAMMER', 'M', '2008-02-20'); - select * from index03; emp_no birth_date first_name last_name gender hire_date 9001 1980-12-17 SMITH CLERK F 2008-12-17 @@ -201,7 +198,7 @@ drop publication if exists pub02; create publication pub02 database repub02 account acc02 comment 'publish before creating snapshot'; show publications; publication database tables sub_account subscribed_accounts create_time update_time comments -pub02 repub02 * acc02 2025-07-18 22:49:30 null publish before creating snapshot +pub02 repub02 * acc02 2025-11-24 15:26:50 null publish before creating snapshot select * from mo_catalog.mo_pubs; SQL parser error: table "mo_pubs" does not exist drop database if exists procedure_test; @@ -232,8 +229,8 @@ id val 3 c select * from mo_catalog.mo_stored_procedure; proc_id name creator args lang body db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci -2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop database if exists sub01; create database sub01 from acc01 publication pub02; show databases; @@ -270,15 +267,15 @@ language sql as '$1 + $2'; select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop stage if exists my_ext_stage; create stage my_ext_stage URL='s3://load/files/'; drop stage if exists my_ext_stage1; create stage my_ext_stage1 URL='s3://load/files/' CREDENTIALS={'AWS_KEY_ID'='1a2b3c' ,'AWS_SECRET_KEY'='4x5y6z'}; select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -1 my_ext_stage s3://load/files/ in_use 2025-07-19 05:49:30 -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:49:30 +1 my_ext_stage s3://load/files/ in_use 2025-11-24 15:26:50 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:26:50 drop database if exists test01; drop database if exists test02; drop database if exists test03; @@ -414,7 +411,7 @@ drop snapshot if exists cluster_level_snapshot; create snapshot cluster_level_snapshot for cluster; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -cluster_level_snapshot 2025-07-19 05:49:30.64199 cluster +cluster_level_snapshot 2025-11-24 15:26:50.660701999 cluster use db02; alter table departments add column newcolumn int after department_id; show create table departments; @@ -445,7 +442,6 @@ show tables; Tables_in_mo_catalog mo_account mo_branch_metadata -mo_iscp_log mo_cache mo_cdc_task mo_cdc_watermark @@ -454,7 +450,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode @@ -497,14 +495,14 @@ drop function udf_db2.`addAB`(x int, y int); drop stage if exists my_ext_stage; select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:49:30 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:26:50 use udf_db2; create function `add`(x int, y int) returns int language sql as '$1 + $2'; select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -2 add 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 add 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop database test01; use test02; select * from v01; @@ -562,7 +560,6 @@ show tables; Tables_in_mo_catalog mo_account mo_branch_metadata -mo_iscp_log mo_cache mo_cdc_task mo_cdc_watermark @@ -571,7 +568,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode @@ -617,15 +616,15 @@ deptno dname loc 40 OPERATIONS BOSTON select * from mo_catalog.mo_stored_procedure; proc_id name creator args lang body db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci -2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -1 my_ext_stage s3://load/files/ in_use 2025-07-19 05:49:30 -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:49:30 +1 my_ext_stage s3://load/files/ in_use 2025-11-24 15:26:50 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:26:50 select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci use test02; select * from v01; id sale_date amount diff --git a/test/distributed/cases/snapshot/snapshotRead.result b/test/distributed/cases/snapshot/snapshotRead.result index 7a3bb527bcce5..676c4aaadb1ee 100644 --- a/test/distributed/cases/snapshot/snapshotRead.result +++ b/test/distributed/cases/snapshot/snapshotRead.result @@ -50,7 +50,7 @@ count(*) 10 show snapshots where SNAPSHOT_NAME = 'sp01'; snapshot_name timestamp snapshot_level account_name database_name table_name -sp01 2025-07-19 05:51:16.160408 account sys +sp01 2025-11-24 14:02:05.608340999 account sys insert into snapshot01 values(11, 100.00, 8899001122, 101.24, 156.79); select count(*) from snapshot01; count(*) @@ -181,7 +181,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'sp01'} where datname = 'test'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312804 test def create database test 0 1 2025-07-18 22:51:16 0 +318358 test def create database test 0 1 2025-11-24 14:02:05 0 select attname from mo_catalog.mo_columns{snapshot = 'sp01'} where att_database = 'test'; attname col1 @@ -242,15 +242,15 @@ drop snapshot if exists sp03; create snapshot sp03 for account; show snapshots where account_name = 'sys'; snapshot_name timestamp snapshot_level account_name database_name table_name -sp03 2025-07-19 05:51:16.356894 account sys +sp03 2025-11-24 14:02:05.800221999 account sys insert into snapshot03 values(3,'sfhuwe',1,1); insert into snapshot03 values(4,'37829901k3d',2,2); drop snapshot if exists sp04; create snapshot sp04 for account; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -sp04 2025-07-19 05:51:16.421313 account sys -sp03 2025-07-19 05:51:16.356894 account sys +sp04 2025-11-24 14:02:05.820413999 account sys +sp03 2025-11-24 14:02:05.800221999 account sys select * from snapshot03; col1 col2 col3 col4 1 sfhuwe 1 1 @@ -296,9 +296,9 @@ drop snapshot if exists sp05; create snapshot sp05 for account; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -sp05 2025-07-19 05:51:16.566748 account sys -sp04 2025-07-19 05:51:16.421313 account sys -sp03 2025-07-19 05:51:16.356894 account sys +sp05 2025-11-24 14:02:05.888280999 account sys +sp04 2025-11-24 14:02:05.820413999 account sys +sp03 2025-11-24 14:02:05.800221999 account sys select count(*) from snapshot03 {snapshot = 'sp05'}; count(*) 5 @@ -314,7 +314,7 @@ count(*) 3 select * from mo_catalog.mo_database{snapshot = 'sp04'} where datname = 'test'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312804 test def create database test 0 1 2025-07-18 22:51:16 0 +318358 test def create database test 0 1 2025-11-24 14:02:05 0 select attname from mo_catalog.mo_columns{snapshot = 'sp05'} where att_database = 'test'; attname __mo_index_idx_col @@ -354,7 +354,7 @@ drop snapshot if exists snap01; create snapshot snap01 for account acc01; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -snap01 2025-07-19 05:51:17.187591 account acc01 +snap01 2025-11-24 14:02:06.130265999 account acc01 use test01; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME @@ -365,7 +365,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'snap01'} where datname = 'test01'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312891 test01 def create database test01 2 2 2025-07-18 22:51:17 293 +318446 test01 def create database test01 2 2 2025-11-24 14:02:06 20030 select attname from mo_catalog.mo_columns{snapshot = 'snap01'} where att_database = 'test01'; attname col1 @@ -379,7 +379,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'snap01'} where datname = 'test01'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312891 test01 def create database test01 2 2 2025-07-18 22:51:17 293 +318446 test01 def create database test01 2 2 2025-11-24 14:02:06 20030 select attname from mo_catalog.mo_columns{snapshot = 'snap01'} where att_database = 'test01'; attname col1 @@ -406,10 +406,10 @@ drop snapshot if exists snap02; create snapshot snap02 for account acc02; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -snap02 2025-07-19 05:51:17.61779 account acc02 +snap02 2025-11-24 14:02:06.510352999 account acc02 show snapshots where account_name = 'acc02'; snapshot_name timestamp snapshot_level account_name database_name table_name -snap02 2025-07-19 05:51:17.61779 account acc02 +snap02 2025-11-24 14:02:06.510352999 account acc02 select count(*) from acc02_test01 {snapshot = 'snap02'}; count(*) 3 @@ -453,7 +453,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'snap02'} where datname = 'test02'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312969 test02 def create database test02 2 2 2025-07-18 22:51:17 294 +318525 test02 def create database test02 2 2 2025-11-24 14:02:06 20031 select attname from mo_catalog.mo_columns{snapshot = 'snap02'} where att_database = 'test02'; attname col1 @@ -573,7 +573,7 @@ count(*) 2 select * from mo_catalog.mo_database{snapshot = 'sp04'} where datname = 'test03'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312973 test03 def create database test03 0 1 2025-07-18 22:51:17 0 +318529 test03 def create database test03 0 1 2025-11-24 14:02:06 0 select attname from mo_catalog.mo_columns{snapshot = 'sp04'} where att_database = 'test03'; attname employeeNumber @@ -607,10 +607,10 @@ drop snapshot if exists sp06; create snapshot sp06 for account; select count(*) from mo_catalog.mo_tables{snapshot = sp06} where reldatabase = 'mo_catalog'; count(*) -55 +56 select * from mo_catalog.mo_database{snapshot = sp06} where datname = 'mo_catalog'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -1 mo_catalog mo_catalog 0 0 2025-07-18 22:30:42 0 +1 mo_catalog mo_catalog 0 0 2025-11-21 09:44:39 0 drop table cluster01; drop snapshot sp06; drop database if exists test03; @@ -653,7 +653,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'sp06'} where datname = 'test03'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312978 test03 def create database test03 0 1 2025-07-18 22:51:18 0 +318534 test03 def create database test03 0 1 2025-11-24 14:02:06 0 select attname from mo_catalog.mo_columns{snapshot = 'sp06'} where att_database = 'test03'; attname col1 @@ -674,21 +674,16 @@ drop publication publication01; drop snapshot sp06; drop table pub01; drop table if exists pt_table; - create table pt_table(col1 tinyint,col2 smallint,col3 int,clo4 bigint,col5 tinyint unsigned,col6 smallint unsigned,col7 int unsigned,col8 bigint unsigned,col9 float,col10 double,col11 varchar(255),col12 Date,col13 DateTime,col14 timestamp,col15 bool,col16 decimal(5,2),col17 text,col18 varchar(255),col19 varchar(255),col20 text)partition by key(col13)partitions 10; - load data infile '$resources/external_table_file/pt_table_data.csv' into table pt_table fields terminated by ','; - select count(*) from pt_table; count(*) 11 drop snapshot if exists sp07; - create snapshot sp07 for account; - show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -sp07 2025-07-17 19:14:27.430645 account sys +sp07 2025-11-24 14:02:07.320326999 account sys select count(*) from pt_table{snapshot = 'sp07'}; count(*) 11 @@ -700,7 +695,7 @@ count(*) 11 select * from mo_catalog.mo_database{snapshot = 'sp07'} where datname = 'test03'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313119 test03 def create database test03 0 1 2025-07-17 12:14:27 0 +318534 test03 def create database test03 0 1 2025-11-24 14:02:06 0 select attname from mo_catalog.mo_columns{snapshot = 'sp07'} where att_database = 'test03'; attname col1 @@ -946,9 +941,7 @@ col20 __mo_fake_pk_col __mo_rowid drop snapshot sp07; - drop table pt_table; - drop database test03; drop database if exists test04; create database test04; @@ -1021,7 +1014,7 @@ count(*) drop account test_tenant_1; select * from mo_catalog.mo_database{snapshot = 'sp08'} where datname = 'test04'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313058 test04 def create database test04 0 1 2025-07-18 22:51:18 0 +318626 test04 def create database test04 0 1 2025-11-24 14:02:07 0 select attname from mo_catalog.mo_columns{snapshot = 'sp08'} where att_database = 'test04'; attname col1 @@ -1040,7 +1033,7 @@ count(*) 3 select * from mo_catalog.mo_database{snapshot = 'sp08'} where datname = 'test04'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313058 test04 def create database test04 0 1 2025-07-18 22:51:18 0 +318626 test04 def create database test04 0 1 2025-11-24 14:02:07 0 select attname from mo_catalog.mo_columns{snapshot = 'sp08'} where att_database = 'test04'; attname col1 @@ -1083,7 +1076,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = `binary`} where datname = 'test05'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313141 test05 def create database test05 0 1 2025-07-18 22:51:19 0 +318710 test05 def create database test05 0 1 2025-11-24 14:02:07 0 select attname from mo_catalog.mo_columns{snapshot = `binary`} where att_database = 'test05'; attname a @@ -1106,7 +1099,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = consistent} where datname = 'test05'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313141 test05 def create database test05 0 1 2025-07-18 22:51:19 0 +318710 test05 def create database test05 0 1 2025-11-24 14:02:07 0 select attname from mo_catalog.mo_columns{snapshot = consistent} where att_database = 'test05'; attname dvalue @@ -1131,8 +1124,8 @@ drop snapshot if exists sp09; create snapshot sp09 for account; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -sp09 2025-07-19 05:51:19.253073 account sys -sp08 2025-07-19 05:51:18.718836 account sys +sp09 2025-11-24 14:02:07.946299999 account sys +sp08 2025-11-24 14:02:07.592319999 account sys select count(*) from tran01{snapshot = 'sp09'}; count(*) 3 @@ -1141,7 +1134,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'sp09'} where datname = 'test06'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313144 test06 def create database test06 0 1 2025-07-18 22:51:19 0 +318713 test06 def create database test06 0 1 2025-11-24 14:02:07 0 select attname from mo_catalog.mo_columns{snapshot = 'sp09'} where att_database = 'test06'; attname col1 diff --git a/test/distributed/cases/table/system_table_cases.result b/test/distributed/cases/table/system_table_cases.result index 7c46cb80a2991..940c4f31f917f 100644 --- a/test/distributed/cases/table/system_table_cases.result +++ b/test/distributed/cases/table/system_table_cases.result @@ -158,7 +158,7 @@ COUNT(null) 0 SELECT COUNT(*) FROM table_constraints; COUNT(*) -121 +125 USE mo_catalog; SHOW CREATE TABLE mo_columns; Table Create Table diff --git a/test/distributed/cases/tenant/privilege/create_user_default_role.result b/test/distributed/cases/tenant/privilege/create_user_default_role.result index 2c6fc25cf19ca..e8dec220bd77d 100644 --- a/test/distributed/cases/tenant/privilege/create_user_default_role.result +++ b/test/distributed/cases/tenant/privilege/create_user_default_role.result @@ -23,7 +23,6 @@ show tables; Tables_in_mo_catalog mo_account mo_branch_metadata -mo_iscp_log mo_cache mo_cdc_task mo_cdc_watermark @@ -32,7 +31,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode diff --git a/test/distributed/cases/tenant/tenant.result b/test/distributed/cases/tenant/tenant.result index ca15c8b8aac45..61dfa47c500ba 100644 --- a/test/distributed/cases/tenant/tenant.result +++ b/test/distributed/cases/tenant/tenant.result @@ -8,8 +8,8 @@ create account tenant_test admin_name = 'root' open comment 'tenant_test'; SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 51 near " open comment 'tenant_test';"; show accounts; account_name admin_name created_time status suspended_time db_count tbl_count size snapshot_size comments -tenant_test root 2024-10-22 07:04:34 open null 5 66 0.0 0.0 tenant_test -sys root 2024-10-22 06:50:47 open null 8 107 78.267639 0.0 system account +tenant_test root 2025-11-24 14:03:04 open null 5 66 0.0 0.0 tenant_test +sys root 2025-11-21 09:44:39 open null 8 114 348.925694 0.0 system account drop account if exists tenant_test; select account_id,relname,relkind from mo_catalog.mo_tables where reldatabase = 'mo_catalog' and relname not like '__mo_index%' and relname != '__mo_account_lock' order by relname; account_id relname relkind @@ -23,7 +23,8 @@ account_id relname relkind 0 mo_data_key r 0 mo_database r 0 mo_foreign_keys r -0 mo_increment_columns +0 mo_increment_columns +0 mo_index_update r 0 mo_indexes r 0 mo_iscp_log r 0 mo_locks v diff --git a/test/distributed/cases/vector/vector_index.result b/test/distributed/cases/vector/vector_index.result index f9abf16a9c969..9914ac807fffd 100644 --- a/test/distributed/cases/vector/vector_index.result +++ b/test/distributed/cases/vector/vector_index.result @@ -114,11 +114,13 @@ no such table vector_index.vector_index_07 alter table vector_index_06 alter rindex idx01 ivfflat lists=3; SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 46 near " idx01 ivfflat lists=3;"; alter table vector_index_06 alter reindex idx01 ivfflat; -SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 56 near ";"; alter table vector_index_06 alter reindex idx01 lists=3; SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 53 near " lists=3;"; alter table vector_index_06 alter reindex idx01 flat lists=3; SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 52 near " flat lists=3;"; +alter table vector_index_06 alter reindex idx01 ivfflat force_sync; +alter table vector_index_06 alter index idx01 ivfflat auto_update = true day = 10 hour = 23; +alter table vector_index_06 alter index idx01 ivfflat auto_update = false; create table vector_index_07(a int primary key, b vecf32(128),c int,key c_k(c)); insert into vector_index_07 values(9774 ,"[1, 0, 1, 6, 6, 17, 47, 39, 2, 0, 1, 25, 27, 10, 56, 130, 18, 5, 2, 6, 15, 2, 19, 130, 42, 28, 1, 1, 2, 1, 0, 5, 0, 2, 4, 4, 31, 34, 44, 35, 9, 3, 8, 11, 33, 12, 61, 130, 130, 17, 0, 1, 6, 2, 9, 130, 111, 36, 0, 0, 11, 9, 1, 12, 2, 100, 130, 28, 7, 2, 6, 7, 9, 27, 130, 83, 5, 0, 1, 18, 130, 130, 84, 9, 0, 0, 2, 24, 111, 24, 0, 1, 37, 24, 2, 10, 12, 62, 33, 3, 0, 0, 0, 1, 3, 16, 106, 28, 0, 0, 0, 0, 17, 46, 85, 10, 0, 0, 1, 4, 11, 4, 2, 2, 9, 14, 8, 8]",3),(9775,"[0, 1, 1, 3, 0, 3, 46, 20, 1, 4, 17, 9, 1, 17, 108, 15, 0, 3, 37, 17, 6, 15, 116, 16, 6, 1, 4, 7, 7, 7, 9, 6, 0, 8, 10, 4, 26, 129, 27, 9, 0, 0, 5, 2, 11, 129, 129, 12, 103, 4, 0, 0, 2, 31, 129, 129, 94, 4, 0, 0, 0, 3, 13, 42, 0, 15, 38, 2, 70, 129, 1, 0, 5, 10, 40, 12, 74, 129, 6, 1, 129, 39, 6, 1, 2, 22, 9, 33, 122, 13, 0, 0, 0, 0, 5, 23, 4, 11, 9, 12, 45, 38, 1, 0, 0, 4, 36, 38, 57, 32, 0, 0, 82, 22, 9, 5, 13, 11, 3, 94, 35, 3, 0, 0, 0, 1, 16, 97]",5),(9776,"[10, 3, 8, 5, 48, 26, 5, 16, 17, 0, 0, 2, 132, 53, 1, 16, 112, 6, 0, 0, 7, 2, 1, 48, 48, 15, 18, 31, 3, 0, 0, 9, 6, 10, 19, 27, 50, 46, 17, 9, 18, 1, 4, 48, 132, 23, 3, 5, 132, 9, 4, 3, 11, 0, 2, 46, 84, 12, 10, 10, 1, 0, 12, 76, 26, 22, 16, 26, 35, 15, 3, 16, 15, 1, 51, 132, 125, 8, 1, 2, 132, 51, 67, 91, 8, 0, 0, 30, 126, 39, 32, 38, 4, 0, 1, 12, 24, 2, 2, 2, 4, 7, 2, 19, 93, 19, 70, 92, 2, 3, 1, 21, 36, 58, 132, 94, 0, 0, 0, 0, 21, 25, 57, 48, 1, 0, 0, 1]",3); insert into vector_index_07 values(9777, " [16, 15, 0, 0, 5, 46, 5, 5, 4, 0, 0, 0, 28, 118, 12, 5, 75, 44, 5, 0, 6, 32, 6, 49, 41, 74, 9, 1, 0, 0, 0, 9, 1, 9, 16, 41, 71, 80, 3, 0, 0, 4, 3, 5, 51, 106, 11, 3, 112, 28, 13, 1, 4, 8, 3, 104, 118, 14, 1, 1, 0, 0, 0, 88, 3, 27, 46, 118, 108, 49, 2, 0, 1, 46, 118, 118, 27, 12, 0, 0, 33, 118, 118, 8, 0, 0, 0, 4, 118, 95, 40, 0, 0, 0, 1, 11, 27, 38, 12, 12, 18, 29, 3, 2, 13, 30, 94, 78, 30, 19, 9, 3, 31, 45, 70, 42, 15, 1, 3, 12, 14, 22, 16, 2, 3, 17, 24, 13]",4),(9778,"[41, 0, 0, 7, 1, 1, 20, 67, 9, 0, 0, 0, 0, 31, 120, 61, 25, 0, 0, 0, 0, 10, 120, 90, 32, 0, 0, 1, 13, 11, 22, 50, 4, 0, 2, 93, 40, 15, 37, 18, 12, 2, 2, 19, 8, 44, 120, 25, 120, 5, 0, 0, 0, 2, 48, 97, 102, 14, 3, 3, 11, 9, 34, 41, 0, 0, 4, 120, 56, 3, 4, 5, 6, 15, 37, 116, 28, 0, 0, 3, 120, 120, 24, 6, 2, 0, 1, 28, 53, 90, 51, 11, 11, 2, 12, 14, 8, 6, 4, 30, 9, 1, 4, 22, 25, 79, 120, 66, 5, 0, 0, 6, 42, 120, 91, 43, 15, 2, 4, 39, 12, 9, 9, 12, 15, 5, 24, 36]",4); diff --git a/test/distributed/cases/vector/vector_index.sql b/test/distributed/cases/vector/vector_index.sql index 8ebb6ad978b46..d395872259fe3 100644 --- a/test/distributed/cases/vector/vector_index.sql +++ b/test/distributed/cases/vector/vector_index.sql @@ -80,6 +80,10 @@ alter table vector_index_06 alter rindex idx01 ivfflat lists=3; alter table vector_index_06 alter reindex idx01 ivfflat; alter table vector_index_06 alter reindex idx01 lists=3; alter table vector_index_06 alter reindex idx01 flat lists=3; +alter table vector_index_06 alter reindex idx01 ivfflat force_sync; +alter table vector_index_06 alter index idx01 ivfflat auto_update = true day = 10 hour = 23; +alter table vector_index_06 alter index idx01 ivfflat auto_update = false; + -- L2_DISTANCE() create table vector_index_07(a int primary key, b vecf32(128),c int,key c_k(c));