diff --git a/.golangci.yml b/.golangci.yml index 00428316846..748e64d58f6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -78,6 +78,10 @@ linters-settings: disabled: true - name: var-naming disabled: true + - name: empty-block + disabled: true + - name: flag-parameter + disabled: true # Rule tuning - name: cognitive-complexity @@ -88,7 +92,7 @@ linters-settings: - 18 - name: function-result-limit arguments: - - 4 + - 5 - name: unhandled-error arguments: - "fmt.*" diff --git a/api/adminservice/v1/request_response.pb.go b/api/adminservice/v1/request_response.pb.go index 5fe8ba7c323..a4e9286ed8c 100644 --- a/api/adminservice/v1/request_response.pb.go +++ b/api/adminservice/v1/request_response.pb.go @@ -49,10 +49,10 @@ import ( v19 "go.temporal.io/api/version/v1" v17 "go.temporal.io/api/workflow/v1" v18 "go.temporal.io/server/api/cluster/v1" - v13 "go.temporal.io/server/api/enums/v1" - v14 "go.temporal.io/server/api/history/v1" - v12 "go.temporal.io/server/api/namespace/v1" - v11 "go.temporal.io/server/api/persistence/v1" + v14 "go.temporal.io/server/api/enums/v1" + v11 "go.temporal.io/server/api/history/v1" + v13 "go.temporal.io/server/api/namespace/v1" + v12 "go.temporal.io/server/api/persistence/v1" v15 "go.temporal.io/server/api/replication/v1" ) @@ -154,6 +154,124 @@ func (m *RebuildMutableStateResponse) XXX_DiscardUnknown() { var xxx_messageInfo_RebuildMutableStateResponse proto.InternalMessageInfo +type ImportWorkflowExecutionRequest struct { + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + Execution *v1.WorkflowExecution `protobuf:"bytes,2,opt,name=execution,proto3" json:"execution,omitempty"` + HistoryBatches []*v1.DataBlob `protobuf:"bytes,3,rep,name=history_batches,json=historyBatches,proto3" json:"history_batches,omitempty"` + VersionHistory *v11.VersionHistory `protobuf:"bytes,4,opt,name=version_history,json=versionHistory,proto3" json:"version_history,omitempty"` + Token []byte `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` +} + +func (m *ImportWorkflowExecutionRequest) Reset() { *m = ImportWorkflowExecutionRequest{} } +func (*ImportWorkflowExecutionRequest) ProtoMessage() {} +func (*ImportWorkflowExecutionRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_cc07c1a2abe7cb51, []int{2} +} +func (m *ImportWorkflowExecutionRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ImportWorkflowExecutionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ImportWorkflowExecutionRequest.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 *ImportWorkflowExecutionRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ImportWorkflowExecutionRequest.Merge(m, src) +} +func (m *ImportWorkflowExecutionRequest) XXX_Size() int { + return m.Size() +} +func (m *ImportWorkflowExecutionRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ImportWorkflowExecutionRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ImportWorkflowExecutionRequest proto.InternalMessageInfo + +func (m *ImportWorkflowExecutionRequest) GetNamespace() string { + if m != nil { + return m.Namespace + } + return "" +} + +func (m *ImportWorkflowExecutionRequest) GetExecution() *v1.WorkflowExecution { + if m != nil { + return m.Execution + } + return nil +} + +func (m *ImportWorkflowExecutionRequest) GetHistoryBatches() []*v1.DataBlob { + if m != nil { + return m.HistoryBatches + } + return nil +} + +func (m *ImportWorkflowExecutionRequest) GetVersionHistory() *v11.VersionHistory { + if m != nil { + return m.VersionHistory + } + return nil +} + +func (m *ImportWorkflowExecutionRequest) GetToken() []byte { + if m != nil { + return m.Token + } + return nil +} + +type ImportWorkflowExecutionResponse struct { + Token []byte `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` +} + +func (m *ImportWorkflowExecutionResponse) Reset() { *m = ImportWorkflowExecutionResponse{} } +func (*ImportWorkflowExecutionResponse) ProtoMessage() {} +func (*ImportWorkflowExecutionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_cc07c1a2abe7cb51, []int{3} +} +func (m *ImportWorkflowExecutionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ImportWorkflowExecutionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ImportWorkflowExecutionResponse.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 *ImportWorkflowExecutionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ImportWorkflowExecutionResponse.Merge(m, src) +} +func (m *ImportWorkflowExecutionResponse) XXX_Size() int { + return m.Size() +} +func (m *ImportWorkflowExecutionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ImportWorkflowExecutionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ImportWorkflowExecutionResponse proto.InternalMessageInfo + +func (m *ImportWorkflowExecutionResponse) GetToken() []byte { + if m != nil { + return m.Token + } + return nil +} + type DescribeMutableStateRequest struct { Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` Execution *v1.WorkflowExecution `protobuf:"bytes,2,opt,name=execution,proto3" json:"execution,omitempty"` @@ -162,7 +280,7 @@ type DescribeMutableStateRequest struct { func (m *DescribeMutableStateRequest) Reset() { *m = DescribeMutableStateRequest{} } func (*DescribeMutableStateRequest) ProtoMessage() {} func (*DescribeMutableStateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{2} + return fileDescriptor_cc07c1a2abe7cb51, []int{4} } func (m *DescribeMutableStateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -208,14 +326,14 @@ func (m *DescribeMutableStateRequest) GetExecution() *v1.WorkflowExecution { type DescribeMutableStateResponse struct { ShardId string `protobuf:"bytes,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` HistoryAddr string `protobuf:"bytes,2,opt,name=history_addr,json=historyAddr,proto3" json:"history_addr,omitempty"` - CacheMutableState *v11.WorkflowMutableState `protobuf:"bytes,3,opt,name=cache_mutable_state,json=cacheMutableState,proto3" json:"cache_mutable_state,omitempty"` - DatabaseMutableState *v11.WorkflowMutableState `protobuf:"bytes,4,opt,name=database_mutable_state,json=databaseMutableState,proto3" json:"database_mutable_state,omitempty"` + CacheMutableState *v12.WorkflowMutableState `protobuf:"bytes,3,opt,name=cache_mutable_state,json=cacheMutableState,proto3" json:"cache_mutable_state,omitempty"` + DatabaseMutableState *v12.WorkflowMutableState `protobuf:"bytes,4,opt,name=database_mutable_state,json=databaseMutableState,proto3" json:"database_mutable_state,omitempty"` } func (m *DescribeMutableStateResponse) Reset() { *m = DescribeMutableStateResponse{} } func (*DescribeMutableStateResponse) ProtoMessage() {} func (*DescribeMutableStateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{3} + return fileDescriptor_cc07c1a2abe7cb51, []int{5} } func (m *DescribeMutableStateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -258,14 +376,14 @@ func (m *DescribeMutableStateResponse) GetHistoryAddr() string { return "" } -func (m *DescribeMutableStateResponse) GetCacheMutableState() *v11.WorkflowMutableState { +func (m *DescribeMutableStateResponse) GetCacheMutableState() *v12.WorkflowMutableState { if m != nil { return m.CacheMutableState } return nil } -func (m *DescribeMutableStateResponse) GetDatabaseMutableState() *v11.WorkflowMutableState { +func (m *DescribeMutableStateResponse) GetDatabaseMutableState() *v12.WorkflowMutableState { if m != nil { return m.DatabaseMutableState } @@ -284,7 +402,7 @@ type DescribeHistoryHostRequest struct { func (m *DescribeHistoryHostRequest) Reset() { *m = DescribeHistoryHostRequest{} } func (*DescribeHistoryHostRequest) ProtoMessage() {} func (*DescribeHistoryHostRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{4} + return fileDescriptor_cc07c1a2abe7cb51, []int{6} } func (m *DescribeHistoryHostRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -344,14 +462,14 @@ func (m *DescribeHistoryHostRequest) GetWorkflowExecution() *v1.WorkflowExecutio type DescribeHistoryHostResponse struct { ShardsNumber int32 `protobuf:"varint,1,opt,name=shards_number,json=shardsNumber,proto3" json:"shards_number,omitempty"` ShardIds []int32 `protobuf:"varint,2,rep,packed,name=shard_ids,json=shardIds,proto3" json:"shard_ids,omitempty"` - NamespaceCache *v12.NamespaceCacheInfo `protobuf:"bytes,3,opt,name=namespace_cache,json=namespaceCache,proto3" json:"namespace_cache,omitempty"` + NamespaceCache *v13.NamespaceCacheInfo `protobuf:"bytes,3,opt,name=namespace_cache,json=namespaceCache,proto3" json:"namespace_cache,omitempty"` Address string `protobuf:"bytes,5,opt,name=address,proto3" json:"address,omitempty"` } func (m *DescribeHistoryHostResponse) Reset() { *m = DescribeHistoryHostResponse{} } func (*DescribeHistoryHostResponse) ProtoMessage() {} func (*DescribeHistoryHostResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{5} + return fileDescriptor_cc07c1a2abe7cb51, []int{7} } func (m *DescribeHistoryHostResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -394,7 +512,7 @@ func (m *DescribeHistoryHostResponse) GetShardIds() []int32 { return nil } -func (m *DescribeHistoryHostResponse) GetNamespaceCache() *v12.NamespaceCacheInfo { +func (m *DescribeHistoryHostResponse) GetNamespaceCache() *v13.NamespaceCacheInfo { if m != nil { return m.NamespaceCache } @@ -415,7 +533,7 @@ type CloseShardRequest struct { func (m *CloseShardRequest) Reset() { *m = CloseShardRequest{} } func (*CloseShardRequest) ProtoMessage() {} func (*CloseShardRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{6} + return fileDescriptor_cc07c1a2abe7cb51, []int{8} } func (m *CloseShardRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -457,7 +575,7 @@ type CloseShardResponse struct { func (m *CloseShardResponse) Reset() { *m = CloseShardResponse{} } func (*CloseShardResponse) ProtoMessage() {} func (*CloseShardResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{7} + return fileDescriptor_cc07c1a2abe7cb51, []int{9} } func (m *CloseShardResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -493,7 +611,7 @@ type GetShardRequest struct { func (m *GetShardRequest) Reset() { *m = GetShardRequest{} } func (*GetShardRequest) ProtoMessage() {} func (*GetShardRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{8} + return fileDescriptor_cc07c1a2abe7cb51, []int{10} } func (m *GetShardRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -530,13 +648,13 @@ func (m *GetShardRequest) GetShardId() int32 { } type GetShardResponse struct { - ShardInfo *v11.ShardInfo `protobuf:"bytes,1,opt,name=shard_info,json=shardInfo,proto3" json:"shard_info,omitempty"` + ShardInfo *v12.ShardInfo `protobuf:"bytes,1,opt,name=shard_info,json=shardInfo,proto3" json:"shard_info,omitempty"` } func (m *GetShardResponse) Reset() { *m = GetShardResponse{} } func (*GetShardResponse) ProtoMessage() {} func (*GetShardResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{9} + return fileDescriptor_cc07c1a2abe7cb51, []int{11} } func (m *GetShardResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -565,7 +683,7 @@ func (m *GetShardResponse) XXX_DiscardUnknown() { var xxx_messageInfo_GetShardResponse proto.InternalMessageInfo -func (m *GetShardResponse) GetShardInfo() *v11.ShardInfo { +func (m *GetShardResponse) GetShardInfo() *v12.ShardInfo { if m != nil { return m.ShardInfo } @@ -574,8 +692,8 @@ func (m *GetShardResponse) GetShardInfo() *v11.ShardInfo { type ListHistoryTasksRequest struct { ShardId int32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` - Category v13.TaskCategory `protobuf:"varint,2,opt,name=category,proto3,enum=temporal.server.api.enums.v1.TaskCategory" json:"category,omitempty"` - TaskRange *v14.TaskRange `protobuf:"bytes,3,opt,name=task_range,json=taskRange,proto3" json:"task_range,omitempty"` + Category v14.TaskCategory `protobuf:"varint,2,opt,name=category,proto3,enum=temporal.server.api.enums.v1.TaskCategory" json:"category,omitempty"` + TaskRange *v11.TaskRange `protobuf:"bytes,3,opt,name=task_range,json=taskRange,proto3" json:"task_range,omitempty"` BatchSize int32 `protobuf:"varint,4,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"` NextPageToken []byte `protobuf:"bytes,5,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } @@ -583,7 +701,7 @@ type ListHistoryTasksRequest struct { func (m *ListHistoryTasksRequest) Reset() { *m = ListHistoryTasksRequest{} } func (*ListHistoryTasksRequest) ProtoMessage() {} func (*ListHistoryTasksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{10} + return fileDescriptor_cc07c1a2abe7cb51, []int{12} } func (m *ListHistoryTasksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -619,14 +737,14 @@ func (m *ListHistoryTasksRequest) GetShardId() int32 { return 0 } -func (m *ListHistoryTasksRequest) GetCategory() v13.TaskCategory { +func (m *ListHistoryTasksRequest) GetCategory() v14.TaskCategory { if m != nil { return m.Category } - return v13.TASK_CATEGORY_UNSPECIFIED + return v14.TASK_CATEGORY_UNSPECIFIED } -func (m *ListHistoryTasksRequest) GetTaskRange() *v14.TaskRange { +func (m *ListHistoryTasksRequest) GetTaskRange() *v11.TaskRange { if m != nil { return m.TaskRange } @@ -655,7 +773,7 @@ type ListHistoryTasksResponse struct { func (m *ListHistoryTasksResponse) Reset() { *m = ListHistoryTasksResponse{} } func (*ListHistoryTasksResponse) ProtoMessage() {} func (*ListHistoryTasksResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{11} + return fileDescriptor_cc07c1a2abe7cb51, []int{13} } func (m *ListHistoryTasksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -703,7 +821,7 @@ type Task struct { WorkflowId string `protobuf:"bytes,2,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"` RunId string `protobuf:"bytes,3,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"` TaskId int64 `protobuf:"varint,4,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` - TaskType v13.TaskType `protobuf:"varint,5,opt,name=task_type,json=taskType,proto3,enum=temporal.server.api.enums.v1.TaskType" json:"task_type,omitempty"` + TaskType v14.TaskType `protobuf:"varint,5,opt,name=task_type,json=taskType,proto3,enum=temporal.server.api.enums.v1.TaskType" json:"task_type,omitempty"` FireTime *time.Time `protobuf:"bytes,6,opt,name=fire_time,json=fireTime,proto3,stdtime" json:"fire_time,omitempty"` Version int64 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty"` } @@ -711,7 +829,7 @@ type Task struct { func (m *Task) Reset() { *m = Task{} } func (*Task) ProtoMessage() {} func (*Task) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{12} + return fileDescriptor_cc07c1a2abe7cb51, []int{14} } func (m *Task) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -768,11 +886,11 @@ func (m *Task) GetTaskId() int64 { return 0 } -func (m *Task) GetTaskType() v13.TaskType { +func (m *Task) GetTaskType() v14.TaskType { if m != nil { return m.TaskType } - return v13.TASK_TYPE_UNSPECIFIED + return v14.TASK_TYPE_UNSPECIFIED } func (m *Task) GetFireTime() *time.Time { @@ -791,7 +909,7 @@ func (m *Task) GetVersion() int64 { type RemoveTaskRequest struct { ShardId int32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` - Category v13.TaskCategory `protobuf:"varint,2,opt,name=category,proto3,enum=temporal.server.api.enums.v1.TaskCategory" json:"category,omitempty"` + Category v14.TaskCategory `protobuf:"varint,2,opt,name=category,proto3,enum=temporal.server.api.enums.v1.TaskCategory" json:"category,omitempty"` TaskId int64 `protobuf:"varint,3,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` VisibilityTime *time.Time `protobuf:"bytes,4,opt,name=visibility_time,json=visibilityTime,proto3,stdtime" json:"visibility_time,omitempty"` } @@ -799,7 +917,7 @@ type RemoveTaskRequest struct { func (m *RemoveTaskRequest) Reset() { *m = RemoveTaskRequest{} } func (*RemoveTaskRequest) ProtoMessage() {} func (*RemoveTaskRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{13} + return fileDescriptor_cc07c1a2abe7cb51, []int{15} } func (m *RemoveTaskRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -835,11 +953,11 @@ func (m *RemoveTaskRequest) GetShardId() int32 { return 0 } -func (m *RemoveTaskRequest) GetCategory() v13.TaskCategory { +func (m *RemoveTaskRequest) GetCategory() v14.TaskCategory { if m != nil { return m.Category } - return v13.TASK_CATEGORY_UNSPECIFIED + return v14.TASK_CATEGORY_UNSPECIFIED } func (m *RemoveTaskRequest) GetTaskId() int64 { @@ -862,7 +980,7 @@ type RemoveTaskResponse struct { func (m *RemoveTaskResponse) Reset() { *m = RemoveTaskResponse{} } func (*RemoveTaskResponse) ProtoMessage() {} func (*RemoveTaskResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{14} + return fileDescriptor_cc07c1a2abe7cb51, []int{16} } func (m *RemoveTaskResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -910,7 +1028,7 @@ func (m *GetWorkflowExecutionRawHistoryV2Request) Reset() { } func (*GetWorkflowExecutionRawHistoryV2Request) ProtoMessage() {} func (*GetWorkflowExecutionRawHistoryV2Request) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{15} + return fileDescriptor_cc07c1a2abe7cb51, []int{17} } func (m *GetWorkflowExecutionRawHistoryV2Request) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -998,7 +1116,7 @@ func (m *GetWorkflowExecutionRawHistoryV2Request) GetNextPageToken() []byte { type GetWorkflowExecutionRawHistoryV2Response struct { NextPageToken []byte `protobuf:"bytes,1,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` HistoryBatches []*v1.DataBlob `protobuf:"bytes,2,rep,name=history_batches,json=historyBatches,proto3" json:"history_batches,omitempty"` - VersionHistory *v14.VersionHistory `protobuf:"bytes,3,opt,name=version_history,json=versionHistory,proto3" json:"version_history,omitempty"` + VersionHistory *v11.VersionHistory `protobuf:"bytes,3,opt,name=version_history,json=versionHistory,proto3" json:"version_history,omitempty"` HistoryNodeIds []int64 `protobuf:"varint,4,rep,packed,name=history_node_ids,json=historyNodeIds,proto3" json:"history_node_ids,omitempty"` } @@ -1007,7 +1125,7 @@ func (m *GetWorkflowExecutionRawHistoryV2Response) Reset() { } func (*GetWorkflowExecutionRawHistoryV2Response) ProtoMessage() {} func (*GetWorkflowExecutionRawHistoryV2Response) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{16} + return fileDescriptor_cc07c1a2abe7cb51, []int{18} } func (m *GetWorkflowExecutionRawHistoryV2Response) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1050,7 +1168,7 @@ func (m *GetWorkflowExecutionRawHistoryV2Response) GetHistoryBatches() []*v1.Dat return nil } -func (m *GetWorkflowExecutionRawHistoryV2Response) GetVersionHistory() *v14.VersionHistory { +func (m *GetWorkflowExecutionRawHistoryV2Response) GetVersionHistory() *v11.VersionHistory { if m != nil { return m.VersionHistory } @@ -1072,7 +1190,7 @@ type GetReplicationMessagesRequest struct { func (m *GetReplicationMessagesRequest) Reset() { *m = GetReplicationMessagesRequest{} } func (*GetReplicationMessagesRequest) ProtoMessage() {} func (*GetReplicationMessagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{17} + return fileDescriptor_cc07c1a2abe7cb51, []int{19} } func (m *GetReplicationMessagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1122,7 +1240,7 @@ type GetReplicationMessagesResponse struct { func (m *GetReplicationMessagesResponse) Reset() { *m = GetReplicationMessagesResponse{} } func (*GetReplicationMessagesResponse) ProtoMessage() {} func (*GetReplicationMessagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{18} + return fileDescriptor_cc07c1a2abe7cb51, []int{20} } func (m *GetReplicationMessagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1173,7 +1291,7 @@ func (m *GetNamespaceReplicationMessagesRequest) Reset() { } func (*GetNamespaceReplicationMessagesRequest) ProtoMessage() {} func (*GetNamespaceReplicationMessagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{19} + return fileDescriptor_cc07c1a2abe7cb51, []int{21} } func (m *GetNamespaceReplicationMessagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1232,7 +1350,7 @@ func (m *GetNamespaceReplicationMessagesResponse) Reset() { } func (*GetNamespaceReplicationMessagesResponse) ProtoMessage() {} func (*GetNamespaceReplicationMessagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{20} + return fileDescriptor_cc07c1a2abe7cb51, []int{22} } func (m *GetNamespaceReplicationMessagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1275,7 +1393,7 @@ type GetDLQReplicationMessagesRequest struct { func (m *GetDLQReplicationMessagesRequest) Reset() { *m = GetDLQReplicationMessagesRequest{} } func (*GetDLQReplicationMessagesRequest) ProtoMessage() {} func (*GetDLQReplicationMessagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{21} + return fileDescriptor_cc07c1a2abe7cb51, []int{23} } func (m *GetDLQReplicationMessagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1318,7 +1436,7 @@ type GetDLQReplicationMessagesResponse struct { func (m *GetDLQReplicationMessagesResponse) Reset() { *m = GetDLQReplicationMessagesResponse{} } func (*GetDLQReplicationMessagesResponse) ProtoMessage() {} func (*GetDLQReplicationMessagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{22} + return fileDescriptor_cc07c1a2abe7cb51, []int{24} } func (m *GetDLQReplicationMessagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1364,7 +1482,7 @@ type ReapplyEventsRequest struct { func (m *ReapplyEventsRequest) Reset() { *m = ReapplyEventsRequest{} } func (*ReapplyEventsRequest) ProtoMessage() {} func (*ReapplyEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{23} + return fileDescriptor_cc07c1a2abe7cb51, []int{25} } func (m *ReapplyEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1420,7 +1538,7 @@ type ReapplyEventsResponse struct { func (m *ReapplyEventsResponse) Reset() { *m = ReapplyEventsResponse{} } func (*ReapplyEventsResponse) ProtoMessage() {} func (*ReapplyEventsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{24} + return fileDescriptor_cc07c1a2abe7cb51, []int{26} } func (m *ReapplyEventsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1459,7 +1577,7 @@ type AddSearchAttributesRequest struct { func (m *AddSearchAttributesRequest) Reset() { *m = AddSearchAttributesRequest{} } func (*AddSearchAttributesRequest) ProtoMessage() {} func (*AddSearchAttributesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{25} + return fileDescriptor_cc07c1a2abe7cb51, []int{27} } func (m *AddSearchAttributesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1522,7 +1640,7 @@ type AddSearchAttributesResponse struct { func (m *AddSearchAttributesResponse) Reset() { *m = AddSearchAttributesResponse{} } func (*AddSearchAttributesResponse) ProtoMessage() {} func (*AddSearchAttributesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{26} + return fileDescriptor_cc07c1a2abe7cb51, []int{28} } func (m *AddSearchAttributesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1560,7 +1678,7 @@ type RemoveSearchAttributesRequest struct { func (m *RemoveSearchAttributesRequest) Reset() { *m = RemoveSearchAttributesRequest{} } func (*RemoveSearchAttributesRequest) ProtoMessage() {} func (*RemoveSearchAttributesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{27} + return fileDescriptor_cc07c1a2abe7cb51, []int{29} } func (m *RemoveSearchAttributesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1616,7 +1734,7 @@ type RemoveSearchAttributesResponse struct { func (m *RemoveSearchAttributesResponse) Reset() { *m = RemoveSearchAttributesResponse{} } func (*RemoveSearchAttributesResponse) ProtoMessage() {} func (*RemoveSearchAttributesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{28} + return fileDescriptor_cc07c1a2abe7cb51, []int{30} } func (m *RemoveSearchAttributesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1653,7 +1771,7 @@ type GetSearchAttributesRequest struct { func (m *GetSearchAttributesRequest) Reset() { *m = GetSearchAttributesRequest{} } func (*GetSearchAttributesRequest) ProtoMessage() {} func (*GetSearchAttributesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{29} + return fileDescriptor_cc07c1a2abe7cb51, []int{31} } func (m *GetSearchAttributesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1707,7 +1825,7 @@ type GetSearchAttributesResponse struct { func (m *GetSearchAttributesResponse) Reset() { *m = GetSearchAttributesResponse{} } func (*GetSearchAttributesResponse) ProtoMessage() {} func (*GetSearchAttributesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{30} + return fileDescriptor_cc07c1a2abe7cb51, []int{32} } func (m *GetSearchAttributesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1771,7 +1889,7 @@ type DescribeClusterRequest struct { func (m *DescribeClusterRequest) Reset() { *m = DescribeClusterRequest{} } func (*DescribeClusterRequest) ProtoMessage() {} func (*DescribeClusterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{31} + return fileDescriptor_cc07c1a2abe7cb51, []int{33} } func (m *DescribeClusterRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1826,7 +1944,7 @@ type DescribeClusterResponse struct { func (m *DescribeClusterResponse) Reset() { *m = DescribeClusterResponse{} } func (*DescribeClusterResponse) ProtoMessage() {} func (*DescribeClusterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{32} + return fileDescriptor_cc07c1a2abe7cb51, []int{34} } func (m *DescribeClusterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1954,7 +2072,7 @@ type ListClustersRequest struct { func (m *ListClustersRequest) Reset() { *m = ListClustersRequest{} } func (*ListClustersRequest) ProtoMessage() {} func (*ListClustersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{33} + return fileDescriptor_cc07c1a2abe7cb51, []int{35} } func (m *ListClustersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1998,14 +2116,14 @@ func (m *ListClustersRequest) GetNextPageToken() []byte { } type ListClustersResponse struct { - Clusters []*v11.ClusterMetadata `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` + Clusters []*v12.ClusterMetadata `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` NextPageToken []byte `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } func (m *ListClustersResponse) Reset() { *m = ListClustersResponse{} } func (*ListClustersResponse) ProtoMessage() {} func (*ListClustersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{34} + return fileDescriptor_cc07c1a2abe7cb51, []int{36} } func (m *ListClustersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2034,7 +2152,7 @@ func (m *ListClustersResponse) XXX_DiscardUnknown() { var xxx_messageInfo_ListClustersResponse proto.InternalMessageInfo -func (m *ListClustersResponse) GetClusters() []*v11.ClusterMetadata { +func (m *ListClustersResponse) GetClusters() []*v12.ClusterMetadata { if m != nil { return m.Clusters } @@ -2056,7 +2174,7 @@ type AddOrUpdateRemoteClusterRequest struct { func (m *AddOrUpdateRemoteClusterRequest) Reset() { *m = AddOrUpdateRemoteClusterRequest{} } func (*AddOrUpdateRemoteClusterRequest) ProtoMessage() {} func (*AddOrUpdateRemoteClusterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{35} + return fileDescriptor_cc07c1a2abe7cb51, []int{37} } func (m *AddOrUpdateRemoteClusterRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2105,7 +2223,7 @@ type AddOrUpdateRemoteClusterResponse struct { func (m *AddOrUpdateRemoteClusterResponse) Reset() { *m = AddOrUpdateRemoteClusterResponse{} } func (*AddOrUpdateRemoteClusterResponse) ProtoMessage() {} func (*AddOrUpdateRemoteClusterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{36} + return fileDescriptor_cc07c1a2abe7cb51, []int{38} } func (m *AddOrUpdateRemoteClusterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2141,7 +2259,7 @@ type RemoveRemoteClusterRequest struct { func (m *RemoveRemoteClusterRequest) Reset() { *m = RemoveRemoteClusterRequest{} } func (*RemoveRemoteClusterRequest) ProtoMessage() {} func (*RemoveRemoteClusterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{37} + return fileDescriptor_cc07c1a2abe7cb51, []int{39} } func (m *RemoveRemoteClusterRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2183,7 +2301,7 @@ type RemoveRemoteClusterResponse struct { func (m *RemoveRemoteClusterResponse) Reset() { *m = RemoveRemoteClusterResponse{} } func (*RemoveRemoteClusterResponse) ProtoMessage() {} func (*RemoveRemoteClusterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{38} + return fileDescriptor_cc07c1a2abe7cb51, []int{40} } func (m *RemoveRemoteClusterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2218,7 +2336,7 @@ type ListClusterMembersRequest struct { LastHeartbeatWithin *time.Duration `protobuf:"bytes,1,opt,name=last_heartbeat_within,json=lastHeartbeatWithin,proto3,stdduration" json:"last_heartbeat_within,omitempty"` RpcAddress string `protobuf:"bytes,2,opt,name=rpc_address,json=rpcAddress,proto3" json:"rpc_address,omitempty"` HostId string `protobuf:"bytes,3,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` - Role v13.ClusterMemberRole `protobuf:"varint,4,opt,name=role,proto3,enum=temporal.server.api.enums.v1.ClusterMemberRole" json:"role,omitempty"` + Role v14.ClusterMemberRole `protobuf:"varint,4,opt,name=role,proto3,enum=temporal.server.api.enums.v1.ClusterMemberRole" json:"role,omitempty"` // (-- api-linter: core::0140::prepositions=disabled // aip.dev/not-precedent: "after" is used to indicate a time range. --) SessionStartedAfterTime *time.Time `protobuf:"bytes,5,opt,name=session_started_after_time,json=sessionStartedAfterTime,proto3,stdtime" json:"session_started_after_time,omitempty"` @@ -2229,7 +2347,7 @@ type ListClusterMembersRequest struct { func (m *ListClusterMembersRequest) Reset() { *m = ListClusterMembersRequest{} } func (*ListClusterMembersRequest) ProtoMessage() {} func (*ListClusterMembersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{39} + return fileDescriptor_cc07c1a2abe7cb51, []int{41} } func (m *ListClusterMembersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2279,11 +2397,11 @@ func (m *ListClusterMembersRequest) GetHostId() string { return "" } -func (m *ListClusterMembersRequest) GetRole() v13.ClusterMemberRole { +func (m *ListClusterMembersRequest) GetRole() v14.ClusterMemberRole { if m != nil { return m.Role } - return v13.CLUSTER_MEMBER_ROLE_UNSPECIFIED + return v14.CLUSTER_MEMBER_ROLE_UNSPECIFIED } func (m *ListClusterMembersRequest) GetSessionStartedAfterTime() *time.Time { @@ -2315,7 +2433,7 @@ type ListClusterMembersResponse struct { func (m *ListClusterMembersResponse) Reset() { *m = ListClusterMembersResponse{} } func (*ListClusterMembersResponse) ProtoMessage() {} func (*ListClusterMembersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{40} + return fileDescriptor_cc07c1a2abe7cb51, []int{42} } func (m *ListClusterMembersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2359,7 +2477,7 @@ func (m *ListClusterMembersResponse) GetNextPageToken() []byte { } type GetDLQMessagesRequest struct { - Type v13.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` + Type v14.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` ShardId int32 `protobuf:"varint,2,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` SourceCluster string `protobuf:"bytes,3,opt,name=source_cluster,json=sourceCluster,proto3" json:"source_cluster,omitempty"` InclusiveEndMessageId int64 `protobuf:"varint,4,opt,name=inclusive_end_message_id,json=inclusiveEndMessageId,proto3" json:"inclusive_end_message_id,omitempty"` @@ -2370,7 +2488,7 @@ type GetDLQMessagesRequest struct { func (m *GetDLQMessagesRequest) Reset() { *m = GetDLQMessagesRequest{} } func (*GetDLQMessagesRequest) ProtoMessage() {} func (*GetDLQMessagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{41} + return fileDescriptor_cc07c1a2abe7cb51, []int{43} } func (m *GetDLQMessagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2399,11 +2517,11 @@ func (m *GetDLQMessagesRequest) XXX_DiscardUnknown() { var xxx_messageInfo_GetDLQMessagesRequest proto.InternalMessageInfo -func (m *GetDLQMessagesRequest) GetType() v13.DeadLetterQueueType { +func (m *GetDLQMessagesRequest) GetType() v14.DeadLetterQueueType { if m != nil { return m.Type } - return v13.DEAD_LETTER_QUEUE_TYPE_UNSPECIFIED + return v14.DEAD_LETTER_QUEUE_TYPE_UNSPECIFIED } func (m *GetDLQMessagesRequest) GetShardId() int32 { @@ -2442,7 +2560,7 @@ func (m *GetDLQMessagesRequest) GetNextPageToken() []byte { } type GetDLQMessagesResponse struct { - Type v13.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` + Type v14.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` ReplicationTasks []*v15.ReplicationTask `protobuf:"bytes,2,rep,name=replication_tasks,json=replicationTasks,proto3" json:"replication_tasks,omitempty"` NextPageToken []byte `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` ReplicationTasksInfo []*v15.ReplicationTaskInfo `protobuf:"bytes,4,rep,name=replication_tasks_info,json=replicationTasksInfo,proto3" json:"replication_tasks_info,omitempty"` @@ -2451,7 +2569,7 @@ type GetDLQMessagesResponse struct { func (m *GetDLQMessagesResponse) Reset() { *m = GetDLQMessagesResponse{} } func (*GetDLQMessagesResponse) ProtoMessage() {} func (*GetDLQMessagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{42} + return fileDescriptor_cc07c1a2abe7cb51, []int{44} } func (m *GetDLQMessagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2480,11 +2598,11 @@ func (m *GetDLQMessagesResponse) XXX_DiscardUnknown() { var xxx_messageInfo_GetDLQMessagesResponse proto.InternalMessageInfo -func (m *GetDLQMessagesResponse) GetType() v13.DeadLetterQueueType { +func (m *GetDLQMessagesResponse) GetType() v14.DeadLetterQueueType { if m != nil { return m.Type } - return v13.DEAD_LETTER_QUEUE_TYPE_UNSPECIFIED + return v14.DEAD_LETTER_QUEUE_TYPE_UNSPECIFIED } func (m *GetDLQMessagesResponse) GetReplicationTasks() []*v15.ReplicationTask { @@ -2509,7 +2627,7 @@ func (m *GetDLQMessagesResponse) GetReplicationTasksInfo() []*v15.ReplicationTas } type PurgeDLQMessagesRequest struct { - Type v13.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` + Type v14.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` ShardId int32 `protobuf:"varint,2,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` SourceCluster string `protobuf:"bytes,3,opt,name=source_cluster,json=sourceCluster,proto3" json:"source_cluster,omitempty"` InclusiveEndMessageId int64 `protobuf:"varint,4,opt,name=inclusive_end_message_id,json=inclusiveEndMessageId,proto3" json:"inclusive_end_message_id,omitempty"` @@ -2518,7 +2636,7 @@ type PurgeDLQMessagesRequest struct { func (m *PurgeDLQMessagesRequest) Reset() { *m = PurgeDLQMessagesRequest{} } func (*PurgeDLQMessagesRequest) ProtoMessage() {} func (*PurgeDLQMessagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{43} + return fileDescriptor_cc07c1a2abe7cb51, []int{45} } func (m *PurgeDLQMessagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2547,11 +2665,11 @@ func (m *PurgeDLQMessagesRequest) XXX_DiscardUnknown() { var xxx_messageInfo_PurgeDLQMessagesRequest proto.InternalMessageInfo -func (m *PurgeDLQMessagesRequest) GetType() v13.DeadLetterQueueType { +func (m *PurgeDLQMessagesRequest) GetType() v14.DeadLetterQueueType { if m != nil { return m.Type } - return v13.DEAD_LETTER_QUEUE_TYPE_UNSPECIFIED + return v14.DEAD_LETTER_QUEUE_TYPE_UNSPECIFIED } func (m *PurgeDLQMessagesRequest) GetShardId() int32 { @@ -2581,7 +2699,7 @@ type PurgeDLQMessagesResponse struct { func (m *PurgeDLQMessagesResponse) Reset() { *m = PurgeDLQMessagesResponse{} } func (*PurgeDLQMessagesResponse) ProtoMessage() {} func (*PurgeDLQMessagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{44} + return fileDescriptor_cc07c1a2abe7cb51, []int{46} } func (m *PurgeDLQMessagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2611,7 +2729,7 @@ func (m *PurgeDLQMessagesResponse) XXX_DiscardUnknown() { var xxx_messageInfo_PurgeDLQMessagesResponse proto.InternalMessageInfo type MergeDLQMessagesRequest struct { - Type v13.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` + Type v14.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` ShardId int32 `protobuf:"varint,2,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` SourceCluster string `protobuf:"bytes,3,opt,name=source_cluster,json=sourceCluster,proto3" json:"source_cluster,omitempty"` InclusiveEndMessageId int64 `protobuf:"varint,4,opt,name=inclusive_end_message_id,json=inclusiveEndMessageId,proto3" json:"inclusive_end_message_id,omitempty"` @@ -2622,7 +2740,7 @@ type MergeDLQMessagesRequest struct { func (m *MergeDLQMessagesRequest) Reset() { *m = MergeDLQMessagesRequest{} } func (*MergeDLQMessagesRequest) ProtoMessage() {} func (*MergeDLQMessagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{45} + return fileDescriptor_cc07c1a2abe7cb51, []int{47} } func (m *MergeDLQMessagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2651,11 +2769,11 @@ func (m *MergeDLQMessagesRequest) XXX_DiscardUnknown() { var xxx_messageInfo_MergeDLQMessagesRequest proto.InternalMessageInfo -func (m *MergeDLQMessagesRequest) GetType() v13.DeadLetterQueueType { +func (m *MergeDLQMessagesRequest) GetType() v14.DeadLetterQueueType { if m != nil { return m.Type } - return v13.DEAD_LETTER_QUEUE_TYPE_UNSPECIFIED + return v14.DEAD_LETTER_QUEUE_TYPE_UNSPECIFIED } func (m *MergeDLQMessagesRequest) GetShardId() int32 { @@ -2700,7 +2818,7 @@ type MergeDLQMessagesResponse struct { func (m *MergeDLQMessagesResponse) Reset() { *m = MergeDLQMessagesResponse{} } func (*MergeDLQMessagesResponse) ProtoMessage() {} func (*MergeDLQMessagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{46} + return fileDescriptor_cc07c1a2abe7cb51, []int{48} } func (m *MergeDLQMessagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2744,7 +2862,7 @@ type RefreshWorkflowTasksRequest struct { func (m *RefreshWorkflowTasksRequest) Reset() { *m = RefreshWorkflowTasksRequest{} } func (*RefreshWorkflowTasksRequest) ProtoMessage() {} func (*RefreshWorkflowTasksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{47} + return fileDescriptor_cc07c1a2abe7cb51, []int{49} } func (m *RefreshWorkflowTasksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2793,7 +2911,7 @@ type RefreshWorkflowTasksResponse struct { func (m *RefreshWorkflowTasksResponse) Reset() { *m = RefreshWorkflowTasksResponse{} } func (*RefreshWorkflowTasksResponse) ProtoMessage() {} func (*RefreshWorkflowTasksResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{48} + return fileDescriptor_cc07c1a2abe7cb51, []int{50} } func (m *RefreshWorkflowTasksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2836,7 +2954,7 @@ type ResendReplicationTasksRequest struct { func (m *ResendReplicationTasksRequest) Reset() { *m = ResendReplicationTasksRequest{} } func (*ResendReplicationTasksRequest) ProtoMessage() {} func (*ResendReplicationTasksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{49} + return fileDescriptor_cc07c1a2abe7cb51, []int{51} } func (m *ResendReplicationTasksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2927,7 +3045,7 @@ type ResendReplicationTasksResponse struct { func (m *ResendReplicationTasksResponse) Reset() { *m = ResendReplicationTasksResponse{} } func (*ResendReplicationTasksResponse) ProtoMessage() {} func (*ResendReplicationTasksResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{50} + return fileDescriptor_cc07c1a2abe7cb51, []int{52} } func (m *ResendReplicationTasksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2969,7 +3087,7 @@ type GetTaskQueueTasksRequest struct { func (m *GetTaskQueueTasksRequest) Reset() { *m = GetTaskQueueTasksRequest{} } func (*GetTaskQueueTasksRequest) ProtoMessage() {} func (*GetTaskQueueTasksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{51} + return fileDescriptor_cc07c1a2abe7cb51, []int{53} } func (m *GetTaskQueueTasksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3048,14 +3166,14 @@ func (m *GetTaskQueueTasksRequest) GetNextPageToken() []byte { } type GetTaskQueueTasksResponse struct { - Tasks []*v11.AllocatedTaskInfo `protobuf:"bytes,1,rep,name=tasks,proto3" json:"tasks,omitempty"` + Tasks []*v12.AllocatedTaskInfo `protobuf:"bytes,1,rep,name=tasks,proto3" json:"tasks,omitempty"` NextPageToken []byte `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } func (m *GetTaskQueueTasksResponse) Reset() { *m = GetTaskQueueTasksResponse{} } func (*GetTaskQueueTasksResponse) ProtoMessage() {} func (*GetTaskQueueTasksResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{52} + return fileDescriptor_cc07c1a2abe7cb51, []int{54} } func (m *GetTaskQueueTasksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3084,7 +3202,7 @@ func (m *GetTaskQueueTasksResponse) XXX_DiscardUnknown() { var xxx_messageInfo_GetTaskQueueTasksResponse proto.InternalMessageInfo -func (m *GetTaskQueueTasksResponse) GetTasks() []*v11.AllocatedTaskInfo { +func (m *GetTaskQueueTasksResponse) GetTasks() []*v12.AllocatedTaskInfo { if m != nil { return m.Tasks } @@ -3106,7 +3224,7 @@ type DeleteWorkflowExecutionRequest struct { func (m *DeleteWorkflowExecutionRequest) Reset() { *m = DeleteWorkflowExecutionRequest{} } func (*DeleteWorkflowExecutionRequest) ProtoMessage() {} func (*DeleteWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{53} + return fileDescriptor_cc07c1a2abe7cb51, []int{55} } func (m *DeleteWorkflowExecutionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3156,7 +3274,7 @@ type DeleteWorkflowExecutionResponse struct { func (m *DeleteWorkflowExecutionResponse) Reset() { *m = DeleteWorkflowExecutionResponse{} } func (*DeleteWorkflowExecutionResponse) ProtoMessage() {} func (*DeleteWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{54} + return fileDescriptor_cc07c1a2abe7cb51, []int{56} } func (m *DeleteWorkflowExecutionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3203,7 +3321,7 @@ func (m *StreamWorkflowReplicationMessagesRequest) Reset() { } func (*StreamWorkflowReplicationMessagesRequest) ProtoMessage() {} func (*StreamWorkflowReplicationMessagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{55} + return fileDescriptor_cc07c1a2abe7cb51, []int{57} } func (m *StreamWorkflowReplicationMessagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3278,7 +3396,7 @@ func (m *StreamWorkflowReplicationMessagesResponse) Reset() { } func (*StreamWorkflowReplicationMessagesResponse) ProtoMessage() {} func (*StreamWorkflowReplicationMessagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{56} + return fileDescriptor_cc07c1a2abe7cb51, []int{58} } func (m *StreamWorkflowReplicationMessagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3352,7 +3470,7 @@ type GetNamespaceRequest struct { func (m *GetNamespaceRequest) Reset() { *m = GetNamespaceRequest{} } func (*GetNamespaceRequest) ProtoMessage() {} func (*GetNamespaceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{57} + return fileDescriptor_cc07c1a2abe7cb51, []int{59} } func (m *GetNamespaceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3440,7 +3558,7 @@ type GetNamespaceResponse struct { func (m *GetNamespaceResponse) Reset() { *m = GetNamespaceResponse{} } func (*GetNamespaceResponse) ProtoMessage() {} func (*GetNamespaceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cc07c1a2abe7cb51, []int{58} + return fileDescriptor_cc07c1a2abe7cb51, []int{60} } func (m *GetNamespaceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3521,6 +3639,8 @@ func (m *GetNamespaceResponse) GetIsGlobalNamespace() bool { func init() { proto.RegisterType((*RebuildMutableStateRequest)(nil), "temporal.server.api.adminservice.v1.RebuildMutableStateRequest") proto.RegisterType((*RebuildMutableStateResponse)(nil), "temporal.server.api.adminservice.v1.RebuildMutableStateResponse") + proto.RegisterType((*ImportWorkflowExecutionRequest)(nil), "temporal.server.api.adminservice.v1.ImportWorkflowExecutionRequest") + proto.RegisterType((*ImportWorkflowExecutionResponse)(nil), "temporal.server.api.adminservice.v1.ImportWorkflowExecutionResponse") proto.RegisterType((*DescribeMutableStateRequest)(nil), "temporal.server.api.adminservice.v1.DescribeMutableStateRequest") proto.RegisterType((*DescribeMutableStateResponse)(nil), "temporal.server.api.adminservice.v1.DescribeMutableStateResponse") proto.RegisterType((*DescribeHistoryHostRequest)(nil), "temporal.server.api.adminservice.v1.DescribeHistoryHostRequest") @@ -3592,213 +3712,216 @@ func init() { } var fileDescriptor_cc07c1a2abe7cb51 = []byte{ - // 3287 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x1a, 0x4b, 0x6c, 0x1b, 0xc7, + // 3337 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x1b, 0x4b, 0x6c, 0x1b, 0xc7, 0x55, 0xcb, 0x8f, 0x44, 0x3e, 0xfd, 0xd7, 0xb2, 0x45, 0x53, 0x11, 0xa5, 0x30, 0x8e, 0x23, 0x3b, - 0x09, 0x55, 0x3b, 0x6d, 0xe3, 0x7c, 0x0c, 0x43, 0x92, 0x1d, 0x49, 0xa9, 0x94, 0xcf, 0xca, 0xb1, - 0xdb, 0x00, 0xc1, 0x66, 0xb8, 0x3b, 0xa2, 0x16, 0x26, 0x77, 0x99, 0x9d, 0x21, 0x6d, 0x05, 0xe8, + 0x09, 0x55, 0x3b, 0x6d, 0xed, 0x7c, 0x0c, 0xc3, 0x92, 0x1d, 0x49, 0xa9, 0x95, 0xcf, 0xca, 0xb1, + 0xdb, 0x00, 0xc1, 0x66, 0xb9, 0x3b, 0xa2, 0x16, 0x26, 0x77, 0x99, 0x9d, 0x21, 0x6d, 0x05, 0xe8, 0x07, 0x4d, 0x8b, 0xa2, 0x87, 0xa2, 0x06, 0x8a, 0x02, 0x41, 0x4e, 0x3d, 0x16, 0x45, 0x8b, 0xde, - 0x7a, 0x2c, 0xd0, 0x5b, 0x8f, 0x41, 0x7b, 0x09, 0x52, 0xa0, 0x69, 0x94, 0x4b, 0x8f, 0x39, 0xf7, - 0x54, 0xcc, 0x6f, 0x7f, 0x5c, 0x52, 0x54, 0x6d, 0xa7, 0x40, 0x6e, 0xdc, 0x37, 0xef, 0xbd, 0x79, - 0xf3, 0x7e, 0xf3, 0xde, 0x1b, 0xc2, 0x8b, 0x14, 0xb7, 0xda, 0x9e, 0x8f, 0x9a, 0xab, 0x04, 0xfb, - 0x5d, 0xec, 0xaf, 0xa2, 0xb6, 0xb3, 0x8a, 0xec, 0x96, 0xe3, 0xb2, 0x6f, 0xc7, 0xc2, 0xab, 0xdd, - 0x4b, 0xab, 0x3e, 0x7e, 0xaf, 0x83, 0x09, 0x35, 0x7d, 0x4c, 0xda, 0x9e, 0x4b, 0x70, 0xad, 0xed, - 0x7b, 0xd4, 0xd3, 0x9f, 0x50, 0xb4, 0x35, 0x41, 0x5b, 0x43, 0x6d, 0xa7, 0x16, 0xa5, 0xad, 0x75, - 0x2f, 0x95, 0x97, 0x1a, 0x9e, 0xd7, 0x68, 0xe2, 0x55, 0x4e, 0x52, 0xef, 0xec, 0xaf, 0x52, 0xa7, - 0x85, 0x09, 0x45, 0xad, 0xb6, 0xe0, 0x52, 0xae, 0x24, 0x11, 0xec, 0x8e, 0x8f, 0xa8, 0xe3, 0xb9, - 0x72, 0xfd, 0x71, 0x1b, 0xb7, 0xb1, 0x6b, 0x63, 0xd7, 0x72, 0x30, 0x59, 0x6d, 0x78, 0x0d, 0x8f, - 0xc3, 0xf9, 0x2f, 0x89, 0x52, 0x0d, 0x0e, 0xc1, 0xa4, 0xc7, 0x6e, 0xa7, 0x45, 0x98, 0xd8, 0x96, - 0xd7, 0x6a, 0x05, 0x6c, 0xce, 0xa7, 0xe3, 0x50, 0x44, 0xee, 0x98, 0xef, 0x75, 0x70, 0x47, 0x1e, - 0xaa, 0x7c, 0x2e, 0x86, 0x27, 0x58, 0x30, 0xc4, 0x16, 0x26, 0x04, 0x35, 0x14, 0xd6, 0x93, 0x31, - 0xac, 0x2e, 0xf6, 0x89, 0x93, 0x86, 0x16, 0xdf, 0xf4, 0xae, 0xe7, 0xdf, 0xd9, 0x6f, 0x7a, 0x77, - 0x7b, 0xf1, 0x9e, 0x8a, 0xe1, 0xb9, 0xa8, 0x85, 0x49, 0x1b, 0x09, 0xdd, 0xc7, 0x11, 0x2f, 0xc4, - 0x10, 0x7d, 0xdc, 0x6e, 0x3a, 0x16, 0x57, 0x56, 0x2f, 0xea, 0x33, 0x69, 0x96, 0xb5, 0x9a, 0x1d, - 0x42, 0xb1, 0x3f, 0x88, 0x71, 0x04, 0x3b, 0x5d, 0x93, 0x17, 0x07, 0xa3, 0x8a, 0x1d, 0x7a, 0x0e, - 0x96, 0x86, 0xcb, 0x94, 0x3f, 0x48, 0xda, 0x03, 0x87, 0x50, 0xcf, 0x3f, 0xec, 0x95, 0xb6, 0x96, - 0x86, 0x3d, 0x40, 0x6d, 0xdf, 0x48, 0xc3, 0x1f, 0xa8, 0xbd, 0x17, 0xd2, 0x28, 0xda, 0xcc, 0xce, - 0x84, 0x62, 0x57, 0xec, 0x21, 0x8f, 0x6a, 0xb6, 0x30, 0x45, 0x36, 0xa2, 0x48, 0x92, 0x3e, 0x37, - 0x04, 0x29, 0xbe, 0x87, 0xad, 0x0e, 0xdb, 0x99, 0x48, 0xa2, 0x6b, 0x43, 0x10, 0x29, 0xff, 0x31, - 0x5b, 0x1d, 0x8a, 0xea, 0x4d, 0x6c, 0x12, 0x8a, 0xe8, 0x40, 0x95, 0x24, 0x18, 0x30, 0x7d, 0xcb, - 0x0d, 0xab, 0x1f, 0x68, 0x50, 0x36, 0x70, 0xbd, 0xe3, 0x34, 0xed, 0x5d, 0xc1, 0x6e, 0x8f, 0x71, - 0x33, 0x44, 0xa8, 0xeb, 0x8f, 0x41, 0x31, 0xd0, 0x67, 0x49, 0x5b, 0xd6, 0x56, 0x8a, 0x46, 0x08, - 0xd0, 0x37, 0xa1, 0x18, 0x9c, 0xa0, 0x94, 0x59, 0xd6, 0x56, 0xc6, 0x2f, 0x5f, 0x08, 0x04, 0xe0, - 0x69, 0x40, 0x7a, 0x4c, 0xf7, 0x52, 0xed, 0xb6, 0x94, 0xfa, 0x86, 0x22, 0x30, 0x42, 0xda, 0xea, - 0x22, 0x2c, 0xa4, 0x0a, 0x21, 0xf2, 0x4c, 0xf5, 0x27, 0x1a, 0x2c, 0x5c, 0xc7, 0xc4, 0xf2, 0x9d, - 0x3a, 0xfe, 0x3f, 0x4a, 0xf9, 0xa7, 0x0c, 0x3c, 0x96, 0x2e, 0x86, 0x90, 0x53, 0x3f, 0x0b, 0x05, - 0x72, 0x80, 0x7c, 0xdb, 0x74, 0x6c, 0x29, 0xc6, 0x18, 0xff, 0xde, 0xb6, 0xf5, 0xc7, 0x61, 0x42, - 0xba, 0xb1, 0x89, 0x6c, 0xdb, 0xe7, 0x72, 0x14, 0x8d, 0x71, 0x09, 0x5b, 0xb3, 0x6d, 0x5f, 0x3f, - 0x80, 0x53, 0x16, 0xb2, 0x0e, 0x70, 0xdc, 0xae, 0xa5, 0x2c, 0x97, 0xf8, 0x4a, 0x2d, 0x2d, 0xcb, - 0x46, 0x0c, 0x1b, 0x95, 0x3e, 0x26, 0xdc, 0x2c, 0x67, 0x1a, 0x05, 0xe9, 0x2e, 0x9c, 0x61, 0x8e, - 0x5a, 0x47, 0x24, 0xb9, 0x59, 0xee, 0x01, 0x37, 0x9b, 0x53, 0x7c, 0xa3, 0xd0, 0xea, 0xdf, 0x34, - 0x28, 0x2b, 0xc5, 0x6d, 0x89, 0x13, 0x6f, 0x79, 0x84, 0x2a, 0xf3, 0x31, 0xdd, 0x78, 0x84, 0x72, - 0xc5, 0x60, 0x42, 0xa4, 0xea, 0xc6, 0x19, 0x6c, 0x4d, 0x80, 0x62, 0x9a, 0x65, 0xaa, 0xcb, 0x87, - 0x9a, 0x8d, 0x19, 0x3f, 0x9b, 0x34, 0xfe, 0x77, 0x41, 0x0f, 0xe2, 0x25, 0xf4, 0x82, 0xdc, 0x49, - 0xbd, 0x60, 0xf6, 0x6e, 0x12, 0x54, 0xfd, 0x67, 0xc4, 0x29, 0x63, 0x87, 0x92, 0xce, 0xf0, 0x04, - 0x4c, 0x72, 0x11, 0x89, 0xe9, 0x76, 0x5a, 0x75, 0xec, 0xf3, 0x63, 0xe5, 0x8d, 0x09, 0x01, 0x7c, - 0x8d, 0xc3, 0xf4, 0x05, 0x28, 0xaa, 0x73, 0x91, 0x52, 0x66, 0x39, 0xbb, 0x92, 0x37, 0x0a, 0xf2, - 0x60, 0x44, 0x7f, 0x07, 0xa6, 0x83, 0x83, 0x98, 0xdc, 0x8a, 0xd2, 0x19, 0xbe, 0x99, 0x6a, 0x9f, - 0x00, 0x97, 0x1d, 0xe1, 0x35, 0xf5, 0xb1, 0xc1, 0xe8, 0xb6, 0xdd, 0x7d, 0xcf, 0x98, 0x72, 0x63, - 0x30, 0xbd, 0x04, 0x63, 0x4a, 0xe3, 0x79, 0xe1, 0xac, 0xf2, 0xf3, 0xd5, 0x5c, 0x21, 0x37, 0x93, - 0xaf, 0xd6, 0x60, 0x76, 0xa3, 0xe9, 0x11, 0xbc, 0xc7, 0xe4, 0x51, 0xb6, 0x4a, 0xba, 0x78, 0x68, - 0x88, 0xea, 0x1c, 0xe8, 0x51, 0x7c, 0x19, 0xbb, 0xcf, 0xc0, 0xf4, 0x26, 0xa6, 0xc3, 0xf2, 0x78, - 0x17, 0x66, 0x42, 0x6c, 0xa9, 0xc8, 0x1d, 0x00, 0x89, 0xee, 0xee, 0x7b, 0x9c, 0x60, 0xfc, 0xf2, - 0xb3, 0xc3, 0x78, 0x28, 0x67, 0xc3, 0x8f, 0x2e, 0x94, 0xcc, 0x7e, 0x56, 0x7f, 0x91, 0x81, 0xf9, - 0x1d, 0x87, 0x50, 0x69, 0xb2, 0x9b, 0x2c, 0x17, 0x1e, 0x2f, 0x98, 0xfe, 0x0a, 0x14, 0x2c, 0x44, - 0x71, 0xc3, 0xf3, 0x0f, 0xb9, 0x03, 0x4e, 0x5d, 0xbe, 0x98, 0x2a, 0x02, 0xbf, 0xd4, 0xd8, 0xe6, - 0x8c, 0xf1, 0x86, 0xa4, 0x30, 0x02, 0x5a, 0x7d, 0x0b, 0x80, 0xd7, 0x1a, 0x3e, 0x72, 0x1b, 0xca, - 0x9c, 0x17, 0x52, 0x39, 0xc9, 0xd4, 0xa0, 0x78, 0x19, 0x8c, 0xc0, 0x28, 0x52, 0xf5, 0x53, 0x5f, - 0x04, 0xa8, 0x23, 0x6a, 0x1d, 0x98, 0xc4, 0x79, 0x5f, 0x04, 0x6e, 0xde, 0x28, 0x72, 0xc8, 0x9e, - 0xf3, 0x3e, 0xd6, 0xcf, 0xc3, 0xb4, 0x8b, 0xef, 0x51, 0xb3, 0x8d, 0x1a, 0xd8, 0xa4, 0xde, 0x1d, - 0xec, 0x72, 0x2b, 0x4f, 0x18, 0x93, 0x0c, 0xfc, 0x06, 0x6a, 0xe0, 0x9b, 0x0c, 0xc8, 0x2e, 0x80, - 0x52, 0xaf, 0x3e, 0xa4, 0xea, 0xaf, 0x41, 0x9e, 0x5f, 0x16, 0x25, 0x6d, 0x39, 0xdb, 0x57, 0xd0, - 0x44, 0xa9, 0x27, 0xa4, 0x15, 0x74, 0x69, 0x52, 0x64, 0xd2, 0xa4, 0xf8, 0x30, 0x03, 0x39, 0x46, - 0xc7, 0x72, 0x41, 0xe8, 0xf3, 0x41, 0x1a, 0x1d, 0x0f, 0x60, 0xdb, 0xb6, 0xbe, 0x04, 0xe3, 0x41, - 0x48, 0xcb, 0x74, 0x50, 0x34, 0x40, 0x81, 0xb6, 0x6d, 0xfd, 0x34, 0x8c, 0xfa, 0x1d, 0x97, 0xad, - 0x89, 0x74, 0x90, 0xf7, 0x3b, 0xee, 0xb6, 0xad, 0xcf, 0xc3, 0x18, 0x57, 0xbd, 0x63, 0x73, 0x6d, - 0x65, 0x8d, 0x51, 0xf6, 0xb9, 0x6d, 0xeb, 0x1b, 0xc0, 0xd5, 0x6a, 0xd2, 0xc3, 0x36, 0xe6, 0x4a, - 0x9a, 0xba, 0x7c, 0xfe, 0x78, 0xe3, 0xde, 0x3c, 0x6c, 0x63, 0xa3, 0x40, 0xe5, 0x2f, 0xfd, 0x2a, - 0x14, 0xf7, 0x1d, 0x1f, 0x9b, 0xac, 0xae, 0x2d, 0x8d, 0x72, 0xbb, 0x96, 0x6b, 0xa2, 0xa6, 0xad, - 0xa9, 0x9a, 0xb6, 0x76, 0x53, 0x15, 0xbd, 0xeb, 0xb9, 0xfb, 0x9f, 0x2d, 0x69, 0x46, 0x81, 0x91, - 0x30, 0x20, 0x0b, 0x46, 0x59, 0x3e, 0x96, 0xc6, 0xb8, 0x70, 0xea, 0xb3, 0xfa, 0xa9, 0x06, 0xb3, - 0x06, 0x6e, 0x79, 0x5d, 0xcc, 0x15, 0xfb, 0xd5, 0xb9, 0x6a, 0x44, 0x5f, 0xd9, 0x98, 0xbe, 0xb6, - 0x61, 0xba, 0xeb, 0x10, 0xa7, 0xee, 0x34, 0x1d, 0x7a, 0x28, 0x0e, 0x9c, 0x1b, 0xf2, 0xc0, 0x53, - 0x21, 0x21, 0x5b, 0x62, 0x39, 0x23, 0x7a, 0x36, 0x99, 0x33, 0x7e, 0x95, 0x85, 0xa7, 0x36, 0x31, - 0xed, 0x4d, 0xc3, 0xe8, 0xae, 0x74, 0xd3, 0x5b, 0x97, 0x23, 0x97, 0x47, 0xcc, 0x61, 0x8a, 0xbd, - 0x0e, 0xf3, 0xb0, 0x0a, 0x00, 0xfd, 0x1c, 0x4c, 0x11, 0x8a, 0x7c, 0x6a, 0xe2, 0x2e, 0x76, 0x69, - 0xa8, 0x98, 0x09, 0x0e, 0xbd, 0xc1, 0x80, 0xdb, 0xb6, 0x5e, 0x83, 0x53, 0x51, 0x2c, 0x65, 0x56, - 0xe1, 0x73, 0xb3, 0x21, 0xea, 0x2d, 0xb1, 0xa0, 0x2f, 0xc3, 0x04, 0x76, 0xed, 0x90, 0x67, 0x9e, - 0x23, 0x02, 0x76, 0x6d, 0xc5, 0xf1, 0x22, 0xcc, 0x86, 0x18, 0x8a, 0xdf, 0x28, 0x47, 0x9b, 0x56, - 0x68, 0x8a, 0xdb, 0x45, 0x98, 0x6d, 0xa1, 0x7b, 0x4e, 0xab, 0xd3, 0x12, 0x41, 0xc7, 0xb3, 0xc3, - 0x18, 0xf7, 0x90, 0x69, 0xb9, 0xc0, 0xc2, 0xae, 0x5f, 0x8e, 0x28, 0xa4, 0x44, 0xe7, 0xab, 0xb9, - 0x82, 0x36, 0x93, 0xa9, 0xfe, 0x26, 0x03, 0x2b, 0xc7, 0x5b, 0x45, 0x66, 0x8e, 0x14, 0xd6, 0x5a, - 0x0a, 0x6b, 0xe6, 0x4b, 0xaa, 0x2e, 0xe2, 0xb9, 0x0b, 0x8b, 0x6b, 0x70, 0xfc, 0xf2, 0x72, 0x3f, - 0x0b, 0x5d, 0x47, 0x14, 0xad, 0x37, 0xbd, 0xba, 0x31, 0x25, 0x09, 0xd7, 0x05, 0x9d, 0x7e, 0x1b, - 0xa6, 0xa5, 0x6e, 0x4c, 0xb9, 0x22, 0xf3, 0x6b, 0xed, 0xb8, 0xfc, 0x2a, 0x75, 0x27, 0x4f, 0x61, - 0x4c, 0x75, 0x63, 0xdf, 0xfa, 0x0a, 0xcc, 0x28, 0x19, 0x5d, 0xcf, 0xc6, 0xfc, 0xae, 0xce, 0x2d, - 0x67, 0x57, 0xb2, 0x81, 0x08, 0xaf, 0x79, 0x36, 0xde, 0xb6, 0x49, 0xf5, 0xbe, 0x06, 0x8b, 0x9b, - 0x98, 0x1a, 0x61, 0x4b, 0xb1, 0x2b, 0xda, 0x89, 0xe0, 0x8a, 0xd9, 0x81, 0x51, 0xae, 0x0d, 0x95, - 0x52, 0xd3, 0xaf, 0xf2, 0x48, 0x4f, 0xc2, 0xe4, 0x8b, 0xf0, 0xe3, 0x5a, 0x33, 0x24, 0x0f, 0xe6, - 0xfc, 0xaa, 0xfb, 0x60, 0x0e, 0xaf, 0xaa, 0x4a, 0x09, 0x63, 0x35, 0x40, 0xf5, 0xa3, 0x0c, 0x54, - 0xfa, 0x89, 0x24, 0x6d, 0xf5, 0x7d, 0x98, 0x12, 0xb9, 0x44, 0xf6, 0x3e, 0x4a, 0xb6, 0x5b, 0x43, - 0xa5, 0xfb, 0xc1, 0xcc, 0xc5, 0x25, 0xac, 0xa0, 0x37, 0x5c, 0xea, 0x1f, 0x1a, 0xa2, 0x2e, 0x52, - 0xb0, 0xf2, 0x21, 0xe8, 0xbd, 0x48, 0xfa, 0x0c, 0x64, 0xef, 0xe0, 0x43, 0x99, 0xdb, 0xd8, 0x4f, - 0x7d, 0x17, 0xf2, 0x5d, 0xd4, 0xec, 0x60, 0x19, 0xc2, 0xcf, 0x9f, 0x50, 0x73, 0x81, 0x64, 0x82, - 0xcb, 0x8b, 0x99, 0x2b, 0x5a, 0xf5, 0x2f, 0x1a, 0x9c, 0xdf, 0xc4, 0x34, 0x28, 0x96, 0x06, 0x18, - 0xee, 0x05, 0x38, 0xdb, 0x44, 0x7c, 0xf8, 0x41, 0x7d, 0x07, 0x77, 0x71, 0xa0, 0x2d, 0x95, 0x81, - 0xb3, 0xc6, 0x19, 0x86, 0x60, 0xa8, 0x75, 0xc9, 0x60, 0xdb, 0x0e, 0x48, 0xdb, 0xbe, 0x67, 0x61, - 0x42, 0xe2, 0xa4, 0x99, 0x90, 0xf4, 0x0d, 0xb5, 0x1e, 0x92, 0x26, 0x0d, 0x9c, 0xed, 0x35, 0xf0, - 0x0f, 0x78, 0xae, 0x1c, 0x7c, 0x04, 0x69, 0xe8, 0x3d, 0x28, 0x44, 0x4c, 0xfc, 0x40, 0x4a, 0x0c, - 0x18, 0x55, 0xdf, 0x87, 0xe5, 0x4d, 0x4c, 0xaf, 0xef, 0xbc, 0x39, 0x40, 0x79, 0xb7, 0x64, 0xd5, - 0xc3, 0x2a, 0x38, 0xe5, 0x5d, 0x27, 0xdd, 0x9a, 0xdd, 0x10, 0xa2, 0x98, 0xa3, 0xf2, 0x17, 0xa9, - 0xfe, 0x54, 0x83, 0xc7, 0x07, 0x6c, 0x2e, 0x8f, 0xfd, 0x2e, 0xcc, 0x46, 0xd8, 0x9a, 0xd1, 0x8a, - 0xe6, 0xb9, 0xff, 0x41, 0x08, 0x63, 0xc6, 0x8f, 0x03, 0x48, 0xf5, 0xef, 0x1a, 0xcc, 0x19, 0x18, - 0xb5, 0xdb, 0xcd, 0x43, 0x9e, 0x8c, 0x49, 0xbf, 0xdb, 0x29, 0xd7, 0x7b, 0x3b, 0xa5, 0x77, 0x28, - 0x99, 0x07, 0xef, 0x50, 0xf4, 0x2b, 0x30, 0xca, 0xaf, 0x0c, 0x22, 0xf3, 0xe0, 0xf1, 0x29, 0x55, - 0xe2, 0xcb, 0x84, 0x3f, 0x0f, 0xa7, 0x13, 0x87, 0x92, 0xf7, 0xf3, 0x7f, 0x32, 0x50, 0x5e, 0xb3, - 0xed, 0x3d, 0x8c, 0x7c, 0xeb, 0x60, 0x8d, 0x52, 0xdf, 0xa9, 0x77, 0x68, 0x68, 0xed, 0x1f, 0x6b, - 0x30, 0x4b, 0xf8, 0x9a, 0x89, 0x82, 0x45, 0xa9, 0xf0, 0xb7, 0x86, 0xca, 0x29, 0xfd, 0x99, 0xd7, - 0x92, 0x70, 0x91, 0x52, 0x66, 0x48, 0x02, 0xcc, 0xca, 0x63, 0xc7, 0xb5, 0xf1, 0xbd, 0x68, 0x62, - 0x2c, 0x72, 0x08, 0x0b, 0x15, 0xfd, 0x19, 0xd0, 0xc9, 0x1d, 0xa7, 0x6d, 0x12, 0xeb, 0x00, 0xb7, - 0x90, 0xd9, 0x69, 0xdb, 0xaa, 0xd7, 0x2e, 0x18, 0x33, 0x6c, 0x65, 0x8f, 0x2f, 0xbc, 0xc5, 0xe1, - 0xf1, 0x1e, 0x33, 0x97, 0xe8, 0x31, 0xcb, 0x4d, 0x38, 0x9d, 0x2a, 0x55, 0x34, 0x87, 0x15, 0x45, - 0x0e, 0xbb, 0x1a, 0xcd, 0x61, 0x53, 0x97, 0x9f, 0x8a, 0x5b, 0x24, 0xa8, 0xc8, 0xb6, 0x99, 0x9c, - 0xd8, 0xbe, 0xc5, 0x50, 0x79, 0x9d, 0x19, 0xc9, 0x59, 0x8b, 0xb0, 0x90, 0xaa, 0x1e, 0x69, 0x9b, - 0x9f, 0x6b, 0xb0, 0x28, 0x4a, 0xaa, 0x7e, 0xe6, 0x79, 0xba, 0x9f, 0x75, 0x8a, 0x27, 0x57, 0xe3, - 0xc0, 0xe6, 0xbb, 0xba, 0x0c, 0x95, 0x7e, 0xa2, 0x48, 0x69, 0xbf, 0x07, 0x65, 0xd6, 0xef, 0xf5, - 0x91, 0x34, 0xbe, 0xb9, 0x36, 0x70, 0xf3, 0x4c, 0x72, 0xf3, 0x8f, 0x46, 0x61, 0x21, 0x95, 0xb7, - 0xcc, 0x0a, 0x1f, 0x68, 0x30, 0x6b, 0x75, 0x08, 0xf5, 0x5a, 0xbd, 0x5e, 0x3a, 0xf4, 0xcd, 0xd7, - 0x8f, 0x7b, 0x6d, 0x83, 0x73, 0xee, 0x71, 0x53, 0x2b, 0x01, 0xe6, 0x52, 0x90, 0x43, 0x42, 0x71, - 0x4c, 0x8a, 0xcc, 0x43, 0x92, 0x62, 0x8f, 0x73, 0xee, 0x0d, 0x96, 0x04, 0x58, 0x6f, 0xc0, 0x58, - 0x0b, 0xb5, 0xdb, 0x8e, 0xdb, 0x28, 0x65, 0xf9, 0xd6, 0xbb, 0x0f, 0xbc, 0xf5, 0xae, 0xe0, 0x27, - 0x76, 0x54, 0xdc, 0x75, 0x17, 0x16, 0x90, 0x6d, 0x9b, 0xbd, 0x09, 0x4f, 0x34, 0xf7, 0xa2, 0x8d, - 0x58, 0x8d, 0x47, 0x85, 0x42, 0x4e, 0xcd, 0x7b, 0xfc, 0x46, 0x28, 0x21, 0xdb, 0x4e, 0x5d, 0x61, - 0xa1, 0x99, 0x6a, 0x89, 0x47, 0x12, 0x9a, 0x3c, 0x11, 0xa4, 0x69, 0xfc, 0xd1, 0xec, 0xf6, 0x22, - 0x4c, 0x44, 0x95, 0x9c, 0xb2, 0xc9, 0x5c, 0x74, 0x93, 0x62, 0x34, 0x89, 0xbc, 0x04, 0x67, 0xd4, - 0xec, 0x6a, 0x43, 0xd4, 0x12, 0x91, 0x1b, 0x2b, 0x56, 0x71, 0x68, 0xbd, 0x15, 0xc7, 0x9f, 0xc7, - 0x60, 0xbe, 0x87, 0x5a, 0x46, 0xd5, 0x0f, 0x61, 0x96, 0x74, 0xda, 0x6d, 0xcf, 0xa7, 0xd8, 0x36, - 0xad, 0xa6, 0xc3, 0xaf, 0x1f, 0x11, 0x54, 0xc6, 0x50, 0x3e, 0xd5, 0x87, 0x71, 0x6d, 0x4f, 0x71, - 0xdd, 0x10, 0x4c, 0x95, 0x2b, 0x27, 0xc0, 0xfa, 0x93, 0x30, 0x25, 0xb8, 0x07, 0x8d, 0x92, 0x38, - 0xfc, 0xa4, 0x80, 0xaa, 0x36, 0xe9, 0x36, 0x4c, 0xb7, 0x70, 0xab, 0x8e, 0x7d, 0x72, 0xe0, 0xb4, - 0x85, 0xf3, 0x0d, 0x6a, 0x16, 0xd4, 0x73, 0x46, 0xf7, 0x52, 0x6d, 0x37, 0x20, 0x13, 0x53, 0xb5, - 0x56, 0xec, 0x9b, 0xe5, 0x2c, 0xa5, 0xbf, 0xe0, 0xbe, 0x2f, 0x4a, 0x48, 0x4a, 0x41, 0x97, 0xef, - 0x51, 0x2f, 0xeb, 0x1f, 0x55, 0xbb, 0x21, 0xca, 0x72, 0xcb, 0xeb, 0xb8, 0x94, 0xf7, 0x7b, 0x79, - 0x63, 0x56, 0x2e, 0xf1, 0x8a, 0x79, 0x83, 0x2d, 0xb0, 0x7c, 0x1e, 0x19, 0x7c, 0x99, 0x6c, 0x59, - 0x74, 0x7c, 0x45, 0x63, 0x26, 0xb2, 0xb0, 0xc7, 0xe0, 0xfa, 0x05, 0x98, 0x89, 0xf4, 0xee, 0x02, - 0xb7, 0xc0, 0x71, 0x23, 0x3d, 0xbd, 0x40, 0xdd, 0x84, 0x09, 0xd5, 0x4f, 0x71, 0xfd, 0x14, 0xb9, - 0x7e, 0xce, 0xc5, 0x3d, 0x55, 0x62, 0x44, 0xba, 0x28, 0xae, 0x95, 0xf1, 0x6e, 0xf8, 0xa1, 0xbf, - 0x0c, 0xe5, 0x7d, 0xe4, 0x34, 0xbd, 0x88, 0x51, 0x4c, 0xc7, 0xb5, 0x7c, 0xdc, 0xc2, 0x2e, 0x2d, - 0x01, 0x2f, 0x80, 0x4b, 0x0a, 0x23, 0xe0, 0x22, 0xd7, 0xf5, 0x2b, 0x50, 0x72, 0x5c, 0x87, 0x3a, - 0xa8, 0x69, 0x26, 0xb9, 0x94, 0xc6, 0x45, 0xf1, 0x2c, 0xd7, 0x5f, 0x89, 0xb3, 0xd0, 0xaf, 0xc2, - 0x82, 0x43, 0xcc, 0x46, 0xd3, 0xab, 0xa3, 0xa6, 0x19, 0x96, 0x61, 0xd8, 0x45, 0xf5, 0x26, 0xb6, - 0x4b, 0x13, 0xfc, 0xb2, 0x2f, 0x39, 0x64, 0x93, 0x63, 0x04, 0x15, 0xf4, 0x0d, 0xb1, 0xae, 0xbf, - 0x0d, 0x39, 0x8a, 0x1a, 0xa4, 0x34, 0xc9, 0xbd, 0xf7, 0x95, 0x07, 0xf2, 0xde, 0x9b, 0xa8, 0x21, - 0x3d, 0x96, 0xf3, 0x2c, 0x6f, 0xc0, 0xe9, 0x54, 0x87, 0x3e, 0x49, 0x10, 0x97, 0x9f, 0x87, 0x62, - 0xc0, 0xf7, 0x44, 0xd1, 0xff, 0x36, 0x9c, 0xda, 0x71, 0x08, 0x95, 0x42, 0x06, 0xd7, 0xed, 0x02, - 0x14, 0xc3, 0x91, 0x81, 0x68, 0xbc, 0x0a, 0xed, 0x01, 0xb3, 0x82, 0xd4, 0x49, 0xde, 0x2f, 0x35, - 0x98, 0x8b, 0x33, 0x97, 0x99, 0xe1, 0x75, 0x28, 0x48, 0x2f, 0x1f, 0x5c, 0x7c, 0x27, 0x86, 0xb8, - 0x92, 0xcf, 0xae, 0x7c, 0x5c, 0x33, 0x02, 0x26, 0x43, 0x4b, 0xf4, 0x6b, 0x0d, 0x96, 0xd6, 0x6c, - 0xfb, 0x75, 0x5f, 0x14, 0x73, 0xac, 0x22, 0xa1, 0xc9, 0xac, 0x77, 0x01, 0x66, 0xf6, 0x7d, 0xcf, - 0xa5, 0xd8, 0xb5, 0x13, 0xcf, 0x10, 0xd3, 0x0a, 0xae, 0x9e, 0x22, 0x36, 0x61, 0x59, 0x78, 0x90, - 0xe9, 0x73, 0x4e, 0xa6, 0x8a, 0x67, 0xcb, 0x73, 0x5d, 0x6c, 0x05, 0xd5, 0x7b, 0xc1, 0x58, 0x14, - 0x78, 0xb1, 0x0d, 0x37, 0x02, 0xa4, 0x6a, 0x15, 0x96, 0xfb, 0x8b, 0x25, 0xeb, 0xa3, 0x6b, 0x50, - 0x16, 0x15, 0x54, 0xaa, 0xd4, 0x43, 0xe4, 0x6a, 0xfe, 0xb2, 0x96, 0xc2, 0x20, 0x9c, 0xb4, 0x9d, - 0x8d, 0x58, 0x4b, 0xe6, 0x36, 0xc5, 0x7f, 0x0f, 0x4e, 0xf3, 0xc6, 0xf5, 0x00, 0x23, 0x9f, 0xd6, - 0x31, 0xa2, 0xe6, 0x5d, 0x87, 0x1e, 0x38, 0xae, 0x6c, 0x1e, 0xcf, 0xf6, 0x8c, 0xfb, 0xae, 0xcb, - 0x37, 0xfb, 0xf5, 0xdc, 0x87, 0x9f, 0x2d, 0x69, 0xc6, 0x29, 0x46, 0xbd, 0xa5, 0x88, 0x6f, 0x73, - 0x5a, 0x7d, 0x09, 0xc6, 0xfd, 0xb6, 0x15, 0x68, 0x59, 0x8e, 0x6f, 0xfd, 0xb6, 0xa5, 0x14, 0x3c, - 0x0f, 0x63, 0xfc, 0x39, 0x28, 0x98, 0xdf, 0x8e, 0xb2, 0x4f, 0x3e, 0xa7, 0xcd, 0xf9, 0x5e, 0x53, - 0x14, 0xe0, 0x53, 0xd1, 0x2a, 0x21, 0x6d, 0xa8, 0x19, 0x3b, 0x91, 0xe1, 0x35, 0xb1, 0xc1, 0x89, - 0xf5, 0x77, 0xa0, 0x4c, 0x30, 0xe1, 0x39, 0x88, 0x8f, 0xe2, 0xb0, 0x6d, 0xa2, 0x7d, 0xa6, 0x41, - 0x3e, 0xc7, 0xcc, 0x0f, 0x39, 0xc7, 0x9c, 0x97, 0x3c, 0xf6, 0x04, 0x8b, 0x35, 0xc6, 0x81, 0xcf, - 0x71, 0x63, 0x31, 0x34, 0x7a, 0x7c, 0x0c, 0x8d, 0xa5, 0x79, 0xec, 0x47, 0x1a, 0x94, 0xd3, 0xac, - 0x22, 0x23, 0xe9, 0x26, 0x4c, 0x21, 0x8b, 0x3a, 0x5d, 0x6c, 0xca, 0xbb, 0x47, 0xc6, 0xd3, 0xb3, - 0xc7, 0x5d, 0x5d, 0x71, 0x9d, 0x4c, 0x0a, 0x26, 0x92, 0xfb, 0xd0, 0xe1, 0xf4, 0x87, 0x0c, 0x9c, - 0x16, 0x3d, 0x77, 0xb2, 0xcb, 0xbf, 0x01, 0x39, 0x3e, 0x42, 0xd7, 0xb8, 0x7d, 0x2e, 0x0d, 0xb6, - 0xcf, 0x75, 0x8c, 0xec, 0x1d, 0x4c, 0x29, 0xf6, 0xdf, 0xec, 0x60, 0x59, 0xdc, 0x70, 0xf2, 0x41, - 0x6f, 0x7d, 0xec, 0x72, 0xf7, 0x3a, 0xbe, 0x15, 0x04, 0x9d, 0xf4, 0x90, 0x49, 0x01, 0x95, 0xe7, - 0xd3, 0x9f, 0x67, 0x57, 0x06, 0xc3, 0x60, 0x3a, 0x62, 0x21, 0x1d, 0x99, 0xb7, 0x88, 0x31, 0xec, - 0xe9, 0x60, 0xfd, 0x86, 0x1b, 0x19, 0xb7, 0xa4, 0x0e, 0x4f, 0xf3, 0x43, 0x0f, 0x4f, 0x47, 0xd3, - 0xf4, 0xf5, 0x49, 0x06, 0xce, 0x24, 0xf5, 0x25, 0x0d, 0xf9, 0x90, 0x14, 0x96, 0x3a, 0xdf, 0xc8, - 0x3c, 0xc4, 0xf9, 0x46, 0xda, 0x59, 0xb3, 0x69, 0xd3, 0xdc, 0x16, 0x9c, 0xe9, 0x91, 0x44, 0x55, - 0xf6, 0x0f, 0x34, 0xf3, 0x99, 0x4b, 0x8a, 0xc4, 0xdf, 0xf2, 0xfe, 0xa1, 0xc1, 0xfc, 0x1b, 0x1d, - 0xbf, 0x81, 0xbf, 0x8e, 0xce, 0x58, 0x2d, 0x43, 0xa9, 0xf7, 0x70, 0x32, 0x6f, 0xff, 0x31, 0x03, - 0xf3, 0xbb, 0xf8, 0x6b, 0x7a, 0xf2, 0x47, 0x12, 0x86, 0xeb, 0x50, 0xea, 0x55, 0xd8, 0xc9, 0x1e, - 0x2b, 0x58, 0x6d, 0xb3, 0x60, 0xe0, 0x7d, 0x1f, 0x93, 0x03, 0xd5, 0x6e, 0xc6, 0xde, 0x8f, 0x93, - 0xd3, 0xbe, 0xec, 0xa3, 0x7b, 0x8b, 0x92, 0x23, 0xba, 0x0a, 0x3c, 0x96, 0x2e, 0x50, 0xe8, 0x27, - 0x8b, 0x06, 0x26, 0xd8, 0xb5, 0x13, 0x51, 0xd5, 0x57, 0xe6, 0x87, 0xf8, 0xe0, 0xfa, 0x24, 0x4c, - 0xc5, 0x4b, 0x24, 0xd9, 0x0e, 0x4d, 0xfa, 0xd1, 0x5a, 0x24, 0xe5, 0x55, 0x2d, 0x9f, 0xf2, 0xaa, - 0xf6, 0x04, 0x4c, 0x0a, 0xac, 0xf8, 0xfb, 0x97, 0x40, 0xea, 0xf7, 0x94, 0x36, 0xd6, 0xf3, 0x94, - 0xb6, 0x04, 0xe3, 0x0c, 0x43, 0x31, 0x29, 0x04, 0x08, 0x92, 0x85, 0x98, 0x59, 0xa5, 0x2b, 0x4c, - 0xea, 0xf4, 0xf7, 0x19, 0x28, 0x6d, 0x62, 0xca, 0x80, 0x22, 0x66, 0xa2, 0xea, 0x1c, 0xfc, 0x57, - 0xa4, 0x45, 0x39, 0x07, 0xe7, 0xff, 0x34, 0x54, 0x23, 0x2b, 0xaa, 0x18, 0xe9, 0x3b, 0x30, 0x1d, - 0x2e, 0x8b, 0xe7, 0xe8, 0x2c, 0x0f, 0xe2, 0x73, 0x7d, 0xc6, 0x03, 0xa1, 0x0c, 0x2c, 0x6e, 0x27, - 0x69, 0xf4, 0x53, 0xaf, 0xc0, 0x78, 0xcb, 0x11, 0x49, 0x38, 0x8c, 0xb8, 0x62, 0xcb, 0x11, 0x59, - 0xd5, 0xe6, 0xeb, 0xe8, 0x5e, 0xb0, 0x9e, 0x97, 0xeb, 0xe8, 0x9e, 0x5c, 0x8f, 0xff, 0xc1, 0x60, - 0x74, 0x88, 0x3f, 0x18, 0xa4, 0x16, 0x33, 0xf7, 0x35, 0x38, 0x9b, 0xa2, 0x2e, 0x19, 0x7a, 0xdf, - 0x89, 0xff, 0xc3, 0xe0, 0x5b, 0xc3, 0xb4, 0x04, 0x6b, 0xcd, 0xa6, 0x67, 0x21, 0x8a, 0xed, 0xe0, - 0x7a, 0x38, 0xe1, 0xbf, 0x0d, 0x7e, 0xa6, 0x41, 0xe5, 0x3a, 0x6e, 0x62, 0x8a, 0x7b, 0x43, 0xec, - 0xab, 0xfd, 0x4b, 0xd9, 0x55, 0x58, 0xea, 0x2b, 0x88, 0xd4, 0x50, 0x19, 0x0a, 0x77, 0x91, 0xef, - 0x3a, 0x6e, 0x43, 0x4d, 0x69, 0x83, 0xef, 0xea, 0xef, 0x34, 0x58, 0xd9, 0xa3, 0x3e, 0x46, 0x2d, - 0x45, 0x3f, 0xe0, 0x11, 0xa6, 0x0d, 0x67, 0xc8, 0xa1, 0x6b, 0x99, 0xd1, 0x1b, 0x5a, 0xfc, 0xeb, - 0x4b, 0x1b, 0xf0, 0xaf, 0xaf, 0xc4, 0xe5, 0xbc, 0x77, 0xe8, 0x5a, 0x91, 0x3d, 0xf8, 0xff, 0xbb, - 0xb6, 0x46, 0x8c, 0x39, 0x92, 0x02, 0x5f, 0x9f, 0x00, 0x08, 0x87, 0x9a, 0xd5, 0x0f, 0x35, 0xb8, - 0x30, 0x84, 0xb0, 0xf2, 0xd8, 0xef, 0xf4, 0xbc, 0x55, 0x5d, 0x1b, 0x46, 0xbe, 0x01, 0xac, 0xb7, - 0x46, 0xc2, 0x57, 0xab, 0x84, 0x68, 0x6f, 0xc1, 0xa9, 0xf8, 0x1b, 0x9a, 0xd0, 0x58, 0xa5, 0xc7, - 0x09, 0xb6, 0x46, 0xa2, 0x6e, 0x30, 0x03, 0x19, 0x95, 0x0f, 0xb7, 0x46, 0x8c, 0x8c, 0x63, 0x27, - 0xd8, 0x7e, 0x9a, 0x85, 0xb9, 0x38, 0x5f, 0x79, 0xb8, 0x97, 0x21, 0x17, 0x19, 0x39, 0xad, 0xc4, - 0x5d, 0x27, 0xfd, 0x7f, 0x5c, 0xdc, 0xcf, 0x39, 0x95, 0xbe, 0x0e, 0xa3, 0x96, 0xe7, 0xee, 0x3b, - 0x0d, 0x39, 0x2f, 0xbd, 0x38, 0x0c, 0xfd, 0x06, 0xa7, 0x30, 0x24, 0xa5, 0xbe, 0x0f, 0x7a, 0xd4, - 0x0f, 0x24, 0xbf, 0x7c, 0xf2, 0x51, 0x30, 0x45, 0xc3, 0x69, 0x2f, 0x8d, 0x92, 0x79, 0xb4, 0x0c, - 0x15, 0x20, 0x76, 0x07, 0x08, 0xde, 0x89, 0xbc, 0x3d, 0x29, 0xa0, 0x2a, 0x71, 0xb3, 0xfe, 0x3b, - 0x39, 0xdc, 0x11, 0xc9, 0x7b, 0x3a, 0x31, 0x18, 0xd2, 0x6f, 0x45, 0x50, 0xd5, 0x3b, 0x7f, 0x81, - 0x27, 0x8f, 0xa7, 0x07, 0xca, 0xad, 0xa6, 0x43, 0xcc, 0x35, 0x3b, 0x24, 0xe4, 0xab, 0x5e, 0xf9, - 0x6b, 0x70, 0x2a, 0x65, 0x5a, 0xc4, 0xa7, 0x5e, 0x05, 0x63, 0xb6, 0x67, 0x4a, 0xb4, 0xde, 0xfc, - 0xf8, 0xf3, 0xca, 0xc8, 0x27, 0x9f, 0x57, 0x46, 0xbe, 0xfc, 0xbc, 0xa2, 0xfd, 0xe8, 0xa8, 0xa2, - 0xfd, 0xf6, 0xa8, 0xa2, 0xfd, 0xf5, 0xa8, 0xa2, 0x7d, 0x7c, 0x54, 0xd1, 0xfe, 0x75, 0x54, 0xd1, - 0xfe, 0x7d, 0x54, 0x19, 0xf9, 0xf2, 0xa8, 0xa2, 0xdd, 0xff, 0xa2, 0x32, 0xf2, 0xf1, 0x17, 0x95, - 0x91, 0x4f, 0xbe, 0xa8, 0x8c, 0xbc, 0xfd, 0xed, 0x86, 0x17, 0x4a, 0xe9, 0x78, 0x03, 0xfe, 0x6e, - 0xff, 0x52, 0xf4, 0xbb, 0x3e, 0xca, 0x5b, 0xd1, 0xe7, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xa2, - 0x60, 0x38, 0xa5, 0xa9, 0x2f, 0x00, 0x00, + 0x7a, 0x2c, 0x90, 0x5b, 0x8f, 0x41, 0x7b, 0x09, 0x52, 0xa0, 0x69, 0x94, 0x4b, 0x8f, 0x39, 0xf7, + 0x54, 0xcc, 0x6f, 0x7f, 0x1c, 0x52, 0x54, 0x2d, 0x27, 0x40, 0x6e, 0xda, 0x37, 0xef, 0xbd, 0x79, + 0xf3, 0x7e, 0xf3, 0xde, 0x1b, 0x0a, 0x5e, 0x20, 0xa8, 0xd5, 0xf6, 0x03, 0xab, 0xb9, 0x8a, 0x51, + 0xd0, 0x45, 0xc1, 0xaa, 0xd5, 0x76, 0x57, 0x2d, 0xa7, 0xe5, 0x7a, 0xf4, 0xdb, 0xb5, 0xd1, 0x6a, + 0xf7, 0xc2, 0x6a, 0x80, 0xde, 0xed, 0x20, 0x4c, 0xcc, 0x00, 0xe1, 0xb6, 0xef, 0x61, 0x54, 0x6b, + 0x07, 0x3e, 0xf1, 0xf5, 0x27, 0x24, 0x6d, 0x8d, 0xd3, 0xd6, 0xac, 0xb6, 0x5b, 0x8b, 0xd3, 0xd6, + 0xba, 0x17, 0xca, 0x4b, 0x0d, 0xdf, 0x6f, 0x34, 0xd1, 0x2a, 0x23, 0xa9, 0x77, 0x76, 0x57, 0x89, + 0xdb, 0x42, 0x98, 0x58, 0xad, 0x36, 0xe7, 0x52, 0xae, 0xa4, 0x11, 0x9c, 0x4e, 0x60, 0x11, 0xd7, + 0xf7, 0xc4, 0xfa, 0xe3, 0x0e, 0x6a, 0x23, 0xcf, 0x41, 0x9e, 0xed, 0x22, 0xbc, 0xda, 0xf0, 0x1b, + 0x3e, 0x83, 0xb3, 0xbf, 0x04, 0x4a, 0x35, 0x3c, 0x04, 0x95, 0x1e, 0x79, 0x9d, 0x16, 0xa6, 0x62, + 0xdb, 0x7e, 0xab, 0x15, 0xb2, 0x39, 0xab, 0xc6, 0x21, 0x16, 0xbe, 0x6b, 0xbe, 0xdb, 0x41, 0x1d, + 0x71, 0xa8, 0xf2, 0x99, 0x04, 0x1e, 0x67, 0x41, 0x11, 0x5b, 0x08, 0x63, 0xab, 0x21, 0xb1, 0x9e, + 0x4c, 0x60, 0x75, 0x51, 0x80, 0x5d, 0x15, 0x5a, 0x72, 0xd3, 0x7b, 0x7e, 0x70, 0x77, 0xb7, 0xe9, + 0xdf, 0xeb, 0xc5, 0x7b, 0x2a, 0x81, 0xe7, 0x59, 0x2d, 0x84, 0xdb, 0x16, 0xd7, 0x7d, 0x12, 0xf1, + 0x5c, 0x02, 0x31, 0x40, 0xed, 0xa6, 0x6b, 0x33, 0x65, 0xf5, 0xa2, 0x3e, 0xa3, 0xb2, 0xac, 0xdd, + 0xec, 0x60, 0x82, 0x82, 0x41, 0x8c, 0x63, 0xd8, 0x6a, 0x4d, 0x9e, 0x1f, 0x8c, 0xca, 0x77, 0xe8, + 0x39, 0x98, 0x0a, 0x97, 0x2a, 0x7f, 0x90, 0xb4, 0x7b, 0x2e, 0x26, 0x7e, 0xb0, 0xdf, 0x2b, 0x6d, + 0x4d, 0x85, 0x3d, 0x40, 0x6d, 0xdf, 0x52, 0xe1, 0x0f, 0xd4, 0xde, 0xf3, 0x2a, 0x8a, 0x36, 0xb5, + 0x33, 0x26, 0xc8, 0xe3, 0x7b, 0x88, 0xa3, 0x9a, 0x2d, 0x44, 0x2c, 0xc7, 0x22, 0x96, 0x20, 0x7d, + 0x6e, 0x08, 0x52, 0x74, 0x1f, 0xd9, 0x1d, 0xba, 0x33, 0x16, 0x44, 0x57, 0x87, 0x20, 0x92, 0xfe, + 0x63, 0xb6, 0x3a, 0xc4, 0xaa, 0x37, 0x91, 0x89, 0x89, 0x45, 0x06, 0xaa, 0x24, 0xc5, 0x80, 0xea, + 0x5b, 0x6c, 0x58, 0x7d, 0x5f, 0x83, 0xb2, 0x81, 0xea, 0x1d, 0xb7, 0xe9, 0x6c, 0x73, 0x76, 0x3b, + 0x94, 0x9b, 0xc1, 0x43, 0x5d, 0x7f, 0x0c, 0x8a, 0xa1, 0x3e, 0x4b, 0xda, 0xb2, 0xb6, 0x52, 0x34, + 0x22, 0x80, 0xbe, 0x01, 0xc5, 0xf0, 0x04, 0xa5, 0xcc, 0xb2, 0xb6, 0x32, 0x7e, 0xf1, 0x5c, 0x28, + 0x00, 0x4b, 0x03, 0xc2, 0x63, 0xba, 0x17, 0x6a, 0x77, 0x84, 0xd4, 0x37, 0x24, 0x81, 0x11, 0xd1, + 0x56, 0x17, 0x61, 0x41, 0x29, 0x04, 0xcf, 0x33, 0xd5, 0x8f, 0x32, 0x50, 0xd9, 0xa2, 0x5c, 0x49, + 0x2f, 0x97, 0xaf, 0x54, 0x50, 0x7d, 0x0b, 0xa6, 0x85, 0x37, 0x9a, 0x75, 0x8b, 0xd8, 0x7b, 0x08, + 0x97, 0xb2, 0xcb, 0xd9, 0x95, 0xf1, 0x8b, 0xcb, 0xfd, 0xd8, 0x5d, 0xb7, 0x88, 0xb5, 0xd6, 0xf4, + 0xeb, 0xc6, 0x94, 0x20, 0x5c, 0xe3, 0x74, 0xfa, 0x1d, 0x98, 0x16, 0x09, 0xc3, 0x14, 0x2b, 0xa5, + 0x1c, 0x93, 0xac, 0x56, 0x53, 0x25, 0x54, 0x81, 0x43, 0x59, 0xde, 0xe6, 0x64, 0x9b, 0x1c, 0x62, + 0x4c, 0x75, 0x13, 0xdf, 0xfa, 0x1c, 0xe4, 0x89, 0x7f, 0x17, 0x79, 0xa5, 0xfc, 0xb2, 0xb6, 0x32, + 0x61, 0xf0, 0x8f, 0xea, 0x25, 0x58, 0xea, 0xab, 0x42, 0xae, 0xe6, 0x88, 0x50, 0x8b, 0x13, 0xfe, + 0x4c, 0x83, 0x85, 0xeb, 0x08, 0xdb, 0x81, 0x5b, 0x47, 0x5f, 0xa3, 0x8b, 0xfc, 0x25, 0x03, 0x8f, + 0xa9, 0xc5, 0x10, 0xd2, 0x9f, 0x86, 0x02, 0xde, 0xb3, 0x02, 0xc7, 0x74, 0x1d, 0x21, 0xc6, 0x18, + 0xfb, 0xde, 0x72, 0xf4, 0xc7, 0x61, 0x42, 0x5a, 0xcd, 0x72, 0x9c, 0x80, 0xc9, 0x51, 0x34, 0xc6, + 0x05, 0xec, 0x9a, 0xe3, 0x04, 0xfa, 0x1e, 0x9c, 0xb0, 0x2d, 0x7b, 0x0f, 0x25, 0x83, 0xaa, 0x94, + 0x65, 0x12, 0x5f, 0x56, 0x5a, 0x24, 0x16, 0x55, 0x71, 0xe9, 0x13, 0xc2, 0xcd, 0x32, 0xa6, 0x71, + 0x90, 0xee, 0xc1, 0x29, 0x9a, 0x25, 0xea, 0x16, 0x4e, 0x6f, 0x96, 0x7b, 0xc8, 0xcd, 0xe6, 0x24, + 0xdf, 0x38, 0xb4, 0xfa, 0x77, 0x0d, 0xca, 0x52, 0x71, 0xc2, 0x45, 0x36, 0x7d, 0x4c, 0xa4, 0xf9, + 0xa8, 0x6e, 0x7c, 0x4c, 0x98, 0x62, 0x10, 0xc6, 0x42, 0x75, 0xe3, 0x14, 0x76, 0x8d, 0x83, 0x12, + 0x9a, 0xa5, 0xaa, 0xcb, 0x47, 0x9a, 0x4d, 0x18, 0x3f, 0x9b, 0x36, 0xfe, 0xf7, 0x41, 0x0f, 0x93, + 0x55, 0xe4, 0x05, 0xb9, 0xa3, 0x7a, 0xc1, 0xec, 0xbd, 0x34, 0xa8, 0xfa, 0xaf, 0x98, 0x53, 0x26, + 0x0e, 0x25, 0x9c, 0xe1, 0x09, 0x98, 0x64, 0x22, 0x62, 0xd3, 0xeb, 0xb4, 0xea, 0x28, 0x60, 0xc7, + 0xca, 0x1b, 0x13, 0x1c, 0xf8, 0x2a, 0x83, 0xe9, 0x0b, 0x50, 0x94, 0xe7, 0xc2, 0xa5, 0xcc, 0x72, + 0x76, 0x25, 0x6f, 0x14, 0xc4, 0xc1, 0xb0, 0xfe, 0x36, 0x4c, 0x87, 0x07, 0x31, 0x99, 0x15, 0x85, + 0x33, 0x7c, 0x5b, 0x69, 0x9f, 0x10, 0x97, 0x1e, 0xe1, 0x55, 0xf9, 0xb1, 0x4e, 0xe9, 0xb6, 0xbc, + 0x5d, 0xdf, 0x98, 0xf2, 0x12, 0x30, 0xbd, 0x04, 0x63, 0x52, 0xe3, 0x79, 0xee, 0xac, 0xe2, 0xf3, + 0x95, 0x5c, 0x21, 0x37, 0x93, 0xaf, 0xd6, 0x60, 0x76, 0xbd, 0xe9, 0x63, 0xb4, 0x43, 0xe5, 0x91, + 0xb6, 0x4a, 0xbb, 0x78, 0x64, 0x88, 0xea, 0x1c, 0xe8, 0x71, 0x7c, 0x91, 0x38, 0x9f, 0x81, 0xe9, + 0x0d, 0x44, 0x86, 0xe5, 0xf1, 0x0e, 0xcc, 0x44, 0xd8, 0x42, 0x91, 0x37, 0x01, 0x04, 0xba, 0xb7, + 0xeb, 0x33, 0x82, 0xf1, 0x8b, 0xcf, 0x0e, 0xe3, 0xa1, 0x8c, 0x0d, 0x3b, 0x3a, 0x57, 0x32, 0xfd, + 0xb3, 0xfa, 0xab, 0x0c, 0xcc, 0xdf, 0x74, 0x31, 0x11, 0x26, 0xbb, 0x45, 0x2f, 0xa2, 0xc3, 0x05, + 0xd3, 0x5f, 0x86, 0x82, 0x6d, 0x11, 0xd4, 0xa0, 0x39, 0x92, 0x3a, 0xe0, 0xd4, 0xc5, 0xf3, 0x4a, + 0x11, 0x58, 0x45, 0x41, 0x37, 0xa7, 0x8c, 0xd7, 0x05, 0x85, 0x11, 0xd2, 0xea, 0x9b, 0x00, 0xac, + 0xd0, 0x0b, 0x2c, 0xaf, 0x21, 0xcd, 0x79, 0xee, 0xb0, 0x6c, 0x4b, 0x79, 0x19, 0x94, 0xc0, 0x28, + 0x12, 0xf9, 0xa7, 0xbe, 0x08, 0xc0, 0xf2, 0xbf, 0x89, 0xdd, 0xf7, 0x78, 0xe0, 0xe6, 0x8d, 0x22, + 0x83, 0xec, 0xb8, 0xef, 0x21, 0xfd, 0x2c, 0x4c, 0x7b, 0xe8, 0x3e, 0x31, 0xdb, 0x56, 0x03, 0x99, + 0xf1, 0x64, 0x3c, 0x49, 0xc1, 0xaf, 0x5b, 0x0d, 0x74, 0x8b, 0xe5, 0xd6, 0xf7, 0x35, 0x28, 0xf5, + 0xea, 0x43, 0xa8, 0xfe, 0x2a, 0xe4, 0xd9, 0x4d, 0x5d, 0xd2, 0xd8, 0x0d, 0xa3, 0x16, 0x34, 0x55, + 0x67, 0x73, 0x69, 0x39, 0x9d, 0x4a, 0x8a, 0x8c, 0x4a, 0x8a, 0x0f, 0x32, 0x90, 0xa3, 0x74, 0x34, + 0x17, 0x44, 0x3e, 0x1f, 0xa6, 0xd1, 0xf1, 0x10, 0xb6, 0xe5, 0xe8, 0x4b, 0x30, 0x1e, 0x86, 0xb4, + 0x48, 0x07, 0x45, 0x03, 0x24, 0x68, 0xcb, 0xd1, 0x4f, 0xc2, 0x68, 0xd0, 0xf1, 0xe8, 0x1a, 0x4f, + 0x07, 0xf9, 0xa0, 0xe3, 0x6d, 0x39, 0xfa, 0x3c, 0x8c, 0x31, 0xd5, 0xbb, 0x0e, 0xd3, 0x56, 0xd6, + 0x18, 0xa5, 0x9f, 0x5b, 0x8e, 0xbe, 0x0e, 0x4c, 0xad, 0x26, 0xd9, 0x6f, 0x23, 0xa6, 0xa4, 0xa9, + 0x8b, 0x67, 0x0f, 0x37, 0xee, 0xad, 0xfd, 0x36, 0x32, 0x0a, 0x44, 0xfc, 0xa5, 0x5f, 0x81, 0xe2, + 0xae, 0x1b, 0x20, 0x93, 0x36, 0x15, 0xa5, 0x51, 0x66, 0xd7, 0x72, 0x8d, 0x37, 0x14, 0x35, 0xd9, + 0x50, 0xd4, 0x6e, 0xc9, 0x8e, 0x63, 0x2d, 0xf7, 0xe0, 0xb3, 0x25, 0xcd, 0x28, 0x50, 0x12, 0x0a, + 0xa4, 0xc1, 0x28, 0xee, 0xd0, 0xd2, 0x18, 0x13, 0x4e, 0x7e, 0x56, 0x3f, 0xd5, 0x60, 0xd6, 0x40, + 0x2d, 0xbf, 0x8b, 0x98, 0x62, 0xbf, 0x3a, 0x57, 0x8d, 0xe9, 0x2b, 0x9b, 0xd0, 0xd7, 0x16, 0x4c, + 0x77, 0x5d, 0xec, 0xd6, 0xdd, 0xa6, 0x4b, 0xf6, 0xf9, 0x81, 0x73, 0x43, 0x1e, 0x78, 0x2a, 0x22, + 0xa4, 0x4b, 0x34, 0x67, 0xc4, 0xcf, 0x26, 0x72, 0xc6, 0x6f, 0xb2, 0xf0, 0xd4, 0x06, 0x52, 0x94, + 0x09, 0xd6, 0x3d, 0xe1, 0xa6, 0xb7, 0x2f, 0xc6, 0x2e, 0x8f, 0x84, 0xc3, 0x14, 0x7b, 0x1d, 0xe6, + 0xd8, 0x4a, 0xaf, 0x33, 0x30, 0x85, 0x89, 0x15, 0x10, 0x13, 0x75, 0x91, 0x47, 0x22, 0xc5, 0x4c, + 0x30, 0xe8, 0x0d, 0x0a, 0xdc, 0x72, 0xf4, 0x1a, 0x9c, 0x88, 0x63, 0x49, 0xb3, 0x72, 0x9f, 0x9b, + 0x8d, 0x50, 0x45, 0x0d, 0xa5, 0x2f, 0xc3, 0x04, 0xf2, 0x9c, 0x88, 0x67, 0x9e, 0x21, 0x02, 0xf2, + 0x1c, 0xc9, 0xf1, 0x3c, 0xcc, 0x46, 0x18, 0x92, 0xdf, 0x28, 0x43, 0x9b, 0x96, 0x68, 0x92, 0xdb, + 0x79, 0x98, 0x6d, 0x59, 0xf7, 0xdd, 0x56, 0xa7, 0xc5, 0x83, 0x8e, 0x65, 0x87, 0x31, 0xe6, 0x21, + 0xd3, 0x62, 0x81, 0x86, 0x5d, 0xbf, 0x1c, 0x51, 0x50, 0x44, 0xe7, 0x2b, 0xb9, 0x82, 0x36, 0x93, + 0xa9, 0xfe, 0x2e, 0x03, 0x2b, 0x87, 0x5b, 0x45, 0x64, 0x0e, 0x05, 0x6b, 0x4d, 0xc1, 0x5a, 0x55, + 0xcd, 0x66, 0x8e, 0xaf, 0x9a, 0xcd, 0x1e, 0x4b, 0x35, 0xbb, 0x02, 0x33, 0x52, 0x46, 0xcf, 0x77, + 0x10, 0xbb, 0xab, 0x73, 0xcb, 0xd9, 0x95, 0x6c, 0x28, 0xc2, 0xab, 0xbe, 0x83, 0xb6, 0x1c, 0x5c, + 0x7d, 0xa0, 0xc1, 0xe2, 0x06, 0x22, 0x46, 0xd4, 0xcf, 0x6d, 0xf3, 0x5e, 0x2e, 0xbc, 0x62, 0x6e, + 0xc2, 0x28, 0xd3, 0x86, 0x4c, 0xa9, 0xea, 0xab, 0x3c, 0xd6, 0x10, 0x52, 0xf9, 0x62, 0xfc, 0x98, + 0xd6, 0x0c, 0xc1, 0x83, 0x3a, 0xbf, 0x6c, 0xfd, 0xa8, 0xc3, 0xcb, 0xaa, 0x52, 0xc0, 0x68, 0x0d, + 0x50, 0xfd, 0x30, 0x03, 0x95, 0x7e, 0x22, 0x09, 0x5b, 0xfd, 0x10, 0xa6, 0x78, 0x2e, 0x11, 0x8d, + 0xa7, 0x94, 0xed, 0xf6, 0x50, 0xe9, 0x7e, 0x30, 0x73, 0x7e, 0x09, 0x4b, 0xe8, 0x0d, 0x8f, 0x04, + 0xfb, 0x06, 0xaf, 0x8b, 0x24, 0xac, 0xbc, 0x0f, 0x7a, 0x2f, 0x92, 0x3e, 0x03, 0xd9, 0xbb, 0x68, + 0x5f, 0xe4, 0x36, 0xfa, 0xa7, 0xbe, 0x0d, 0xf9, 0xae, 0xd5, 0xec, 0x20, 0x11, 0xc2, 0x97, 0x8e, + 0xa8, 0xb9, 0x50, 0x32, 0xce, 0xe5, 0x85, 0xcc, 0x65, 0xad, 0xfa, 0x91, 0x06, 0x67, 0x37, 0x10, + 0x09, 0x8b, 0xa5, 0x01, 0x86, 0x7b, 0x1e, 0x4e, 0x37, 0x2d, 0x36, 0x79, 0x22, 0x81, 0x8b, 0xba, + 0x28, 0xd4, 0x96, 0xcc, 0xc0, 0x59, 0xe3, 0x14, 0x45, 0x30, 0xe4, 0xba, 0x60, 0xb0, 0xe5, 0x84, + 0xa4, 0xed, 0xc0, 0xb7, 0x11, 0xc6, 0x49, 0xd2, 0x4c, 0x44, 0xfa, 0xba, 0x5c, 0x8f, 0x48, 0xd3, + 0x06, 0xce, 0xf6, 0x1a, 0xf8, 0x47, 0x2c, 0x57, 0x0e, 0x3e, 0x82, 0x30, 0xf4, 0x0e, 0x14, 0x62, + 0x26, 0x7e, 0x28, 0x25, 0x86, 0x8c, 0xaa, 0xef, 0xc1, 0xf2, 0x06, 0x22, 0xd7, 0x6f, 0xbe, 0x31, + 0x40, 0x79, 0xb7, 0x45, 0xd5, 0x43, 0x2b, 0x38, 0xe9, 0x5d, 0x47, 0xdd, 0x9a, 0xde, 0x10, 0xbc, + 0x98, 0x23, 0xe2, 0x2f, 0x5c, 0xfd, 0xb9, 0x06, 0x8f, 0x0f, 0xd8, 0x5c, 0x1c, 0xfb, 0x1d, 0x98, + 0x8d, 0xb1, 0x35, 0xe3, 0x15, 0xcd, 0x73, 0xff, 0x87, 0x10, 0xc6, 0x4c, 0x90, 0x04, 0xe0, 0xea, + 0x3f, 0x34, 0x98, 0x33, 0x90, 0xd5, 0x6e, 0x37, 0xf7, 0x59, 0x32, 0xc6, 0xfd, 0x6e, 0xa7, 0x5c, + 0xef, 0xed, 0xa4, 0xee, 0x50, 0x32, 0x0f, 0xdf, 0xa1, 0xe8, 0x97, 0x61, 0x94, 0x5d, 0x19, 0x58, + 0xe4, 0xc1, 0xc3, 0x53, 0xaa, 0xc0, 0x17, 0x09, 0x7f, 0x1e, 0x4e, 0xa6, 0x0e, 0x25, 0xee, 0xe7, + 0xff, 0x66, 0xa0, 0x7c, 0xcd, 0x71, 0x76, 0x90, 0x15, 0xd8, 0x7b, 0xd7, 0x08, 0x09, 0xdc, 0x7a, + 0x87, 0x44, 0xd6, 0xfe, 0xa9, 0x06, 0xb3, 0x98, 0xad, 0x99, 0x56, 0xb8, 0x28, 0x14, 0xfe, 0xe6, + 0x50, 0x39, 0xa5, 0x3f, 0xf3, 0x5a, 0x1a, 0xce, 0x53, 0xca, 0x0c, 0x4e, 0x81, 0x69, 0x79, 0xec, + 0x7a, 0x0e, 0xba, 0x1f, 0x4f, 0x8c, 0x45, 0x06, 0xa1, 0xa1, 0xa2, 0x3f, 0x03, 0x3a, 0xbe, 0xeb, + 0xb6, 0x4d, 0x6c, 0xef, 0xa1, 0x96, 0x65, 0x76, 0xda, 0x8e, 0xec, 0xb5, 0x0b, 0xc6, 0x0c, 0x5d, + 0xd9, 0x61, 0x0b, 0x6f, 0x32, 0x78, 0xb2, 0xc7, 0xcc, 0xa5, 0x7a, 0xcc, 0x72, 0x13, 0x4e, 0x2a, + 0xa5, 0x8a, 0xe7, 0xb0, 0x22, 0xcf, 0x61, 0x57, 0xe2, 0x39, 0x6c, 0xea, 0xe2, 0x53, 0x49, 0x8b, + 0x84, 0x15, 0xd9, 0x16, 0x95, 0x13, 0x39, 0xb7, 0x29, 0x2a, 0xab, 0x33, 0x63, 0x39, 0x6b, 0x11, + 0x16, 0x94, 0xea, 0x11, 0xb6, 0xf9, 0xa5, 0x06, 0x8b, 0xbc, 0xa4, 0xea, 0x67, 0x9e, 0xa7, 0xfb, + 0x59, 0xa7, 0x78, 0x74, 0x35, 0x0e, 0x6c, 0xbe, 0xab, 0xcb, 0x50, 0xe9, 0x27, 0x8a, 0x90, 0xf6, + 0x07, 0x50, 0xa6, 0xfd, 0x5e, 0x1f, 0x49, 0x93, 0x9b, 0x6b, 0x03, 0x37, 0xcf, 0xa4, 0x37, 0xff, + 0x70, 0x14, 0x16, 0x94, 0xbc, 0x45, 0x56, 0x78, 0x5f, 0x83, 0x59, 0xbb, 0x83, 0x89, 0xdf, 0xea, + 0xf5, 0xd2, 0xa1, 0x6f, 0xbe, 0x7e, 0xdc, 0x6b, 0xeb, 0x8c, 0x73, 0x8f, 0x9b, 0xda, 0x29, 0x30, + 0x93, 0x02, 0xef, 0x63, 0x82, 0x12, 0x52, 0x64, 0x8e, 0x49, 0x8a, 0x1d, 0xc6, 0xb9, 0x37, 0x58, + 0x52, 0x60, 0xbd, 0x01, 0x63, 0x2d, 0xab, 0xdd, 0x76, 0xbd, 0x86, 0x98, 0x25, 0x6e, 0x3f, 0xf4, + 0xd6, 0xdb, 0x9c, 0x1f, 0xdf, 0x51, 0x72, 0xd7, 0x3d, 0x58, 0xb0, 0x1c, 0xc7, 0xec, 0x4d, 0x78, + 0xbc, 0xb9, 0xe7, 0x6d, 0xc4, 0x6a, 0x32, 0x2a, 0x24, 0xb2, 0x32, 0xef, 0xb1, 0x1b, 0xa1, 0x64, + 0x39, 0x8e, 0x72, 0x85, 0x86, 0xa6, 0xd2, 0x12, 0x8f, 0x24, 0x34, 0x59, 0x22, 0x50, 0x69, 0xfc, + 0xd1, 0xec, 0xf6, 0x02, 0x4c, 0xc4, 0x95, 0xac, 0xd8, 0x64, 0x2e, 0xbe, 0x49, 0x31, 0x9e, 0x44, + 0x5e, 0x84, 0x53, 0x72, 0x76, 0xb5, 0xce, 0x6b, 0x89, 0xd8, 0x8d, 0x95, 0xa8, 0x38, 0xb4, 0xde, + 0x8a, 0xe3, 0xaf, 0x63, 0x30, 0xdf, 0x43, 0x2d, 0xa2, 0xea, 0xc7, 0x30, 0x8b, 0x3b, 0xed, 0xb6, + 0x1f, 0x10, 0xe4, 0x98, 0x76, 0xd3, 0x65, 0xd7, 0x0f, 0x0f, 0x2a, 0x63, 0x28, 0x9f, 0xea, 0xc3, + 0xb8, 0xb6, 0x23, 0xb9, 0xae, 0x73, 0xa6, 0xd2, 0x95, 0x53, 0x60, 0xfd, 0x49, 0x98, 0xe2, 0xdc, + 0xc3, 0x46, 0x89, 0x1f, 0x7e, 0x92, 0x43, 0x65, 0x9b, 0x74, 0x07, 0xa6, 0x5b, 0xa8, 0x55, 0x47, + 0x01, 0xde, 0x73, 0xdb, 0xdc, 0xf9, 0x06, 0x35, 0x0b, 0xf2, 0x2d, 0xa9, 0x7b, 0xa1, 0xb6, 0x1d, + 0x92, 0xf1, 0xa9, 0x5a, 0x2b, 0xf1, 0x4d, 0x73, 0x96, 0xd4, 0x5f, 0x78, 0xdf, 0x17, 0x05, 0x44, + 0x51, 0xd0, 0xe5, 0x7b, 0xd4, 0x4b, 0xfb, 0x47, 0xd9, 0x6e, 0xf0, 0xb2, 0xdc, 0xf6, 0x3b, 0x1e, + 0x61, 0xfd, 0x5e, 0xde, 0x98, 0x15, 0x4b, 0xac, 0x62, 0x5e, 0xa7, 0x0b, 0x34, 0x9f, 0xc7, 0x06, + 0x5f, 0x26, 0x5d, 0xe6, 0x1d, 0x5f, 0xd1, 0x98, 0x89, 0x2d, 0xec, 0x50, 0xb8, 0x7e, 0x0e, 0x66, + 0x62, 0xbd, 0x3b, 0xc7, 0x2d, 0x30, 0xdc, 0x58, 0x4f, 0xcf, 0x51, 0x37, 0x60, 0x42, 0xf6, 0x53, + 0x4c, 0x3f, 0x45, 0xa6, 0x9f, 0x33, 0x49, 0x4f, 0x15, 0x18, 0xb1, 0x2e, 0x8a, 0x69, 0x65, 0xbc, + 0x1b, 0x7d, 0xe8, 0x2f, 0x41, 0x79, 0xd7, 0x72, 0x9b, 0x7e, 0xcc, 0x28, 0xa6, 0xeb, 0xd9, 0x01, + 0x6a, 0x21, 0x8f, 0x94, 0x80, 0x15, 0xc0, 0x25, 0x89, 0x11, 0x72, 0x11, 0xeb, 0xfa, 0x65, 0x28, + 0xb9, 0x9e, 0x4b, 0x5c, 0xab, 0x69, 0xa6, 0xb9, 0x94, 0xc6, 0x79, 0xf1, 0x2c, 0xd6, 0x5f, 0x4e, + 0xb2, 0xd0, 0xaf, 0xc0, 0x82, 0x8b, 0xcd, 0x46, 0xd3, 0xaf, 0x5b, 0x4d, 0x33, 0x2a, 0xc3, 0x90, + 0x67, 0xd5, 0x9b, 0xc8, 0x29, 0x4d, 0xb0, 0xcb, 0xbe, 0xe4, 0xe2, 0x0d, 0x86, 0x11, 0x56, 0xd0, + 0x37, 0xf8, 0xba, 0xfe, 0x16, 0xe4, 0x88, 0xd5, 0xc0, 0xa5, 0x49, 0xe6, 0xbd, 0x2f, 0x3f, 0x94, + 0xf7, 0xde, 0xb2, 0x1a, 0xc2, 0x63, 0x19, 0xcf, 0xf2, 0x3a, 0x9c, 0x54, 0x3a, 0xf4, 0x51, 0x82, + 0xb8, 0x7c, 0x09, 0x8a, 0x21, 0xdf, 0x23, 0x45, 0xff, 0x5b, 0x70, 0xe2, 0xa6, 0x8b, 0x89, 0x10, + 0x32, 0xbc, 0x6e, 0x17, 0xa0, 0x18, 0x8d, 0x0c, 0x78, 0xe3, 0x55, 0x68, 0x0f, 0x98, 0x15, 0x28, + 0x27, 0x79, 0xbf, 0xd6, 0x60, 0x2e, 0xc9, 0x5c, 0x64, 0x86, 0xd7, 0xa0, 0x20, 0xbc, 0x7c, 0x70, + 0xf1, 0x9d, 0x1a, 0xe2, 0x0a, 0x3e, 0xdb, 0xe2, 0x65, 0xd3, 0x08, 0x99, 0x0c, 0x2d, 0xd1, 0x6f, + 0x35, 0x58, 0xba, 0xe6, 0x38, 0xaf, 0x05, 0xbc, 0x98, 0xa3, 0x15, 0x09, 0x49, 0x67, 0xbd, 0x73, + 0x30, 0xb3, 0x1b, 0xf8, 0x1e, 0x41, 0x9e, 0x93, 0x7a, 0x86, 0x98, 0x96, 0x70, 0xf9, 0x14, 0xb1, + 0x01, 0xcb, 0xdc, 0x83, 0xcc, 0x80, 0x71, 0x32, 0x65, 0x3c, 0xdb, 0xbe, 0xe7, 0x21, 0x3b, 0xac, + 0xde, 0x0b, 0xc6, 0x22, 0xc7, 0x4b, 0x6c, 0xb8, 0x1e, 0x22, 0x55, 0xab, 0xb0, 0xdc, 0x5f, 0x2c, + 0x51, 0x1f, 0x5d, 0x85, 0x32, 0xaf, 0xa0, 0x94, 0x52, 0x0f, 0x91, 0xab, 0xd9, 0xb3, 0xa6, 0x82, + 0x41, 0x34, 0x69, 0x3b, 0x1d, 0xb3, 0x96, 0xc8, 0x6d, 0x92, 0xff, 0x0e, 0x9c, 0x64, 0x8d, 0xeb, + 0x1e, 0xb2, 0x02, 0x52, 0x47, 0x16, 0x31, 0xef, 0xb9, 0x64, 0xcf, 0xf5, 0x44, 0xf3, 0x78, 0xba, + 0x67, 0xdc, 0x77, 0x5d, 0xfc, 0x60, 0x62, 0x2d, 0xf7, 0xc1, 0x67, 0x4b, 0x9a, 0x71, 0x82, 0x52, + 0x6f, 0x4a, 0xe2, 0x3b, 0x8c, 0x56, 0x5f, 0x82, 0xf1, 0xa0, 0x6d, 0x87, 0x5a, 0x16, 0xe3, 0xdb, + 0xa0, 0x6d, 0x4b, 0x05, 0xcf, 0xc3, 0x18, 0x7b, 0x0e, 0x0a, 0xe7, 0xb7, 0xa3, 0xf4, 0x93, 0xcd, + 0x69, 0x73, 0x81, 0xdf, 0xe4, 0x05, 0xf8, 0x54, 0xbc, 0x4a, 0x50, 0x0d, 0x35, 0x13, 0x27, 0x32, + 0xfc, 0x26, 0x32, 0x18, 0xb1, 0xfe, 0x36, 0x94, 0x31, 0xc2, 0x2c, 0x07, 0xb1, 0x51, 0x1c, 0x72, + 0x4c, 0x6b, 0x97, 0x6a, 0x90, 0xcd, 0x31, 0xf3, 0x43, 0xce, 0x31, 0xe7, 0x05, 0x8f, 0x1d, 0xce, + 0xe2, 0x1a, 0xe5, 0xc0, 0xe6, 0xb8, 0x89, 0x18, 0x1a, 0x3d, 0x3c, 0x86, 0xc6, 0x54, 0x1e, 0xfb, + 0xa1, 0x06, 0x65, 0x95, 0x55, 0x44, 0x24, 0xdd, 0x82, 0x29, 0xcb, 0x26, 0x6e, 0x17, 0x99, 0xe2, + 0xee, 0x11, 0xf1, 0xf4, 0xec, 0x61, 0x57, 0x57, 0x52, 0x27, 0x93, 0x9c, 0x89, 0xe0, 0x3e, 0x74, + 0x38, 0xfd, 0x29, 0x03, 0x27, 0x79, 0xcf, 0x9d, 0xee, 0xf2, 0x6f, 0x40, 0x8e, 0x8d, 0xd0, 0x35, + 0x66, 0x9f, 0x0b, 0x83, 0xed, 0x73, 0x1d, 0x59, 0xce, 0x4d, 0x44, 0x08, 0x0a, 0xde, 0xe8, 0x20, + 0x51, 0xdc, 0x30, 0xf2, 0x41, 0x6f, 0x7d, 0xf4, 0x72, 0xf7, 0x3b, 0x81, 0x1d, 0x06, 0x9d, 0xf0, + 0x90, 0x49, 0x0e, 0x15, 0xe7, 0xd3, 0x2f, 0xd1, 0x2b, 0x83, 0x62, 0x50, 0x1d, 0xd1, 0x90, 0x8e, + 0xcd, 0x5b, 0xf8, 0x18, 0xf6, 0x64, 0xb8, 0x7e, 0xc3, 0x8b, 0x8d, 0x5b, 0x94, 0xc3, 0xd3, 0xfc, + 0xd0, 0xc3, 0xd3, 0x51, 0x95, 0xbe, 0x3e, 0xc9, 0xc0, 0xa9, 0xb4, 0xbe, 0x84, 0x21, 0x8f, 0x49, + 0x61, 0xca, 0xf9, 0x46, 0xe6, 0x18, 0xe7, 0x1b, 0xaa, 0xb3, 0x66, 0x55, 0xd3, 0xdc, 0x16, 0x9c, + 0xea, 0x91, 0x44, 0x56, 0xf6, 0x0f, 0x35, 0xf3, 0x99, 0x4b, 0x8b, 0xc4, 0xde, 0xf2, 0xfe, 0xa9, + 0xc1, 0xfc, 0xeb, 0x9d, 0xa0, 0x81, 0xbe, 0x89, 0xce, 0x58, 0x2d, 0x43, 0xa9, 0xf7, 0x70, 0x22, + 0x6f, 0xff, 0x39, 0x03, 0xf3, 0xdb, 0xe8, 0x1b, 0x7a, 0xf2, 0x47, 0x12, 0x86, 0x6b, 0x50, 0xea, + 0x55, 0xd8, 0xd1, 0x1e, 0x2b, 0x68, 0x6d, 0xb3, 0x60, 0xa0, 0xdd, 0x00, 0xe1, 0x3d, 0xd9, 0x6e, + 0x26, 0xde, 0x8f, 0xd3, 0xd3, 0xbe, 0xec, 0xa3, 0x7b, 0x8b, 0x12, 0x23, 0xba, 0x0a, 0x3c, 0xa6, + 0x16, 0x28, 0xf2, 0x93, 0x45, 0x03, 0x61, 0xe4, 0x39, 0xa9, 0xa8, 0xea, 0x2b, 0xf3, 0x31, 0x3e, + 0xb8, 0x3e, 0x09, 0x53, 0xc9, 0x12, 0x49, 0xb4, 0x43, 0x93, 0x41, 0xbc, 0x16, 0x51, 0xbc, 0xaa, + 0xe5, 0x15, 0xaf, 0x6a, 0x4f, 0xc0, 0x24, 0xc7, 0x4a, 0xbe, 0x7f, 0x71, 0xa4, 0x7e, 0x4f, 0x69, + 0x63, 0x3d, 0x4f, 0x69, 0x4b, 0x30, 0x4e, 0x31, 0x24, 0x93, 0x42, 0x88, 0x20, 0x58, 0xf0, 0x99, + 0x95, 0x5a, 0x61, 0x42, 0xa7, 0x7f, 0xcc, 0x40, 0x69, 0x03, 0x11, 0x0a, 0xe4, 0x31, 0x13, 0x57, + 0xe7, 0xe0, 0x9f, 0x22, 0x2d, 0x8a, 0x39, 0x38, 0xfb, 0x99, 0xa7, 0x1c, 0x59, 0x11, 0xc9, 0x48, + 0xbf, 0x09, 0xd3, 0xd1, 0x32, 0x7f, 0x8e, 0xce, 0xb2, 0x20, 0x3e, 0xd3, 0x67, 0x3c, 0x10, 0xc9, + 0x40, 0xe3, 0x76, 0x92, 0xc4, 0x3f, 0xf5, 0x0a, 0x8c, 0xb7, 0x5c, 0x9e, 0x84, 0xa3, 0x88, 0x2b, + 0xb6, 0x5c, 0x9e, 0x55, 0x1d, 0xb6, 0x6e, 0xdd, 0x0f, 0xd7, 0xf3, 0x62, 0xdd, 0xba, 0x2f, 0xd6, + 0x93, 0x3f, 0x30, 0x18, 0x1d, 0xe2, 0x07, 0x06, 0xca, 0x62, 0xe6, 0x81, 0x06, 0xa7, 0x15, 0xea, + 0x12, 0xa1, 0xf7, 0xbd, 0xe4, 0x2f, 0x0c, 0xbe, 0x33, 0x4c, 0x4b, 0x70, 0xad, 0xd9, 0xf4, 0x6d, + 0x8b, 0x20, 0x27, 0xbc, 0x1e, 0x8e, 0xf8, 0x6b, 0x83, 0x5f, 0x68, 0x50, 0xb9, 0x8e, 0x9a, 0x88, + 0xa0, 0xaf, 0xf9, 0xc7, 0x7c, 0xd5, 0x2b, 0xb0, 0xd4, 0x57, 0x10, 0xa1, 0xa1, 0x32, 0x14, 0xee, + 0x59, 0x81, 0xe7, 0x7a, 0x0d, 0x39, 0xa5, 0x0d, 0xbf, 0xab, 0x7f, 0xd0, 0x60, 0x65, 0x87, 0x04, + 0xc8, 0x6a, 0x49, 0xfa, 0x01, 0x8f, 0x30, 0x6d, 0x38, 0x85, 0xf7, 0x3d, 0xdb, 0x8c, 0xdf, 0xd0, + 0xfc, 0x57, 0x5f, 0xda, 0x80, 0x5f, 0x7d, 0xa5, 0x2e, 0xe7, 0x9d, 0x7d, 0xcf, 0x8e, 0xed, 0xc1, + 0x7e, 0xdf, 0xb5, 0x39, 0x62, 0xcc, 0x61, 0x05, 0x7c, 0x6d, 0x02, 0x20, 0x1a, 0x6a, 0x56, 0x3f, + 0xd0, 0xe0, 0xdc, 0x10, 0xc2, 0x8a, 0x63, 0xbf, 0xdd, 0xf3, 0x56, 0x75, 0x75, 0x18, 0xf9, 0x06, + 0xb0, 0xde, 0x1c, 0x89, 0x5e, 0xad, 0x52, 0xa2, 0xbd, 0x09, 0x27, 0x92, 0x6f, 0x68, 0x5c, 0x63, + 0x95, 0x1e, 0x27, 0xd8, 0x1c, 0x89, 0xbb, 0xc1, 0x0c, 0x64, 0x64, 0x3e, 0xdc, 0x1c, 0x31, 0x32, + 0xae, 0x93, 0x62, 0xfb, 0x69, 0x16, 0xe6, 0x92, 0x7c, 0xc5, 0xe1, 0x5e, 0x82, 0x5c, 0x6c, 0xe4, + 0xb4, 0x92, 0x74, 0x1d, 0xf5, 0xef, 0xb8, 0x98, 0x9f, 0x33, 0x2a, 0x7d, 0x0d, 0x46, 0x6d, 0xdf, + 0xdb, 0x75, 0x1b, 0x62, 0x5e, 0x7a, 0x7e, 0x18, 0xfa, 0x75, 0x46, 0x61, 0x08, 0x4a, 0x7d, 0x17, + 0xf4, 0xb8, 0x1f, 0x08, 0x7e, 0xf9, 0xf4, 0xa3, 0xa0, 0x42, 0xc3, 0xaa, 0x97, 0x46, 0xc1, 0x3c, + 0x5e, 0x86, 0x72, 0x10, 0xbd, 0x03, 0x38, 0xef, 0x54, 0xde, 0x9e, 0xe4, 0x50, 0x99, 0xb8, 0x69, + 0xff, 0x9d, 0x1e, 0xee, 0xf0, 0xe4, 0x3d, 0x9d, 0x1a, 0x0c, 0xe9, 0xb7, 0x63, 0xa8, 0xf2, 0x9d, + 0xbf, 0xc0, 0x92, 0xc7, 0xd3, 0x03, 0xe5, 0x96, 0xd3, 0x21, 0xea, 0x9a, 0x1d, 0x1c, 0xf1, 0x95, + 0xaf, 0xfc, 0x35, 0x38, 0xa1, 0x98, 0x16, 0xb1, 0xa9, 0x57, 0xc1, 0x98, 0xed, 0x99, 0x12, 0xad, + 0x35, 0x3f, 0xfe, 0xbc, 0x32, 0xf2, 0xc9, 0xe7, 0x95, 0x91, 0x2f, 0x3f, 0xaf, 0x68, 0x3f, 0x39, + 0xa8, 0x68, 0xbf, 0x3f, 0xa8, 0x68, 0x7f, 0x3b, 0xa8, 0x68, 0x1f, 0x1f, 0x54, 0xb4, 0x7f, 0x1f, + 0x54, 0xb4, 0xff, 0x1c, 0x54, 0x46, 0xbe, 0x3c, 0xa8, 0x68, 0x0f, 0xbe, 0xa8, 0x8c, 0x7c, 0xfc, + 0x45, 0x65, 0xe4, 0x93, 0x2f, 0x2a, 0x23, 0x6f, 0x7d, 0xb7, 0xe1, 0x47, 0x52, 0xba, 0xfe, 0x80, + 0xff, 0x75, 0x78, 0x31, 0xfe, 0x5d, 0x1f, 0x65, 0xad, 0xe8, 0x73, 0xff, 0x0b, 0x00, 0x00, 0xff, + 0xff, 0xb6, 0x97, 0xeb, 0x33, 0x26, 0x31, 0x00, 0x00, } func (this *RebuildMutableStateRequest) Equal(that interface{}) bool { @@ -3849,6 +3972,71 @@ func (this *RebuildMutableStateResponse) Equal(that interface{}) bool { } return true } +func (this *ImportWorkflowExecutionRequest) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*ImportWorkflowExecutionRequest) + if !ok { + that2, ok := that.(ImportWorkflowExecutionRequest) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Namespace != that1.Namespace { + return false + } + if !this.Execution.Equal(that1.Execution) { + return false + } + if len(this.HistoryBatches) != len(that1.HistoryBatches) { + return false + } + for i := range this.HistoryBatches { + if !this.HistoryBatches[i].Equal(that1.HistoryBatches[i]) { + return false + } + } + if !this.VersionHistory.Equal(that1.VersionHistory) { + return false + } + if !bytes.Equal(this.Token, that1.Token) { + return false + } + return true +} +func (this *ImportWorkflowExecutionResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*ImportWorkflowExecutionResponse) + if !ok { + that2, ok := that.(ImportWorkflowExecutionResponse) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !bytes.Equal(this.Token, that1.Token) { + return false + } + return true +} func (this *DescribeMutableStateRequest) Equal(that interface{}) bool { if that == nil { return this == nil @@ -5775,21 +5963,51 @@ func (this *RebuildMutableStateResponse) GoString() string { s = append(s, "}") return strings.Join(s, "") } -func (this *DescribeMutableStateRequest) GoString() string { +func (this *ImportWorkflowExecutionRequest) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 6) - s = append(s, "&adminservice.DescribeMutableStateRequest{") + s := make([]string, 0, 9) + s = append(s, "&adminservice.ImportWorkflowExecutionRequest{") s = append(s, "Namespace: "+fmt.Sprintf("%#v", this.Namespace)+",\n") if this.Execution != nil { s = append(s, "Execution: "+fmt.Sprintf("%#v", this.Execution)+",\n") } - s = append(s, "}") - return strings.Join(s, "") -} -func (this *DescribeMutableStateResponse) GoString() string { - if this == nil { + if this.HistoryBatches != nil { + s = append(s, "HistoryBatches: "+fmt.Sprintf("%#v", this.HistoryBatches)+",\n") + } + if this.VersionHistory != nil { + s = append(s, "VersionHistory: "+fmt.Sprintf("%#v", this.VersionHistory)+",\n") + } + s = append(s, "Token: "+fmt.Sprintf("%#v", this.Token)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *ImportWorkflowExecutionResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&adminservice.ImportWorkflowExecutionResponse{") + s = append(s, "Token: "+fmt.Sprintf("%#v", this.Token)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *DescribeMutableStateRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 6) + s = append(s, "&adminservice.DescribeMutableStateRequest{") + s = append(s, "Namespace: "+fmt.Sprintf("%#v", this.Namespace)+",\n") + if this.Execution != nil { + s = append(s, "Execution: "+fmt.Sprintf("%#v", this.Execution)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *DescribeMutableStateResponse) GoString() string { + if this == nil { return "nil" } s := make([]string, 0, 8) @@ -6700,6 +6918,111 @@ func (m *RebuildMutableStateResponse) MarshalToSizedBuffer(dAtA []byte) (int, er return len(dAtA) - i, nil } +func (m *ImportWorkflowExecutionRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ImportWorkflowExecutionRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ImportWorkflowExecutionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Token) > 0 { + i -= len(m.Token) + copy(dAtA[i:], m.Token) + i = encodeVarintRequestResponse(dAtA, i, uint64(len(m.Token))) + i-- + dAtA[i] = 0x2a + } + if m.VersionHistory != nil { + { + size, err := m.VersionHistory.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRequestResponse(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if len(m.HistoryBatches) > 0 { + for iNdEx := len(m.HistoryBatches) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.HistoryBatches[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRequestResponse(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.Execution != nil { + { + size, err := m.Execution.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRequestResponse(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Namespace) > 0 { + i -= len(m.Namespace) + copy(dAtA[i:], m.Namespace) + i = encodeVarintRequestResponse(dAtA, i, uint64(len(m.Namespace))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ImportWorkflowExecutionResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ImportWorkflowExecutionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ImportWorkflowExecutionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Token) > 0 { + i -= len(m.Token) + copy(dAtA[i:], m.Token) + i = encodeVarintRequestResponse(dAtA, i, uint64(len(m.Token))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *DescribeMutableStateRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -6897,21 +7220,21 @@ func (m *DescribeHistoryHostResponse) MarshalToSizedBuffer(dAtA []byte) (int, er dAtA[i] = 0x1a } if len(m.ShardIds) > 0 { - dAtA8 := make([]byte, len(m.ShardIds)*10) - var j7 int + dAtA10 := make([]byte, len(m.ShardIds)*10) + var j9 int for _, num1 := range m.ShardIds { num := uint64(num1) for num >= 1<<7 { - dAtA8[j7] = uint8(uint64(num)&0x7f | 0x80) + dAtA10[j9] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j7++ + j9++ } - dAtA8[j7] = uint8(num) - j7++ + dAtA10[j9] = uint8(num) + j9++ } - i -= j7 - copy(dAtA[i:], dAtA8[:j7]) - i = encodeVarintRequestResponse(dAtA, i, uint64(j7)) + i -= j9 + copy(dAtA[i:], dAtA10[:j9]) + i = encodeVarintRequestResponse(dAtA, i, uint64(j9)) i-- dAtA[i] = 0x12 } @@ -7164,12 +7487,12 @@ func (m *Task) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x38 } if m.FireTime != nil { - n11, err11 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.FireTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.FireTime):]) - if err11 != nil { - return 0, err11 + n13, err13 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.FireTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.FireTime):]) + if err13 != nil { + return 0, err13 } - i -= n11 - i = encodeVarintRequestResponse(dAtA, i, uint64(n11)) + i -= n13 + i = encodeVarintRequestResponse(dAtA, i, uint64(n13)) i-- dAtA[i] = 0x32 } @@ -7228,12 +7551,12 @@ func (m *RemoveTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if m.VisibilityTime != nil { - n12, err12 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.VisibilityTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.VisibilityTime):]) - if err12 != nil { - return 0, err12 + n14, err14 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.VisibilityTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.VisibilityTime):]) + if err14 != nil { + return 0, err14 } - i -= n12 - i = encodeVarintRequestResponse(dAtA, i, uint64(n12)) + i -= n14 + i = encodeVarintRequestResponse(dAtA, i, uint64(n14)) i-- dAtA[i] = 0x22 } @@ -7373,21 +7696,21 @@ func (m *GetWorkflowExecutionRawHistoryV2Response) MarshalToSizedBuffer(dAtA []b var l int _ = l if len(m.HistoryNodeIds) > 0 { - dAtA15 := make([]byte, len(m.HistoryNodeIds)*10) - var j14 int + dAtA17 := make([]byte, len(m.HistoryNodeIds)*10) + var j16 int for _, num1 := range m.HistoryNodeIds { num := uint64(num1) for num >= 1<<7 { - dAtA15[j14] = uint8(uint64(num)&0x7f | 0x80) + dAtA17[j16] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j14++ + j16++ } - dAtA15[j14] = uint8(num) - j14++ + dAtA17[j16] = uint8(num) + j16++ } - i -= j14 - copy(dAtA[i:], dAtA15[:j14]) - i = encodeVarintRequestResponse(dAtA, i, uint64(j14)) + i -= j16 + copy(dAtA[i:], dAtA17[:j16]) + i = encodeVarintRequestResponse(dAtA, i, uint64(j16)) i-- dAtA[i] = 0x22 } @@ -8428,12 +8751,12 @@ func (m *ListClusterMembersRequest) MarshalToSizedBuffer(dAtA []byte) (int, erro dAtA[i] = 0x30 } if m.SessionStartedAfterTime != nil { - n24, err24 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.SessionStartedAfterTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.SessionStartedAfterTime):]) - if err24 != nil { - return 0, err24 + n26, err26 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.SessionStartedAfterTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.SessionStartedAfterTime):]) + if err26 != nil { + return 0, err26 } - i -= n24 - i = encodeVarintRequestResponse(dAtA, i, uint64(n24)) + i -= n26 + i = encodeVarintRequestResponse(dAtA, i, uint64(n26)) i-- dAtA[i] = 0x2a } @@ -8457,12 +8780,12 @@ func (m *ListClusterMembersRequest) MarshalToSizedBuffer(dAtA []byte) (int, erro dAtA[i] = 0x12 } if m.LastHeartbeatWithin != nil { - n25, err25 := github_com_gogo_protobuf_types.StdDurationMarshalTo(*m.LastHeartbeatWithin, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(*m.LastHeartbeatWithin):]) - if err25 != nil { - return 0, err25 + n27, err27 := github_com_gogo_protobuf_types.StdDurationMarshalTo(*m.LastHeartbeatWithin, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(*m.LastHeartbeatWithin):]) + if err27 != nil { + return 0, err27 } - i -= n25 - i = encodeVarintRequestResponse(dAtA, i, uint64(n25)) + i -= n27 + i = encodeVarintRequestResponse(dAtA, i, uint64(n27)) i-- dAtA[i] = 0xa } @@ -9425,6 +9748,50 @@ func (m *RebuildMutableStateResponse) Size() (n int) { return n } +func (m *ImportWorkflowExecutionRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Namespace) + if l > 0 { + n += 1 + l + sovRequestResponse(uint64(l)) + } + if m.Execution != nil { + l = m.Execution.Size() + n += 1 + l + sovRequestResponse(uint64(l)) + } + if len(m.HistoryBatches) > 0 { + for _, e := range m.HistoryBatches { + l = e.Size() + n += 1 + l + sovRequestResponse(uint64(l)) + } + } + if m.VersionHistory != nil { + l = m.VersionHistory.Size() + n += 1 + l + sovRequestResponse(uint64(l)) + } + l = len(m.Token) + if l > 0 { + n += 1 + l + sovRequestResponse(uint64(l)) + } + return n +} + +func (m *ImportWorkflowExecutionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Token) + if l > 0 { + n += 1 + l + sovRequestResponse(uint64(l)) + } + return n +} + func (m *DescribeMutableStateRequest) Size() (n int) { if m == nil { return 0 @@ -10638,6 +11005,35 @@ func (this *RebuildMutableStateResponse) String() string { }, "") return s } +func (this *ImportWorkflowExecutionRequest) String() string { + if this == nil { + return "nil" + } + repeatedStringForHistoryBatches := "[]*DataBlob{" + for _, f := range this.HistoryBatches { + repeatedStringForHistoryBatches += strings.Replace(fmt.Sprintf("%v", f), "DataBlob", "v1.DataBlob", 1) + "," + } + repeatedStringForHistoryBatches += "}" + s := strings.Join([]string{`&ImportWorkflowExecutionRequest{`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Execution:` + strings.Replace(fmt.Sprintf("%v", this.Execution), "WorkflowExecution", "v1.WorkflowExecution", 1) + `,`, + `HistoryBatches:` + repeatedStringForHistoryBatches + `,`, + `VersionHistory:` + strings.Replace(fmt.Sprintf("%v", this.VersionHistory), "VersionHistory", "v11.VersionHistory", 1) + `,`, + `Token:` + fmt.Sprintf("%v", this.Token) + `,`, + `}`, + }, "") + return s +} +func (this *ImportWorkflowExecutionResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ImportWorkflowExecutionResponse{`, + `Token:` + fmt.Sprintf("%v", this.Token) + `,`, + `}`, + }, "") + return s +} func (this *DescribeMutableStateRequest) String() string { if this == nil { return "nil" @@ -10656,8 +11052,8 @@ func (this *DescribeMutableStateResponse) String() string { s := strings.Join([]string{`&DescribeMutableStateResponse{`, `ShardId:` + fmt.Sprintf("%v", this.ShardId) + `,`, `HistoryAddr:` + fmt.Sprintf("%v", this.HistoryAddr) + `,`, - `CacheMutableState:` + strings.Replace(fmt.Sprintf("%v", this.CacheMutableState), "WorkflowMutableState", "v11.WorkflowMutableState", 1) + `,`, - `DatabaseMutableState:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseMutableState), "WorkflowMutableState", "v11.WorkflowMutableState", 1) + `,`, + `CacheMutableState:` + strings.Replace(fmt.Sprintf("%v", this.CacheMutableState), "WorkflowMutableState", "v12.WorkflowMutableState", 1) + `,`, + `DatabaseMutableState:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseMutableState), "WorkflowMutableState", "v12.WorkflowMutableState", 1) + `,`, `}`, }, "") return s @@ -10682,7 +11078,7 @@ func (this *DescribeHistoryHostResponse) String() string { s := strings.Join([]string{`&DescribeHistoryHostResponse{`, `ShardsNumber:` + fmt.Sprintf("%v", this.ShardsNumber) + `,`, `ShardIds:` + fmt.Sprintf("%v", this.ShardIds) + `,`, - `NamespaceCache:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceCache), "NamespaceCacheInfo", "v12.NamespaceCacheInfo", 1) + `,`, + `NamespaceCache:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceCache), "NamespaceCacheInfo", "v13.NamespaceCacheInfo", 1) + `,`, `Address:` + fmt.Sprintf("%v", this.Address) + `,`, `}`, }, "") @@ -10722,7 +11118,7 @@ func (this *GetShardResponse) String() string { return "nil" } s := strings.Join([]string{`&GetShardResponse{`, - `ShardInfo:` + strings.Replace(fmt.Sprintf("%v", this.ShardInfo), "ShardInfo", "v11.ShardInfo", 1) + `,`, + `ShardInfo:` + strings.Replace(fmt.Sprintf("%v", this.ShardInfo), "ShardInfo", "v12.ShardInfo", 1) + `,`, `}`, }, "") return s @@ -10734,7 +11130,7 @@ func (this *ListHistoryTasksRequest) String() string { s := strings.Join([]string{`&ListHistoryTasksRequest{`, `ShardId:` + fmt.Sprintf("%v", this.ShardId) + `,`, `Category:` + fmt.Sprintf("%v", this.Category) + `,`, - `TaskRange:` + strings.Replace(fmt.Sprintf("%v", this.TaskRange), "TaskRange", "v14.TaskRange", 1) + `,`, + `TaskRange:` + strings.Replace(fmt.Sprintf("%v", this.TaskRange), "TaskRange", "v11.TaskRange", 1) + `,`, `BatchSize:` + fmt.Sprintf("%v", this.BatchSize) + `,`, `NextPageToken:` + fmt.Sprintf("%v", this.NextPageToken) + `,`, `}`, @@ -10824,7 +11220,7 @@ func (this *GetWorkflowExecutionRawHistoryV2Response) String() string { s := strings.Join([]string{`&GetWorkflowExecutionRawHistoryV2Response{`, `NextPageToken:` + fmt.Sprintf("%v", this.NextPageToken) + `,`, `HistoryBatches:` + repeatedStringForHistoryBatches + `,`, - `VersionHistory:` + strings.Replace(fmt.Sprintf("%v", this.VersionHistory), "VersionHistory", "v14.VersionHistory", 1) + `,`, + `VersionHistory:` + strings.Replace(fmt.Sprintf("%v", this.VersionHistory), "VersionHistory", "v11.VersionHistory", 1) + `,`, `HistoryNodeIds:` + fmt.Sprintf("%v", this.HistoryNodeIds) + `,`, `}`, }, "") @@ -11115,7 +11511,7 @@ func (this *ListClustersResponse) String() string { } repeatedStringForClusters := "[]*ClusterMetadata{" for _, f := range this.Clusters { - repeatedStringForClusters += strings.Replace(fmt.Sprintf("%v", f), "ClusterMetadata", "v11.ClusterMetadata", 1) + "," + repeatedStringForClusters += strings.Replace(fmt.Sprintf("%v", f), "ClusterMetadata", "v12.ClusterMetadata", 1) + "," } repeatedStringForClusters += "}" s := strings.Join([]string{`&ListClustersResponse{`, @@ -11349,7 +11745,7 @@ func (this *GetTaskQueueTasksResponse) String() string { } repeatedStringForTasks := "[]*AllocatedTaskInfo{" for _, f := range this.Tasks { - repeatedStringForTasks += strings.Replace(fmt.Sprintf("%v", f), "AllocatedTaskInfo", "v11.AllocatedTaskInfo", 1) + "," + repeatedStringForTasks += strings.Replace(fmt.Sprintf("%v", f), "AllocatedTaskInfo", "v12.AllocatedTaskInfo", 1) + "," } repeatedStringForTasks += "}" s := strings.Join([]string{`&GetTaskQueueTasksResponse{`, @@ -11653,6 +12049,318 @@ func (m *RebuildMutableStateResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *ImportWorkflowExecutionRequest) 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 ErrIntOverflowRequestResponse + } + 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: ImportWorkflowExecutionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ImportWorkflowExecutionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + 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 ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Execution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Execution == nil { + m.Execution = &v1.WorkflowExecution{} + } + if err := m.Execution.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HistoryBatches", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HistoryBatches = append(m.HistoryBatches, &v1.DataBlob{}) + if err := m.HistoryBatches[len(m.HistoryBatches)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VersionHistory", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.VersionHistory == nil { + m.VersionHistory = &v11.VersionHistory{} + } + if err := m.VersionHistory.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Token = append(m.Token[:0], dAtA[iNdEx:postIndex]...) + if m.Token == nil { + m.Token = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipRequestResponse(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthRequestResponse + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRequestResponse + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ImportWorkflowExecutionResponse) 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 ErrIntOverflowRequestResponse + } + 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: ImportWorkflowExecutionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ImportWorkflowExecutionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Token = append(m.Token[:0], dAtA[iNdEx:postIndex]...) + if m.Token == nil { + m.Token = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipRequestResponse(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthRequestResponse + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRequestResponse + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *DescribeMutableStateRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -11897,7 +12605,7 @@ func (m *DescribeMutableStateResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.CacheMutableState == nil { - m.CacheMutableState = &v11.WorkflowMutableState{} + m.CacheMutableState = &v12.WorkflowMutableState{} } if err := m.CacheMutableState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -11933,7 +12641,7 @@ func (m *DescribeMutableStateResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.DatabaseMutableState == nil { - m.DatabaseMutableState = &v11.WorkflowMutableState{} + m.DatabaseMutableState = &v12.WorkflowMutableState{} } if err := m.DatabaseMutableState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -12289,7 +12997,7 @@ func (m *DescribeHistoryHostResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.NamespaceCache == nil { - m.NamespaceCache = &v12.NamespaceCacheInfo{} + m.NamespaceCache = &v13.NamespaceCacheInfo{} } if err := m.NamespaceCache.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -12607,7 +13315,7 @@ func (m *GetShardResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.ShardInfo == nil { - m.ShardInfo = &v11.ShardInfo{} + m.ShardInfo = &v12.ShardInfo{} } if err := m.ShardInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -12699,7 +13407,7 @@ func (m *ListHistoryTasksRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Category |= v13.TaskCategory(b&0x7F) << shift + m.Category |= v14.TaskCategory(b&0x7F) << shift if b < 0x80 { break } @@ -12734,7 +13442,7 @@ func (m *ListHistoryTasksRequest) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.TaskRange == nil { - m.TaskRange = &v14.TaskRange{} + m.TaskRange = &v11.TaskRange{} } if err := m.TaskRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -13096,7 +13804,7 @@ func (m *Task) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.TaskType |= v13.TaskType(b&0x7F) << shift + m.TaskType |= v14.TaskType(b&0x7F) << shift if b < 0x80 { break } @@ -13242,7 +13950,7 @@ func (m *RemoveTaskRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Category |= v13.TaskCategory(b&0x7F) << shift + m.Category |= v14.TaskCategory(b&0x7F) << shift if b < 0x80 { break } @@ -13756,7 +14464,7 @@ func (m *GetWorkflowExecutionRawHistoryV2Response) Unmarshal(dAtA []byte) error return io.ErrUnexpectedEOF } if m.VersionHistory == nil { - m.VersionHistory = &v14.VersionHistory{} + m.VersionHistory = &v11.VersionHistory{} } if err := m.VersionHistory.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -16674,7 +17382,7 @@ func (m *ListClustersResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Clusters = append(m.Clusters, &v11.ClusterMetadata{}) + m.Clusters = append(m.Clusters, &v12.ClusterMetadata{}) if err := m.Clusters[len(m.Clusters)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -17176,7 +17884,7 @@ func (m *ListClusterMembersRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Role |= v13.ClusterMemberRole(b&0x7F) << shift + m.Role |= v14.ClusterMemberRole(b&0x7F) << shift if b < 0x80 { break } @@ -17458,7 +18166,7 @@ func (m *GetDLQMessagesRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Type |= v13.DeadLetterQueueType(b&0x7F) << shift + m.Type |= v14.DeadLetterQueueType(b&0x7F) << shift if b < 0x80 { break } @@ -17653,7 +18361,7 @@ func (m *GetDLQMessagesResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Type |= v13.DeadLetterQueueType(b&0x7F) << shift + m.Type |= v14.DeadLetterQueueType(b&0x7F) << shift if b < 0x80 { break } @@ -17827,7 +18535,7 @@ func (m *PurgeDLQMessagesRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Type |= v13.DeadLetterQueueType(b&0x7F) << shift + m.Type |= v14.DeadLetterQueueType(b&0x7F) << shift if b < 0x80 { break } @@ -18022,7 +18730,7 @@ func (m *MergeDLQMessagesRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Type |= v13.DeadLetterQueueType(b&0x7F) << shift + m.Type |= v14.DeadLetterQueueType(b&0x7F) << shift if b < 0x80 { break } @@ -19030,7 +19738,7 @@ func (m *GetTaskQueueTasksResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Tasks = append(m.Tasks, &v11.AllocatedTaskInfo{}) + m.Tasks = append(m.Tasks, &v12.AllocatedTaskInfo{}) if err := m.Tasks[len(m.Tasks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } diff --git a/api/adminservice/v1/service.pb.go b/api/adminservice/v1/service.pb.go index 91dca8985ae..38a523bd730 100644 --- a/api/adminservice/v1/service.pb.go +++ b/api/adminservice/v1/service.pb.go @@ -54,64 +54,65 @@ func init() { } var fileDescriptor_cf5ca5e0c737570d = []byte{ - // 914 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x98, 0xcb, 0x6b, 0x1b, 0x47, - 0x1c, 0xc7, 0x35, 0x97, 0x52, 0x06, 0xf7, 0xb5, 0x2d, 0x7d, 0xf8, 0xb0, 0x7d, 0xf8, 0xd2, 0x93, - 0x54, 0xbb, 0xad, 0x5b, 0xbf, 0x2d, 0x4b, 0xaa, 0x0c, 0x95, 0xdc, 0x5a, 0xea, 0x03, 0x7a, 0x29, - 0x23, 0xed, 0xcf, 0xf6, 0xe2, 0x95, 0x76, 0x33, 0x33, 0x2b, 0xc7, 0xa7, 0xe4, 0x12, 0x08, 0x04, - 0x42, 0x02, 0x81, 0x40, 0x20, 0xa7, 0x40, 0x48, 0x20, 0x7f, 0x43, 0x20, 0x37, 0xe7, 0xe6, 0xa3, - 0x8f, 0xb1, 0x7c, 0xc9, 0xd1, 0x7f, 0x42, 0x58, 0xaf, 0x66, 0xbc, 0x2b, 0x4d, 0x9c, 0x99, 0x95, - 0x6f, 0x96, 0x77, 0x3e, 0xdf, 0xf9, 0xec, 0x4f, 0x3b, 0xf3, 0x9b, 0x15, 0x9e, 0xe6, 0xd0, 0x09, - 0x7c, 0x4a, 0xbc, 0x02, 0x03, 0xda, 0x03, 0x5a, 0x20, 0x81, 0x5b, 0x20, 0x4e, 0xc7, 0xed, 0x46, - 0x9f, 0xdd, 0x36, 0x14, 0x7a, 0xd3, 0x85, 0xc1, 0x9f, 0xf9, 0x80, 0xfa, 0xdc, 0xb7, 0xa6, 0x04, - 0x92, 0x8f, 0x91, 0x3c, 0x09, 0xdc, 0x7c, 0x12, 0xc9, 0xf7, 0xa6, 0x27, 0xe7, 0x75, 0x72, 0x29, - 0x5c, 0x09, 0x81, 0xf1, 0xff, 0x29, 0xb0, 0xc0, 0xef, 0xb2, 0xc1, 0x04, 0x33, 0x2f, 0xa7, 0xf0, - 0x44, 0x31, 0x1a, 0xda, 0x8c, 0x87, 0x5a, 0x0f, 0x10, 0xfe, 0xb4, 0x01, 0xad, 0xd0, 0xf5, 0x9c, - 0x7a, 0xc8, 0x49, 0xcb, 0x83, 0x26, 0x27, 0x1c, 0xac, 0x95, 0xbc, 0x86, 0x4a, 0x5e, 0x41, 0x36, - 0xe2, 0x89, 0x27, 0x57, 0xb3, 0x07, 0xc4, 0xc6, 0xdf, 0xe5, 0xac, 0x87, 0x08, 0x7f, 0x56, 0x06, - 0xd6, 0xa6, 0x6e, 0x0b, 0x52, 0x76, 0x7a, 0xe1, 0x2a, 0x54, 0xe8, 0x15, 0xc7, 0x48, 0x90, 0x7e, - 0x51, 0xf1, 0xc4, 0x90, 0x75, 0x97, 0x71, 0x9f, 0xee, 0xaf, 0xfb, 0x8c, 0x6b, 0x16, 0x4f, 0x41, - 0x9a, 0x15, 0x4f, 0x19, 0x20, 0xe5, 0xf6, 0xf1, 0xfb, 0x55, 0xe0, 0xcd, 0x1d, 0x42, 0x1d, 0xeb, - 0x27, 0xad, 0x3c, 0x31, 0x5c, 0x58, 0xfc, 0x6c, 0x48, 0xc9, 0xa9, 0xaf, 0x61, 0x5c, 0xf2, 0x7c, - 0x06, 0xf1, 0xe4, 0xb3, 0x5a, 0x31, 0xe7, 0x80, 0x98, 0xfe, 0x17, 0x63, 0x4e, 0x0a, 0xdc, 0x45, - 0xf8, 0xe3, 0x9a, 0xcb, 0xf8, 0xa0, 0x32, 0x7f, 0x11, 0xb6, 0xcb, 0xac, 0x45, 0xad, 0xbc, 0x61, - 0x4c, 0xd8, 0x2c, 0x65, 0xa4, 0x93, 0x45, 0x69, 0x40, 0xc7, 0xef, 0x41, 0x74, 0x41, 0xb3, 0x28, - 0xe7, 0x80, 0x59, 0x51, 0x92, 0x9c, 0x14, 0x78, 0x81, 0xf0, 0x37, 0x55, 0xe0, 0xff, 0xfa, 0x74, - 0x77, 0xcb, 0xf3, 0xf7, 0x2a, 0x57, 0xa1, 0x1d, 0x72, 0xd7, 0xef, 0x36, 0xc8, 0xde, 0x40, 0xf9, - 0x9f, 0x19, 0xab, 0xa6, 0xfb, 0x9d, 0x5f, 0x18, 0x23, 0x6c, 0xeb, 0x97, 0x94, 0x26, 0xef, 0xe1, - 0x11, 0xc2, 0x9f, 0x57, 0x81, 0x37, 0x20, 0xf0, 0xdc, 0x36, 0x89, 0x06, 0xd6, 0x81, 0x31, 0xb2, - 0x0d, 0xcc, 0x5a, 0xd3, 0x9d, 0x4b, 0x01, 0x0b, 0xdf, 0xd2, 0x58, 0x19, 0xd2, 0xf2, 0x39, 0xc2, - 0x5f, 0x57, 0x81, 0x6f, 0x90, 0x0e, 0xb0, 0x80, 0xb4, 0x41, 0xa5, 0xfb, 0xbb, 0xee, 0x54, 0x17, - 0xa5, 0x08, 0xef, 0xda, 0xe5, 0x84, 0xc9, 0x1b, 0x78, 0x86, 0xf0, 0x57, 0x55, 0xe0, 0xe5, 0xda, - 0xa6, 0x4a, 0xbd, 0xa2, 0x3b, 0x9b, 0x9a, 0x17, 0xd2, 0xbf, 0x8d, 0x1b, 0x23, 0x75, 0x6f, 0x22, - 0xfc, 0x41, 0x03, 0x48, 0x10, 0x78, 0xfb, 0x95, 0x1e, 0x74, 0x39, 0xb3, 0xe6, 0x34, 0x97, 0x49, - 0x82, 0x11, 0x5a, 0xf3, 0x59, 0xd0, 0x54, 0x4b, 0x28, 0x3a, 0x4e, 0x13, 0x08, 0x6d, 0xef, 0x14, - 0x39, 0xa7, 0x6e, 0x2b, 0xe4, 0xc0, 0x34, 0x5b, 0x82, 0x82, 0x34, 0x6b, 0x09, 0xca, 0x80, 0xd4, - 0xea, 0x89, 0xb7, 0x86, 0x11, 0xbf, 0x35, 0x83, 0x7d, 0xe5, 0x6d, 0x8a, 0xa5, 0xb1, 0x32, 0x52, - 0x25, 0x8c, 0x9a, 0x4a, 0xb6, 0x12, 0x2a, 0x48, 0xb3, 0x12, 0x2a, 0x03, 0xa4, 0xdc, 0x6d, 0x84, - 0x3f, 0x12, 0x7d, 0xb7, 0xe4, 0x85, 0x8c, 0x03, 0xb5, 0x16, 0x8c, 0xba, 0xf5, 0x80, 0x12, 0x52, - 0x8b, 0xd9, 0x60, 0x29, 0x74, 0x03, 0xe1, 0x89, 0xa8, 0xeb, 0x0c, 0xae, 0x30, 0xeb, 0x57, 0xed, - 0x46, 0x25, 0x10, 0xa1, 0x32, 0x97, 0x81, 0x94, 0x1e, 0xf7, 0x11, 0xb6, 0x12, 0x97, 0xea, 0xd0, - 0x69, 0x45, 0x36, 0xcb, 0xa6, 0x99, 0x03, 0x50, 0x38, 0xad, 0x64, 0xe6, 0xa5, 0xd9, 0x53, 0x84, - 0xbf, 0x2c, 0x3a, 0xce, 0x1f, 0xf4, 0xef, 0xc0, 0x39, 0x3b, 0xbf, 0x75, 0x7c, 0x2e, 0xbf, 0xbb, - 0xb2, 0xee, 0xb2, 0x52, 0xe2, 0xc2, 0xb2, 0x32, 0x66, 0x4a, 0xea, 0xd9, 0x8f, 0x17, 0x48, 0x5a, - 0x73, 0xc5, 0x60, 0x69, 0x29, 0x0d, 0x57, 0xb3, 0x07, 0x48, 0xb9, 0x5b, 0x08, 0x7f, 0x18, 0x6f, - 0xc7, 0xb2, 0x15, 0xcc, 0x1b, 0xec, 0xe1, 0xc3, 0xfb, 0xff, 0x42, 0x26, 0x36, 0x75, 0xc6, 0xfb, - 0x33, 0xa4, 0xdb, 0x90, 0xf4, 0xd1, 0x5b, 0x4d, 0xc3, 0x98, 0xd9, 0x19, 0x6f, 0x94, 0x4e, 0x39, - 0xd5, 0x21, 0x93, 0xd3, 0x30, 0x66, 0xe6, 0x34, 0x4a, 0xa7, 0x5e, 0xa2, 0x1a, 0xb0, 0x45, 0x81, - 0xed, 0x88, 0x53, 0x56, 0x7c, 0x1e, 0xd6, 0x7d, 0x24, 0x46, 0x51, 0xb3, 0x97, 0x28, 0x75, 0xc2, - 0x50, 0x53, 0x62, 0xd0, 0x75, 0x12, 0x4d, 0x3e, 0x36, 0xd4, 0x6d, 0x4a, 0x2a, 0xd8, 0xb4, 0x29, - 0xa9, 0x33, 0xa4, 0xe5, 0x3d, 0x84, 0x3f, 0xa9, 0x02, 0x8f, 0xfe, 0xbd, 0x19, 0x42, 0x08, 0xb1, - 0xe0, 0x92, 0xee, 0x23, 0x9c, 0xe6, 0x84, 0xdb, 0x72, 0x56, 0x5c, 0x6a, 0x3d, 0x46, 0xf8, 0x8b, - 0x32, 0x78, 0xc0, 0x61, 0xe4, 0x04, 0x6d, 0x95, 0x34, 0x3b, 0x8b, 0x92, 0x16, 0x8a, 0xe5, 0xf1, - 0x42, 0xa4, 0xe8, 0x01, 0xc2, 0xdf, 0x36, 0x39, 0x05, 0xd2, 0x11, 0xa3, 0x54, 0x27, 0x4b, 0xbd, - 0xf7, 0x85, 0x77, 0xe6, 0x08, 0xf9, 0x8d, 0xcb, 0x8a, 0x13, 0xb7, 0xf1, 0x3d, 0xfa, 0x01, 0x9d, - 0x75, 0xdc, 0xe4, 0x51, 0x5a, 0xb3, 0xe3, 0xa6, 0x4f, 0xdf, 0x26, 0x1d, 0x37, 0x4d, 0x0a, 0x97, - 0x35, 0xef, 0xf0, 0xd8, 0xce, 0x1d, 0x1d, 0xdb, 0xb9, 0xd3, 0x63, 0x1b, 0x5d, 0xef, 0xdb, 0xe8, - 0x49, 0xdf, 0x46, 0x07, 0x7d, 0x1b, 0x1d, 0xf6, 0x6d, 0xf4, 0xaa, 0x6f, 0xa3, 0xd7, 0x7d, 0x3b, - 0x77, 0xda, 0xb7, 0xd1, 0x9d, 0x13, 0x3b, 0x77, 0x78, 0x62, 0xe7, 0x8e, 0x4e, 0xec, 0xdc, 0x7f, - 0xb3, 0xdb, 0xfe, 0xf9, 0xa4, 0xae, 0x7f, 0xc1, 0x6f, 0x48, 0x0b, 0xc9, 0xcf, 0xad, 0xf7, 0xce, - 0x7e, 0x40, 0xfa, 0xf1, 0x4d, 0x00, 0x00, 0x00, 0xff, 0xff, 0x51, 0x48, 0x16, 0x5e, 0xd6, 0x12, + // 930 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x98, 0xbb, 0x6f, 0x1b, 0x37, + 0x1c, 0xc7, 0xc5, 0xa5, 0x28, 0x08, 0xf7, 0x75, 0x2d, 0xfa, 0xf0, 0x70, 0x7d, 0x0e, 0x9d, 0xa4, + 0xda, 0x6d, 0xdd, 0xfa, 0x6d, 0x59, 0x52, 0xe5, 0xa2, 0x92, 0x5b, 0x4b, 0x7d, 0x00, 0x5d, 0x0a, + 0x4a, 0xf7, 0xb3, 0x7d, 0xf0, 0x49, 0x77, 0x25, 0x79, 0x72, 0x3d, 0xb5, 0x4b, 0x81, 0x00, 0x01, + 0x82, 0x04, 0x08, 0x10, 0x20, 0x40, 0xa6, 0x00, 0x41, 0x02, 0xe4, 0x6f, 0x08, 0x90, 0xcd, 0xa3, + 0x47, 0x8f, 0xb1, 0xbc, 0x64, 0x34, 0xf2, 0x17, 0x04, 0xe7, 0x13, 0xe9, 0x3b, 0x89, 0x72, 0xc8, + 0x93, 0x37, 0xcb, 0xe2, 0xe7, 0xcb, 0xcf, 0x91, 0x47, 0xfe, 0x48, 0xe1, 0x19, 0x0e, 0x9d, 0xc0, + 0xa7, 0xc4, 0x2b, 0x30, 0xa0, 0x3d, 0xa0, 0x05, 0x12, 0xb8, 0x05, 0xe2, 0x74, 0xdc, 0x6e, 0xf4, + 0xd9, 0x6d, 0x43, 0xa1, 0x37, 0x53, 0x18, 0xfc, 0x99, 0x0f, 0xa8, 0xcf, 0x7d, 0xeb, 0x73, 0x81, + 0xe4, 0x63, 0x24, 0x4f, 0x02, 0x37, 0x9f, 0x44, 0xf2, 0xbd, 0x99, 0xe9, 0x05, 0x9d, 0x5c, 0x0a, + 0x7f, 0x87, 0xc0, 0xf8, 0x5f, 0x14, 0x58, 0xe0, 0x77, 0xd9, 0xa0, 0x83, 0xd9, 0x17, 0x5f, 0xe0, + 0xa9, 0x62, 0xd4, 0xb4, 0x19, 0x37, 0xb5, 0xee, 0x22, 0xfc, 0x6e, 0x03, 0x5a, 0xa1, 0xeb, 0x39, + 0xf5, 0x90, 0x93, 0x96, 0x07, 0x4d, 0x4e, 0x38, 0x58, 0xab, 0x79, 0x0d, 0x95, 0xbc, 0x82, 0x6c, + 0xc4, 0x1d, 0x4f, 0xaf, 0x65, 0x0f, 0x88, 0x8d, 0x3f, 0xcb, 0x59, 0x0f, 0x10, 0xfe, 0xe0, 0xc7, + 0x28, 0x84, 0xff, 0xe1, 0xd3, 0xbd, 0x6d, 0xcf, 0xdf, 0xaf, 0xfc, 0x03, 0xed, 0x90, 0xbb, 0x7e, + 0xd7, 0x2a, 0x69, 0xe5, 0x8f, 0xa1, 0x85, 0x64, 0x79, 0xb2, 0x10, 0x29, 0x7a, 0x0f, 0xe1, 0xf7, + 0xca, 0xc0, 0xda, 0xd4, 0x6d, 0x41, 0x6a, 0x18, 0xf5, 0x46, 0x41, 0x85, 0x0a, 0xc5, 0xe2, 0x04, + 0x09, 0xd2, 0x2f, 0x9a, 0x65, 0xd1, 0x64, 0xc3, 0x65, 0xdc, 0xa7, 0x07, 0x1b, 0x3e, 0xe3, 0x9a, + 0xb3, 0xac, 0x20, 0xcd, 0x66, 0x59, 0x19, 0x20, 0xe5, 0x0e, 0xf0, 0xeb, 0x55, 0xe0, 0xcd, 0x5d, + 0x42, 0x1d, 0xeb, 0x1b, 0xad, 0x3c, 0xd1, 0x5c, 0x58, 0x7c, 0x6b, 0x48, 0xc9, 0xae, 0xff, 0xc5, + 0xb8, 0xe4, 0xf9, 0x0c, 0xe2, 0xce, 0xe7, 0xb4, 0x62, 0x2e, 0x00, 0xd1, 0xfd, 0x77, 0xc6, 0x9c, + 0x14, 0xb8, 0x85, 0xf0, 0xdb, 0x35, 0x97, 0xf1, 0xc1, 0xc8, 0xfc, 0x4a, 0xd8, 0x1e, 0xb3, 0x96, + 0xb4, 0xf2, 0x86, 0x31, 0x61, 0xb3, 0x9c, 0x91, 0x4e, 0x0e, 0x4a, 0x03, 0x3a, 0x7e, 0x0f, 0xa2, + 0x2f, 0x34, 0x07, 0xe5, 0x02, 0x30, 0x1b, 0x94, 0x24, 0x27, 0x05, 0x9e, 0x22, 0xfc, 0x49, 0x15, + 0x14, 0x0b, 0x8e, 0xec, 0x0f, 0x94, 0x7f, 0x9f, 0xb5, 0x6a, 0xba, 0x73, 0x7e, 0x69, 0x8c, 0xb0, + 0xad, 0x5f, 0x51, 0x9a, 0x7c, 0x86, 0xfb, 0x08, 0xbf, 0x5f, 0x05, 0xde, 0x80, 0xc0, 0x73, 0xdb, + 0x24, 0x6a, 0x58, 0x07, 0xc6, 0xc8, 0x0e, 0x30, 0x6b, 0x5d, 0xb7, 0x2f, 0x05, 0x2c, 0x7c, 0x4b, + 0x13, 0x65, 0x48, 0xcb, 0x27, 0x08, 0x7f, 0x5c, 0x05, 0xbe, 0x49, 0x3a, 0xc0, 0x02, 0xd2, 0x06, + 0x95, 0xee, 0x4f, 0xba, 0x5d, 0x5d, 0x96, 0x22, 0xbc, 0x6b, 0x57, 0x13, 0x26, 0x1f, 0xe0, 0x31, + 0xc2, 0x1f, 0x55, 0x81, 0x97, 0x6b, 0x5b, 0x2a, 0xf5, 0x8a, 0x6e, 0x6f, 0x6a, 0x5e, 0x48, 0xff, + 0x30, 0x69, 0x8c, 0xd4, 0xbd, 0x86, 0xf0, 0x1b, 0x0d, 0x20, 0x41, 0xe0, 0x1d, 0x54, 0x7a, 0xd0, + 0xe5, 0xcc, 0x9a, 0xd7, 0x5c, 0x26, 0x09, 0x46, 0x68, 0x2d, 0x64, 0x41, 0x53, 0x25, 0xa1, 0xe8, + 0x38, 0x4d, 0x20, 0xb4, 0xbd, 0x5b, 0xe4, 0x9c, 0xba, 0xad, 0x90, 0x03, 0xd3, 0x2c, 0x09, 0x0a, + 0xd2, 0xac, 0x24, 0x28, 0x03, 0x52, 0xab, 0x27, 0xde, 0x1a, 0x46, 0xfc, 0xd6, 0x0d, 0xf6, 0x95, + 0x71, 0x8a, 0xa5, 0x89, 0x32, 0x52, 0x43, 0x18, 0x15, 0x95, 0x6c, 0x43, 0xa8, 0x20, 0xcd, 0x86, + 0x50, 0x19, 0x20, 0xe5, 0x6e, 0x20, 0xfc, 0x96, 0xa8, 0xbb, 0x25, 0x2f, 0x64, 0x1c, 0xa8, 0xb5, + 0x68, 0x54, 0xad, 0x07, 0x94, 0x90, 0x5a, 0xca, 0x06, 0x4b, 0xa1, 0xff, 0x11, 0x9e, 0x8a, 0xaa, + 0xce, 0xe0, 0x1b, 0x66, 0x7d, 0xaf, 0x5d, 0xa8, 0x04, 0x22, 0x54, 0xe6, 0x33, 0x90, 0xd2, 0xe3, + 0x0e, 0xc2, 0x56, 0xe2, 0xab, 0x3a, 0x74, 0x5a, 0x91, 0xcd, 0x8a, 0x69, 0xe6, 0x00, 0x14, 0x4e, + 0xab, 0x99, 0x79, 0x69, 0xf6, 0x08, 0xe1, 0x0f, 0x8b, 0x8e, 0xf3, 0x33, 0xfd, 0x2d, 0x70, 0xce, + 0xcf, 0x6f, 0x1d, 0x9f, 0xcb, 0xb9, 0x2b, 0xeb, 0x2e, 0x2b, 0x25, 0x2e, 0x2c, 0x2b, 0x13, 0xa6, + 0xa4, 0xde, 0xfd, 0x78, 0x81, 0xa4, 0x35, 0x57, 0x0d, 0x96, 0x96, 0xd2, 0x70, 0x2d, 0x7b, 0x80, + 0x94, 0xbb, 0x8e, 0xf0, 0x9b, 0xf1, 0x76, 0x2c, 0x4b, 0xc1, 0x82, 0xc1, 0x1e, 0x3e, 0xbc, 0xff, + 0x2f, 0x66, 0x62, 0x53, 0x67, 0xbc, 0x5f, 0x42, 0xba, 0x03, 0x49, 0x1f, 0xbd, 0xd5, 0x34, 0x8c, + 0x99, 0x9d, 0xf1, 0x46, 0xe9, 0x94, 0x53, 0x1d, 0x32, 0x39, 0x0d, 0x63, 0x66, 0x4e, 0xa3, 0x74, + 0xea, 0x12, 0xd5, 0x80, 0x6d, 0x0a, 0x6c, 0x57, 0x9c, 0xb2, 0xe2, 0xf3, 0xb0, 0xee, 0x2b, 0x31, + 0x8a, 0x9a, 0x5d, 0xa2, 0xd4, 0x09, 0x43, 0x45, 0x89, 0x41, 0xd7, 0x49, 0x14, 0xf9, 0xd8, 0x50, + 0xb7, 0x28, 0xa9, 0x60, 0xd3, 0xa2, 0xa4, 0xce, 0x90, 0x96, 0xb7, 0x11, 0x7e, 0xa7, 0x0a, 0x3c, + 0xfa, 0xf7, 0x56, 0x08, 0x21, 0xc4, 0x82, 0xcb, 0xba, 0xaf, 0x70, 0x9a, 0x13, 0x6e, 0x2b, 0x59, + 0xf1, 0xd4, 0x55, 0xbe, 0x0c, 0x1e, 0x70, 0xc8, 0x7a, 0x95, 0x1f, 0x43, 0x9b, 0x5d, 0xe5, 0xc7, + 0x86, 0x48, 0xd1, 0x43, 0x84, 0x3f, 0x6d, 0x72, 0x0a, 0xa4, 0x23, 0x5a, 0xa9, 0x4e, 0x96, 0x7a, + 0xf7, 0x85, 0x57, 0xe6, 0x08, 0xf9, 0xcd, 0xab, 0x8a, 0x13, 0x8f, 0xf1, 0x25, 0xfa, 0x0a, 0x9d, + 0x57, 0xdc, 0xe4, 0x51, 0x5a, 0xb3, 0xe2, 0xa6, 0x4f, 0xdf, 0x26, 0x15, 0x37, 0x4d, 0x0a, 0x97, + 0x75, 0xef, 0xe8, 0xc4, 0xce, 0x1d, 0x9f, 0xd8, 0xb9, 0xb3, 0x13, 0x1b, 0xfd, 0xd7, 0xb7, 0xd1, + 0xc3, 0xbe, 0x8d, 0x0e, 0xfb, 0x36, 0x3a, 0xea, 0xdb, 0xe8, 0x59, 0xdf, 0x46, 0xcf, 0xfb, 0x76, + 0xee, 0xac, 0x6f, 0xa3, 0x9b, 0xa7, 0x76, 0xee, 0xe8, 0xd4, 0xce, 0x1d, 0x9f, 0xda, 0xb9, 0x3f, + 0xe7, 0x76, 0xfc, 0x8b, 0x4e, 0x5d, 0xff, 0x92, 0x1f, 0xbb, 0x16, 0x93, 0x9f, 0x5b, 0xaf, 0x9d, + 0xff, 0xd2, 0xf5, 0xf5, 0xcb, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x93, 0xc0, 0x16, 0x7f, 0x13, 0x00, 0x00, } @@ -130,6 +131,9 @@ type AdminServiceClient interface { // RebuildMutableState attempts to rebuild mutable state according to persisted history events. // NOTE: this is experimental API RebuildMutableState(ctx context.Context, in *RebuildMutableStateRequest, opts ...grpc.CallOption) (*RebuildMutableStateResponse, error) + // ImportWorkflowExecution attempts to import workflow according to persisted history events. + // NOTE: this is experimental API + ImportWorkflowExecution(ctx context.Context, in *ImportWorkflowExecutionRequest, opts ...grpc.CallOption) (*ImportWorkflowExecutionResponse, error) // DescribeWorkflowExecution returns information about the internal states of workflow execution. DescribeMutableState(ctx context.Context, in *DescribeMutableStateRequest, opts ...grpc.CallOption) (*DescribeMutableStateResponse, error) // DescribeHistoryHost returns information about the internal states of a history host @@ -207,6 +211,15 @@ func (c *adminServiceClient) RebuildMutableState(ctx context.Context, in *Rebuil return out, nil } +func (c *adminServiceClient) ImportWorkflowExecution(ctx context.Context, in *ImportWorkflowExecutionRequest, opts ...grpc.CallOption) (*ImportWorkflowExecutionResponse, error) { + out := new(ImportWorkflowExecutionResponse) + err := c.cc.Invoke(ctx, "/temporal.server.api.adminservice.v1.AdminService/ImportWorkflowExecution", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *adminServiceClient) DescribeMutableState(ctx context.Context, in *DescribeMutableStateRequest, opts ...grpc.CallOption) (*DescribeMutableStateResponse, error) { out := new(DescribeMutableStateResponse) err := c.cc.Invoke(ctx, "/temporal.server.api.adminservice.v1.AdminService/DescribeMutableState", in, out, opts...) @@ -486,6 +499,9 @@ type AdminServiceServer interface { // RebuildMutableState attempts to rebuild mutable state according to persisted history events. // NOTE: this is experimental API RebuildMutableState(context.Context, *RebuildMutableStateRequest) (*RebuildMutableStateResponse, error) + // ImportWorkflowExecution attempts to import workflow according to persisted history events. + // NOTE: this is experimental API + ImportWorkflowExecution(context.Context, *ImportWorkflowExecutionRequest) (*ImportWorkflowExecutionResponse, error) // DescribeWorkflowExecution returns information about the internal states of workflow execution. DescribeMutableState(context.Context, *DescribeMutableStateRequest) (*DescribeMutableStateResponse, error) // DescribeHistoryHost returns information about the internal states of a history host @@ -553,6 +569,9 @@ type UnimplementedAdminServiceServer struct { func (*UnimplementedAdminServiceServer) RebuildMutableState(ctx context.Context, req *RebuildMutableStateRequest) (*RebuildMutableStateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RebuildMutableState not implemented") } +func (*UnimplementedAdminServiceServer) ImportWorkflowExecution(ctx context.Context, req *ImportWorkflowExecutionRequest) (*ImportWorkflowExecutionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ImportWorkflowExecution not implemented") +} func (*UnimplementedAdminServiceServer) DescribeMutableState(ctx context.Context, req *DescribeMutableStateRequest) (*DescribeMutableStateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DescribeMutableState not implemented") } @@ -660,6 +679,24 @@ func _AdminService_RebuildMutableState_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } +func _AdminService_ImportWorkflowExecution_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ImportWorkflowExecutionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).ImportWorkflowExecution(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/temporal.server.api.adminservice.v1.AdminService/ImportWorkflowExecution", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).ImportWorkflowExecution(ctx, req.(*ImportWorkflowExecutionRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _AdminService_DescribeMutableState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DescribeMutableStateRequest) if err := dec(in); err != nil { @@ -1180,6 +1217,10 @@ var _AdminService_serviceDesc = grpc.ServiceDesc{ MethodName: "RebuildMutableState", Handler: _AdminService_RebuildMutableState_Handler, }, + { + MethodName: "ImportWorkflowExecution", + Handler: _AdminService_ImportWorkflowExecution_Handler, + }, { MethodName: "DescribeMutableState", Handler: _AdminService_DescribeMutableState_Handler, diff --git a/api/adminservicemock/v1/service.pb.mock.go b/api/adminservicemock/v1/service.pb.mock.go index c9919d75208..fc913cc690b 100644 --- a/api/adminservicemock/v1/service.pb.mock.go +++ b/api/adminservicemock/v1/service.pb.mock.go @@ -381,6 +381,26 @@ func (mr *MockAdminServiceClientMockRecorder) GetWorkflowExecutionRawHistoryV2(c return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkflowExecutionRawHistoryV2", reflect.TypeOf((*MockAdminServiceClient)(nil).GetWorkflowExecutionRawHistoryV2), varargs...) } +// ImportWorkflowExecution mocks base method. +func (m *MockAdminServiceClient) ImportWorkflowExecution(ctx context.Context, in *adminservice.ImportWorkflowExecutionRequest, opts ...grpc.CallOption) (*adminservice.ImportWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ImportWorkflowExecution", varargs...) + ret0, _ := ret[0].(*adminservice.ImportWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ImportWorkflowExecution indicates an expected call of ImportWorkflowExecution. +func (mr *MockAdminServiceClientMockRecorder) ImportWorkflowExecution(ctx, in interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImportWorkflowExecution", reflect.TypeOf((*MockAdminServiceClient)(nil).ImportWorkflowExecution), varargs...) +} + // ListClusterMembers mocks base method. func (m *MockAdminServiceClient) ListClusterMembers(ctx context.Context, in *adminservice.ListClusterMembersRequest, opts ...grpc.CallOption) (*adminservice.ListClusterMembersResponse, error) { m.ctrl.T.Helper() @@ -1041,6 +1061,21 @@ func (mr *MockAdminServiceServerMockRecorder) GetWorkflowExecutionRawHistoryV2(a return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkflowExecutionRawHistoryV2", reflect.TypeOf((*MockAdminServiceServer)(nil).GetWorkflowExecutionRawHistoryV2), arg0, arg1) } +// ImportWorkflowExecution mocks base method. +func (m *MockAdminServiceServer) ImportWorkflowExecution(arg0 context.Context, arg1 *adminservice.ImportWorkflowExecutionRequest) (*adminservice.ImportWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ImportWorkflowExecution", arg0, arg1) + ret0, _ := ret[0].(*adminservice.ImportWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ImportWorkflowExecution indicates an expected call of ImportWorkflowExecution. +func (mr *MockAdminServiceServerMockRecorder) ImportWorkflowExecution(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImportWorkflowExecution", reflect.TypeOf((*MockAdminServiceServer)(nil).ImportWorkflowExecution), arg0, arg1) +} + // ListClusterMembers mocks base method. func (m *MockAdminServiceServer) ListClusterMembers(arg0 context.Context, arg1 *adminservice.ListClusterMembersRequest) (*adminservice.ListClusterMembersResponse, error) { m.ctrl.T.Helper() diff --git a/api/historyservice/v1/request_response.pb.go b/api/historyservice/v1/request_response.pb.go index f2d4e894742..5861103b9dd 100644 --- a/api/historyservice/v1/request_response.pb.go +++ b/api/historyservice/v1/request_response.pb.go @@ -5594,6 +5594,124 @@ func (m *RebuildMutableStateResponse) XXX_DiscardUnknown() { var xxx_messageInfo_RebuildMutableStateResponse proto.InternalMessageInfo +type ImportWorkflowExecutionRequest struct { + NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + Execution *v14.WorkflowExecution `protobuf:"bytes,2,opt,name=execution,proto3" json:"execution,omitempty"` + HistoryBatches []*v14.DataBlob `protobuf:"bytes,3,rep,name=history_batches,json=historyBatches,proto3" json:"history_batches,omitempty"` + VersionHistory *v18.VersionHistory `protobuf:"bytes,4,opt,name=version_history,json=versionHistory,proto3" json:"version_history,omitempty"` + Token []byte `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` +} + +func (m *ImportWorkflowExecutionRequest) Reset() { *m = ImportWorkflowExecutionRequest{} } +func (*ImportWorkflowExecutionRequest) ProtoMessage() {} +func (*ImportWorkflowExecutionRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_b8c78c1d460a3711, []int{95} +} +func (m *ImportWorkflowExecutionRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ImportWorkflowExecutionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ImportWorkflowExecutionRequest.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 *ImportWorkflowExecutionRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ImportWorkflowExecutionRequest.Merge(m, src) +} +func (m *ImportWorkflowExecutionRequest) XXX_Size() int { + return m.Size() +} +func (m *ImportWorkflowExecutionRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ImportWorkflowExecutionRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ImportWorkflowExecutionRequest proto.InternalMessageInfo + +func (m *ImportWorkflowExecutionRequest) GetNamespaceId() string { + if m != nil { + return m.NamespaceId + } + return "" +} + +func (m *ImportWorkflowExecutionRequest) GetExecution() *v14.WorkflowExecution { + if m != nil { + return m.Execution + } + return nil +} + +func (m *ImportWorkflowExecutionRequest) GetHistoryBatches() []*v14.DataBlob { + if m != nil { + return m.HistoryBatches + } + return nil +} + +func (m *ImportWorkflowExecutionRequest) GetVersionHistory() *v18.VersionHistory { + if m != nil { + return m.VersionHistory + } + return nil +} + +func (m *ImportWorkflowExecutionRequest) GetToken() []byte { + if m != nil { + return m.Token + } + return nil +} + +type ImportWorkflowExecutionResponse struct { + Token []byte `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` +} + +func (m *ImportWorkflowExecutionResponse) Reset() { *m = ImportWorkflowExecutionResponse{} } +func (*ImportWorkflowExecutionResponse) ProtoMessage() {} +func (*ImportWorkflowExecutionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_b8c78c1d460a3711, []int{96} +} +func (m *ImportWorkflowExecutionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ImportWorkflowExecutionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ImportWorkflowExecutionResponse.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 *ImportWorkflowExecutionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ImportWorkflowExecutionResponse.Merge(m, src) +} +func (m *ImportWorkflowExecutionResponse) XXX_Size() int { + return m.Size() +} +func (m *ImportWorkflowExecutionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ImportWorkflowExecutionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ImportWorkflowExecutionResponse proto.InternalMessageInfo + +func (m *ImportWorkflowExecutionResponse) GetToken() []byte { + if m != nil { + return m.Token + } + return nil +} + type DeleteWorkflowVisibilityRecordRequest struct { NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` Execution *v14.WorkflowExecution `protobuf:"bytes,2,opt,name=execution,proto3" json:"execution,omitempty"` @@ -5604,7 +5722,7 @@ type DeleteWorkflowVisibilityRecordRequest struct { func (m *DeleteWorkflowVisibilityRecordRequest) Reset() { *m = DeleteWorkflowVisibilityRecordRequest{} } func (*DeleteWorkflowVisibilityRecordRequest) ProtoMessage() {} func (*DeleteWorkflowVisibilityRecordRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{95} + return fileDescriptor_b8c78c1d460a3711, []int{97} } func (m *DeleteWorkflowVisibilityRecordRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5669,7 +5787,7 @@ func (m *DeleteWorkflowVisibilityRecordResponse) Reset() { } func (*DeleteWorkflowVisibilityRecordResponse) ProtoMessage() {} func (*DeleteWorkflowVisibilityRecordResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{96} + return fileDescriptor_b8c78c1d460a3711, []int{98} } func (m *DeleteWorkflowVisibilityRecordResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5709,7 +5827,7 @@ type UpdateWorkflowExecutionRequest struct { func (m *UpdateWorkflowExecutionRequest) Reset() { *m = UpdateWorkflowExecutionRequest{} } func (*UpdateWorkflowExecutionRequest) ProtoMessage() {} func (*UpdateWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{97} + return fileDescriptor_b8c78c1d460a3711, []int{99} } func (m *UpdateWorkflowExecutionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5759,7 +5877,7 @@ type UpdateWorkflowExecutionResponse struct { func (m *UpdateWorkflowExecutionResponse) Reset() { *m = UpdateWorkflowExecutionResponse{} } func (*UpdateWorkflowExecutionResponse) ProtoMessage() {} func (*UpdateWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{98} + return fileDescriptor_b8c78c1d460a3711, []int{100} } func (m *UpdateWorkflowExecutionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5807,7 +5925,7 @@ func (m *StreamWorkflowReplicationMessagesRequest) Reset() { } func (*StreamWorkflowReplicationMessagesRequest) ProtoMessage() {} func (*StreamWorkflowReplicationMessagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{99} + return fileDescriptor_b8c78c1d460a3711, []int{101} } func (m *StreamWorkflowReplicationMessagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5883,7 +6001,7 @@ func (m *StreamWorkflowReplicationMessagesResponse) Reset() { } func (*StreamWorkflowReplicationMessagesResponse) ProtoMessage() {} func (*StreamWorkflowReplicationMessagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{100} + return fileDescriptor_b8c78c1d460a3711, []int{102} } func (m *StreamWorkflowReplicationMessagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5955,7 +6073,7 @@ type PollWorkflowExecutionUpdateRequest struct { func (m *PollWorkflowExecutionUpdateRequest) Reset() { *m = PollWorkflowExecutionUpdateRequest{} } func (*PollWorkflowExecutionUpdateRequest) ProtoMessage() {} func (*PollWorkflowExecutionUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{101} + return fileDescriptor_b8c78c1d460a3711, []int{103} } func (m *PollWorkflowExecutionUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6005,7 +6123,7 @@ type PollWorkflowExecutionUpdateResponse struct { func (m *PollWorkflowExecutionUpdateResponse) Reset() { *m = PollWorkflowExecutionUpdateResponse{} } func (*PollWorkflowExecutionUpdateResponse) ProtoMessage() {} func (*PollWorkflowExecutionUpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{102} + return fileDescriptor_b8c78c1d460a3711, []int{104} } func (m *PollWorkflowExecutionUpdateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6049,7 +6167,7 @@ type GetWorkflowExecutionHistoryRequest struct { func (m *GetWorkflowExecutionHistoryRequest) Reset() { *m = GetWorkflowExecutionHistoryRequest{} } func (*GetWorkflowExecutionHistoryRequest) ProtoMessage() {} func (*GetWorkflowExecutionHistoryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{103} + return fileDescriptor_b8c78c1d460a3711, []int{105} } func (m *GetWorkflowExecutionHistoryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6099,7 +6217,7 @@ type GetWorkflowExecutionHistoryResponse struct { func (m *GetWorkflowExecutionHistoryResponse) Reset() { *m = GetWorkflowExecutionHistoryResponse{} } func (*GetWorkflowExecutionHistoryResponse) ProtoMessage() {} func (*GetWorkflowExecutionHistoryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{104} + return fileDescriptor_b8c78c1d460a3711, []int{106} } func (m *GetWorkflowExecutionHistoryResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6145,7 +6263,7 @@ func (m *GetWorkflowExecutionHistoryReverseRequest) Reset() { } func (*GetWorkflowExecutionHistoryReverseRequest) ProtoMessage() {} func (*GetWorkflowExecutionHistoryReverseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{105} + return fileDescriptor_b8c78c1d460a3711, []int{107} } func (m *GetWorkflowExecutionHistoryReverseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6197,7 +6315,7 @@ func (m *GetWorkflowExecutionHistoryReverseResponse) Reset() { } func (*GetWorkflowExecutionHistoryReverseResponse) ProtoMessage() {} func (*GetWorkflowExecutionHistoryReverseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{106} + return fileDescriptor_b8c78c1d460a3711, []int{108} } func (m *GetWorkflowExecutionHistoryReverseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6246,7 +6364,7 @@ func (m *GetWorkflowExecutionRawHistoryV2Request) Reset() { } func (*GetWorkflowExecutionRawHistoryV2Request) ProtoMessage() {} func (*GetWorkflowExecutionRawHistoryV2Request) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{107} + return fileDescriptor_b8c78c1d460a3711, []int{109} } func (m *GetWorkflowExecutionRawHistoryV2Request) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6298,7 +6416,7 @@ func (m *GetWorkflowExecutionRawHistoryV2Response) Reset() { } func (*GetWorkflowExecutionRawHistoryV2Response) ProtoMessage() {} func (*GetWorkflowExecutionRawHistoryV2Response) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{108} + return fileDescriptor_b8c78c1d460a3711, []int{110} } func (m *GetWorkflowExecutionRawHistoryV2Response) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6342,7 +6460,7 @@ type ForceDeleteWorkflowExecutionRequest struct { func (m *ForceDeleteWorkflowExecutionRequest) Reset() { *m = ForceDeleteWorkflowExecutionRequest{} } func (*ForceDeleteWorkflowExecutionRequest) ProtoMessage() {} func (*ForceDeleteWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{109} + return fileDescriptor_b8c78c1d460a3711, []int{111} } func (m *ForceDeleteWorkflowExecutionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6392,7 +6510,7 @@ type ForceDeleteWorkflowExecutionResponse struct { func (m *ForceDeleteWorkflowExecutionResponse) Reset() { *m = ForceDeleteWorkflowExecutionResponse{} } func (*ForceDeleteWorkflowExecutionResponse) ProtoMessage() {} func (*ForceDeleteWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b8c78c1d460a3711, []int{110} + return fileDescriptor_b8c78c1d460a3711, []int{112} } func (m *ForceDeleteWorkflowExecutionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6528,6 +6646,8 @@ func init() { proto.RegisterType((*ShardReplicationStatusPerCluster)(nil), "temporal.server.api.historyservice.v1.ShardReplicationStatusPerCluster") proto.RegisterType((*RebuildMutableStateRequest)(nil), "temporal.server.api.historyservice.v1.RebuildMutableStateRequest") proto.RegisterType((*RebuildMutableStateResponse)(nil), "temporal.server.api.historyservice.v1.RebuildMutableStateResponse") + proto.RegisterType((*ImportWorkflowExecutionRequest)(nil), "temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest") + proto.RegisterType((*ImportWorkflowExecutionResponse)(nil), "temporal.server.api.historyservice.v1.ImportWorkflowExecutionResponse") proto.RegisterType((*DeleteWorkflowVisibilityRecordRequest)(nil), "temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest") proto.RegisterType((*DeleteWorkflowVisibilityRecordResponse)(nil), "temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordResponse") proto.RegisterType((*UpdateWorkflowExecutionRequest)(nil), "temporal.server.api.historyservice.v1.UpdateWorkflowExecutionRequest") @@ -6551,323 +6671,327 @@ func init() { } var fileDescriptor_b8c78c1d460a3711 = []byte{ - // 5046 bytes of a gzipped FileDescriptorProto + // 5109 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3d, 0x5b, 0x6c, 0x1c, 0xd7, - 0x75, 0x1a, 0xee, 0x2e, 0xb9, 0x3c, 0x24, 0xf7, 0x31, 0x7c, 0x2d, 0x49, 0x69, 0x45, 0x8d, 0x24, - 0x8b, 0x92, 0xad, 0xd5, 0xcb, 0x89, 0x15, 0x35, 0xb6, 0x23, 0x52, 0x2f, 0xaa, 0x92, 0x42, 0x0f, - 0x69, 0xd9, 0x4d, 0xac, 0x8c, 0x87, 0x3b, 0x97, 0xe4, 0x84, 0xbb, 0x33, 0xab, 0xb9, 0xb3, 0x24, - 0xd7, 0xfd, 0x48, 0x81, 0xa0, 0x6d, 0x92, 0x8f, 0xd6, 0x40, 0x51, 0x20, 0x28, 0xd2, 0x7e, 0x14, - 0x68, 0x1d, 0x14, 0x28, 0xfa, 0xd1, 0x02, 0x45, 0x3f, 0xf2, 0xd3, 0x8f, 0xa2, 0x28, 0xfa, 0x61, - 0xf4, 0xa7, 0x46, 0x8b, 0x3e, 0x2c, 0xa3, 0x68, 0x82, 0xf6, 0xc3, 0x7f, 0x7d, 0x7c, 0x15, 0xf7, - 0x35, 0x3b, 0xaf, 0x9d, 0xdd, 0xe5, 0x4a, 0x95, 0x93, 0xf8, 0x4f, 0x7b, 0xef, 0x39, 0xe7, 0x9e, - 0x7b, 0x9e, 0xf7, 0x9e, 0x39, 0x97, 0x82, 0x2f, 0xbb, 0xa8, 0xde, 0xb0, 0x1d, 0xbd, 0x76, 0x01, - 0x23, 0x67, 0x0f, 0x39, 0x17, 0xf4, 0x86, 0x79, 0x61, 0xc7, 0xc4, 0xae, 0xed, 0xb4, 0xc8, 0x88, - 0x59, 0x45, 0x17, 0xf6, 0x2e, 0x5d, 0x70, 0xd0, 0xe3, 0x26, 0xc2, 0xae, 0xe6, 0x20, 0xdc, 0xb0, - 0x2d, 0x8c, 0x2a, 0x0d, 0xc7, 0x76, 0x6d, 0xf9, 0xb4, 0xc0, 0xae, 0x30, 0xec, 0x8a, 0xde, 0x30, - 0x2b, 0x41, 0xec, 0xca, 0xde, 0xa5, 0xf9, 0xf2, 0xb6, 0x6d, 0x6f, 0xd7, 0xd0, 0x05, 0x8a, 0xb4, - 0xd9, 0xdc, 0xba, 0x60, 0x34, 0x1d, 0xdd, 0x35, 0x6d, 0x8b, 0x91, 0x99, 0x3f, 0x1e, 0x9e, 0x77, - 0xcd, 0x3a, 0xc2, 0xae, 0x5e, 0x6f, 0x70, 0x80, 0x13, 0x06, 0x6a, 0x20, 0xcb, 0x40, 0x56, 0xd5, - 0x44, 0xf8, 0xc2, 0xb6, 0xbd, 0x6d, 0xd3, 0x71, 0xfa, 0x2f, 0x0e, 0x72, 0xca, 0xdb, 0x08, 0xd9, - 0x41, 0xd5, 0xae, 0xd7, 0x6d, 0x8b, 0x70, 0x5e, 0x47, 0x18, 0xeb, 0xdb, 0x9c, 0xe1, 0xf9, 0xd3, - 0x01, 0x28, 0xce, 0x69, 0x14, 0xec, 0x4c, 0x00, 0xcc, 0xd5, 0xf1, 0xee, 0xe3, 0x26, 0x6a, 0xa2, - 0x28, 0x60, 0x70, 0x55, 0x64, 0x35, 0xeb, 0x98, 0x00, 0xed, 0xdb, 0xce, 0xee, 0x56, 0xcd, 0xde, - 0xe7, 0x50, 0x2f, 0x04, 0xa0, 0xc4, 0x64, 0x94, 0xda, 0xc9, 0x00, 0xdc, 0xe3, 0x26, 0x8a, 0xe3, - 0x2d, 0x48, 0x8c, 0x8e, 0x55, 0xed, 0x5a, 0xb7, 0xad, 0x6e, 0xe9, 0x66, 0xad, 0xe9, 0xc4, 0xec, - 0xe0, 0x5c, 0x9c, 0x01, 0x54, 0x6b, 0x76, 0x75, 0x37, 0x0a, 0xfb, 0x52, 0x82, 0xb1, 0x44, 0xa1, - 0xcf, 0xc6, 0x41, 0x7b, 0x22, 0x62, 0x1a, 0xe2, 0xa0, 0x2f, 0x26, 0x82, 0x86, 0xa4, 0x79, 0x26, - 0x11, 0x98, 0x28, 0x8b, 0x03, 0x9e, 0x8f, 0x03, 0xec, 0x2c, 0xfd, 0x4a, 0x1c, 0xb8, 0xa5, 0xd7, - 0x11, 0x6e, 0xe8, 0xd5, 0x18, 0xc9, 0x5d, 0x8c, 0x83, 0x77, 0x50, 0xa3, 0x66, 0x56, 0xa9, 0x71, - 0x47, 0x31, 0xae, 0xc4, 0x61, 0x34, 0x90, 0x83, 0x4d, 0xec, 0x22, 0x8b, 0xad, 0x81, 0x0e, 0x50, - 0xb5, 0x49, 0xd0, 0x31, 0x47, 0x7a, 0xbd, 0x07, 0x24, 0xb1, 0x29, 0xad, 0xde, 0x74, 0xf5, 0xcd, - 0x1a, 0xd2, 0xb0, 0xab, 0xbb, 0x62, 0xd5, 0x2f, 0xc6, 0x5a, 0x5f, 0x57, 0xe7, 0x9e, 0xbf, 0x16, - 0xb7, 0xb0, 0x6e, 0xd4, 0x4d, 0xab, 0x2b, 0xae, 0xf2, 0x93, 0x61, 0x38, 0xb6, 0xee, 0xea, 0x8e, - 0xfb, 0x16, 0x5f, 0xee, 0xa6, 0xd8, 0x96, 0xca, 0x10, 0xe4, 0x13, 0x30, 0xee, 0xc9, 0x56, 0x33, - 0x8d, 0x92, 0xb4, 0x28, 0x2d, 0x8d, 0xaa, 0x63, 0xde, 0xd8, 0xaa, 0x21, 0x57, 0x61, 0x02, 0x13, - 0x1a, 0x1a, 0x5f, 0xa4, 0x34, 0xb4, 0x28, 0x2d, 0x8d, 0x5d, 0x7e, 0xcd, 0x53, 0x14, 0x0d, 0x37, - 0xa1, 0x0d, 0x55, 0xf6, 0x2e, 0x55, 0x12, 0x57, 0x56, 0xc7, 0x29, 0x51, 0xc1, 0xc7, 0x0e, 0x4c, - 0x37, 0x74, 0x07, 0x59, 0xae, 0xe6, 0x49, 0x5e, 0x33, 0xad, 0x2d, 0xbb, 0x94, 0xa2, 0x8b, 0xbd, - 0x5c, 0x89, 0x0b, 0x71, 0x9e, 0x45, 0xee, 0x5d, 0xaa, 0xac, 0x51, 0x6c, 0x6f, 0x95, 0x55, 0x6b, - 0xcb, 0x56, 0x27, 0x1b, 0xd1, 0x41, 0xb9, 0x04, 0x23, 0xba, 0x4b, 0xa8, 0xb9, 0xa5, 0xf4, 0xa2, - 0xb4, 0x94, 0x51, 0xc5, 0x4f, 0xb9, 0x0e, 0x8a, 0xa7, 0xc1, 0x36, 0x17, 0xe8, 0xa0, 0x61, 0xb2, - 0x30, 0xa9, 0x91, 0x78, 0x58, 0xca, 0x50, 0x86, 0xe6, 0x2b, 0x2c, 0x58, 0x56, 0x44, 0xb0, 0xac, - 0x6c, 0x88, 0x60, 0xb9, 0x9c, 0x7e, 0xff, 0x5f, 0x8e, 0x4b, 0xea, 0xf1, 0xfd, 0xf0, 0xce, 0x6f, - 0x7a, 0x94, 0x08, 0xac, 0xbc, 0x03, 0x73, 0x55, 0xdb, 0x72, 0x4d, 0xab, 0x89, 0x34, 0x1d, 0x6b, - 0x16, 0xda, 0xd7, 0x4c, 0xcb, 0x74, 0x4d, 0xdd, 0xb5, 0x9d, 0xd2, 0xf0, 0xa2, 0xb4, 0x94, 0xbb, - 0x7c, 0x3e, 0x28, 0x63, 0xea, 0x5d, 0x64, 0xb3, 0x2b, 0x1c, 0xef, 0x3a, 0x7e, 0x80, 0xf6, 0x57, - 0x05, 0x92, 0x3a, 0x53, 0x8d, 0x1d, 0x97, 0xef, 0x43, 0x51, 0xcc, 0x18, 0x1a, 0x0f, 0x41, 0xa5, - 0x11, 0xba, 0x8f, 0xc5, 0xe0, 0x0a, 0x7c, 0x92, 0xac, 0x71, 0x8b, 0xfd, 0x53, 0x2d, 0x78, 0xa8, - 0x7c, 0x44, 0x7e, 0x08, 0x33, 0x35, 0x1d, 0xbb, 0x5a, 0xd5, 0xae, 0x37, 0x6a, 0x88, 0x4a, 0xc6, - 0x41, 0xb8, 0x59, 0x73, 0x4b, 0xd9, 0x38, 0x9a, 0x3c, 0xc4, 0x50, 0x1d, 0xb5, 0x6a, 0xb6, 0x6e, - 0x60, 0x75, 0x8a, 0xe0, 0xaf, 0x78, 0xe8, 0x2a, 0xc5, 0x96, 0xbf, 0x01, 0x0b, 0x5b, 0xa6, 0x83, - 0x5d, 0xcd, 0xd3, 0x02, 0x89, 0x22, 0xda, 0xa6, 0x5e, 0xdd, 0xb5, 0xb7, 0xb6, 0x4a, 0xa3, 0x94, - 0xf8, 0x5c, 0x44, 0xf0, 0x37, 0x78, 0x16, 0x5b, 0x4e, 0x7f, 0x9f, 0xc8, 0xbd, 0x44, 0x69, 0x08, - 0xb3, 0xdb, 0xd0, 0xf1, 0xee, 0x32, 0x23, 0x20, 0xbf, 0x03, 0x53, 0xd8, 0x6e, 0x3a, 0x55, 0xa4, - 0xed, 0x11, 0xbf, 0xb5, 0x2d, 0x8d, 0xea, 0xab, 0x04, 0x94, 0xf0, 0xb9, 0x4e, 0x5c, 0x13, 0x52, - 0xc8, 0x79, 0xc8, 0x50, 0xd6, 0x09, 0x86, 0x2a, 0x33, 0x3a, 0xfe, 0x31, 0xe5, 0xc7, 0x12, 0x94, - 0x3b, 0x59, 0x3c, 0x73, 0x4a, 0x79, 0x1a, 0x86, 0x9d, 0xa6, 0xd5, 0x76, 0xb3, 0x8c, 0xd3, 0xb4, - 0x56, 0x0d, 0xf9, 0x75, 0xc8, 0xd0, 0x48, 0xcf, 0x1d, 0xeb, 0x6c, 0xac, 0xad, 0x53, 0x08, 0xc2, - 0xce, 0x43, 0x54, 0x75, 0x6d, 0x67, 0x85, 0xfc, 0x54, 0x19, 0x9e, 0x6c, 0xc1, 0x24, 0xd2, 0xb7, - 0x91, 0x13, 0x14, 0x1c, 0x77, 0x9d, 0xee, 0x7e, 0xba, 0x66, 0xd7, 0x6a, 0x7e, 0x79, 0xbd, 0x41, - 0x92, 0xac, 0x60, 0x5a, 0x2d, 0x52, 0xd2, 0xfe, 0x79, 0xe5, 0x3f, 0x24, 0x98, 0xb9, 0x8d, 0xdc, - 0xfb, 0x2c, 0xca, 0xad, 0x93, 0x20, 0xd7, 0x47, 0x3c, 0xb9, 0x0d, 0xa3, 0x9e, 0x77, 0x45, 0xb7, - 0x1c, 0x95, 0x7d, 0x50, 0x96, 0x6d, 0x5c, 0xf9, 0x0a, 0xcc, 0xa0, 0x83, 0x06, 0xaa, 0xba, 0xc8, - 0xd0, 0x2c, 0x74, 0xe0, 0x6a, 0x68, 0x8f, 0x04, 0x10, 0xd3, 0xa0, 0x3b, 0x4f, 0xa9, 0x93, 0x62, - 0xf6, 0x01, 0x3a, 0x70, 0x6f, 0x92, 0xb9, 0x55, 0x43, 0xbe, 0x08, 0x53, 0xd5, 0xa6, 0x43, 0x23, - 0xcd, 0xa6, 0xa3, 0x5b, 0xd5, 0x1d, 0xcd, 0xb5, 0x77, 0x91, 0x45, 0x63, 0xc1, 0xb8, 0x2a, 0xf3, - 0xb9, 0x65, 0x3a, 0xb5, 0x41, 0x66, 0x94, 0x1f, 0x8d, 0xc2, 0x6c, 0x64, 0xb7, 0x5c, 0xa3, 0x81, - 0xbd, 0x48, 0x03, 0xec, 0x65, 0x15, 0x26, 0xda, 0xca, 0x6b, 0x35, 0x10, 0x17, 0xcc, 0xa9, 0x6e, - 0xc4, 0x36, 0x5a, 0x0d, 0xa4, 0x8e, 0xef, 0xfb, 0x7e, 0xc9, 0x0a, 0x4c, 0xc4, 0x49, 0x63, 0xcc, - 0xf2, 0x49, 0xe1, 0x4b, 0x30, 0xd7, 0x70, 0xd0, 0x9e, 0x69, 0x37, 0xb1, 0x46, 0xe3, 0x30, 0x32, - 0xda, 0xf0, 0x69, 0x0a, 0x3f, 0x23, 0x00, 0xd6, 0xd9, 0xbc, 0x40, 0x3d, 0x0f, 0x93, 0xd4, 0xfb, - 0x99, 0xab, 0x7a, 0x48, 0x19, 0x8a, 0x54, 0x20, 0x53, 0xb7, 0xc8, 0x8c, 0x00, 0x5f, 0x01, 0xa0, - 0x5e, 0x4c, 0x4f, 0x6e, 0x34, 0xac, 0x45, 0x76, 0xe5, 0x1d, 0xec, 0xc8, 0xc6, 0xda, 0x06, 0x38, - 0xea, 0x8a, 0x7f, 0xca, 0x6b, 0x50, 0xc4, 0xae, 0x59, 0xdd, 0x6d, 0x69, 0x3e, 0x5a, 0x23, 0x7d, - 0xd0, 0xca, 0x33, 0x74, 0x6f, 0x40, 0xfe, 0x65, 0x78, 0x31, 0x42, 0x51, 0xc3, 0xd5, 0x1d, 0x64, - 0x34, 0x6b, 0x48, 0x73, 0x6d, 0x26, 0x15, 0x1a, 0xf1, 0xed, 0xa6, 0x5b, 0x1a, 0xeb, 0x2d, 0xf6, - 0x9c, 0x0e, 0x2d, 0xb3, 0xce, 0x09, 0x6e, 0xd8, 0x54, 0x88, 0x1b, 0x8c, 0x5a, 0x47, 0x1b, 0x9c, - 0xe8, 0x64, 0x83, 0xf2, 0xd7, 0x21, 0xe7, 0x99, 0x07, 0x3d, 0x54, 0x94, 0xf2, 0x34, 0x41, 0xc4, - 0xe7, 0x45, 0x2f, 0x4f, 0x44, 0x4c, 0x8e, 0x59, 0xaf, 0x67, 0x6a, 0xf4, 0xa7, 0xfc, 0x16, 0xe4, - 0x03, 0xc4, 0x9b, 0xb8, 0x54, 0xa0, 0xd4, 0x2b, 0x1d, 0xd2, 0x4f, 0x2c, 0xd9, 0x26, 0x56, 0x73, - 0x7e, 0xba, 0x4d, 0x2c, 0x3f, 0x82, 0xa2, 0x88, 0xb4, 0xec, 0x78, 0x6a, 0x22, 0x5c, 0x2a, 0x52, - 0x51, 0x5e, 0xac, 0x24, 0xdc, 0x59, 0x58, 0x98, 0xa3, 0x88, 0x77, 0x04, 0x9e, 0x5a, 0xd8, 0x0b, - 0x8d, 0xc8, 0xaf, 0xc1, 0x51, 0x93, 0x98, 0x6f, 0x58, 0x8d, 0xc8, 0x22, 0x8e, 0x6a, 0x94, 0xe4, - 0x45, 0x69, 0x29, 0xab, 0x96, 0x4c, 0xbc, 0x1e, 0xd4, 0xca, 0x4d, 0x36, 0x2f, 0xbf, 0x0c, 0xb3, - 0x11, 0x4b, 0x76, 0x0f, 0x68, 0x7c, 0x9e, 0x64, 0x01, 0x24, 0x68, 0xcd, 0x1b, 0x07, 0x24, 0x5a, - 0x5f, 0x81, 0x19, 0x8e, 0xe0, 0x1d, 0x11, 0x78, 0x50, 0x9f, 0xa2, 0xb1, 0x6e, 0x92, 0xce, 0xb6, - 0x9d, 0x9c, 0x86, 0xf8, 0x77, 0x60, 0x6a, 0x9f, 0xa6, 0x91, 0x50, 0xea, 0x99, 0xee, 0x3f, 0xf5, - 0xec, 0x47, 0xc6, 0xee, 0xa6, 0xb3, 0xd9, 0xc2, 0xe8, 0xdd, 0x74, 0x76, 0xb4, 0x00, 0x77, 0xd3, - 0x59, 0x28, 0x8c, 0xdd, 0x4d, 0x67, 0xc7, 0x0b, 0x13, 0x77, 0xd3, 0xd9, 0x5c, 0x21, 0xaf, 0xfc, - 0xa7, 0x04, 0xb3, 0x24, 0xc4, 0xff, 0x9c, 0x84, 0xeb, 0xdf, 0xc9, 0x42, 0x29, 0xba, 0xdd, 0xcf, - 0xe3, 0xf5, 0xe7, 0xf1, 0xfa, 0xa9, 0xc7, 0xeb, 0xf1, 0x8e, 0xf1, 0x3a, 0x36, 0xf2, 0xe5, 0x9e, - 0x5a, 0xe4, 0xfb, 0xe9, 0x4c, 0x07, 0x09, 0xf1, 0xb6, 0x78, 0x98, 0x78, 0x2b, 0x77, 0x8c, 0xb7, - 0xb1, 0x11, 0x71, 0xa2, 0x90, 0x53, 0xbe, 0x2b, 0xc1, 0x82, 0x8a, 0x30, 0x72, 0x43, 0x29, 0xe1, - 0x39, 0xc4, 0x43, 0xa5, 0x0c, 0x47, 0xe3, 0x59, 0x61, 0xb1, 0x4a, 0xf9, 0x61, 0x0a, 0x16, 0x55, - 0x54, 0xb5, 0x1d, 0xc3, 0x7f, 0xf8, 0xe6, 0xde, 0xdd, 0x07, 0xc3, 0x6f, 0x83, 0x1c, 0xbd, 0xd6, - 0xf6, 0xcf, 0x79, 0x31, 0x72, 0x9f, 0x95, 0x5f, 0x02, 0x59, 0xb8, 0xa0, 0x11, 0x0e, 0x5f, 0x05, - 0x6f, 0x46, 0x44, 0x96, 0x59, 0x18, 0xa1, 0xbe, 0xeb, 0x45, 0xac, 0x61, 0xf2, 0x73, 0xd5, 0x90, - 0x8f, 0x01, 0x88, 0xfa, 0x05, 0x0f, 0x4c, 0xa3, 0xea, 0x28, 0x1f, 0x59, 0x35, 0xe4, 0x77, 0x61, - 0xbc, 0x61, 0xd7, 0x6a, 0x5e, 0xf9, 0x81, 0xc5, 0xa4, 0x57, 0x0f, 0x7b, 0xad, 0x61, 0xd5, 0x87, - 0x31, 0x42, 0x52, 0x08, 0xd1, 0xbb, 0x80, 0x8d, 0x1c, 0xee, 0x02, 0xa6, 0xfc, 0x4f, 0x16, 0x4e, - 0x24, 0xa8, 0x8a, 0x27, 0x9f, 0x48, 0xce, 0x90, 0x0e, 0x9d, 0x33, 0x12, 0xf3, 0xc1, 0x50, 0x62, - 0x3e, 0xe8, 0x4f, 0x69, 0x4b, 0x50, 0xe8, 0x90, 0x6f, 0x72, 0x38, 0x48, 0x37, 0x92, 0xc6, 0x32, - 0xd1, 0x34, 0xe6, 0xab, 0xbd, 0x0c, 0x07, 0x6b, 0x2f, 0x57, 0xa1, 0xc4, 0xe3, 0xbb, 0xaf, 0xf2, - 0xc2, 0xcf, 0x71, 0x23, 0xf4, 0x1c, 0x37, 0xc3, 0xe6, 0xdb, 0xd5, 0x14, 0x7e, 0x8a, 0x7b, 0x0c, - 0xb3, 0xae, 0xa3, 0x5b, 0xd8, 0x24, 0xcb, 0x06, 0x2f, 0xc0, 0xac, 0x1c, 0xf1, 0xa5, 0x6e, 0x01, - 0x77, 0x43, 0xa0, 0xfb, 0x95, 0x47, 0x0b, 0x48, 0xd3, 0x6e, 0xdc, 0x94, 0xbc, 0x0d, 0xc7, 0x62, - 0x0a, 0x45, 0xbe, 0x54, 0x37, 0xda, 0x47, 0xaa, 0x9b, 0x8f, 0xf8, 0x55, 0x3b, 0xeb, 0x9d, 0x80, - 0xf1, 0x40, 0xc2, 0x19, 0xa3, 0x09, 0x67, 0x6c, 0xd3, 0x97, 0x69, 0x6e, 0x43, 0xae, 0xad, 0x4e, - 0x5a, 0xa0, 0x1a, 0xef, 0xb1, 0x40, 0x35, 0xe1, 0xe1, 0xd1, 0x72, 0xd4, 0x0a, 0x8c, 0x0b, 0x4d, - 0x53, 0x32, 0x13, 0x3d, 0x92, 0x19, 0xe3, 0x58, 0x94, 0x88, 0x0d, 0x23, 0x8f, 0x9b, 0x88, 0x67, - 0xbb, 0xd4, 0xd2, 0xd8, 0xe5, 0x37, 0x2b, 0x3d, 0x7d, 0x9b, 0xa8, 0x74, 0xf5, 0x9e, 0xca, 0x1b, - 0x8c, 0xee, 0x4d, 0xcb, 0x75, 0x5a, 0xaa, 0x58, 0xa5, 0xed, 0xba, 0xf9, 0x43, 0xd6, 0x4e, 0x5e, - 0x85, 0x2c, 0xaf, 0x0e, 0x93, 0x34, 0x47, 0x58, 0x3e, 0x11, 0x54, 0x9b, 0x28, 0xed, 0x13, 0xfc, - 0xfb, 0x0c, 0x52, 0xf5, 0x50, 0x88, 0x45, 0xf3, 0xec, 0xcc, 0x73, 0x98, 0xf8, 0x39, 0xff, 0x2e, - 0x8c, 0xfb, 0x59, 0x96, 0x0b, 0x90, 0xda, 0x45, 0x2d, 0x1e, 0xa0, 0xc9, 0x3f, 0xe5, 0x6b, 0x90, - 0xd9, 0xd3, 0x6b, 0xcd, 0x0e, 0x67, 0x47, 0xfa, 0xdd, 0xc1, 0x1f, 0x06, 0x08, 0xb5, 0x96, 0xca, - 0x50, 0xae, 0x0d, 0x5d, 0x95, 0x58, 0x62, 0xf3, 0xa5, 0x89, 0xeb, 0x55, 0xd7, 0xdc, 0x33, 0xdd, - 0xd6, 0xe7, 0x69, 0xa2, 0xdf, 0x34, 0xe1, 0x97, 0xdc, 0x33, 0x4c, 0x13, 0xff, 0x94, 0x16, 0x69, - 0x22, 0x56, 0x55, 0x3c, 0x4d, 0x3c, 0x80, 0x7c, 0x48, 0x5c, 0x3c, 0x51, 0x9c, 0x0e, 0xee, 0xc5, - 0x17, 0xc1, 0xd8, 0xc9, 0xb0, 0x45, 0x45, 0xa8, 0xe6, 0x82, 0x22, 0x8d, 0x38, 0xf6, 0xd0, 0x61, - 0x1c, 0xdb, 0x17, 0xb9, 0x53, 0xc1, 0xc8, 0x8d, 0xa0, 0x2c, 0x0e, 0xc7, 0x7c, 0x48, 0x0b, 0x05, - 0xa4, 0x74, 0x8f, 0x0b, 0x2e, 0x70, 0x3a, 0xd7, 0x19, 0x99, 0xf5, 0x40, 0x78, 0xba, 0x0f, 0xc5, - 0x1d, 0xa4, 0x3b, 0xee, 0x26, 0xd2, 0x5d, 0xcd, 0x40, 0xae, 0x6e, 0xd6, 0x30, 0xaf, 0xc5, 0x77, - 0xaf, 0x37, 0x17, 0x3c, 0xd4, 0x1b, 0x0c, 0x33, 0x9a, 0x8b, 0x87, 0x0f, 0x9d, 0x8b, 0xcf, 0xfb, - 0x1c, 0xc7, 0x73, 0x28, 0x6a, 0x23, 0xa3, 0x6d, 0x6f, 0x78, 0x20, 0x26, 0xda, 0x56, 0x94, 0x3d, - 0x64, 0xc4, 0xf2, 0x85, 0x9c, 0xd1, 0x40, 0xc8, 0x51, 0xfe, 0x42, 0x82, 0x93, 0xcc, 0x8c, 0x02, - 0x91, 0x94, 0x17, 0xda, 0xfb, 0x8a, 0x06, 0x36, 0x14, 0x78, 0x79, 0x1f, 0x85, 0xbe, 0xfb, 0xdc, - 0xe8, 0xea, 0x51, 0x3d, 0xb0, 0xa0, 0xe6, 0x05, 0x75, 0x3e, 0xa0, 0x7c, 0x90, 0x82, 0x53, 0xc9, - 0x88, 0xdc, 0x3d, 0xf6, 0xdb, 0x27, 0x12, 0xf1, 0xb5, 0x8b, 0xfb, 0xc7, 0x9d, 0xa7, 0x95, 0x6b, - 0x96, 0x87, 0x4a, 0x12, 0xb9, 0x82, 0x06, 0xfd, 0x12, 0x41, 0x4e, 0xe7, 0x6e, 0x4b, 0x73, 0x3d, - 0x2e, 0x0d, 0xd1, 0x7c, 0xf1, 0xda, 0x61, 0x43, 0x0c, 0x2f, 0xb0, 0x4f, 0xe8, 0xbe, 0x29, 0x4c, - 0xee, 0x3b, 0x0e, 0xb9, 0x16, 0xf0, 0x8b, 0x63, 0x2b, 0x52, 0x26, 0xa1, 0xb3, 0x7e, 0x8f, 0x5f, - 0x35, 0xe4, 0x6f, 0x42, 0xd1, 0x42, 0xfb, 0xa1, 0xe3, 0x4f, 0xfa, 0xa9, 0xd4, 0xff, 0xf3, 0x16, - 0xda, 0x0f, 0x54, 0xff, 0xff, 0x44, 0x22, 0x09, 0x27, 0xa2, 0xa9, 0x5b, 0xba, 0x59, 0xeb, 0xcb, - 0xc4, 0x76, 0x20, 0xb7, 0x45, 0x71, 0x42, 0x06, 0x76, 0xfd, 0x30, 0x06, 0x16, 0x58, 0x5d, 0x9d, - 0xd8, 0xf2, 0xff, 0x54, 0x4e, 0x92, 0xb0, 0xdb, 0x11, 0x85, 0x5f, 0xb7, 0xfe, 0x4b, 0x82, 0xf9, - 0x55, 0xec, 0x07, 0x78, 0xa8, 0xd7, 0x4c, 0xe3, 0x79, 0x54, 0xca, 0xbc, 0x10, 0x91, 0x3a, 0x64, - 0x88, 0x88, 0xcf, 0xb8, 0xe9, 0xf8, 0x8c, 0xab, 0x5c, 0x85, 0x85, 0xd8, 0x8d, 0x73, 0xbb, 0x9f, - 0x83, 0xac, 0x89, 0xb5, 0x3d, 0x32, 0x46, 0x77, 0x9d, 0x55, 0x47, 0x4c, 0x4c, 0x41, 0x48, 0xc0, - 0x51, 0xa2, 0x09, 0xed, 0x8e, 0x08, 0xb6, 0x7d, 0xc8, 0xae, 0xe1, 0x0f, 0xef, 0x41, 0x7b, 0x58, - 0xe9, 0xc1, 0x1e, 0xba, 0xb1, 0xe0, 0xcb, 0x00, 0xc2, 0x28, 0xd6, 0x48, 0xac, 0x4c, 0xc0, 0xe3, - 0xbb, 0x3f, 0x0b, 0x85, 0xaa, 0x6e, 0x55, 0x91, 0x77, 0xb0, 0x40, 0x42, 0x0a, 0x79, 0x36, 0xae, - 0x8a, 0x61, 0x7f, 0xf8, 0xf5, 0xd3, 0x7c, 0x4e, 0xe1, 0x37, 0x89, 0x85, 0x68, 0xf8, 0x7d, 0xc1, - 0x8b, 0xbe, 0x1d, 0xf0, 0xb8, 0x97, 0xf8, 0x9c, 0xdf, 0x0f, 0xf8, 0xff, 0xef, 0xfc, 0x1d, 0x57, - 0xef, 0xec, 0xfc, 0x71, 0x28, 0x7c, 0x5b, 0x7f, 0x4a, 0x0d, 0x39, 0xba, 0x7f, 0xaa, 0xe1, 0xbe, - 0x36, 0xf6, 0x4d, 0xc8, 0x05, 0xed, 0xa5, 0x0f, 0x2b, 0xee, 0xb6, 0xbe, 0x3a, 0x11, 0x30, 0x39, - 0xe5, 0x74, 0xbc, 0xbd, 0x79, 0x48, 0x81, 0xc8, 0xe6, 0x07, 0xf9, 0xb9, 0x8a, 0x6c, 0x31, 0x1b, - 0xef, 0x1e, 0xd9, 0xfe, 0x6a, 0x08, 0xca, 0xeb, 0xe6, 0xb6, 0xa5, 0xd7, 0x06, 0x69, 0x9d, 0xd9, - 0x82, 0x1c, 0xa6, 0x44, 0x42, 0xc6, 0xf0, 0x7a, 0xf7, 0xde, 0x99, 0xc4, 0xb5, 0xd5, 0x09, 0x46, - 0x56, 0xb0, 0x62, 0xc2, 0x02, 0x3a, 0x70, 0x91, 0x43, 0x56, 0x8a, 0xb9, 0xc4, 0xa5, 0xfa, 0xd5, - 0xd8, 0x9c, 0xa0, 0x16, 0x99, 0x92, 0x2b, 0x30, 0x59, 0xdd, 0x31, 0x6b, 0x46, 0x7b, 0x1d, 0xdb, - 0xaa, 0xb5, 0xa8, 0x06, 0xb2, 0x6a, 0x91, 0x4e, 0x09, 0xa4, 0xaf, 0x5a, 0xb5, 0x96, 0x72, 0x02, - 0x8e, 0x77, 0xdc, 0x0b, 0xb7, 0xcf, 0xbf, 0x93, 0xe0, 0x0c, 0x87, 0x31, 0xdd, 0x9d, 0x81, 0xfb, - 0x95, 0xbe, 0x2d, 0xc1, 0x1c, 0x97, 0xfa, 0xbe, 0xe9, 0xee, 0x68, 0x71, 0xcd, 0x4b, 0x77, 0x7a, - 0x55, 0x40, 0x37, 0x86, 0xd4, 0x19, 0x1c, 0x04, 0x14, 0xbe, 0x79, 0x1d, 0x96, 0xba, 0x93, 0x48, - 0xec, 0x0b, 0x51, 0x7e, 0x24, 0xc1, 0x71, 0x15, 0xd5, 0xed, 0x3d, 0xc4, 0x28, 0x1d, 0xf2, 0x03, - 0xde, 0xb3, 0xbb, 0xd8, 0x07, 0x6f, 0xe4, 0xa9, 0xd0, 0x8d, 0x5c, 0x51, 0x48, 0xaa, 0xe8, 0xc4, - 0xbe, 0xd0, 0xfd, 0x10, 0x9c, 0xd8, 0x40, 0x4e, 0xdd, 0xb4, 0x74, 0x17, 0x0d, 0xa2, 0x75, 0x1b, - 0x8a, 0xae, 0xa0, 0x13, 0x52, 0xf6, 0x72, 0x57, 0x65, 0x77, 0xe5, 0x40, 0x2d, 0x78, 0xc4, 0x7f, - 0x0a, 0x7c, 0xee, 0x14, 0x28, 0x49, 0x3b, 0xe2, 0xa2, 0xff, 0x5f, 0x09, 0xca, 0x37, 0x10, 0x49, - 0xef, 0x83, 0xc8, 0xfd, 0xd9, 0x59, 0xd7, 0x59, 0x28, 0x78, 0x94, 0xc5, 0x85, 0x97, 0x5d, 0x81, - 0xbc, 0xef, 0x53, 0xfc, 0x53, 0x19, 0xfd, 0x40, 0x57, 0xb3, 0x31, 0x8a, 0x97, 0x90, 0xcc, 0xe6, - 0xc2, 0x61, 0xa9, 0xe3, 0xde, 0xb9, 0x7c, 0x3e, 0x90, 0xe0, 0x18, 0xfd, 0x40, 0x33, 0x60, 0xf3, - 0x24, 0xbb, 0xcd, 0xf5, 0xdb, 0x3c, 0x99, 0xb8, 0xb2, 0x3a, 0x4e, 0x89, 0x8a, 0x58, 0xf3, 0x0a, - 0x94, 0x3b, 0x81, 0x27, 0x47, 0x98, 0xdf, 0x4a, 0xc1, 0x69, 0x4e, 0x84, 0x9d, 0x1a, 0x06, 0xd9, - 0x6a, 0xbd, 0xc3, 0xc9, 0xe7, 0x56, 0x0f, 0x7b, 0xed, 0x81, 0x85, 0xd0, 0xe1, 0x47, 0x7e, 0xd5, - 0xe7, 0x7f, 0xbc, 0x6f, 0x32, 0x5a, 0x5e, 0x2c, 0x09, 0x90, 0x55, 0x01, 0x21, 0x6e, 0xcc, 0x5d, - 0xdc, 0x37, 0xfd, 0xec, 0xdd, 0x37, 0xd3, 0xc9, 0x7d, 0x97, 0xe0, 0x85, 0x6e, 0x12, 0xe1, 0x26, - 0xfa, 0x93, 0x21, 0x58, 0x10, 0x65, 0x32, 0xff, 0x05, 0xee, 0x33, 0xe1, 0xbf, 0x57, 0x60, 0xc6, - 0xc4, 0x5a, 0x4c, 0x47, 0x27, 0xd5, 0x4d, 0x56, 0x9d, 0x34, 0xf1, 0xad, 0x70, 0xab, 0xa6, 0x7c, - 0x17, 0xc6, 0x98, 0xac, 0xd8, 0x31, 0x31, 0xdd, 0xef, 0x31, 0x11, 0x28, 0x36, 0xfd, 0xb7, 0x7c, - 0x0f, 0xc6, 0x79, 0x4f, 0x31, 0x23, 0x96, 0xe9, 0x97, 0xd8, 0x18, 0x43, 0xa7, 0x3f, 0x94, 0x32, - 0x1c, 0x8d, 0x17, 0x35, 0xd7, 0xc5, 0xbf, 0x4b, 0x70, 0xe6, 0x21, 0x72, 0xcc, 0xad, 0x56, 0x64, - 0x57, 0x5e, 0x25, 0xf3, 0x33, 0xa1, 0x97, 0x41, 0xcf, 0xe0, 0xca, 0x39, 0x58, 0xea, 0xbe, 0x51, - 0x2e, 0x95, 0x4f, 0x69, 0x59, 0x8f, 0x5c, 0xb3, 0x57, 0x88, 0x62, 0x3c, 0x2e, 0x0e, 0x73, 0x29, - 0xde, 0x80, 0x42, 0xb8, 0x47, 0xbc, 0x7f, 0x81, 0xe4, 0x43, 0x3d, 0xe1, 0xc4, 0x3b, 0x39, 0xd5, - 0x76, 0x14, 0xf1, 0xe2, 0x47, 0x91, 0x4d, 0x79, 0xd1, 0x63, 0xd5, 0x90, 0x55, 0xc8, 0x33, 0x0b, - 0x1d, 0x20, 0x58, 0xe4, 0xaa, 0x01, 0x61, 0xc8, 0x6b, 0xde, 0x75, 0x9f, 0x7e, 0xf7, 0xa4, 0x35, - 0xff, 0x4c, 0x3f, 0x35, 0xff, 0x7c, 0x1b, 0x9d, 0x15, 0xfd, 0x3d, 0x25, 0x0f, 0x1f, 0xf2, 0xa2, - 0x75, 0x15, 0x4a, 0x11, 0xb1, 0x88, 0x2c, 0x3c, 0xc2, 0x3f, 0x30, 0x07, 0x65, 0xc3, 0x93, 0xb1, - 0x72, 0x86, 0xe4, 0x94, 0x44, 0x8d, 0x8b, 0x04, 0x9b, 0x82, 0xf3, 0xcc, 0x90, 0x62, 0x21, 0x69, - 0xa0, 0x23, 0x74, 0x3e, 0x03, 0x46, 0x12, 0xa3, 0xf4, 0xd4, 0xa0, 0x4a, 0xef, 0x60, 0x78, 0xe9, - 0x4e, 0x86, 0x97, 0xa4, 0x91, 0x4c, 0x92, 0x46, 0x06, 0x36, 0x06, 0xe5, 0x22, 0x54, 0x7a, 0x55, - 0x14, 0xd7, 0xed, 0xef, 0x4b, 0xb0, 0x78, 0x03, 0xe1, 0xaa, 0x63, 0x6e, 0x0e, 0x74, 0xbc, 0xfc, - 0x3a, 0x8c, 0xf4, 0x5b, 0x20, 0xea, 0xb6, 0xac, 0x2a, 0x28, 0x2a, 0xbf, 0x99, 0x86, 0x13, 0x09, - 0xd0, 0xfc, 0xec, 0xf4, 0x0e, 0x14, 0xda, 0x1f, 0xf9, 0xab, 0xb6, 0xb5, 0x65, 0x6e, 0xf3, 0x0f, - 0x0e, 0x97, 0xe2, 0x79, 0x89, 0x55, 0xff, 0x0a, 0x45, 0x54, 0xf3, 0x28, 0x38, 0x20, 0x6f, 0xc3, - 0x6c, 0x4c, 0x2f, 0x01, 0x7d, 0xfa, 0xc2, 0x36, 0x7c, 0xa1, 0x8f, 0x45, 0x58, 0xd3, 0xc2, 0x7e, - 0xdc, 0xb0, 0xfc, 0x0e, 0xc8, 0x0d, 0x64, 0x19, 0xa6, 0xb5, 0xad, 0xf1, 0x0f, 0x0e, 0x26, 0xc2, - 0xa5, 0x14, 0xfd, 0x84, 0x71, 0xbe, 0xf3, 0x1a, 0x6b, 0x0c, 0x47, 0x14, 0x51, 0xe8, 0x0a, 0xc5, - 0x46, 0x60, 0xd0, 0x44, 0x58, 0xfe, 0x06, 0x14, 0x04, 0x75, 0x6a, 0xe6, 0x0e, 0xed, 0xd1, 0x24, - 0xb4, 0xaf, 0x74, 0xa5, 0x1d, 0x34, 0x2a, 0xba, 0x42, 0xbe, 0xe1, 0x9b, 0x72, 0x90, 0x25, 0x23, - 0x98, 0x16, 0xf4, 0x83, 0x67, 0x89, 0x4c, 0x37, 0x4d, 0xf0, 0x45, 0x22, 0xbd, 0x1d, 0x93, 0x8d, - 0xe8, 0x84, 0xf2, 0x6f, 0x29, 0x28, 0xa9, 0xfc, 0xed, 0x18, 0xa2, 0x91, 0x14, 0x3f, 0xbc, 0xfc, - 0x99, 0xc8, 0xda, 0x5b, 0x30, 0x1d, 0xec, 0x28, 0x6c, 0x69, 0xa6, 0x8b, 0xea, 0x42, 0x83, 0x97, - 0xfb, 0xea, 0x2a, 0x6c, 0xad, 0xba, 0xa8, 0xae, 0x4e, 0xee, 0x45, 0xc6, 0xb0, 0x7c, 0x15, 0x86, - 0x69, 0xfe, 0xc1, 0x3c, 0xab, 0x75, 0xfc, 0xb8, 0x7a, 0x43, 0x77, 0xf5, 0xe5, 0x9a, 0xbd, 0xa9, - 0x72, 0x78, 0xf9, 0x16, 0xe4, 0x2c, 0xb4, 0x4f, 0x9b, 0xf3, 0x38, 0x85, 0x4c, 0x8f, 0x14, 0xc6, - 0x2d, 0xb4, 0xaf, 0x36, 0x59, 0xe6, 0xc2, 0xf2, 0x26, 0x4c, 0x6e, 0xea, 0x18, 0x85, 0xbd, 0x81, - 0xc5, 0xae, 0xcb, 0x5d, 0x1f, 0x82, 0x2d, 0xeb, 0x18, 0x05, 0x8d, 0xa9, 0xb8, 0x19, 0x1e, 0x52, - 0x16, 0x60, 0x2e, 0x46, 0xcd, 0x3c, 0x76, 0xfd, 0x0d, 0xbd, 0xf8, 0xf1, 0xd9, 0xb7, 0xfc, 0xbd, - 0x91, 0xc2, 0x12, 0xb4, 0x48, 0xff, 0x25, 0x0b, 0x08, 0x57, 0x63, 0xb9, 0xf3, 0xbd, 0x12, 0xf4, - 0xab, 0x3b, 0x50, 0x0f, 0x09, 0xf5, 0x60, 0x9e, 0x86, 0x9c, 0x83, 0xea, 0xb6, 0x8b, 0xb4, 0x6a, - 0xad, 0x89, 0x5d, 0xe4, 0x50, 0x1b, 0x1a, 0x55, 0x27, 0xd8, 0xe8, 0x0a, 0x1b, 0x8c, 0x58, 0x64, - 0x2a, 0x62, 0x91, 0xca, 0x22, 0xb9, 0x1b, 0xc6, 0xef, 0x85, 0x6f, 0xf7, 0x77, 0x25, 0x98, 0x59, - 0x6f, 0x59, 0xd5, 0xf5, 0x1d, 0xdd, 0x31, 0x78, 0xeb, 0x26, 0xdf, 0xe7, 0x69, 0xc8, 0xf1, 0x17, - 0x53, 0x82, 0x0d, 0x66, 0xf3, 0x13, 0x6c, 0x54, 0xb0, 0x31, 0x07, 0x59, 0x4c, 0x90, 0x45, 0xf3, - 0x59, 0x46, 0x1d, 0xa1, 0xbf, 0x57, 0x0d, 0xf9, 0x3a, 0x8c, 0xb1, 0x1e, 0x52, 0xd6, 0x0a, 0x90, - 0xea, 0xb1, 0x15, 0x00, 0x18, 0x12, 0x19, 0x56, 0xe6, 0x60, 0x36, 0xc2, 0x1e, 0x67, 0xfd, 0x6f, - 0x87, 0x61, 0x92, 0xcc, 0x89, 0xe8, 0xd4, 0x87, 0xa7, 0x1e, 0x87, 0x31, 0x4f, 0x85, 0x9c, 0xed, - 0x51, 0x15, 0xc4, 0xd0, 0xaa, 0xe1, 0xbb, 0x32, 0xa7, 0xfc, 0x8f, 0xb5, 0x7c, 0x5f, 0xdf, 0xd3, - 0x81, 0xaf, 0xef, 0x1d, 0x4a, 0xd3, 0x99, 0x0e, 0x6d, 0x2e, 0xd1, 0xbe, 0xad, 0xe1, 0xc3, 0xf5, - 0x6d, 0xc5, 0x75, 0xe8, 0x8d, 0xc4, 0x76, 0xe8, 0x85, 0x1b, 0x41, 0xb2, 0x87, 0x69, 0x04, 0x59, - 0xe3, 0xed, 0xe4, 0xed, 0xaf, 0x75, 0x94, 0xd6, 0x68, 0x8f, 0xb4, 0x8a, 0x04, 0xd9, 0xfb, 0xca, - 0x46, 0x29, 0x5e, 0x83, 0x11, 0xd1, 0xcf, 0x01, 0x3d, 0xf6, 0x73, 0x08, 0x04, 0x7f, 0x5b, 0xca, - 0x58, 0xb0, 0x2d, 0x65, 0x05, 0xc6, 0x59, 0xb3, 0x31, 0x7f, 0xee, 0x38, 0xde, 0xe3, 0x73, 0xc7, - 0x31, 0xda, 0x83, 0xcc, 0x5f, 0x3a, 0x5e, 0x04, 0xfa, 0x52, 0x51, 0xe3, 0x6f, 0x37, 0x4c, 0x03, - 0x59, 0xae, 0xe9, 0xb6, 0x68, 0x6f, 0xdc, 0xa8, 0x2a, 0x93, 0x39, 0xf6, 0x44, 0x63, 0x95, 0xcf, - 0xc8, 0x6f, 0x41, 0x3e, 0x14, 0xa6, 0x79, 0xdb, 0x77, 0xa5, 0xbf, 0x00, 0xad, 0xe6, 0x82, 0xc1, - 0xb9, 0x53, 0x54, 0xcc, 0x3f, 0xcd, 0xa8, 0x38, 0x03, 0x53, 0x41, 0x6f, 0xe2, 0x6e, 0xf6, 0x5d, - 0x09, 0x16, 0xc4, 0x39, 0xe9, 0x39, 0xbf, 0x22, 0x51, 0xfe, 0x5b, 0x82, 0xa3, 0xf1, 0xbc, 0xf0, - 0xe3, 0xda, 0x0e, 0x4c, 0x56, 0xf5, 0xea, 0x0e, 0x0a, 0x3e, 0xc2, 0x1e, 0x38, 0x40, 0x17, 0x29, - 0x51, 0xff, 0x90, 0x6c, 0xc1, 0x8c, 0xa1, 0xbb, 0x3a, 0x55, 0x4b, 0x70, 0xb1, 0xa1, 0x01, 0x17, - 0x9b, 0x12, 0x74, 0xfd, 0xa3, 0xca, 0xdf, 0x4b, 0x30, 0x2f, 0xb6, 0xce, 0xcd, 0xe2, 0x8e, 0x8d, - 0xfd, 0x5f, 0xd9, 0x77, 0x6c, 0xec, 0x6a, 0xba, 0x61, 0x38, 0x08, 0x63, 0xa1, 0x05, 0x32, 0x76, - 0x9d, 0x0d, 0x25, 0x05, 0xea, 0xee, 0xa9, 0xa4, 0xc3, 0xe1, 0x26, 0x3d, 0xf8, 0xe1, 0x46, 0xf9, - 0x67, 0x9f, 0x81, 0x05, 0x76, 0xc6, 0x75, 0x7a, 0x12, 0x26, 0x28, 0x9f, 0x58, 0xb3, 0x9a, 0xf5, - 0x4d, 0x9e, 0x86, 0x32, 0xea, 0x38, 0x1b, 0x7c, 0x40, 0xc7, 0xe4, 0x05, 0x18, 0x15, 0x9b, 0x63, - 0xad, 0x39, 0x19, 0x35, 0xcb, 0x77, 0x87, 0xe5, 0x47, 0x90, 0x6f, 0x6f, 0x8f, 0xaa, 0x32, 0xf1, - 0x65, 0xb9, 0x07, 0x4b, 0xb6, 0xe0, 0xf5, 0x6e, 0xad, 0x10, 0x3c, 0xea, 0x3c, 0x39, 0x2b, 0x30, - 0x46, 0xe3, 0x10, 0x17, 0x3b, 0x6b, 0x4c, 0x14, 0x3f, 0xef, 0xa6, 0xb3, 0xe9, 0x42, 0x46, 0xa9, - 0x40, 0x71, 0xa5, 0x66, 0x63, 0x44, 0x93, 0x98, 0x50, 0x98, 0x5f, 0x1b, 0x52, 0x40, 0x1b, 0xca, - 0x14, 0xc8, 0x7e, 0x78, 0xee, 0x87, 0x2f, 0x41, 0xfe, 0x36, 0x72, 0x7b, 0xa5, 0xf1, 0x2e, 0x14, - 0xda, 0xd0, 0x5c, 0x90, 0xf7, 0x00, 0x38, 0x38, 0x09, 0x1e, 0xcc, 0x27, 0xce, 0xf7, 0x62, 0xa6, - 0x94, 0x0c, 0xdd, 0x3a, 0x13, 0x32, 0x8d, 0x17, 0xff, 0x20, 0x41, 0x91, 0x7d, 0xe1, 0xf1, 0x17, - 0x1d, 0x3b, 0xb3, 0x24, 0xdf, 0x82, 0x2c, 0x39, 0x87, 0x6c, 0x93, 0xb0, 0x38, 0x44, 0xdf, 0x94, - 0x9c, 0x4b, 0x7e, 0xb1, 0xc2, 0xbe, 0x67, 0x33, 0x0c, 0xd5, 0xc3, 0xf5, 0xf7, 0x88, 0xa6, 0x02, - 0x3d, 0xa2, 0xab, 0x90, 0xdf, 0x33, 0xb1, 0xb9, 0x69, 0xd6, 0x68, 0x97, 0x56, 0x3f, 0xdd, 0x87, - 0xb9, 0x36, 0x22, 0x3d, 0x76, 0x4c, 0x81, 0xec, 0xdf, 0x1b, 0x57, 0xc1, 0xfb, 0x12, 0x1c, 0xbb, - 0x8d, 0x5c, 0xb5, 0xfd, 0xf7, 0x25, 0x78, 0x4f, 0xb0, 0x77, 0x66, 0xba, 0x07, 0xc3, 0xb4, 0x59, - 0x9b, 0x38, 0x60, 0xaa, 0xa3, 0x81, 0xf9, 0xfe, 0x40, 0x05, 0xab, 0x80, 0x7b, 0x3f, 0x69, 0x5b, - 0xb7, 0xca, 0x69, 0x10, 0xb7, 0xe4, 0x47, 0x2f, 0xda, 0x5b, 0xc8, 0xcf, 0x29, 0x63, 0x7c, 0x8c, - 0x58, 0xa6, 0xf2, 0x83, 0x21, 0x28, 0x77, 0x62, 0x89, 0xab, 0xfd, 0x5b, 0x90, 0x63, 0x2a, 0xf1, - 0x5a, 0x9d, 0x19, 0x6f, 0x6f, 0xf7, 0xd8, 0x31, 0x97, 0x4c, 0x9e, 0x19, 0x87, 0x18, 0x65, 0x0d, - 0xda, 0xcc, 0x5f, 0xc5, 0xd8, 0x7c, 0x0b, 0xe4, 0x28, 0x90, 0xbf, 0x25, 0x3a, 0xc3, 0x5a, 0xa2, - 0xef, 0x07, 0x5b, 0xa2, 0x5f, 0xe9, 0x53, 0x76, 0x1e, 0x67, 0xed, 0x2e, 0x69, 0xe5, 0x3d, 0x58, - 0xbc, 0x8d, 0xdc, 0x1b, 0xf7, 0xde, 0x48, 0xd0, 0xd9, 0x43, 0xfe, 0xe8, 0x8d, 0x78, 0x85, 0x90, - 0x4d, 0xbf, 0x6b, 0x7b, 0x17, 0x4b, 0xfa, 0x0e, 0x8e, 0xfc, 0x0b, 0x2b, 0xbf, 0x2a, 0xc1, 0x89, - 0x84, 0xc5, 0xb9, 0x76, 0xde, 0x85, 0xa2, 0x8f, 0x2c, 0xef, 0x2d, 0x94, 0xc2, 0x97, 0xe7, 0x9e, - 0x99, 0x50, 0x0b, 0x4e, 0x70, 0x00, 0x2b, 0xdf, 0x93, 0x60, 0x8a, 0xb6, 0x8f, 0x8b, 0x68, 0xdc, - 0x47, 0xe6, 0xfe, 0x6a, 0xb8, 0x02, 0xf3, 0x85, 0xae, 0x15, 0x98, 0xb8, 0xa5, 0xda, 0x55, 0x97, - 0x5d, 0x98, 0x0e, 0x01, 0x70, 0x39, 0xa8, 0x90, 0x0d, 0x75, 0x74, 0x7e, 0xb1, 0xdf, 0xa5, 0x78, - 0xcf, 0xa2, 0x47, 0x47, 0xf9, 0x0d, 0x09, 0xa6, 0x54, 0xa4, 0x37, 0x1a, 0x35, 0x56, 0x29, 0xc5, - 0x7d, 0xec, 0x7c, 0x3d, 0xbc, 0xf3, 0xf8, 0x97, 0x24, 0xfe, 0xbf, 0xc5, 0xc2, 0xd4, 0x11, 0x5d, - 0xae, 0xbd, 0xfb, 0x59, 0x98, 0x0e, 0x01, 0x70, 0x4e, 0xff, 0x78, 0x08, 0xa6, 0x99, 0xad, 0x84, - 0xad, 0xf3, 0x26, 0xa4, 0xbd, 0xe7, 0x42, 0x39, 0x7f, 0xa9, 0x23, 0x2e, 0x62, 0xde, 0x40, 0xba, - 0x71, 0x0f, 0xb9, 0x2e, 0x72, 0x68, 0x1b, 0x27, 0xed, 0x57, 0xa6, 0xe8, 0x49, 0xc9, 0x3f, 0x7a, - 0xcf, 0x4b, 0xc5, 0xdd, 0xf3, 0x5e, 0x81, 0x92, 0x69, 0x11, 0x08, 0x73, 0x0f, 0x69, 0xc8, 0xf2, - 0xc2, 0x49, 0xbb, 0x6c, 0x39, 0xed, 0xcd, 0xdf, 0xb4, 0x84, 0xb3, 0xaf, 0x1a, 0xf2, 0x39, 0x28, - 0xd6, 0xf5, 0x03, 0xb3, 0xde, 0xac, 0x6b, 0x0d, 0x02, 0x8f, 0xcd, 0xf7, 0xd8, 0x1f, 0x52, 0xc9, - 0xa8, 0x79, 0x3e, 0xb1, 0xa6, 0x6f, 0xa3, 0x75, 0xf3, 0x3d, 0x24, 0xbf, 0x00, 0x79, 0xfa, 0x8e, - 0x88, 0x02, 0xb2, 0x67, 0x2f, 0xc3, 0xf4, 0xd9, 0x0b, 0x7d, 0x5e, 0x44, 0xc0, 0xd8, 0x3b, 0xdf, - 0x8f, 0x86, 0xe8, 0x1f, 0xa1, 0x08, 0xc8, 0x8b, 0x1b, 0xd2, 0x53, 0x12, 0x58, 0xac, 0x5f, 0x0e, - 0x3d, 0x45, 0xbf, 0x8c, 0xdb, 0x6b, 0x2a, 0x66, 0xaf, 0x72, 0x1d, 0x66, 0x22, 0x9c, 0xb0, 0x14, - 0x9e, 0x1e, 0x2c, 0x56, 0x4d, 0x85, 0x59, 0xa2, 0x79, 0xfd, 0x1f, 0x25, 0x98, 0x5d, 0x6b, 0x3a, - 0xdb, 0xe8, 0x67, 0xd1, 0x18, 0x95, 0x79, 0x28, 0x45, 0x37, 0x27, 0xda, 0x1b, 0x87, 0x60, 0xf6, - 0x3e, 0xfa, 0x19, 0xdd, 0xf9, 0x33, 0x71, 0xc3, 0x65, 0x28, 0x45, 0x05, 0xc6, 0xfd, 0x30, 0x86, - 0x86, 0x14, 0x47, 0xe3, 0x07, 0xf4, 0x55, 0xee, 0x96, 0x83, 0xf0, 0x8e, 0xbf, 0x1a, 0xdb, 0x4f, - 0xac, 0xfe, 0x5a, 0x38, 0x56, 0x7f, 0xa5, 0xc7, 0x58, 0xdd, 0x71, 0xd5, 0x76, 0xc8, 0xa6, 0x0f, - 0x75, 0xe3, 0xe0, 0xb8, 0xd1, 0x7c, 0x5f, 0x82, 0x73, 0xb7, 0x91, 0x85, 0x1c, 0xdd, 0x45, 0xf7, - 0x74, 0x2c, 0x7a, 0xf3, 0x43, 0xfe, 0x86, 0x9f, 0xc7, 0x6d, 0xb9, 0x0a, 0x2f, 0xf6, 0xc4, 0x19, - 0x57, 0xd8, 0xcb, 0x30, 0x43, 0x2f, 0xb0, 0x1a, 0x7b, 0xf7, 0xc8, 0xbf, 0x78, 0x34, 0xf9, 0x0b, - 0xa4, 0x94, 0x3a, 0x45, 0x67, 0x37, 0xbc, 0xc9, 0x15, 0x32, 0xa7, 0xdc, 0x82, 0x85, 0xe0, 0x01, - 0x31, 0x58, 0x44, 0x3c, 0x03, 0xf9, 0x60, 0x2d, 0x93, 0x1d, 0x6e, 0x46, 0xd5, 0x5c, 0xa0, 0x98, - 0x89, 0x95, 0x26, 0x1c, 0x8d, 0xa7, 0xc3, 0xb9, 0x7b, 0x13, 0x86, 0xd9, 0x85, 0x8f, 0x1f, 0x8e, - 0x5e, 0xed, 0xf1, 0xf4, 0xca, 0xaf, 0x40, 0x61, 0xb2, 0x9c, 0x98, 0xf2, 0x97, 0xc3, 0x30, 0x13, - 0x0f, 0x92, 0x74, 0x95, 0xf9, 0x02, 0xcc, 0xd6, 0xf5, 0x03, 0x2d, 0x1c, 0x96, 0xdb, 0xef, 0x6f, - 0xa7, 0xea, 0xfa, 0x41, 0x38, 0xe4, 0x1a, 0xf2, 0x3d, 0x28, 0x30, 0x8a, 0x35, 0xbb, 0xaa, 0xd7, - 0x7a, 0x2d, 0x8a, 0x0e, 0x93, 0x1b, 0x4a, 0x49, 0x52, 0xd9, 0x29, 0xfe, 0x1e, 0x41, 0xa5, 0xa5, - 0xb3, 0xf7, 0xa2, 0xa2, 0x65, 0x09, 0xe1, 0x8d, 0x81, 0x44, 0x53, 0x51, 0x03, 0x8a, 0x61, 0x27, - 0xfa, 0x90, 0xb6, 0xe4, 0x5f, 0x93, 0x60, 0x72, 0x47, 0xb7, 0x0c, 0x7b, 0x8f, 0xdf, 0x4d, 0xa8, - 0xf1, 0x92, 0xfb, 0x6f, 0x3f, 0xef, 0x3e, 0x3b, 0x30, 0x70, 0x87, 0x13, 0xf6, 0xae, 0xde, 0x9c, - 0x09, 0x79, 0x27, 0x32, 0x21, 0x37, 0xe0, 0x54, 0xac, 0x26, 0xc2, 0x17, 0xc1, 0x5e, 0xeb, 0xab, - 0x8b, 0x51, 0xc5, 0x3d, 0x0c, 0x5c, 0x0d, 0xe7, 0xbf, 0x27, 0xc1, 0x64, 0x8c, 0x88, 0x62, 0x9e, - 0x78, 0x3e, 0x0a, 0xde, 0x67, 0x6e, 0x0f, 0x24, 0x95, 0x35, 0xe4, 0xf0, 0xf5, 0x7c, 0xf7, 0x9b, - 0xf9, 0x6f, 0x4b, 0x30, 0xdb, 0x41, 0x5c, 0x31, 0x0c, 0xa9, 0x41, 0x86, 0xbe, 0xdc, 0x23, 0x43, - 0x91, 0x05, 0xe8, 0xe9, 0xc1, 0x77, 0xcb, 0x7a, 0x1b, 0xa6, 0x63, 0x61, 0xe4, 0xd7, 0xe1, 0xa8, - 0x67, 0x25, 0x71, 0xce, 0xc2, 0x02, 0xcb, 0x9c, 0x80, 0x89, 0x78, 0x8c, 0xf2, 0x07, 0x12, 0x2c, - 0x76, 0x93, 0x87, 0xac, 0xc0, 0x84, 0x5e, 0xdd, 0x45, 0x46, 0x88, 0xec, 0x18, 0x1d, 0xe4, 0xae, - 0xf7, 0x08, 0xe6, 0x7d, 0x30, 0x61, 0xeb, 0xe8, 0xf5, 0x55, 0xe4, 0xac, 0x47, 0x32, 0x68, 0x14, - 0xca, 0x77, 0x24, 0x98, 0x57, 0xd1, 0x66, 0xd3, 0xac, 0x19, 0xcf, 0xbb, 0x46, 0x7a, 0x8c, 0xa4, - 0xd3, 0x18, 0x4e, 0x78, 0xbe, 0xfa, 0xf3, 0x21, 0x38, 0x1d, 0x6c, 0x7e, 0x6c, 0x6f, 0x85, 0x7d, - 0xc8, 0x7f, 0x1e, 0x4f, 0x03, 0xd6, 0x60, 0xd2, 0xff, 0x4d, 0x8d, 0xff, 0x31, 0x97, 0x9e, 0xbf, - 0x18, 0x15, 0x7d, 0x1f, 0xd0, 0xd8, 0x5f, 0x6e, 0x09, 0x50, 0xa4, 0x2d, 0xa0, 0xfd, 0x15, 0x84, - 0x3c, 0x8a, 0xb4, 0x12, 0x47, 0x75, 0xbc, 0x04, 0x2f, 0x74, 0x13, 0x1c, 0x97, 0xf1, 0xef, 0x49, - 0x50, 0x7e, 0xb3, 0x61, 0x0c, 0xd8, 0xd4, 0xfc, 0x4b, 0xe1, 0x53, 0x4d, 0xf7, 0x87, 0x03, 0xc9, - 0x8b, 0xb6, 0x0f, 0x35, 0xdf, 0x82, 0xe3, 0x1d, 0x41, 0xbd, 0xc6, 0x87, 0xf0, 0x7d, 0xfc, 0x2b, - 0x87, 0x5f, 0x3e, 0x72, 0x33, 0xff, 0x23, 0x09, 0x96, 0xd6, 0x5d, 0x07, 0xe9, 0xf5, 0xf6, 0xf5, - 0xbd, 0x63, 0x81, 0xa6, 0x01, 0x33, 0xb8, 0x65, 0x55, 0x03, 0x11, 0xa4, 0x7b, 0x5d, 0x3f, 0x74, - 0x01, 0x5a, 0x6f, 0x59, 0xd5, 0x50, 0x10, 0x41, 0x77, 0x8e, 0xa8, 0x53, 0x38, 0x66, 0x7c, 0x79, - 0x1c, 0x40, 0x77, 0x5d, 0xc7, 0xdc, 0x6c, 0xba, 0x08, 0x93, 0x23, 0xde, 0xd9, 0x1e, 0x98, 0xe5, - 0x82, 0x7b, 0xe4, 0xfb, 0x9b, 0x02, 0x52, 0x58, 0x6f, 0x9d, 0xf9, 0x4b, 0x20, 0x7d, 0xe7, 0x48, - 0xfb, 0x6f, 0x0e, 0x84, 0x58, 0xfb, 0x43, 0x09, 0x14, 0xff, 0x0b, 0x4e, 0x4f, 0xe6, 0x4c, 0x15, - 0x7d, 0x58, 0xdb, 0xa3, 0xb0, 0xb5, 0xad, 0xf4, 0xf5, 0x74, 0x34, 0x7e, 0xe1, 0xb6, 0xc5, 0xfd, - 0xba, 0x04, 0x27, 0x13, 0xe1, 0xbd, 0x72, 0x58, 0xd8, 0xec, 0x6e, 0x0c, 0xc6, 0x47, 0xc4, 0xf4, - 0x88, 0xc8, 0x6e, 0xc7, 0xb4, 0x4b, 0x7b, 0xc7, 0xe3, 0x67, 0x29, 0xb2, 0xee, 0x0b, 0x07, 0x45, - 0x96, 0x08, 0x3f, 0x80, 0xc8, 0x7a, 0xa0, 0xeb, 0x13, 0xd9, 0x9f, 0x49, 0x70, 0x36, 0x11, 0x63, - 0x0f, 0x39, 0xb8, 0x1f, 0x63, 0x33, 0xc2, 0x92, 0xbb, 0x3b, 0x18, 0xc7, 0xfe, 0xf5, 0xdb, 0x02, - 0xfc, 0x6d, 0x7a, 0x35, 0xeb, 0x8e, 0xc6, 0xe5, 0xb8, 0x1d, 0x91, 0xe3, 0x2f, 0x3e, 0x15, 0xae, - 0xe2, 0xc4, 0x79, 0x26, 0x0e, 0x51, 0xd5, 0xf7, 0x39, 0x6e, 0x5f, 0x6d, 0x47, 0x5b, 0x61, 0x61, - 0xde, 0xeb, 0xe9, 0xf6, 0xdb, 0x23, 0x07, 0x01, 0x71, 0x2e, 0x75, 0x47, 0xe2, 0xc2, 0x34, 0x23, - 0xc2, 0xbc, 0xff, 0x94, 0xb8, 0x8a, 0x88, 0xf3, 0x03, 0x09, 0x4e, 0xde, 0xb2, 0x9d, 0x2a, 0x1a, - 0xfc, 0x3d, 0x4b, 0x92, 0x47, 0x27, 0x30, 0x9d, 0xbc, 0x70, 0x5b, 0x82, 0xdf, 0x91, 0xe0, 0x54, - 0x32, 0xa7, 0xbd, 0xb8, 0xf4, 0x61, 0x18, 0x09, 0x0b, 0x6d, 0xb9, 0xf1, 0xe1, 0xc7, 0xe5, 0x23, - 0x1f, 0x7d, 0x5c, 0x3e, 0xf2, 0xe9, 0xc7, 0x65, 0xe9, 0x57, 0x9e, 0x94, 0xa5, 0x1f, 0x3e, 0x29, - 0x4b, 0x7f, 0xfd, 0xa4, 0x2c, 0x7d, 0xf8, 0xa4, 0x2c, 0xfd, 0xeb, 0x93, 0xb2, 0xf4, 0xe3, 0x27, - 0xe5, 0x23, 0x9f, 0x3e, 0x29, 0x4b, 0xef, 0x7f, 0x52, 0x3e, 0xf2, 0xe1, 0x27, 0xe5, 0x23, 0x1f, - 0x7d, 0x52, 0x3e, 0xf2, 0xb5, 0x6b, 0xdb, 0x76, 0x9b, 0x0f, 0xd3, 0x4e, 0xfc, 0xff, 0x0a, 0x7e, - 0x21, 0x38, 0xb2, 0x39, 0x4c, 0xcf, 0x5a, 0x57, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x47, 0x2a, - 0xbb, 0xdb, 0xee, 0x60, 0x00, 0x00, + 0x75, 0x1a, 0xee, 0x2e, 0xb9, 0x3c, 0x24, 0xf7, 0x31, 0x7c, 0x2d, 0x49, 0x69, 0x45, 0x8d, 0x5e, + 0x94, 0x6c, 0xad, 0x5e, 0x4e, 0xac, 0xa8, 0xb1, 0x1d, 0x91, 0x7a, 0xad, 0x2a, 0x29, 0xf4, 0x90, + 0x96, 0xdd, 0xc4, 0xca, 0x78, 0x38, 0x73, 0x49, 0x4e, 0xb8, 0x3b, 0xb3, 0x9a, 0x99, 0x25, 0xb9, + 0xee, 0x47, 0x0a, 0x04, 0x6d, 0x93, 0x7c, 0xb4, 0x06, 0x8a, 0x02, 0x41, 0x91, 0xf6, 0xa3, 0x40, + 0xeb, 0xa0, 0x40, 0xd1, 0x8f, 0x16, 0x28, 0xfa, 0x91, 0x9f, 0x7e, 0x04, 0x45, 0xd1, 0x0f, 0xa3, + 0x3f, 0x35, 0x5a, 0xf4, 0x61, 0x19, 0x45, 0x13, 0xb4, 0x1f, 0xfe, 0xeb, 0xe3, 0xab, 0xb8, 0xaf, + 0xd9, 0x79, 0xed, 0xec, 0x2e, 0x97, 0x8a, 0x9c, 0xd8, 0x7f, 0x9c, 0x7b, 0xef, 0x39, 0xf7, 0xdc, + 0xf3, 0xbc, 0xf7, 0xdc, 0x73, 0x97, 0xf0, 0x65, 0x17, 0xd5, 0x1b, 0x96, 0xad, 0xd6, 0x2e, 0x3a, + 0xc8, 0xde, 0x45, 0xf6, 0x45, 0xb5, 0x61, 0x5c, 0xdc, 0x36, 0x1c, 0xd7, 0xb2, 0x5b, 0xb8, 0xc5, + 0xd0, 0xd0, 0xc5, 0xdd, 0xcb, 0x17, 0x6d, 0xf4, 0xa4, 0x89, 0x1c, 0x57, 0xb1, 0x91, 0xd3, 0xb0, + 0x4c, 0x07, 0x55, 0x1a, 0xb6, 0xe5, 0x5a, 0xe2, 0x69, 0x0e, 0x5d, 0xa1, 0xd0, 0x15, 0xb5, 0x61, + 0x54, 0x82, 0xd0, 0x95, 0xdd, 0xcb, 0xf3, 0xe5, 0x2d, 0xcb, 0xda, 0xaa, 0xa1, 0x8b, 0x04, 0x68, + 0xa3, 0xb9, 0x79, 0x51, 0x6f, 0xda, 0xaa, 0x6b, 0x58, 0x26, 0x45, 0x33, 0x7f, 0x3c, 0xdc, 0xef, + 0x1a, 0x75, 0xe4, 0xb8, 0x6a, 0xbd, 0xc1, 0x06, 0x9c, 0xd0, 0x51, 0x03, 0x99, 0x3a, 0x32, 0x35, + 0x03, 0x39, 0x17, 0xb7, 0xac, 0x2d, 0x8b, 0xb4, 0x93, 0xbf, 0xd8, 0x90, 0x53, 0xde, 0x42, 0xf0, + 0x0a, 0x34, 0xab, 0x5e, 0xb7, 0x4c, 0x4c, 0x79, 0x1d, 0x39, 0x8e, 0xba, 0xc5, 0x08, 0x9e, 0x3f, + 0x1d, 0x18, 0xc5, 0x28, 0x8d, 0x0e, 0x3b, 0x1b, 0x18, 0xe6, 0xaa, 0xce, 0xce, 0x93, 0x26, 0x6a, + 0xa2, 0xe8, 0xc0, 0xe0, 0xac, 0xc8, 0x6c, 0xd6, 0x1d, 0x3c, 0x68, 0xcf, 0xb2, 0x77, 0x36, 0x6b, + 0xd6, 0x1e, 0x1b, 0x75, 0x26, 0x30, 0x8a, 0x77, 0x46, 0xb1, 0x9d, 0x0c, 0x8c, 0x7b, 0xd2, 0x44, + 0x71, 0xb4, 0x05, 0x91, 0x91, 0x36, 0xcd, 0xaa, 0x75, 0x5b, 0xea, 0xa6, 0x6a, 0xd4, 0x9a, 0x76, + 0xcc, 0x0a, 0xce, 0xc7, 0x29, 0x80, 0x56, 0xb3, 0xb4, 0x9d, 0xe8, 0xd8, 0x17, 0x13, 0x94, 0x25, + 0x3a, 0xfa, 0x5c, 0xdc, 0x68, 0x8f, 0x45, 0x54, 0x42, 0x6c, 0xe8, 0x0b, 0x89, 0x43, 0x43, 0xdc, + 0x3c, 0x9b, 0x38, 0x18, 0x0b, 0x8b, 0x0d, 0xbc, 0x10, 0x37, 0xb0, 0x33, 0xf7, 0x2b, 0x71, 0xc3, + 0x4d, 0xb5, 0x8e, 0x9c, 0x86, 0xaa, 0xc5, 0x70, 0xee, 0x52, 0xdc, 0x78, 0x1b, 0x35, 0x6a, 0x86, + 0x46, 0x94, 0x3b, 0x0a, 0x71, 0x35, 0x0e, 0xa2, 0x81, 0x6c, 0xc7, 0x70, 0x5c, 0x64, 0xd2, 0x39, + 0xd0, 0x3e, 0xd2, 0x9a, 0x18, 0xdc, 0x61, 0x40, 0xaf, 0xf5, 0x00, 0xc4, 0x17, 0xa5, 0xd4, 0x9b, + 0xae, 0xba, 0x51, 0x43, 0x8a, 0xe3, 0xaa, 0x2e, 0x9f, 0xf5, 0x8b, 0xb1, 0xda, 0xd7, 0xd5, 0xb8, + 0xe7, 0xaf, 0xc7, 0x4d, 0xac, 0xea, 0x75, 0xc3, 0xec, 0x0a, 0x2b, 0xfd, 0x74, 0x18, 0x8e, 0xad, + 0xb9, 0xaa, 0xed, 0xbe, 0xc9, 0xa6, 0xbb, 0xc5, 0x97, 0x25, 0x53, 0x00, 0xf1, 0x04, 0x8c, 0x7b, + 0xbc, 0x55, 0x0c, 0xbd, 0x24, 0x2c, 0x0a, 0x4b, 0xa3, 0xf2, 0x98, 0xd7, 0x56, 0xd5, 0x45, 0x0d, + 0x26, 0x1c, 0x8c, 0x43, 0x61, 0x93, 0x94, 0x86, 0x16, 0x85, 0xa5, 0xb1, 0x2b, 0xaf, 0x7a, 0x82, + 0x22, 0xee, 0x26, 0xb4, 0xa0, 0xca, 0xee, 0xe5, 0x4a, 0xe2, 0xcc, 0xf2, 0x38, 0x41, 0xca, 0xe9, + 0xd8, 0x86, 0xe9, 0x86, 0x6a, 0x23, 0xd3, 0x55, 0x3c, 0xce, 0x2b, 0x86, 0xb9, 0x69, 0x95, 0x52, + 0x64, 0xb2, 0x97, 0x2a, 0x71, 0x2e, 0xce, 0xd3, 0xc8, 0xdd, 0xcb, 0x95, 0x55, 0x02, 0xed, 0xcd, + 0x52, 0x35, 0x37, 0x2d, 0x79, 0xb2, 0x11, 0x6d, 0x14, 0x4b, 0x30, 0xa2, 0xba, 0x18, 0x9b, 0x5b, + 0x4a, 0x2f, 0x0a, 0x4b, 0x19, 0x99, 0x7f, 0x8a, 0x75, 0x90, 0x3c, 0x09, 0xb6, 0xa9, 0x40, 0xfb, + 0x0d, 0x83, 0xba, 0x49, 0x05, 0xfb, 0xc3, 0x52, 0x86, 0x10, 0x34, 0x5f, 0xa1, 0xce, 0xb2, 0xc2, + 0x9d, 0x65, 0x65, 0x9d, 0x3b, 0xcb, 0xe5, 0xf4, 0x7b, 0xff, 0x7a, 0x5c, 0x90, 0x8f, 0xef, 0x85, + 0x57, 0x7e, 0xcb, 0xc3, 0x84, 0xc7, 0x8a, 0xdb, 0x30, 0xa7, 0x59, 0xa6, 0x6b, 0x98, 0x4d, 0xa4, + 0xa8, 0x8e, 0x62, 0xa2, 0x3d, 0xc5, 0x30, 0x0d, 0xd7, 0x50, 0x5d, 0xcb, 0x2e, 0x0d, 0x2f, 0x0a, + 0x4b, 0xb9, 0x2b, 0x17, 0x82, 0x3c, 0x26, 0xd6, 0x85, 0x17, 0xbb, 0xc2, 0xe0, 0x6e, 0x38, 0x0f, + 0xd1, 0x5e, 0x95, 0x03, 0xc9, 0x33, 0x5a, 0x6c, 0xbb, 0xf8, 0x00, 0x8a, 0xbc, 0x47, 0x57, 0x98, + 0x0b, 0x2a, 0x8d, 0x90, 0x75, 0x2c, 0x06, 0x67, 0x60, 0x9d, 0x78, 0x8e, 0xdb, 0xf4, 0x4f, 0xb9, + 0xe0, 0x81, 0xb2, 0x16, 0xf1, 0x11, 0xcc, 0xd4, 0x54, 0xc7, 0x55, 0x34, 0xab, 0xde, 0xa8, 0x21, + 0xc2, 0x19, 0x1b, 0x39, 0xcd, 0x9a, 0x5b, 0xca, 0xc6, 0xe1, 0x64, 0x2e, 0x86, 0xc8, 0xa8, 0x55, + 0xb3, 0x54, 0xdd, 0x91, 0xa7, 0x30, 0xfc, 0x8a, 0x07, 0x2e, 0x13, 0x68, 0xf1, 0x1b, 0xb0, 0xb0, + 0x69, 0xd8, 0x8e, 0xab, 0x78, 0x52, 0xc0, 0x5e, 0x44, 0xd9, 0x50, 0xb5, 0x1d, 0x6b, 0x73, 0xb3, + 0x34, 0x4a, 0x90, 0xcf, 0x45, 0x18, 0x7f, 0x93, 0x45, 0xb1, 0xe5, 0xf4, 0xf7, 0x31, 0xdf, 0x4b, + 0x04, 0x07, 0x57, 0xbb, 0x75, 0xd5, 0xd9, 0x59, 0xa6, 0x08, 0xc4, 0xb7, 0x61, 0xca, 0xb1, 0x9a, + 0xb6, 0x86, 0x94, 0x5d, 0x6c, 0xb7, 0x96, 0xa9, 0x10, 0x79, 0x95, 0x80, 0x20, 0x3e, 0xdf, 0x89, + 0x6a, 0x8c, 0x0a, 0xd9, 0x8f, 0x28, 0xc8, 0x1a, 0x86, 0x90, 0x45, 0x8a, 0xc7, 0xdf, 0x26, 0xfd, + 0x44, 0x80, 0x72, 0x27, 0x8d, 0xa7, 0x46, 0x29, 0x4e, 0xc3, 0xb0, 0xdd, 0x34, 0xdb, 0x66, 0x96, + 0xb1, 0x9b, 0x66, 0x55, 0x17, 0x5f, 0x83, 0x0c, 0xf1, 0xf4, 0xcc, 0xb0, 0xce, 0xc5, 0xea, 0x3a, + 0x19, 0x81, 0xc9, 0x79, 0x84, 0x34, 0xd7, 0xb2, 0x57, 0xf0, 0xa7, 0x4c, 0xe1, 0x44, 0x13, 0x26, + 0x91, 0xba, 0x85, 0xec, 0x20, 0xe3, 0x98, 0xe9, 0x74, 0xb7, 0xd3, 0x55, 0xab, 0x56, 0xf3, 0xf3, + 0xeb, 0x75, 0x1c, 0x64, 0x39, 0xd1, 0x72, 0x91, 0xa0, 0xf6, 0xf7, 0x4b, 0xff, 0x29, 0xc0, 0xcc, + 0x1d, 0xe4, 0x3e, 0xa0, 0x5e, 0x6e, 0x0d, 0x3b, 0xb9, 0x3e, 0xfc, 0xc9, 0x1d, 0x18, 0xf5, 0xac, + 0x2b, 0xba, 0xe4, 0x28, 0xef, 0x83, 0xbc, 0x6c, 0xc3, 0x8a, 0x57, 0x61, 0x06, 0xed, 0x37, 0x90, + 0xe6, 0x22, 0x5d, 0x31, 0xd1, 0xbe, 0xab, 0xa0, 0x5d, 0xec, 0x40, 0x0c, 0x9d, 0xac, 0x3c, 0x25, + 0x4f, 0xf2, 0xde, 0x87, 0x68, 0xdf, 0xbd, 0x85, 0xfb, 0xaa, 0xba, 0x78, 0x09, 0xa6, 0xb4, 0xa6, + 0x4d, 0x3c, 0xcd, 0x86, 0xad, 0x9a, 0xda, 0xb6, 0xe2, 0x5a, 0x3b, 0xc8, 0x24, 0xbe, 0x60, 0x5c, + 0x16, 0x59, 0xdf, 0x32, 0xe9, 0x5a, 0xc7, 0x3d, 0xd2, 0x8f, 0x46, 0x61, 0x36, 0xb2, 0x5a, 0x26, + 0xd1, 0xc0, 0x5a, 0x84, 0x01, 0xd6, 0x52, 0x85, 0x89, 0xb6, 0xf0, 0x5a, 0x0d, 0xc4, 0x18, 0x73, + 0xaa, 0x1b, 0xb2, 0xf5, 0x56, 0x03, 0xc9, 0xe3, 0x7b, 0xbe, 0x2f, 0x51, 0x82, 0x89, 0x38, 0x6e, + 0x8c, 0x99, 0x3e, 0x2e, 0x7c, 0x09, 0xe6, 0x1a, 0x36, 0xda, 0x35, 0xac, 0xa6, 0xa3, 0x10, 0x3f, + 0x8c, 0xf4, 0xf6, 0xf8, 0x34, 0x19, 0x3f, 0xc3, 0x07, 0xac, 0xd1, 0x7e, 0x0e, 0x7a, 0x01, 0x26, + 0x89, 0xf5, 0x53, 0x53, 0xf5, 0x80, 0x32, 0x04, 0xa8, 0x80, 0xbb, 0x6e, 0xe3, 0x1e, 0x3e, 0x7c, + 0x05, 0x80, 0x58, 0x31, 0xd9, 0xb9, 0x11, 0xb7, 0x16, 0x59, 0x95, 0xb7, 0xb1, 0xc3, 0x0b, 0x6b, + 0x2b, 0xe0, 0xa8, 0xcb, 0xff, 0x14, 0x57, 0xa1, 0xe8, 0xb8, 0x86, 0xb6, 0xd3, 0x52, 0x7c, 0xb8, + 0x46, 0xfa, 0xc0, 0x95, 0xa7, 0xe0, 0x5e, 0x83, 0xf8, 0xab, 0xf0, 0x42, 0x04, 0xa3, 0xe2, 0x68, + 0xdb, 0x48, 0x6f, 0xd6, 0x90, 0xe2, 0x5a, 0x94, 0x2b, 0xc4, 0xe3, 0x5b, 0x4d, 0xb7, 0x34, 0xd6, + 0x9b, 0xef, 0x39, 0x1d, 0x9a, 0x66, 0x8d, 0x21, 0x5c, 0xb7, 0x08, 0x13, 0xd7, 0x29, 0xb6, 0x8e, + 0x3a, 0x38, 0xd1, 0x49, 0x07, 0xc5, 0xaf, 0x43, 0xce, 0x53, 0x0f, 0xb2, 0xa9, 0x28, 0xe5, 0x49, + 0x80, 0x88, 0x8f, 0x8b, 0x5e, 0x9c, 0x88, 0xa8, 0x1c, 0xd5, 0x5e, 0x4f, 0xd5, 0xc8, 0xa7, 0xf8, + 0x26, 0xe4, 0x03, 0xc8, 0x9b, 0x4e, 0xa9, 0x40, 0xb0, 0x57, 0x3a, 0x84, 0x9f, 0x58, 0xb4, 0x4d, + 0x47, 0xce, 0xf9, 0xf1, 0x36, 0x1d, 0xf1, 0x31, 0x14, 0xb9, 0xa7, 0xa5, 0xdb, 0x53, 0x03, 0x39, + 0xa5, 0x22, 0x61, 0xe5, 0xa5, 0x4a, 0xc2, 0x99, 0x85, 0xba, 0x39, 0x02, 0x78, 0x97, 0xc3, 0xc9, + 0x85, 0xdd, 0x50, 0x8b, 0xf8, 0x2a, 0x1c, 0x35, 0xb0, 0xfa, 0x86, 0xc5, 0x88, 0x4c, 0x6c, 0xa8, + 0x7a, 0x49, 0x5c, 0x14, 0x96, 0xb2, 0x72, 0xc9, 0x70, 0xd6, 0x82, 0x52, 0xb9, 0x45, 0xfb, 0xc5, + 0x97, 0x60, 0x36, 0xa2, 0xc9, 0xee, 0x3e, 0xf1, 0xcf, 0x93, 0xd4, 0x81, 0x04, 0xb5, 0x79, 0x7d, + 0x1f, 0x7b, 0xeb, 0xab, 0x30, 0xc3, 0x00, 0xbc, 0x2d, 0x02, 0x73, 0xea, 0x53, 0xc4, 0xd7, 0x4d, + 0x92, 0xde, 0xb6, 0x91, 0x13, 0x17, 0xff, 0x36, 0x4c, 0xed, 0x91, 0x30, 0x12, 0x0a, 0x3d, 0xd3, + 0xfd, 0x87, 0x9e, 0xbd, 0x48, 0xdb, 0xbd, 0x74, 0x36, 0x5b, 0x18, 0xbd, 0x97, 0xce, 0x8e, 0x16, + 0xe0, 0x5e, 0x3a, 0x0b, 0x85, 0xb1, 0x7b, 0xe9, 0xec, 0x78, 0x61, 0xe2, 0x5e, 0x3a, 0x9b, 0x2b, + 0xe4, 0xa5, 0xff, 0x12, 0x60, 0x16, 0xbb, 0xf8, 0xcf, 0x88, 0xbb, 0xfe, 0xbd, 0x2c, 0x94, 0xa2, + 0xcb, 0xfd, 0xdc, 0x5f, 0x7f, 0xee, 0xaf, 0x0f, 0xdd, 0x5f, 0x8f, 0x77, 0xf4, 0xd7, 0xb1, 0x9e, + 0x2f, 0x77, 0x68, 0x9e, 0xef, 0xe7, 0x33, 0x1c, 0x24, 0xf8, 0xdb, 0xe2, 0x41, 0xfc, 0xad, 0xd8, + 0xd1, 0xdf, 0xc6, 0x7a, 0xc4, 0x89, 0x42, 0x4e, 0xfa, 0xae, 0x00, 0x0b, 0x32, 0x72, 0x90, 0x1b, + 0x0a, 0x09, 0xcf, 0xc1, 0x1f, 0x4a, 0x65, 0x38, 0x1a, 0x4f, 0x0a, 0xf5, 0x55, 0xd2, 0x0f, 0x53, + 0xb0, 0x28, 0x23, 0xcd, 0xb2, 0x75, 0xff, 0xe6, 0x9b, 0x59, 0x77, 0x1f, 0x04, 0xbf, 0x05, 0x62, + 0xf4, 0x58, 0xdb, 0x3f, 0xe5, 0xc5, 0xc8, 0x79, 0x56, 0x7c, 0x11, 0x44, 0x6e, 0x82, 0x7a, 0xd8, + 0x7d, 0x15, 0xbc, 0x1e, 0xee, 0x59, 0x66, 0x61, 0x84, 0xd8, 0xae, 0xe7, 0xb1, 0x86, 0xf1, 0x67, + 0x55, 0x17, 0x8f, 0x01, 0xf0, 0xfc, 0x05, 0x73, 0x4c, 0xa3, 0xf2, 0x28, 0x6b, 0xa9, 0xea, 0xe2, + 0x3b, 0x30, 0xde, 0xb0, 0x6a, 0x35, 0x2f, 0xfd, 0x40, 0x7d, 0xd2, 0x2b, 0x07, 0x3d, 0xd6, 0xd0, + 0xec, 0xc3, 0x18, 0x46, 0xc9, 0x99, 0xe8, 0x1d, 0xc0, 0x46, 0x0e, 0x76, 0x00, 0x93, 0xfe, 0x37, + 0x0b, 0x27, 0x12, 0x44, 0xc5, 0x82, 0x4f, 0x24, 0x66, 0x08, 0x07, 0x8e, 0x19, 0x89, 0xf1, 0x60, + 0x28, 0x31, 0x1e, 0xf4, 0x27, 0xb4, 0x25, 0x28, 0x74, 0x88, 0x37, 0x39, 0x27, 0x88, 0x37, 0x12, + 0xc6, 0x32, 0xd1, 0x30, 0xe6, 0xcb, 0xbd, 0x0c, 0x07, 0x73, 0x2f, 0xd7, 0xa0, 0xc4, 0xfc, 0xbb, + 0x2f, 0xf3, 0xc2, 0xf6, 0x71, 0x23, 0x64, 0x1f, 0x37, 0x43, 0xfb, 0xdb, 0xd9, 0x14, 0xb6, 0x8b, + 0x7b, 0x02, 0xb3, 0xae, 0xad, 0x9a, 0x8e, 0x81, 0xa7, 0x0d, 0x1e, 0x80, 0x69, 0x3a, 0xe2, 0x4b, + 0xdd, 0x1c, 0xee, 0x3a, 0x07, 0xf7, 0x0b, 0x8f, 0x24, 0x90, 0xa6, 0xdd, 0xb8, 0x2e, 0x71, 0x0b, + 0x8e, 0xc5, 0x24, 0x8a, 0x7c, 0xa1, 0x6e, 0xb4, 0x8f, 0x50, 0x37, 0x1f, 0xb1, 0xab, 0x76, 0xd4, + 0x3b, 0x01, 0xe3, 0x81, 0x80, 0x33, 0x46, 0x02, 0xce, 0xd8, 0x86, 0x2f, 0xd2, 0xdc, 0x81, 0x5c, + 0x5b, 0x9c, 0x24, 0x41, 0x35, 0xde, 0x63, 0x82, 0x6a, 0xc2, 0x83, 0x23, 0xe9, 0xa8, 0x15, 0x18, + 0xe7, 0x92, 0x26, 0x68, 0x26, 0x7a, 0x44, 0x33, 0xc6, 0xa0, 0x08, 0x12, 0x0b, 0x46, 0x9e, 0x34, + 0x11, 0x8b, 0x76, 0xa9, 0xa5, 0xb1, 0x2b, 0x6f, 0x54, 0x7a, 0xba, 0x9b, 0xa8, 0x74, 0xb5, 0x9e, + 0xca, 0xeb, 0x14, 0xef, 0x2d, 0xd3, 0xb5, 0x5b, 0x32, 0x9f, 0xa5, 0x6d, 0xba, 0xf9, 0x03, 0xe6, + 0x4e, 0x5e, 0x81, 0x2c, 0xcb, 0x0e, 0xe3, 0x30, 0x87, 0x49, 0x3e, 0x11, 0x14, 0x1b, 0x4f, 0xed, + 0x63, 0xf8, 0x07, 0x74, 0xa4, 0xec, 0x81, 0x60, 0x8d, 0x66, 0xd1, 0x99, 0xc5, 0x30, 0xfe, 0x39, + 0xff, 0x0e, 0x8c, 0xfb, 0x49, 0x16, 0x0b, 0x90, 0xda, 0x41, 0x2d, 0xe6, 0xa0, 0xf1, 0x9f, 0xe2, + 0x75, 0xc8, 0xec, 0xaa, 0xb5, 0x66, 0x87, 0xbd, 0x23, 0xb9, 0x77, 0xf0, 0xbb, 0x01, 0x8c, 0xad, + 0x25, 0x53, 0x90, 0xeb, 0x43, 0xd7, 0x04, 0x1a, 0xd8, 0x7c, 0x61, 0xe2, 0x86, 0xe6, 0x1a, 0xbb, + 0x86, 0xdb, 0xfa, 0x3c, 0x4c, 0xf4, 0x1b, 0x26, 0xfc, 0x9c, 0x7b, 0x86, 0x61, 0xe2, 0x9f, 0xd3, + 0x3c, 0x4c, 0xc4, 0x8a, 0x8a, 0x85, 0x89, 0x87, 0x90, 0x0f, 0xb1, 0x8b, 0x05, 0x8a, 0xd3, 0xc1, + 0xb5, 0xf8, 0x3c, 0x18, 0xdd, 0x19, 0xb6, 0x08, 0x0b, 0xe5, 0x5c, 0x90, 0xa5, 0x11, 0xc3, 0x1e, + 0x3a, 0x88, 0x61, 0xfb, 0x3c, 0x77, 0x2a, 0xe8, 0xb9, 0x11, 0x94, 0xf9, 0xe6, 0x98, 0x35, 0x29, + 0x21, 0x87, 0x94, 0xee, 0x71, 0xc2, 0x05, 0x86, 0xe7, 0x06, 0x45, 0xb3, 0x16, 0x70, 0x4f, 0x0f, + 0xa0, 0xb8, 0x8d, 0x54, 0xdb, 0xdd, 0x40, 0xaa, 0xab, 0xe8, 0xc8, 0x55, 0x8d, 0x9a, 0xc3, 0x72, + 0xf1, 0xdd, 0xf3, 0xcd, 0x05, 0x0f, 0xf4, 0x26, 0x85, 0x8c, 0xc6, 0xe2, 0xe1, 0x03, 0xc7, 0xe2, + 0x0b, 0x3e, 0xc3, 0xf1, 0x0c, 0x8a, 0xe8, 0xc8, 0x68, 0xdb, 0x1a, 0x1e, 0xf2, 0x8e, 0xb6, 0x16, + 0x65, 0x0f, 0xe8, 0xb1, 0x7c, 0x2e, 0x67, 0x34, 0xe0, 0x72, 0xa4, 0xbf, 0x12, 0xe0, 0x24, 0x55, + 0xa3, 0x80, 0x27, 0x65, 0x89, 0xf6, 0xbe, 0xbc, 0x81, 0x05, 0x05, 0x96, 0xde, 0x47, 0xa1, 0x7b, + 0x9f, 0x9b, 0x5d, 0x2d, 0xaa, 0x07, 0x12, 0xe4, 0x3c, 0xc7, 0xce, 0x1a, 0xa4, 0xf7, 0x53, 0x70, + 0x2a, 0x19, 0x90, 0x99, 0xc7, 0x5e, 0x7b, 0x47, 0xc2, 0x6f, 0xbb, 0x98, 0x7d, 0xdc, 0x3d, 0xac, + 0x58, 0xb3, 0x3c, 0x54, 0x12, 0xf0, 0x11, 0x34, 0x68, 0x97, 0x08, 0x72, 0x2a, 0x33, 0x5b, 0x12, + 0xeb, 0x9d, 0xd2, 0x10, 0x89, 0x17, 0xaf, 0x1e, 0xd4, 0xc5, 0xb0, 0x04, 0xfb, 0x84, 0xea, 0xeb, + 0x72, 0xf0, 0x79, 0xc7, 0xc6, 0xc7, 0x02, 0x76, 0x70, 0x6c, 0x45, 0xd2, 0x24, 0xa4, 0xd7, 0x6f, + 0xf1, 0x55, 0x5d, 0xfc, 0x26, 0x14, 0x4d, 0xb4, 0x17, 0xda, 0xfe, 0xa4, 0x0f, 0x25, 0xff, 0x9f, + 0x37, 0xd1, 0x5e, 0x20, 0xfb, 0xff, 0x67, 0x02, 0x0e, 0x38, 0x11, 0x49, 0xdd, 0x56, 0x8d, 0x5a, + 0x5f, 0x2a, 0xb6, 0x0d, 0xb9, 0x4d, 0x02, 0x13, 0x52, 0xb0, 0x1b, 0x07, 0x51, 0xb0, 0xc0, 0xec, + 0xf2, 0xc4, 0xa6, 0xff, 0x53, 0x3a, 0x89, 0xdd, 0x6e, 0x47, 0x10, 0x76, 0xdc, 0xfa, 0x6f, 0x01, + 0xe6, 0xab, 0x8e, 0x7f, 0xc0, 0x23, 0xb5, 0x66, 0xe8, 0xcf, 0x23, 0x53, 0xe6, 0xb9, 0x88, 0xd4, + 0x01, 0x5d, 0x44, 0x7c, 0xc4, 0x4d, 0xc7, 0x47, 0x5c, 0xe9, 0x1a, 0x2c, 0xc4, 0x2e, 0x9c, 0xe9, + 0xfd, 0x1c, 0x64, 0x0d, 0x47, 0xd9, 0xc5, 0x6d, 0x64, 0xd5, 0x59, 0x79, 0xc4, 0x70, 0xc8, 0x10, + 0xec, 0x70, 0xa4, 0x68, 0x40, 0xbb, 0xcb, 0x9d, 0x6d, 0x1f, 0xbc, 0x6b, 0xf8, 0xdd, 0x7b, 0x50, + 0x1f, 0x56, 0x7a, 0xd0, 0x87, 0x6e, 0x24, 0xf8, 0x22, 0x00, 0x57, 0x8a, 0x55, 0xec, 0x2b, 0x13, + 0xe0, 0xd8, 0xea, 0xcf, 0x41, 0x41, 0x53, 0x4d, 0x0d, 0x79, 0x1b, 0x0b, 0xc4, 0xb9, 0x90, 0xa7, + 0xed, 0x32, 0x6f, 0xf6, 0xbb, 0x5f, 0x3f, 0xce, 0xe7, 0xe4, 0x7e, 0x93, 0x48, 0x88, 0xba, 0xdf, + 0x33, 0x9e, 0xf7, 0xed, 0x00, 0xc7, 0xac, 0xc4, 0x67, 0xfc, 0xfe, 0x81, 0x3f, 0x7b, 0xe3, 0xef, + 0x38, 0x7b, 0x67, 0xe3, 0x8f, 0x03, 0x61, 0xcb, 0xfa, 0x73, 0xa2, 0xc8, 0xd1, 0xf5, 0x13, 0x09, + 0xf7, 0xb5, 0xb0, 0x6f, 0x42, 0x2e, 0xa8, 0x2f, 0x7d, 0x68, 0x71, 0xb7, 0xf9, 0xe5, 0x89, 0x80, + 0xca, 0x49, 0xa7, 0xe3, 0xf5, 0xcd, 0x03, 0x0a, 0x78, 0x36, 0xff, 0x90, 0xcf, 0x94, 0x67, 0x8b, + 0x59, 0x78, 0x77, 0xcf, 0xf6, 0xe3, 0x21, 0x28, 0xaf, 0x19, 0x5b, 0xa6, 0x5a, 0x1b, 0xa4, 0x74, + 0x66, 0x13, 0x72, 0x0e, 0x41, 0x12, 0x52, 0x86, 0xd7, 0xba, 0xd7, 0xce, 0x24, 0xce, 0x2d, 0x4f, + 0x50, 0xb4, 0x9c, 0x14, 0x03, 0x16, 0xd0, 0xbe, 0x8b, 0x6c, 0x3c, 0x53, 0xcc, 0x21, 0x2e, 0xd5, + 0xaf, 0xc4, 0xe6, 0x38, 0xb6, 0x48, 0x97, 0x58, 0x81, 0x49, 0x6d, 0xdb, 0xa8, 0xe9, 0xed, 0x79, + 0x2c, 0xb3, 0xd6, 0x22, 0x12, 0xc8, 0xca, 0x45, 0xd2, 0xc5, 0x81, 0xbe, 0x6a, 0xd6, 0x5a, 0xd2, + 0x09, 0x38, 0xde, 0x71, 0x2d, 0x4c, 0x3f, 0xff, 0x5e, 0x80, 0xb3, 0x6c, 0x8c, 0xe1, 0x6e, 0x0f, + 0x5c, 0xaf, 0xf4, 0x6d, 0x01, 0xe6, 0x18, 0xd7, 0xf7, 0x0c, 0x77, 0x5b, 0x89, 0x2b, 0x5e, 0xba, + 0xdb, 0xab, 0x00, 0xba, 0x11, 0x24, 0xcf, 0x38, 0xc1, 0x81, 0xdc, 0x36, 0x6f, 0xc0, 0x52, 0x77, + 0x14, 0x89, 0x75, 0x21, 0xd2, 0x8f, 0x04, 0x38, 0x2e, 0xa3, 0xba, 0xb5, 0x8b, 0x28, 0xa6, 0x03, + 0x5e, 0xe0, 0x3d, 0xbb, 0x83, 0x7d, 0xf0, 0x44, 0x9e, 0x0a, 0x9d, 0xc8, 0x25, 0x09, 0x87, 0x8a, + 0x4e, 0xe4, 0x73, 0xd9, 0x0f, 0xc1, 0x89, 0x75, 0x64, 0xd7, 0x0d, 0x53, 0x75, 0xd1, 0x20, 0x52, + 0xb7, 0xa0, 0xe8, 0x72, 0x3c, 0x21, 0x61, 0x2f, 0x77, 0x15, 0x76, 0x57, 0x0a, 0xe4, 0x82, 0x87, + 0xfc, 0xe7, 0xc0, 0xe6, 0x4e, 0x81, 0x94, 0xb4, 0x22, 0xc6, 0xfa, 0xff, 0x13, 0xa0, 0x7c, 0x13, + 0xe1, 0xf0, 0x3e, 0x08, 0xdf, 0x9f, 0x9d, 0x76, 0x9d, 0x83, 0x82, 0x87, 0x99, 0x1f, 0x78, 0xe9, + 0x11, 0xc8, 0xbb, 0x9f, 0x62, 0x57, 0x65, 0xe4, 0x82, 0xae, 0x66, 0x39, 0x28, 0x9e, 0x43, 0x22, + 0xed, 0x0b, 0xbb, 0xa5, 0x8e, 0x6b, 0x67, 0xfc, 0x79, 0x5f, 0x80, 0x63, 0xe4, 0x82, 0x66, 0xc0, + 0xe2, 0x49, 0x7a, 0x9a, 0xeb, 0xb7, 0x78, 0x32, 0x71, 0x66, 0x79, 0x9c, 0x20, 0xe5, 0xbe, 0xe6, + 0x65, 0x28, 0x77, 0x1a, 0x9e, 0xec, 0x61, 0x7e, 0x27, 0x05, 0xa7, 0x19, 0x12, 0xba, 0x6b, 0x18, + 0x64, 0xa9, 0xf5, 0x0e, 0x3b, 0x9f, 0xdb, 0x3d, 0xac, 0xb5, 0x07, 0x12, 0x42, 0x9b, 0x1f, 0xf1, + 0x15, 0x9f, 0xfd, 0xb1, 0xba, 0xc9, 0x68, 0x7a, 0xb1, 0xc4, 0x87, 0x54, 0xf9, 0x08, 0x7e, 0x62, + 0xee, 0x62, 0xbe, 0xe9, 0x67, 0x6f, 0xbe, 0x99, 0x4e, 0xe6, 0xbb, 0x04, 0x67, 0xba, 0x71, 0x84, + 0xa9, 0xe8, 0x4f, 0x87, 0x60, 0x81, 0xa7, 0xc9, 0xfc, 0x07, 0xb8, 0x4f, 0x85, 0xfd, 0x5e, 0x85, + 0x19, 0xc3, 0x51, 0x62, 0x2a, 0x3a, 0x89, 0x6c, 0xb2, 0xf2, 0xa4, 0xe1, 0xdc, 0x0e, 0x97, 0x6a, + 0x8a, 0xf7, 0x60, 0x8c, 0xf2, 0x8a, 0x6e, 0x13, 0xd3, 0xfd, 0x6e, 0x13, 0x81, 0x40, 0x93, 0xbf, + 0xc5, 0xfb, 0x30, 0xce, 0x6a, 0x8a, 0x29, 0xb2, 0x4c, 0xbf, 0xc8, 0xc6, 0x28, 0x38, 0xf9, 0x90, + 0xca, 0x70, 0x34, 0x9e, 0xd5, 0x4c, 0x16, 0xff, 0x21, 0xc0, 0xd9, 0x47, 0xc8, 0x36, 0x36, 0x5b, + 0x91, 0x55, 0x79, 0x99, 0xcc, 0x4f, 0x85, 0x5c, 0x06, 0xdd, 0x83, 0x4b, 0xe7, 0x61, 0xa9, 0xfb, + 0x42, 0x19, 0x57, 0x3e, 0x21, 0x69, 0x3d, 0x7c, 0xcc, 0x5e, 0xc1, 0x82, 0xf1, 0xa8, 0x38, 0xc8, + 0xa1, 0x78, 0x1d, 0x0a, 0xe1, 0x1a, 0xf1, 0xfe, 0x19, 0x92, 0x0f, 0xd5, 0x84, 0x63, 0xeb, 0x64, + 0x58, 0xdb, 0x5e, 0xc4, 0xf3, 0x1f, 0x45, 0xda, 0xe5, 0x79, 0x8f, 0xaa, 0x2e, 0xca, 0x90, 0xa7, + 0x1a, 0x3a, 0x80, 0xb3, 0xc8, 0x69, 0x01, 0x66, 0x88, 0xab, 0xde, 0x71, 0x9f, 0xdc, 0x7b, 0x92, + 0x9c, 0x7f, 0xa6, 0x9f, 0x9c, 0x7f, 0xbe, 0x0d, 0x4e, 0x93, 0xfe, 0x9e, 0x90, 0x87, 0x0f, 0x78, + 0xd0, 0xba, 0x06, 0xa5, 0x08, 0x5b, 0x78, 0x14, 0x1e, 0x61, 0x17, 0xcc, 0x41, 0xde, 0xb0, 0x60, + 0x2c, 0x9d, 0xc5, 0x31, 0x25, 0x51, 0xe2, 0x3c, 0xc0, 0xa6, 0xe0, 0x02, 0x55, 0xa4, 0xd8, 0x91, + 0xc4, 0xd1, 0x61, 0x3c, 0x9f, 0x02, 0x25, 0x89, 0x11, 0x7a, 0x6a, 0x50, 0xa1, 0x77, 0x50, 0xbc, + 0x74, 0x27, 0xc5, 0x4b, 0x92, 0x48, 0x26, 0x49, 0x22, 0x03, 0x2b, 0x83, 0x74, 0x09, 0x2a, 0xbd, + 0x0a, 0x8a, 0xc9, 0xf6, 0x0f, 0x05, 0x58, 0xbc, 0x89, 0x1c, 0xcd, 0x36, 0x36, 0x06, 0xda, 0x5e, + 0x7e, 0x1d, 0x46, 0xfa, 0x4d, 0x10, 0x75, 0x9b, 0x56, 0xe6, 0x18, 0xa5, 0xdf, 0x4e, 0xc3, 0x89, + 0x84, 0xd1, 0x6c, 0xef, 0xf4, 0x36, 0x14, 0xda, 0x97, 0xfc, 0x9a, 0x65, 0x6e, 0x1a, 0x5b, 0xec, + 0xc2, 0xe1, 0x72, 0x3c, 0x2d, 0xb1, 0xe2, 0x5f, 0x21, 0x80, 0x72, 0x1e, 0x05, 0x1b, 0xc4, 0x2d, + 0x98, 0x8d, 0xa9, 0x25, 0x20, 0x4f, 0x5f, 0xe8, 0x82, 0x2f, 0xf6, 0x31, 0x09, 0x2d, 0x5a, 0xd8, + 0x8b, 0x6b, 0x16, 0xdf, 0x06, 0xb1, 0x81, 0x4c, 0xdd, 0x30, 0xb7, 0x14, 0x76, 0xe1, 0x60, 0x20, + 0xa7, 0x94, 0x22, 0x57, 0x18, 0x17, 0x3a, 0xcf, 0xb1, 0x4a, 0x61, 0x78, 0x12, 0x85, 0xcc, 0x50, + 0x6c, 0x04, 0x1a, 0x0d, 0xe4, 0x88, 0xdf, 0x80, 0x02, 0xc7, 0x4e, 0xd4, 0xdc, 0x26, 0x35, 0x9a, + 0x18, 0xf7, 0xd5, 0xae, 0xb8, 0x83, 0x4a, 0x45, 0x66, 0xc8, 0x37, 0x7c, 0x5d, 0x36, 0x32, 0x45, + 0x04, 0xd3, 0x1c, 0x7f, 0x70, 0x2f, 0x91, 0xe9, 0x26, 0x09, 0x36, 0x49, 0xa4, 0xb6, 0x63, 0xb2, + 0x11, 0xed, 0x90, 0xfe, 0x3d, 0x05, 0x25, 0x99, 0xbd, 0x1d, 0x43, 0xc4, 0x93, 0x3a, 0x8f, 0xae, + 0x7c, 0x2a, 0xa2, 0xf6, 0x26, 0x4c, 0x07, 0x2b, 0x0a, 0x5b, 0x8a, 0xe1, 0xa2, 0x3a, 0x97, 0xe0, + 0x95, 0xbe, 0xaa, 0x0a, 0x5b, 0x55, 0x17, 0xd5, 0xe5, 0xc9, 0xdd, 0x48, 0x9b, 0x23, 0x5e, 0x83, + 0x61, 0x12, 0x7f, 0x1c, 0x16, 0xd5, 0x3a, 0x5e, 0xae, 0xde, 0x54, 0x5d, 0x75, 0xb9, 0x66, 0x6d, + 0xc8, 0x6c, 0xbc, 0x78, 0x1b, 0x72, 0x26, 0xda, 0x23, 0xc5, 0x79, 0x0c, 0x43, 0xa6, 0x47, 0x0c, + 0xe3, 0x26, 0xda, 0x93, 0x9b, 0x34, 0x72, 0x39, 0xe2, 0x06, 0x4c, 0x6e, 0xa8, 0x0e, 0x0a, 0x5b, + 0x03, 0xf5, 0x5d, 0x57, 0xba, 0x3e, 0x04, 0x5b, 0x56, 0x1d, 0x14, 0x54, 0xa6, 0xe2, 0x46, 0xb8, + 0x49, 0x5a, 0x80, 0xb9, 0x18, 0x31, 0x33, 0xdf, 0xf5, 0xb7, 0xe4, 0xe0, 0xc7, 0x7a, 0xdf, 0xf4, + 0xd7, 0x46, 0x72, 0x4d, 0x50, 0x22, 0xf5, 0x97, 0xd4, 0x21, 0x5c, 0x8b, 0xa5, 0xce, 0xf7, 0x4a, + 0xd0, 0x2f, 0xee, 0x40, 0x3e, 0x24, 0x54, 0x83, 0x79, 0x1a, 0x72, 0x36, 0xaa, 0x5b, 0x2e, 0x52, + 0xb4, 0x5a, 0xd3, 0x71, 0x91, 0x4d, 0x74, 0x68, 0x54, 0x9e, 0xa0, 0xad, 0x2b, 0xb4, 0x31, 0xa2, + 0x91, 0xa9, 0x88, 0x46, 0x4a, 0x8b, 0xf8, 0x6c, 0x18, 0xbf, 0x16, 0xb6, 0xdc, 0xdf, 0x17, 0x60, + 0x66, 0xad, 0x65, 0x6a, 0x6b, 0xdb, 0xaa, 0xad, 0xb3, 0xd2, 0x4d, 0xb6, 0xce, 0xd3, 0x90, 0x63, + 0x2f, 0xa6, 0x38, 0x19, 0x54, 0xe7, 0x27, 0x68, 0x2b, 0x27, 0x63, 0x0e, 0xb2, 0x0e, 0x06, 0xe6, + 0xc5, 0x67, 0x19, 0x79, 0x84, 0x7c, 0x57, 0x75, 0xf1, 0x06, 0x8c, 0xd1, 0x1a, 0x52, 0x5a, 0x0a, + 0x90, 0xea, 0xb1, 0x14, 0x00, 0x28, 0x10, 0x6e, 0x96, 0xe6, 0x60, 0x36, 0x42, 0x1e, 0x23, 0xfd, + 0xef, 0x86, 0x61, 0x12, 0xf7, 0x71, 0xef, 0xd4, 0x87, 0xa5, 0x1e, 0x87, 0x31, 0x4f, 0x84, 0x8c, + 0xec, 0x51, 0x19, 0x78, 0x53, 0x55, 0xf7, 0x1d, 0x99, 0x53, 0xfe, 0xc7, 0x5a, 0xbe, 0xdb, 0xf7, + 0x74, 0xe0, 0xf6, 0xbd, 0x43, 0x6a, 0x3a, 0xd3, 0xa1, 0xcc, 0x25, 0x5a, 0xb7, 0x35, 0x7c, 0xb0, + 0xba, 0xad, 0xb8, 0x0a, 0xbd, 0x91, 0xd8, 0x0a, 0xbd, 0x70, 0x21, 0x48, 0xf6, 0x20, 0x85, 0x20, + 0xab, 0xac, 0x9c, 0xbc, 0x7d, 0x5b, 0x47, 0x70, 0x8d, 0xf6, 0x88, 0xab, 0x88, 0x81, 0xbd, 0x5b, + 0x36, 0x82, 0xf1, 0x3a, 0x8c, 0xf0, 0x7a, 0x0e, 0xe8, 0xb1, 0x9e, 0x83, 0x03, 0xf8, 0xcb, 0x52, + 0xc6, 0x82, 0x65, 0x29, 0x2b, 0x30, 0x4e, 0x8b, 0x8d, 0xd9, 0x73, 0xc7, 0xf1, 0x1e, 0x9f, 0x3b, + 0x8e, 0x91, 0x1a, 0x64, 0xf6, 0xd2, 0xf1, 0x12, 0x90, 0x97, 0x8a, 0x0a, 0x7b, 0xbb, 0x61, 0xe8, + 0xc8, 0x74, 0x0d, 0xb7, 0x45, 0x6a, 0xe3, 0x46, 0x65, 0x11, 0xf7, 0xd1, 0x27, 0x1a, 0x55, 0xd6, + 0x23, 0xbe, 0x09, 0xf9, 0x90, 0x9b, 0x66, 0x65, 0xdf, 0x95, 0xfe, 0x1c, 0xb4, 0x9c, 0x0b, 0x3a, + 0xe7, 0x4e, 0x5e, 0x31, 0x7f, 0x98, 0x5e, 0x71, 0x06, 0xa6, 0x82, 0xd6, 0xc4, 0xcc, 0xec, 0xbb, + 0x02, 0x2c, 0xf0, 0x7d, 0xd2, 0x73, 0x7e, 0x45, 0x22, 0xfd, 0x8f, 0x00, 0x47, 0xe3, 0x69, 0x61, + 0xdb, 0xb5, 0x6d, 0x98, 0xd4, 0x54, 0x6d, 0x1b, 0x05, 0x1f, 0x61, 0x0f, 0xec, 0xa0, 0x8b, 0x04, + 0xa9, 0xbf, 0x49, 0x34, 0x61, 0x46, 0x57, 0x5d, 0x95, 0x88, 0x25, 0x38, 0xd9, 0xd0, 0x80, 0x93, + 0x4d, 0x71, 0xbc, 0xfe, 0x56, 0xe9, 0x1f, 0x04, 0x98, 0xe7, 0x4b, 0x67, 0x6a, 0x71, 0xd7, 0x72, + 0xfc, 0xb7, 0xec, 0xdb, 0x96, 0xe3, 0x2a, 0xaa, 0xae, 0xdb, 0xc8, 0x71, 0xb8, 0x14, 0x70, 0xdb, + 0x0d, 0xda, 0x94, 0xe4, 0xa8, 0xbb, 0x87, 0x92, 0x0e, 0x9b, 0x9b, 0xf4, 0xe0, 0x9b, 0x1b, 0xe9, + 0x5f, 0x7c, 0x0a, 0x16, 0x58, 0x19, 0x93, 0xe9, 0x49, 0x98, 0x20, 0x74, 0x3a, 0x8a, 0xd9, 0xac, + 0x6f, 0xb0, 0x30, 0x94, 0x91, 0xc7, 0x69, 0xe3, 0x43, 0xd2, 0x26, 0x2e, 0xc0, 0x28, 0x5f, 0x1c, + 0x2d, 0xcd, 0xc9, 0xc8, 0x59, 0xb6, 0x3a, 0x47, 0x7c, 0x0c, 0xf9, 0xf6, 0xf2, 0x88, 0x28, 0x13, + 0x5f, 0x96, 0x7b, 0x63, 0xf1, 0x12, 0xbc, 0xda, 0xad, 0x15, 0x0c, 0x47, 0x8c, 0x27, 0x67, 0x06, + 0xda, 0x88, 0x1f, 0x62, 0x6c, 0xa7, 0x85, 0x89, 0xfc, 0xf3, 0x5e, 0x3a, 0x9b, 0x2e, 0x64, 0xa4, + 0x0a, 0x14, 0x57, 0x6a, 0x96, 0x83, 0x48, 0x10, 0xe3, 0x02, 0xf3, 0x4b, 0x43, 0x08, 0x48, 0x43, + 0x9a, 0x02, 0xd1, 0x3f, 0x9e, 0xd9, 0xe1, 0x8b, 0x90, 0xbf, 0x83, 0xdc, 0x5e, 0x71, 0xbc, 0x03, + 0x85, 0xf6, 0x68, 0xc6, 0xc8, 0xfb, 0x00, 0x6c, 0x38, 0x76, 0x1e, 0xd4, 0x26, 0x2e, 0xf4, 0xa2, + 0xa6, 0x04, 0x0d, 0x59, 0x3a, 0x65, 0x32, 0xf1, 0x17, 0xff, 0x28, 0x40, 0x91, 0xde, 0xf0, 0xf8, + 0x93, 0x8e, 0x9d, 0x49, 0x12, 0x6f, 0x43, 0x16, 0xef, 0x43, 0xb6, 0xb0, 0x5b, 0x1c, 0x22, 0x6f, + 0x4a, 0xce, 0x27, 0xbf, 0x58, 0xa1, 0xf7, 0xd9, 0x14, 0x42, 0xf6, 0x60, 0xfd, 0x35, 0xa2, 0xa9, + 0x40, 0x8d, 0x68, 0x15, 0xf2, 0xbb, 0x86, 0x63, 0x6c, 0x18, 0x35, 0x52, 0xa5, 0xd5, 0x4f, 0xf5, + 0x61, 0xae, 0x0d, 0x48, 0xb6, 0x1d, 0x53, 0x20, 0xfa, 0xd7, 0xc6, 0x44, 0xf0, 0x9e, 0x00, 0xc7, + 0xee, 0x20, 0x57, 0x6e, 0xff, 0xbe, 0x04, 0xab, 0x09, 0xf6, 0xf6, 0x4c, 0xf7, 0x61, 0x98, 0x14, + 0x6b, 0x63, 0x03, 0x4c, 0x75, 0x54, 0x30, 0xdf, 0x0f, 0x54, 0xd0, 0x0c, 0xb8, 0xf7, 0x49, 0xca, + 0xba, 0x65, 0x86, 0x03, 0x9b, 0x25, 0xdb, 0x7a, 0x91, 0xda, 0x42, 0xb6, 0x4f, 0x19, 0x63, 0x6d, + 0x58, 0x33, 0xa5, 0x1f, 0x0c, 0x41, 0xb9, 0x13, 0x49, 0x4c, 0xec, 0xdf, 0x82, 0x1c, 0x15, 0x89, + 0x57, 0xea, 0x4c, 0x69, 0x7b, 0xab, 0xc7, 0x8a, 0xb9, 0x64, 0xf4, 0x54, 0x39, 0x78, 0x2b, 0x2d, + 0xd0, 0xa6, 0xf6, 0xca, 0xdb, 0xe6, 0x5b, 0x20, 0x46, 0x07, 0xf9, 0x4b, 0xa2, 0x33, 0xb4, 0x24, + 0xfa, 0x41, 0xb0, 0x24, 0xfa, 0xe5, 0x3e, 0x79, 0xe7, 0x51, 0xd6, 0xae, 0x92, 0x96, 0xde, 0x85, + 0xc5, 0x3b, 0xc8, 0xbd, 0x79, 0xff, 0xf5, 0x04, 0x99, 0x3d, 0x62, 0x8f, 0xde, 0xb0, 0x55, 0x70, + 0xde, 0xf4, 0x3b, 0xb7, 0x77, 0xb0, 0x24, 0xef, 0xe0, 0xf0, 0x5f, 0x8e, 0xf4, 0xeb, 0x02, 0x9c, + 0x48, 0x98, 0x9c, 0x49, 0xe7, 0x1d, 0x28, 0xfa, 0xd0, 0xb2, 0xda, 0x42, 0x21, 0x7c, 0x78, 0xee, + 0x99, 0x08, 0xb9, 0x60, 0x07, 0x1b, 0x1c, 0xe9, 0x7b, 0x02, 0x4c, 0x91, 0xf2, 0x71, 0xee, 0x8d, + 0xfb, 0x88, 0xdc, 0x5f, 0x0d, 0x67, 0x60, 0xbe, 0xd0, 0x35, 0x03, 0x13, 0x37, 0x55, 0x3b, 0xeb, + 0xb2, 0x03, 0xd3, 0xa1, 0x01, 0x8c, 0x0f, 0x32, 0x64, 0x43, 0x15, 0x9d, 0x5f, 0xec, 0x77, 0x2a, + 0x56, 0xb3, 0xe8, 0xe1, 0x91, 0x7e, 0x4b, 0x80, 0x29, 0x19, 0xa9, 0x8d, 0x46, 0x8d, 0x66, 0x4a, + 0x9d, 0x3e, 0x56, 0xbe, 0x16, 0x5e, 0x79, 0xfc, 0x4b, 0x12, 0xff, 0x6f, 0xb1, 0x50, 0x71, 0x44, + 0xa7, 0x6b, 0xaf, 0x7e, 0x16, 0xa6, 0x43, 0x03, 0x18, 0xa5, 0x7f, 0x3a, 0x04, 0xd3, 0x54, 0x57, + 0xc2, 0xda, 0x79, 0x0b, 0xd2, 0xde, 0x73, 0xa1, 0x9c, 0x3f, 0xd5, 0x11, 0xe7, 0x31, 0x6f, 0x22, + 0x55, 0xbf, 0x8f, 0x5c, 0x17, 0xd9, 0xa4, 0x8c, 0x93, 0xd4, 0x2b, 0x13, 0xf0, 0xa4, 0xe0, 0x1f, + 0x3d, 0xe7, 0xa5, 0xe2, 0xce, 0x79, 0x2f, 0x43, 0xc9, 0x30, 0xf1, 0x08, 0x63, 0x17, 0x29, 0xc8, + 0xf4, 0xdc, 0x49, 0x3b, 0x6d, 0x39, 0xed, 0xf5, 0xdf, 0x32, 0xb9, 0xb1, 0x57, 0x75, 0xf1, 0x3c, + 0x14, 0xeb, 0xea, 0xbe, 0x51, 0x6f, 0xd6, 0x95, 0x06, 0x1e, 0xef, 0x18, 0xef, 0xd2, 0x1f, 0x52, + 0xc9, 0xc8, 0x79, 0xd6, 0xb1, 0xaa, 0x6e, 0xa1, 0x35, 0xe3, 0x5d, 0x24, 0x9e, 0x81, 0x3c, 0x79, + 0x47, 0x44, 0x06, 0xd2, 0x67, 0x2f, 0xc3, 0xe4, 0xd9, 0x0b, 0x79, 0x5e, 0x84, 0x87, 0xd1, 0x77, + 0xbe, 0x1f, 0x0e, 0x91, 0x1f, 0xa1, 0x08, 0xf0, 0x8b, 0x29, 0xd2, 0x21, 0x31, 0x2c, 0xd6, 0x2e, + 0x87, 0x0e, 0xd1, 0x2e, 0xe3, 0xd6, 0x9a, 0x8a, 0x59, 0xab, 0x58, 0x87, 0x99, 0x08, 0x25, 0x34, + 0x84, 0xa7, 0x07, 0xf3, 0x55, 0x53, 0x61, 0x92, 0x48, 0x5c, 0xff, 0x27, 0x01, 0x66, 0x57, 0x9b, + 0xf6, 0x16, 0xfa, 0x45, 0x54, 0x46, 0x69, 0x1e, 0x4a, 0xd1, 0xc5, 0xf1, 0xf2, 0xc6, 0x21, 0x98, + 0x7d, 0x80, 0x7e, 0x41, 0x57, 0xfe, 0x4c, 0xcc, 0x70, 0x19, 0x4a, 0x51, 0x86, 0x31, 0x3b, 0x8c, + 0xc1, 0x21, 0xc4, 0xe1, 0xf8, 0x01, 0x79, 0x95, 0xbb, 0x69, 0x23, 0x67, 0xdb, 0x9f, 0x8d, 0xed, + 0xc7, 0x57, 0x7f, 0x2d, 0xec, 0xab, 0xbf, 0xd2, 0xa3, 0xaf, 0xee, 0x38, 0x6b, 0xdb, 0x65, 0x93, + 0x87, 0xba, 0x71, 0xe3, 0x98, 0xd2, 0x7c, 0x5f, 0x80, 0xf3, 0x77, 0x90, 0x89, 0x6c, 0xd5, 0x45, + 0xf7, 0x55, 0x87, 0xd7, 0xe6, 0x87, 0xec, 0xcd, 0x79, 0x1e, 0xa7, 0x65, 0x0d, 0x5e, 0xe8, 0x89, + 0x32, 0x26, 0xb0, 0x97, 0x60, 0x86, 0x1c, 0x60, 0x15, 0xfa, 0xee, 0x91, 0xdd, 0x78, 0x34, 0xd9, + 0x0b, 0xa4, 0x94, 0x3c, 0x45, 0x7a, 0xd7, 0xbd, 0xce, 0x15, 0xdc, 0x27, 0xdd, 0x86, 0x85, 0xe0, + 0x06, 0x31, 0x98, 0x44, 0x3c, 0x0b, 0xf9, 0x60, 0x2e, 0x93, 0x6e, 0x6e, 0x46, 0xe5, 0x5c, 0x20, + 0x99, 0xe9, 0x48, 0x4d, 0x38, 0x1a, 0x8f, 0x87, 0x51, 0xf7, 0x06, 0x0c, 0xd3, 0x03, 0x1f, 0xdb, + 0x1c, 0xbd, 0xd2, 0xe3, 0xee, 0x95, 0x1d, 0x81, 0xc2, 0x68, 0x19, 0x32, 0xe9, 0xaf, 0x87, 0x61, + 0x26, 0x7e, 0x48, 0xd2, 0x51, 0xe6, 0x0b, 0x30, 0x5b, 0x57, 0xf7, 0x95, 0xb0, 0x5b, 0x6e, 0xbf, + 0xbf, 0x9d, 0xaa, 0xab, 0xfb, 0x61, 0x97, 0xab, 0x8b, 0xf7, 0xa1, 0x40, 0x31, 0xd6, 0x2c, 0x4d, + 0xad, 0xf5, 0x9a, 0x14, 0x1d, 0xc6, 0x27, 0x94, 0x92, 0x20, 0xd3, 0x5d, 0xfc, 0x7d, 0x0c, 0x4a, + 0x52, 0x67, 0xef, 0x46, 0x59, 0x4b, 0x03, 0xc2, 0xeb, 0x03, 0xb1, 0xa6, 0x22, 0x07, 0x04, 0x43, + 0x77, 0xf4, 0x21, 0x69, 0x89, 0xbf, 0x21, 0xc0, 0xe4, 0xb6, 0x6a, 0xea, 0xd6, 0x2e, 0x3b, 0x9b, + 0x10, 0xe5, 0xc5, 0xe7, 0xdf, 0x7e, 0xde, 0x7d, 0x76, 0x20, 0xe0, 0x2e, 0x43, 0xec, 0x1d, 0xbd, + 0x19, 0x11, 0xe2, 0x76, 0xa4, 0x43, 0x6c, 0xc0, 0xa9, 0x58, 0x49, 0x84, 0x0f, 0x82, 0xbd, 0xe6, + 0x57, 0x17, 0xa3, 0x82, 0x7b, 0x14, 0x38, 0x1a, 0xce, 0x7f, 0x4f, 0x80, 0xc9, 0x18, 0x16, 0xc5, + 0x3c, 0xf1, 0x7c, 0x1c, 0x3c, 0xcf, 0xdc, 0x19, 0x88, 0x2b, 0xab, 0xc8, 0x66, 0xf3, 0xf9, 0xce, + 0x37, 0xf3, 0xdf, 0x16, 0x60, 0xb6, 0x03, 0xbb, 0x62, 0x08, 0x92, 0x83, 0x04, 0x7d, 0xb9, 0x47, + 0x82, 0x22, 0x13, 0x90, 0xdd, 0x83, 0xef, 0x94, 0xf5, 0x16, 0x4c, 0xc7, 0x8e, 0x11, 0x5f, 0x83, + 0xa3, 0x9e, 0x96, 0xc4, 0x19, 0x0b, 0x75, 0x2c, 0x73, 0x7c, 0x4c, 0xc4, 0x62, 0xa4, 0x3f, 0x12, + 0x60, 0xb1, 0x1b, 0x3f, 0x44, 0x09, 0x26, 0x54, 0x6d, 0x07, 0xe9, 0x21, 0xb4, 0x63, 0xa4, 0x91, + 0x99, 0xde, 0x63, 0x98, 0xf7, 0x8d, 0x09, 0x6b, 0x47, 0xaf, 0xaf, 0x22, 0x67, 0x3d, 0x94, 0x41, + 0xa5, 0x90, 0xbe, 0x23, 0xc0, 0xbc, 0x8c, 0x36, 0x9a, 0x46, 0x4d, 0x7f, 0xde, 0x39, 0xd2, 0x63, + 0x38, 0x9c, 0xc6, 0x50, 0xc2, 0xe2, 0xd5, 0x8f, 0x87, 0xa0, 0x5c, 0xc5, 0x58, 0x07, 0xaa, 0x6c, + 0x3c, 0xb4, 0x37, 0x01, 0x55, 0xc8, 0xf3, 0x1b, 0xcd, 0x0d, 0xd5, 0xd5, 0xb6, 0xbd, 0x5b, 0xe9, + 0xee, 0x17, 0x87, 0x39, 0x06, 0xb8, 0x4c, 0xe1, 0xe2, 0xb2, 0xef, 0xe9, 0x43, 0xc9, 0xbe, 0x4f, + 0x41, 0x86, 0xee, 0x5f, 0x32, 0x64, 0xff, 0x42, 0x3f, 0xa4, 0x97, 0xe1, 0x78, 0x47, 0x3e, 0xb2, + 0x98, 0xe5, 0x01, 0x0a, 0x7e, 0xc0, 0xbf, 0x1c, 0x82, 0xd3, 0xc1, 0xf2, 0xd3, 0xb6, 0x32, 0xd1, + 0x52, 0x8a, 0xe7, 0x21, 0x88, 0x55, 0x98, 0xf4, 0xdf, 0x6a, 0xb2, 0x9f, 0xd3, 0xe9, 0xf9, 0xce, + 0xae, 0xe8, 0xbb, 0xc2, 0xa4, 0xbf, 0x9d, 0x13, 0xc0, 0x48, 0x8a, 0x70, 0xfb, 0x4b, 0xc9, 0x79, + 0x18, 0x49, 0x2e, 0x94, 0x58, 0xd9, 0x12, 0x9c, 0xe9, 0xc6, 0x38, 0xa6, 0xe5, 0x7f, 0x20, 0x40, + 0xf9, 0x8d, 0x86, 0x3e, 0x60, 0x59, 0xf9, 0xaf, 0x84, 0xf7, 0x95, 0xdd, 0x9f, 0x6e, 0x24, 0x4f, + 0xda, 0xde, 0x56, 0x7e, 0x0b, 0x8e, 0x77, 0x1c, 0xea, 0x95, 0x9e, 0x84, 0x33, 0x22, 0x5f, 0x39, + 0xf8, 0xf4, 0x91, 0xdc, 0xc8, 0x9f, 0x08, 0xb0, 0xb4, 0xe6, 0xda, 0x48, 0xad, 0xb7, 0x13, 0x28, + 0x1d, 0x53, 0x64, 0x0d, 0x98, 0x71, 0x5a, 0xa6, 0x16, 0xf0, 0xe1, 0xdd, 0x6f, 0x56, 0x42, 0x47, + 0xd0, 0xb5, 0x96, 0xa9, 0x85, 0xdc, 0x38, 0xba, 0x7b, 0x44, 0x9e, 0x72, 0x62, 0xda, 0x97, 0xc7, + 0x01, 0x54, 0xd7, 0xb5, 0x8d, 0x8d, 0xa6, 0x8b, 0x1c, 0xbc, 0xc9, 0x3e, 0xd7, 0x03, 0xb1, 0x8c, + 0x71, 0x8f, 0x7d, 0xbf, 0xea, 0x20, 0x84, 0xe5, 0xd6, 0x99, 0xbe, 0x04, 0xd4, 0x77, 0x8f, 0xb4, + 0x7f, 0xf5, 0x21, 0x44, 0xda, 0x1f, 0x0b, 0x20, 0xf9, 0xdf, 0xd0, 0x7a, 0x3c, 0xa7, 0xa2, 0xe8, + 0x43, 0xdb, 0x1e, 0x87, 0xb5, 0x6d, 0xa5, 0xaf, 0xc7, 0xbb, 0xf1, 0x13, 0xb7, 0x35, 0xee, 0x37, + 0x05, 0x38, 0x99, 0x38, 0xde, 0x4b, 0x48, 0x86, 0xd5, 0xee, 0xe6, 0x60, 0x74, 0x44, 0x54, 0x0f, + 0xb3, 0xec, 0x4e, 0x4c, 0xc1, 0xba, 0x77, 0x40, 0x79, 0x96, 0x2c, 0xeb, 0x3e, 0x71, 0x90, 0x65, + 0x89, 0xe3, 0x07, 0x60, 0x59, 0x0f, 0x78, 0x7d, 0x2c, 0xfb, 0x0b, 0x01, 0xce, 0x25, 0x42, 0xe0, + 0x90, 0xd5, 0x8f, 0xb2, 0xe9, 0x61, 0xce, 0xdd, 0x1b, 0x8c, 0x62, 0xff, 0xfc, 0x6d, 0x06, 0xfe, + 0x2e, 0x39, 0x1c, 0x77, 0x07, 0x63, 0x7c, 0xdc, 0x8a, 0xf0, 0xf1, 0x97, 0x0f, 0x85, 0xaa, 0x38, + 0x76, 0x9e, 0x8d, 0x03, 0x94, 0xd5, 0x3d, 0x06, 0xdb, 0x57, 0xe1, 0xd7, 0x66, 0x98, 0x99, 0xf7, + 0x7b, 0xca, 0x3f, 0xf4, 0x48, 0x41, 0x80, 0x9d, 0x4b, 0xdd, 0x81, 0x18, 0x33, 0x8d, 0x08, 0x33, + 0x1f, 0x1c, 0x12, 0x55, 0x11, 0x76, 0xbe, 0x2f, 0xc0, 0xc9, 0xdb, 0x96, 0xad, 0xa1, 0xc1, 0x5f, + 0x14, 0x25, 0x59, 0x74, 0x02, 0xd1, 0xc9, 0x13, 0xb7, 0x39, 0xf8, 0x1d, 0x01, 0x4e, 0x25, 0x53, + 0xda, 0x8b, 0x49, 0x1f, 0x84, 0x90, 0x30, 0xd3, 0x96, 0x1b, 0x1f, 0x7c, 0x54, 0x3e, 0xf2, 0xe1, + 0x47, 0xe5, 0x23, 0x9f, 0x7c, 0x54, 0x16, 0x7e, 0xed, 0x69, 0x59, 0xf8, 0xe1, 0xd3, 0xb2, 0xf0, + 0x37, 0x4f, 0xcb, 0xc2, 0x07, 0x4f, 0xcb, 0xc2, 0xbf, 0x3d, 0x2d, 0x0b, 0x3f, 0x79, 0x5a, 0x3e, + 0xf2, 0xc9, 0xd3, 0xb2, 0xf0, 0xde, 0xc7, 0xe5, 0x23, 0x1f, 0x7c, 0x5c, 0x3e, 0xf2, 0xe1, 0xc7, + 0xe5, 0x23, 0x5f, 0xbb, 0xbe, 0x65, 0xb5, 0xe9, 0x30, 0xac, 0xc4, 0xff, 0x18, 0xf1, 0x4b, 0xc1, + 0x96, 0x8d, 0x61, 0xb2, 0xd7, 0xba, 0xfa, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x5a, 0xc4, 0x79, + 0x38, 0x70, 0x62, 0x00, 0x00, } func (this *StartWorkflowExecutionRequest) Equal(that interface{}) bool { @@ -9824,6 +9948,71 @@ func (this *RebuildMutableStateResponse) Equal(that interface{}) bool { } return true } +func (this *ImportWorkflowExecutionRequest) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*ImportWorkflowExecutionRequest) + if !ok { + that2, ok := that.(ImportWorkflowExecutionRequest) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.NamespaceId != that1.NamespaceId { + return false + } + if !this.Execution.Equal(that1.Execution) { + return false + } + if len(this.HistoryBatches) != len(that1.HistoryBatches) { + return false + } + for i := range this.HistoryBatches { + if !this.HistoryBatches[i].Equal(that1.HistoryBatches[i]) { + return false + } + } + if !this.VersionHistory.Equal(that1.VersionHistory) { + return false + } + if !bytes.Equal(this.Token, that1.Token) { + return false + } + return true +} +func (this *ImportWorkflowExecutionResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*ImportWorkflowExecutionResponse) + if !ok { + that2, ok := that.(ImportWorkflowExecutionResponse) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !bytes.Equal(this.Token, that1.Token) { + return false + } + return true +} func (this *DeleteWorkflowVisibilityRecordRequest) Equal(that interface{}) bool { if that == nil { return this == nil @@ -11681,6 +11870,36 @@ func (this *RebuildMutableStateResponse) GoString() string { s = append(s, "}") return strings.Join(s, "") } +func (this *ImportWorkflowExecutionRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 9) + s = append(s, "&historyservice.ImportWorkflowExecutionRequest{") + s = append(s, "NamespaceId: "+fmt.Sprintf("%#v", this.NamespaceId)+",\n") + if this.Execution != nil { + s = append(s, "Execution: "+fmt.Sprintf("%#v", this.Execution)+",\n") + } + if this.HistoryBatches != nil { + s = append(s, "HistoryBatches: "+fmt.Sprintf("%#v", this.HistoryBatches)+",\n") + } + if this.VersionHistory != nil { + s = append(s, "VersionHistory: "+fmt.Sprintf("%#v", this.VersionHistory)+",\n") + } + s = append(s, "Token: "+fmt.Sprintf("%#v", this.Token)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *ImportWorkflowExecutionResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&historyservice.ImportWorkflowExecutionResponse{") + s = append(s, "Token: "+fmt.Sprintf("%#v", this.Token)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} func (this *DeleteWorkflowVisibilityRecordRequest) GoString() string { if this == nil { return "nil" @@ -16567,7 +16786,7 @@ func (m *RebuildMutableStateResponse) MarshalToSizedBuffer(dAtA []byte) (int, er return len(dAtA) - i, nil } -func (m *DeleteWorkflowVisibilityRecordRequest) Marshal() (dAtA []byte, err error) { +func (m *ImportWorkflowExecutionRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -16577,35 +16796,48 @@ func (m *DeleteWorkflowVisibilityRecordRequest) Marshal() (dAtA []byte, err erro return dAtA[:n], nil } -func (m *DeleteWorkflowVisibilityRecordRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *ImportWorkflowExecutionRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *DeleteWorkflowVisibilityRecordRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ImportWorkflowExecutionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.WorkflowCloseTime != nil { - n117, err117 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.WorkflowCloseTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.WorkflowCloseTime):]) - if err117 != nil { - return 0, err117 + if len(m.Token) > 0 { + i -= len(m.Token) + copy(dAtA[i:], m.Token) + i = encodeVarintRequestResponse(dAtA, i, uint64(len(m.Token))) + i-- + dAtA[i] = 0x2a + } + if m.VersionHistory != nil { + { + size, err := m.VersionHistory.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRequestResponse(dAtA, i, uint64(size)) } - i -= n117 - i = encodeVarintRequestResponse(dAtA, i, uint64(n117)) i-- dAtA[i] = 0x22 } - if m.WorkflowStartTime != nil { - n118, err118 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.WorkflowStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.WorkflowStartTime):]) - if err118 != nil { - return 0, err118 + if len(m.HistoryBatches) > 0 { + for iNdEx := len(m.HistoryBatches) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.HistoryBatches[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRequestResponse(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a } - i -= n118 - i = encodeVarintRequestResponse(dAtA, i, uint64(n118)) - i-- - dAtA[i] = 0x1a } if m.Execution != nil { { @@ -16629,7 +16861,7 @@ func (m *DeleteWorkflowVisibilityRecordRequest) MarshalToSizedBuffer(dAtA []byte return len(dAtA) - i, nil } -func (m *DeleteWorkflowVisibilityRecordResponse) Marshal() (dAtA []byte, err error) { +func (m *ImportWorkflowExecutionResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -16639,20 +16871,27 @@ func (m *DeleteWorkflowVisibilityRecordResponse) Marshal() (dAtA []byte, err err return dAtA[:n], nil } -func (m *DeleteWorkflowVisibilityRecordResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *ImportWorkflowExecutionResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *DeleteWorkflowVisibilityRecordResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ImportWorkflowExecutionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.Token) > 0 { + i -= len(m.Token) + copy(dAtA[i:], m.Token) + i = encodeVarintRequestResponse(dAtA, i, uint64(len(m.Token))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } -func (m *UpdateWorkflowExecutionRequest) Marshal() (dAtA []byte, err error) { +func (m *DeleteWorkflowVisibilityRecordRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -16662,19 +16901,39 @@ func (m *UpdateWorkflowExecutionRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *UpdateWorkflowExecutionRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *DeleteWorkflowVisibilityRecordRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *UpdateWorkflowExecutionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *DeleteWorkflowVisibilityRecordRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Request != nil { + if m.WorkflowCloseTime != nil { + n119, err119 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.WorkflowCloseTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.WorkflowCloseTime):]) + if err119 != nil { + return 0, err119 + } + i -= n119 + i = encodeVarintRequestResponse(dAtA, i, uint64(n119)) + i-- + dAtA[i] = 0x22 + } + if m.WorkflowStartTime != nil { + n120, err120 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.WorkflowStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.WorkflowStartTime):]) + if err120 != nil { + return 0, err120 + } + i -= n120 + i = encodeVarintRequestResponse(dAtA, i, uint64(n120)) + i-- + dAtA[i] = 0x1a + } + if m.Execution != nil { { - size, err := m.Request.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Execution.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -16694,7 +16953,7 @@ func (m *UpdateWorkflowExecutionRequest) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } -func (m *UpdateWorkflowExecutionResponse) Marshal() (dAtA []byte, err error) { +func (m *DeleteWorkflowVisibilityRecordResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -16704,32 +16963,97 @@ func (m *UpdateWorkflowExecutionResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *UpdateWorkflowExecutionResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *DeleteWorkflowVisibilityRecordResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *UpdateWorkflowExecutionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *DeleteWorkflowVisibilityRecordResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Response != nil { - { - size, err := m.Response.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRequestResponse(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } return len(dAtA) - i, nil } -func (m *StreamWorkflowReplicationMessagesRequest) Marshal() (dAtA []byte, err error) { +func (m *UpdateWorkflowExecutionRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UpdateWorkflowExecutionRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UpdateWorkflowExecutionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Request != nil { + { + size, err := m.Request.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRequestResponse(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.NamespaceId) > 0 { + i -= len(m.NamespaceId) + copy(dAtA[i:], m.NamespaceId) + i = encodeVarintRequestResponse(dAtA, i, uint64(len(m.NamespaceId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *UpdateWorkflowExecutionResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UpdateWorkflowExecutionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UpdateWorkflowExecutionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Response != nil { + { + size, err := m.Response.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRequestResponse(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *StreamWorkflowReplicationMessagesRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -19145,6 +19469,50 @@ func (m *RebuildMutableStateResponse) Size() (n int) { return n } +func (m *ImportWorkflowExecutionRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.NamespaceId) + if l > 0 { + n += 1 + l + sovRequestResponse(uint64(l)) + } + if m.Execution != nil { + l = m.Execution.Size() + n += 1 + l + sovRequestResponse(uint64(l)) + } + if len(m.HistoryBatches) > 0 { + for _, e := range m.HistoryBatches { + l = e.Size() + n += 1 + l + sovRequestResponse(uint64(l)) + } + } + if m.VersionHistory != nil { + l = m.VersionHistory.Size() + n += 1 + l + sovRequestResponse(uint64(l)) + } + l = len(m.Token) + if l > 0 { + n += 1 + l + sovRequestResponse(uint64(l)) + } + return n +} + +func (m *ImportWorkflowExecutionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Token) + if l > 0 { + n += 1 + l + sovRequestResponse(uint64(l)) + } + return n +} + func (m *DeleteWorkflowVisibilityRecordRequest) Size() (n int) { if m == nil { return 0 @@ -20631,6 +20999,35 @@ func (this *RebuildMutableStateResponse) String() string { }, "") return s } +func (this *ImportWorkflowExecutionRequest) String() string { + if this == nil { + return "nil" + } + repeatedStringForHistoryBatches := "[]*DataBlob{" + for _, f := range this.HistoryBatches { + repeatedStringForHistoryBatches += strings.Replace(fmt.Sprintf("%v", f), "DataBlob", "v14.DataBlob", 1) + "," + } + repeatedStringForHistoryBatches += "}" + s := strings.Join([]string{`&ImportWorkflowExecutionRequest{`, + `NamespaceId:` + fmt.Sprintf("%v", this.NamespaceId) + `,`, + `Execution:` + strings.Replace(fmt.Sprintf("%v", this.Execution), "WorkflowExecution", "v14.WorkflowExecution", 1) + `,`, + `HistoryBatches:` + repeatedStringForHistoryBatches + `,`, + `VersionHistory:` + strings.Replace(fmt.Sprintf("%v", this.VersionHistory), "VersionHistory", "v18.VersionHistory", 1) + `,`, + `Token:` + fmt.Sprintf("%v", this.Token) + `,`, + `}`, + }, "") + return s +} +func (this *ImportWorkflowExecutionResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ImportWorkflowExecutionResponse{`, + `Token:` + fmt.Sprintf("%v", this.Token) + `,`, + `}`, + }, "") + return s +} func (this *DeleteWorkflowVisibilityRecordRequest) String() string { if this == nil { return "nil" @@ -34358,6 +34755,318 @@ func (m *RebuildMutableStateResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *ImportWorkflowExecutionRequest) 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 ErrIntOverflowRequestResponse + } + 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: ImportWorkflowExecutionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ImportWorkflowExecutionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NamespaceId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + 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 ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NamespaceId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Execution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Execution == nil { + m.Execution = &v14.WorkflowExecution{} + } + if err := m.Execution.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HistoryBatches", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HistoryBatches = append(m.HistoryBatches, &v14.DataBlob{}) + if err := m.HistoryBatches[len(m.HistoryBatches)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VersionHistory", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.VersionHistory == nil { + m.VersionHistory = &v18.VersionHistory{} + } + if err := m.VersionHistory.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Token = append(m.Token[:0], dAtA[iNdEx:postIndex]...) + if m.Token == nil { + m.Token = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipRequestResponse(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthRequestResponse + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRequestResponse + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ImportWorkflowExecutionResponse) 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 ErrIntOverflowRequestResponse + } + 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: ImportWorkflowExecutionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ImportWorkflowExecutionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRequestResponse + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthRequestResponse + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthRequestResponse + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Token = append(m.Token[:0], dAtA[iNdEx:postIndex]...) + if m.Token == nil { + m.Token = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipRequestResponse(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthRequestResponse + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRequestResponse + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *DeleteWorkflowVisibilityRecordRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/api/historyservice/v1/service.pb.go b/api/historyservice/v1/service.pb.go index 1f49d01fd6a..52c85aea1ef 100644 --- a/api/historyservice/v1/service.pb.go +++ b/api/historyservice/v1/service.pb.go @@ -54,96 +54,97 @@ func init() { } var fileDescriptor_655983da427ae822 = []byte{ - // 1425 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x9a, 0xcf, 0x8b, 0x23, 0x45, - 0x14, 0xc7, 0x53, 0x17, 0x91, 0x42, 0x57, 0x6d, 0xc5, 0x1f, 0xab, 0x36, 0xba, 0xa2, 0x78, 0xca, - 0xb8, 0xbb, 0xa0, 0xfb, 0xd3, 0x75, 0x26, 0x33, 0x93, 0x99, 0xdd, 0x19, 0x9d, 0x49, 0x66, 0x47, - 0xf0, 0x22, 0x95, 0xe4, 0xcd, 0xa4, 0x98, 0x9e, 0x74, 0xac, 0xaa, 0x64, 0xcd, 0x41, 0x10, 0x3c, - 0x09, 0x82, 0x22, 0x08, 0x9e, 0x04, 0x4f, 0x8a, 0x20, 0x08, 0x82, 0x20, 0x08, 0x9e, 0x04, 0x41, - 0x91, 0xb9, 0xb9, 0x27, 0x71, 0x32, 0x17, 0x8f, 0xfb, 0x27, 0x48, 0xd2, 0x5d, 0x35, 0xa9, 0xee, - 0xea, 0x4e, 0x55, 0x27, 0xb7, 0x99, 0xa4, 0xbe, 0x9f, 0xfe, 0x56, 0xd5, 0xeb, 0xd7, 0xaf, 0x5e, - 0x07, 0x5f, 0x14, 0x70, 0xd8, 0x0d, 0x19, 0x09, 0x16, 0x38, 0xb0, 0x3e, 0xb0, 0x05, 0xd2, 0xa5, - 0x0b, 0x6d, 0xca, 0x45, 0xc8, 0x06, 0xa3, 0x4f, 0x68, 0x13, 0x16, 0xfa, 0xe7, 0x17, 0xe2, 0x3f, - 0xcb, 0x5d, 0x16, 0x8a, 0xd0, 0x7b, 0x51, 0x8a, 0xca, 0x91, 0xa8, 0x4c, 0xba, 0xb4, 0xac, 0x8b, - 0xca, 0xfd, 0xf3, 0x67, 0xaf, 0xd9, 0xb1, 0x19, 0xbc, 0xd7, 0x03, 0x2e, 0xde, 0x65, 0xc0, 0xbb, - 0x61, 0x87, 0xc7, 0x17, 0xb9, 0xf0, 0xcf, 0x1a, 0x3e, 0xb3, 0x16, 0x0d, 0xae, 0x47, 0x83, 0xbd, - 0x6f, 0x10, 0x7e, 0xbc, 0x2e, 0x08, 0x13, 0x6f, 0x87, 0xec, 0x60, 0x2f, 0x08, 0xef, 0xac, 0xbc, - 0x0f, 0xcd, 0x9e, 0xa0, 0x61, 0xc7, 0x5b, 0x2e, 0x5b, 0x79, 0x2a, 0x9b, 0xe5, 0xb5, 0xc8, 0xc2, - 0xd9, 0x95, 0x19, 0x29, 0xd1, 0x04, 0xce, 0x95, 0xbc, 0xcf, 0x11, 0x7e, 0xa8, 0x0a, 0x62, 0xb3, - 0x27, 0x48, 0x23, 0x80, 0xba, 0x20, 0x02, 0xbc, 0xeb, 0x96, 0xf0, 0x84, 0x4e, 0x7a, 0x7b, 0xbd, - 0xa8, 0x5c, 0x99, 0xfa, 0x02, 0xe1, 0x87, 0xb7, 0xc2, 0x20, 0xd0, 0x5c, 0xd9, 0x62, 0x93, 0x42, - 0x69, 0xeb, 0x46, 0x61, 0xbd, 0xf2, 0xf5, 0x35, 0xc2, 0x8f, 0xd5, 0x80, 0x83, 0xa8, 0x0b, 0xda, - 0x3c, 0x18, 0xec, 0x10, 0x7e, 0xb0, 0xdd, 0x83, 0x1e, 0x78, 0x4b, 0x96, 0x6c, 0x93, 0x58, 0xfa, - 0xab, 0xcc, 0xc4, 0x50, 0x1e, 0x7f, 0x40, 0xf8, 0xa9, 0x1a, 0x34, 0x43, 0xd6, 0x92, 0xdb, 0x3e, - 0x1a, 0x35, 0x8e, 0x03, 0x68, 0x79, 0x55, 0xeb, 0x8b, 0x64, 0x10, 0xa4, 0xdb, 0xb5, 0xd9, 0x41, - 0x06, 0xcb, 0x8b, 0x4d, 0x41, 0xfb, 0x54, 0x0c, 0x8a, 0x5b, 0x36, 0x10, 0x8a, 0x59, 0x36, 0x82, - 0x94, 0xe5, 0x9f, 0x11, 0x7e, 0x26, 0xfa, 0x57, 0x9b, 0x5b, 0x25, 0x3c, 0xec, 0x06, 0x30, 0x72, - 0x7d, 0xd3, 0x7e, 0x37, 0x33, 0x21, 0xd2, 0xf8, 0xad, 0xb9, 0xb0, 0x12, 0xcb, 0x9d, 0x1a, 0xba, - 0x4a, 0x68, 0xe0, 0xb4, 0xdc, 0x19, 0x04, 0xf7, 0xe5, 0xce, 0x04, 0x29, 0xcb, 0x5f, 0x21, 0xfc, - 0xe8, 0x3a, 0x9f, 0x1c, 0xb2, 0x4b, 0x02, 0xda, 0xf2, 0x16, 0x2d, 0xaf, 0x61, 0xd0, 0x4a, 0x9b, - 0x4b, 0xb3, 0x20, 0x94, 0xc1, 0x9f, 0x10, 0x7e, 0x3a, 0x1d, 0x37, 0x6b, 0x40, 0x98, 0x68, 0x00, - 0x11, 0xde, 0x7a, 0xe1, 0xd8, 0x53, 0x0c, 0x69, 0xf8, 0xe6, 0x3c, 0x50, 0xa6, 0x40, 0x9e, 0x1c, - 0x5a, 0x38, 0x90, 0x8d, 0x90, 0x82, 0x81, 0x9c, 0xc1, 0x32, 0x05, 0xf2, 0xe4, 0xd0, 0x62, 0x81, - 0x9c, 0x26, 0x14, 0x0c, 0x64, 0x13, 0x28, 0x11, 0x27, 0xe9, 0xd9, 0x91, 0x4e, 0x13, 0x46, 0xa6, - 0xd7, 0x67, 0x58, 0xa1, 0x98, 0xe1, 0x1e, 0x27, 0x39, 0xa8, 0xc4, 0x1d, 0x38, 0x39, 0xc8, 0xf5, - 0x0e, 0x4c, 0x69, 0xdd, 0xef, 0x40, 0x03, 0x42, 0x19, 0xfc, 0x0e, 0xe1, 0x27, 0xea, 0x74, 0xbf, - 0x43, 0x82, 0x74, 0xcd, 0x65, 0x5d, 0x2d, 0x99, 0xf5, 0xd2, 0xe8, 0xea, 0xac, 0x18, 0x65, 0xf6, - 0x37, 0x84, 0x9f, 0x8b, 0x47, 0x51, 0xd1, 0xce, 0xa8, 0x14, 0xdf, 0x74, 0xbb, 0x5c, 0x26, 0x48, - 0xda, 0x7f, 0x6b, 0x6e, 0x3c, 0x35, 0x8f, 0xef, 0x11, 0x7e, 0xb2, 0x06, 0x87, 0x61, 0x1f, 0x22, - 0x91, 0x56, 0xb0, 0xad, 0x5a, 0x07, 0xa0, 0x19, 0x20, 0x7d, 0x57, 0x67, 0xe6, 0x28, 0xbf, 0x3f, - 0x22, 0x7c, 0x76, 0x07, 0xd8, 0x21, 0xed, 0x10, 0x01, 0xe9, 0x15, 0xb7, 0xbd, 0xd3, 0xb3, 0x11, - 0xd2, 0xf3, 0xfa, 0x1c, 0x48, 0x5a, 0x68, 0x2f, 0xc3, 0x28, 0xfb, 0x15, 0x0f, 0xed, 0x0c, 0xbd, - 0x6b, 0x68, 0x67, 0x62, 0x94, 0xd9, 0xd1, 0xd1, 0x67, 0x5c, 0xa2, 0x16, 0x3f, 0xfa, 0x98, 0xe5, - 0xae, 0x47, 0x9f, 0x2c, 0x8a, 0x72, 0xfa, 0x2b, 0xc2, 0x7e, 0x0c, 0x8d, 0x12, 0x5e, 0xda, 0xf1, - 0x86, 0xf5, 0xb5, 0xf2, 0x30, 0xd2, 0xf9, 0xe6, 0x9c, 0x68, 0xda, 0x79, 0xa4, 0xde, 0x6c, 0x43, - 0xab, 0x17, 0xc0, 0x64, 0x75, 0x62, 0x7d, 0x1e, 0x31, 0x89, 0x5d, 0xcf, 0x23, 0x66, 0x86, 0x96, - 0xea, 0x76, 0x81, 0xd1, 0xbd, 0xc1, 0x2a, 0x65, 0x5c, 0x68, 0x27, 0x81, 0x58, 0xd9, 0xb2, 0x4e, - 0x75, 0xd3, 0x40, 0xae, 0xa9, 0x6e, 0x3a, 0x4f, 0xcd, 0xe3, 0x17, 0x84, 0x9f, 0x8d, 0x4a, 0xaa, - 0x4a, 0x9b, 0x06, 0x2d, 0xb5, 0x1d, 0xa7, 0x95, 0xd2, 0x2d, 0xa7, 0xc2, 0x2c, 0x83, 0x22, 0x67, - 0xb0, 0x31, 0x1f, 0x98, 0xb2, 0xff, 0x37, 0xc2, 0x2f, 0x45, 0xb3, 0x35, 0x8e, 0x1d, 0xc7, 0xd5, - 0x88, 0x04, 0x2d, 0x6f, 0xc7, 0x69, 0xf1, 0xa6, 0xe1, 0xe4, 0x84, 0x6e, 0xcf, 0x99, 0xaa, 0x55, - 0x81, 0xcb, 0xc0, 0x9b, 0x8c, 0x36, 0x0c, 0xf9, 0xb1, 0x6a, 0x9d, 0xd8, 0x32, 0x08, 0xae, 0x55, - 0x60, 0x0e, 0x48, 0x59, 0xfe, 0x12, 0xe1, 0x47, 0x6a, 0xd0, 0x0d, 0x68, 0x93, 0x08, 0x58, 0xe9, - 0x43, 0x47, 0xf0, 0xdd, 0x0b, 0xde, 0x0d, 0xeb, 0x2d, 0x4f, 0x28, 0xa5, 0xc5, 0x37, 0x8a, 0x03, - 0x12, 0xe9, 0x3b, 0xfe, 0x5e, 0xce, 0x21, 0x7a, 0x9e, 0x2f, 0xbb, 0xe2, 0x35, 0xb9, 0x7b, 0xfa, - 0x36, 0x53, 0xb4, 0xce, 0x55, 0x7d, 0xd0, 0x69, 0xd6, 0xdb, 0x84, 0xb5, 0x46, 0x5f, 0xf6, 0xb8, - 0x75, 0xe7, 0x2a, 0xa1, 0x73, 0xed, 0x5c, 0xa5, 0xe4, 0xca, 0xd4, 0xc7, 0x08, 0x3f, 0x30, 0xfa, - 0x56, 0x56, 0xaa, 0xde, 0x15, 0x07, 0xa4, 0x14, 0x49, 0x3b, 0x57, 0x0b, 0x69, 0xb5, 0xa7, 0x83, - 0x8c, 0x46, 0xad, 0x30, 0x5b, 0x72, 0x0c, 0x65, 0x53, 0x51, 0x56, 0x99, 0x89, 0xa1, 0x1d, 0x2b, - 0xe4, 0x90, 0xb8, 0x87, 0xba, 0x16, 0x72, 0x61, 0x7d, 0xac, 0x30, 0x68, 0x5d, 0x8f, 0x15, 0x46, - 0x84, 0x32, 0xf8, 0x11, 0xc2, 0xb8, 0x12, 0x84, 0x1c, 0xc6, 0xfb, 0xed, 0x5d, 0xb2, 0x84, 0x9e, - 0x4a, 0xa4, 0x9d, 0xcb, 0x05, 0x94, 0xca, 0xc5, 0x07, 0xf8, 0xfe, 0x2a, 0x88, 0xc8, 0xc2, 0xab, - 0xf6, 0xed, 0x55, 0xcd, 0xc0, 0x6b, 0xce, 0x3a, 0x6d, 0x11, 0xa2, 0xea, 0x7a, 0x5c, 0x5d, 0x5c, - 0x72, 0x2a, 0xc8, 0x27, 0x6b, 0x8a, 0xcb, 0x05, 0x94, 0x5a, 0x6a, 0xaa, 0x82, 0x90, 0x89, 0x81, - 0x86, 0x9d, 0x4d, 0xe0, 0x9c, 0xec, 0x03, 0xb7, 0x4e, 0x4d, 0x66, 0xb9, 0x6b, 0x6a, 0xca, 0xa2, - 0x68, 0x8f, 0xa4, 0x2a, 0x88, 0xe5, 0x8d, 0x6d, 0x93, 0xd9, 0xaa, 0xfd, 0x65, 0xcc, 0x04, 0xd7, - 0x47, 0x52, 0x0e, 0x48, 0x59, 0xfe, 0x04, 0xe1, 0x07, 0xb7, 0x7b, 0xc0, 0x06, 0x32, 0xdd, 0x7a, - 0xb6, 0xd9, 0x47, 0x53, 0x49, 0x6b, 0xd7, 0x8a, 0x89, 0x35, 0x3b, 0x35, 0x20, 0xdd, 0x6e, 0x30, - 0x88, 0x1e, 0x52, 0xd6, 0x76, 0x34, 0x95, 0xab, 0x9d, 0x84, 0x58, 0xd9, 0xf9, 0x14, 0xe1, 0x33, - 0xd1, 0x2a, 0xaa, 0x5d, 0xbc, 0xe6, 0xb4, 0xf8, 0xc9, 0xad, 0xbb, 0x5e, 0x50, 0xad, 0xbf, 0x22, - 0xe9, 0xb1, 0x7d, 0x98, 0xf4, 0x64, 0xfd, 0x8a, 0x24, 0x21, 0x74, 0x7e, 0x45, 0x92, 0xd2, 0x6b, - 0xbe, 0x36, 0xa1, 0xa0, 0xaf, 0xa4, 0xd0, 0xd5, 0x57, 0x5a, 0x9f, 0x78, 0x75, 0xb3, 0xc7, 0x80, - 0xb7, 0x27, 0x2b, 0x7d, 0xee, 0xf0, 0xea, 0x26, 0x2d, 0x76, 0x7f, 0x75, 0x63, 0x62, 0x28, 0x8f, - 0x7f, 0x21, 0xfc, 0x42, 0x15, 0x3a, 0xc0, 0x88, 0x80, 0x0d, 0xc2, 0x45, 0xfc, 0x44, 0x9a, 0xb8, - 0x71, 0x23, 0xcb, 0xdb, 0xd6, 0xc1, 0x33, 0x95, 0x25, 0x67, 0x50, 0x9b, 0x27, 0x52, 0x5b, 0x74, - 0x3d, 0x59, 0xc6, 0x75, 0xda, 0x52, 0xa1, 0x4c, 0xab, 0x17, 0x6b, 0x95, 0x99, 0x18, 0x5a, 0x05, - 0x52, 0x83, 0x46, 0x8f, 0x06, 0x2d, 0xad, 0x48, 0x5a, 0xb4, 0xde, 0xd3, 0x94, 0xd6, 0xb5, 0x02, - 0x31, 0x22, 0xb4, 0x36, 0x85, 0xde, 0x76, 0xd9, 0xa5, 0x9c, 0x36, 0x68, 0x30, 0xae, 0xf6, 0x46, - 0xc7, 0x21, 0xeb, 0x36, 0x45, 0x3e, 0xc6, 0xb5, 0x4d, 0x31, 0x8d, 0xa6, 0xf5, 0xaf, 0x6e, 0x77, - 0x5b, 0x64, 0x96, 0xfe, 0x55, 0x86, 0xde, 0xb5, 0x7f, 0x95, 0x89, 0xd1, 0x3a, 0xf4, 0x5b, 0x61, - 0x90, 0xee, 0xbb, 0x44, 0x52, 0xeb, 0x0e, 0x7d, 0x0e, 0xc3, 0xb5, 0x43, 0x9f, 0x8b, 0x52, 0xc6, - 0xff, 0x44, 0xf8, 0xf9, 0xba, 0x60, 0x40, 0x0e, 0x4f, 0x9f, 0xa7, 0xe9, 0xe2, 0xc3, 0xba, 0x09, - 0x3c, 0x8d, 0x24, 0x27, 0xb1, 0x35, 0x3f, 0xa0, 0x9c, 0xca, 0xcb, 0xe8, 0x15, 0x34, 0xde, 0x87, - 0xaa, 0xa1, 0x81, 0x17, 0x67, 0x1d, 0xeb, 0x7d, 0xc8, 0x61, 0xb8, 0xee, 0x43, 0x2e, 0x4a, 0xed, - 0xc3, 0x1f, 0x08, 0x9f, 0xcb, 0x1d, 0xd9, 0x07, 0xc6, 0xc1, 0xdb, 0x9a, 0xc7, 0x45, 0xc7, 0x28, - 0x39, 0x8d, 0xed, 0x39, 0x12, 0xb5, 0xf6, 0x9d, 0x49, 0x50, 0x23, 0x77, 0x62, 0xcd, 0xee, 0x05, - 0xeb, 0xf6, 0xdd, 0x34, 0x90, 0x6b, 0xfb, 0x6e, 0x3a, 0x4f, 0x7b, 0xcf, 0xb9, 0x1a, 0xb2, 0x26, - 0x64, 0x35, 0xd2, 0x6d, 0x83, 0x20, 0x0f, 0xe2, 0xfa, 0x9e, 0x33, 0x9f, 0x25, 0xbd, 0x2f, 0x75, - 0x8f, 0x8e, 0xfd, 0xd2, 0xdd, 0x63, 0xbf, 0x74, 0xef, 0xd8, 0x47, 0x1f, 0x0e, 0x7d, 0xf4, 0xed, - 0xd0, 0x47, 0xbf, 0x0f, 0x7d, 0x74, 0x34, 0xf4, 0xd1, 0xbf, 0x43, 0x1f, 0xfd, 0x37, 0xf4, 0x4b, - 0xf7, 0x86, 0x3e, 0xfa, 0xec, 0xc4, 0x2f, 0x1d, 0x9d, 0xf8, 0xa5, 0xbb, 0x27, 0x7e, 0xe9, 0x9d, - 0x2b, 0xfb, 0xe1, 0xa9, 0x0d, 0x1a, 0xe6, 0xfe, 0xb4, 0xe9, 0xaa, 0xfe, 0x49, 0xe3, 0xbe, 0xf1, - 0x2f, 0x9b, 0x2e, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x2d, 0x64, 0xf1, 0x7e, 0x75, 0x25, 0x00, + // 1441 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x9a, 0xcf, 0x6b, 0x24, 0x45, + 0x14, 0xc7, 0xa7, 0x2e, 0x22, 0x85, 0xae, 0xda, 0x8a, 0x3f, 0xa2, 0x36, 0xba, 0xa2, 0x78, 0x9a, + 0xb8, 0x59, 0xd0, 0xfd, 0x91, 0x75, 0x4d, 0x26, 0xc9, 0x24, 0xd9, 0x44, 0x93, 0x99, 0x6c, 0x04, + 0x2f, 0x52, 0x33, 0xf3, 0x92, 0x29, 0xd2, 0x99, 0x1e, 0xab, 0x6b, 0x66, 0x9d, 0x83, 0x20, 0x78, + 0x12, 0x05, 0x45, 0x10, 0x3c, 0x09, 0x9e, 0x14, 0x41, 0x10, 0x04, 0x41, 0x10, 0x3c, 0x09, 0x82, + 0x22, 0xb9, 0xb9, 0x47, 0x33, 0xb9, 0x78, 0xdc, 0x3f, 0x41, 0x66, 0xba, 0xab, 0x32, 0xd5, 0x5d, + 0xdd, 0x53, 0xd5, 0xd3, 0xb7, 0xdd, 0xa4, 0xbe, 0x9f, 0xfe, 0x56, 0xd5, 0xeb, 0xd7, 0xaf, 0x5e, + 0x05, 0x5f, 0xe6, 0x70, 0xdc, 0xf5, 0x19, 0xf1, 0xe6, 0x03, 0x60, 0x7d, 0x60, 0xf3, 0xa4, 0x4b, + 0xe7, 0xdb, 0x34, 0xe0, 0x3e, 0x1b, 0x8c, 0x7e, 0x42, 0x9b, 0x30, 0xdf, 0xbf, 0x34, 0x1f, 0xfd, + 0xb3, 0xdc, 0x65, 0x3e, 0xf7, 0x9d, 0x17, 0x85, 0xa8, 0x1c, 0x8a, 0xca, 0xa4, 0x4b, 0xcb, 0xaa, + 0xa8, 0xdc, 0xbf, 0x34, 0xb7, 0x68, 0xc6, 0x66, 0xf0, 0x5e, 0x0f, 0x02, 0xfe, 0x2e, 0x83, 0xa0, + 0xeb, 0x77, 0x82, 0xe8, 0x21, 0x0b, 0x9f, 0x6c, 0xe2, 0x0b, 0xeb, 0xe1, 0xe0, 0x7a, 0x38, 0xd8, + 0xf9, 0x16, 0xe1, 0xc7, 0xeb, 0x9c, 0x30, 0xfe, 0xb6, 0xcf, 0x8e, 0x0e, 0x3c, 0xff, 0xce, 0xea, + 0xfb, 0xd0, 0xec, 0x71, 0xea, 0x77, 0x9c, 0x95, 0xb2, 0x91, 0xa7, 0xb2, 0x5e, 0x5e, 0x0b, 0x2d, + 0xcc, 0xad, 0xce, 0x48, 0x09, 0x27, 0x70, 0xb1, 0xe4, 0x7c, 0x81, 0xf0, 0x43, 0x55, 0xe0, 0xdb, + 0x3d, 0x4e, 0x1a, 0x1e, 0xd4, 0x39, 0xe1, 0xe0, 0xdc, 0x30, 0x84, 0xc7, 0x74, 0xc2, 0xdb, 0xeb, + 0x79, 0xe5, 0xd2, 0xd4, 0x97, 0x08, 0x3f, 0xbc, 0xe3, 0x7b, 0x9e, 0xe2, 0xca, 0x14, 0x1b, 0x17, + 0x0a, 0x5b, 0x37, 0x73, 0xeb, 0xa5, 0xaf, 0x6f, 0x10, 0x7e, 0xac, 0x06, 0x01, 0xf0, 0x3a, 0xa7, + 0xcd, 0xa3, 0xc1, 0x1e, 0x09, 0x8e, 0x76, 0x7b, 0xd0, 0x03, 0x67, 0xd9, 0x90, 0xad, 0x13, 0x0b, + 0x7f, 0x95, 0x99, 0x18, 0xd2, 0xe3, 0x8f, 0x08, 0x3f, 0x55, 0x83, 0xa6, 0xcf, 0x5a, 0x62, 0xdb, + 0x47, 0xa3, 0xc6, 0x71, 0x00, 0x2d, 0xa7, 0x6a, 0xfc, 0x90, 0x14, 0x82, 0x70, 0xbb, 0x3e, 0x3b, + 0x48, 0x63, 0x79, 0xa9, 0xc9, 0x69, 0x9f, 0xf2, 0x41, 0x7e, 0xcb, 0x1a, 0x42, 0x3e, 0xcb, 0x5a, + 0x90, 0xb4, 0xfc, 0x0b, 0xc2, 0xcf, 0x84, 0xff, 0x55, 0xe6, 0x56, 0xf1, 0x8f, 0xbb, 0x1e, 0x8c, + 0x5c, 0x6f, 0x9a, 0xef, 0x66, 0x2a, 0x44, 0x18, 0xbf, 0x55, 0x08, 0x2b, 0xb6, 0xdc, 0x89, 0xa1, + 0x6b, 0x84, 0x7a, 0x56, 0xcb, 0x9d, 0x42, 0xb0, 0x5f, 0xee, 0x54, 0x90, 0xb4, 0xfc, 0x35, 0xc2, + 0x8f, 0x6e, 0x04, 0x93, 0x43, 0xf6, 0x89, 0x47, 0x5b, 0xce, 0x92, 0xe1, 0x33, 0x34, 0x5a, 0x61, + 0x73, 0x79, 0x16, 0x84, 0x34, 0xf8, 0x33, 0xc2, 0x4f, 0x27, 0xe3, 0x66, 0x1d, 0x08, 0xe3, 0x0d, + 0x20, 0xdc, 0xd9, 0xc8, 0x1d, 0x7b, 0x92, 0x21, 0x0c, 0x6f, 0x16, 0x81, 0xd2, 0x05, 0xf2, 0xe4, + 0xd0, 0xdc, 0x81, 0xac, 0x85, 0xe4, 0x0c, 0xe4, 0x14, 0x96, 0x2e, 0x90, 0x27, 0x87, 0xe6, 0x0b, + 0xe4, 0x24, 0x21, 0x67, 0x20, 0xeb, 0x40, 0xb1, 0x38, 0x49, 0xce, 0x8e, 0x74, 0x9a, 0x30, 0x32, + 0xbd, 0x31, 0xc3, 0x0a, 0x45, 0x0c, 0xfb, 0x38, 0xc9, 0x40, 0xc5, 0xde, 0xc0, 0xc9, 0x41, 0xb6, + 0x6f, 0x60, 0x42, 0x6b, 0xff, 0x06, 0x6a, 0x10, 0xd2, 0xe0, 0xf7, 0x08, 0x3f, 0x51, 0xa7, 0x87, + 0x1d, 0xe2, 0x25, 0x6b, 0x2e, 0xe3, 0x6a, 0x49, 0xaf, 0x17, 0x46, 0xd7, 0x66, 0xc5, 0x48, 0xb3, + 0xbf, 0x23, 0xfc, 0x5c, 0x34, 0x8a, 0xf2, 0x76, 0x4a, 0xa5, 0xf8, 0xa6, 0xdd, 0xe3, 0x52, 0x41, + 0xc2, 0xfe, 0x5b, 0x85, 0xf1, 0xe4, 0x3c, 0x7e, 0x40, 0xf8, 0xc9, 0x1a, 0x1c, 0xfb, 0x7d, 0x08, + 0x45, 0x4a, 0xc1, 0xb6, 0x66, 0x1c, 0x80, 0x7a, 0x80, 0xf0, 0x5d, 0x9d, 0x99, 0x23, 0xfd, 0xfe, + 0x84, 0xf0, 0xdc, 0x1e, 0xb0, 0x63, 0xda, 0x21, 0x1c, 0x92, 0x2b, 0x6e, 0xfa, 0xa6, 0xa7, 0x23, + 0x84, 0xe7, 0x8d, 0x02, 0x48, 0x4a, 0x68, 0xaf, 0xc0, 0x28, 0xfb, 0xe5, 0x0f, 0xed, 0x14, 0xbd, + 0x6d, 0x68, 0xa7, 0x62, 0xa4, 0xd9, 0xd1, 0xd1, 0x67, 0x5c, 0xa2, 0xe6, 0x3f, 0xfa, 0xe8, 0xe5, + 0xb6, 0x47, 0x9f, 0x34, 0x8a, 0x74, 0xfa, 0x1b, 0xc2, 0x6e, 0x04, 0x0d, 0x13, 0x5e, 0xd2, 0xf1, + 0x96, 0xf1, 0xb3, 0xb2, 0x30, 0xc2, 0xf9, 0x76, 0x41, 0x34, 0xe5, 0x3c, 0x52, 0x6f, 0xb6, 0xa1, + 0xd5, 0xf3, 0x60, 0xb2, 0x3a, 0x31, 0x3e, 0x8f, 0xe8, 0xc4, 0xb6, 0xe7, 0x11, 0x3d, 0x43, 0x49, + 0x75, 0xfb, 0xc0, 0xe8, 0xc1, 0x60, 0x8d, 0xb2, 0x80, 0x2b, 0x27, 0x81, 0x48, 0xd9, 0x32, 0x4e, + 0x75, 0xd3, 0x40, 0xb6, 0xa9, 0x6e, 0x3a, 0x4f, 0xce, 0xe3, 0x57, 0x84, 0x9f, 0x0d, 0x4b, 0xaa, + 0x4a, 0x9b, 0x7a, 0x2d, 0xb9, 0x1d, 0xe7, 0x95, 0xd2, 0x2d, 0xab, 0xc2, 0x2c, 0x85, 0x22, 0x66, + 0xb0, 0x55, 0x0c, 0x4c, 0xda, 0xff, 0x07, 0xe1, 0x97, 0xc2, 0xd9, 0x6a, 0xc7, 0x8e, 0xe3, 0x6a, + 0x44, 0x82, 0x96, 0xb3, 0x67, 0xb5, 0x78, 0xd3, 0x70, 0x62, 0x42, 0xb7, 0x0b, 0xa6, 0x2a, 0x55, + 0xe0, 0x0a, 0x04, 0x4d, 0x46, 0x1b, 0x9a, 0xfc, 0x58, 0x35, 0x4e, 0x6c, 0x29, 0x04, 0xdb, 0x2a, + 0x30, 0x03, 0x24, 0x2d, 0x7f, 0x85, 0xf0, 0x23, 0x35, 0xe8, 0x7a, 0xb4, 0x49, 0x38, 0xac, 0xf6, + 0xa1, 0xc3, 0x83, 0xfd, 0x05, 0xe7, 0xa6, 0xf1, 0x96, 0xc7, 0x94, 0xc2, 0xe2, 0x1b, 0xf9, 0x01, + 0xb1, 0xf4, 0x1d, 0xfd, 0x5e, 0xcc, 0x21, 0xfc, 0x9e, 0xaf, 0xd8, 0xe2, 0x15, 0xb9, 0x7d, 0xfa, + 0xd6, 0x53, 0x94, 0xce, 0x55, 0x7d, 0xd0, 0x69, 0xd6, 0xdb, 0x84, 0xb5, 0x46, 0xbf, 0xec, 0x05, + 0xc6, 0x9d, 0xab, 0x98, 0xce, 0xb6, 0x73, 0x95, 0x90, 0x4b, 0x53, 0x1f, 0x23, 0xfc, 0xc0, 0xe8, + 0xb7, 0xa2, 0x52, 0x75, 0xae, 0x59, 0x20, 0x85, 0x48, 0xd8, 0xb9, 0x9e, 0x4b, 0xab, 0x7c, 0x1d, + 0x44, 0x34, 0x2a, 0x85, 0xd9, 0xb2, 0x65, 0x28, 0xeb, 0x8a, 0xb2, 0xca, 0x4c, 0x0c, 0xe5, 0x58, + 0x21, 0x86, 0x44, 0x3d, 0xd4, 0x75, 0x3f, 0xe0, 0xc6, 0xc7, 0x0a, 0x8d, 0xd6, 0xf6, 0x58, 0xa1, + 0x45, 0x48, 0x83, 0x1f, 0x21, 0x8c, 0x2b, 0x9e, 0x1f, 0xc0, 0x78, 0xbf, 0x9d, 0x2b, 0x86, 0xd0, + 0x73, 0x89, 0xb0, 0x73, 0x35, 0x87, 0x52, 0xba, 0xf8, 0x00, 0xdf, 0x5f, 0x05, 0x1e, 0x5a, 0x78, + 0xd5, 0xbc, 0xbd, 0xaa, 0x18, 0x78, 0xcd, 0x5a, 0xa7, 0x2c, 0x42, 0x58, 0x5d, 0x8f, 0xab, 0x8b, + 0x2b, 0x56, 0x05, 0xf9, 0x64, 0x4d, 0x71, 0x35, 0x87, 0x52, 0x49, 0x4d, 0x55, 0xe0, 0x22, 0x31, + 0x50, 0xbf, 0xb3, 0x0d, 0x41, 0x40, 0x0e, 0x21, 0x30, 0x4e, 0x4d, 0x7a, 0xb9, 0x6d, 0x6a, 0x4a, + 0xa3, 0x28, 0x9f, 0xa4, 0x2a, 0xf0, 0x95, 0xad, 0x5d, 0x9d, 0xd9, 0xaa, 0xf9, 0x63, 0xf4, 0x04, + 0xdb, 0x4f, 0x52, 0x06, 0x48, 0x5a, 0xfe, 0x14, 0xe1, 0x07, 0x77, 0x7b, 0xc0, 0x06, 0x22, 0xdd, + 0x3a, 0xa6, 0xd9, 0x47, 0x51, 0x09, 0x6b, 0x8b, 0xf9, 0xc4, 0x8a, 0x9d, 0x1a, 0x90, 0x6e, 0xd7, + 0x1b, 0x84, 0x1f, 0x29, 0x63, 0x3b, 0x8a, 0xca, 0xd6, 0x4e, 0x4c, 0x2c, 0xed, 0x7c, 0x86, 0xf0, + 0x85, 0x70, 0x15, 0xe5, 0x2e, 0x2e, 0x5a, 0x2d, 0x7e, 0x7c, 0xeb, 0x6e, 0xe4, 0x54, 0xab, 0x57, + 0x24, 0x3d, 0x76, 0x08, 0x93, 0x9e, 0x8c, 0xaf, 0x48, 0x62, 0x42, 0xeb, 0x2b, 0x92, 0x84, 0x5e, + 0xf1, 0xb5, 0x0d, 0x39, 0x7d, 0xc5, 0x85, 0xb6, 0xbe, 0x92, 0xfa, 0xd8, 0xd5, 0xcd, 0x01, 0x83, + 0xa0, 0x3d, 0x59, 0xe9, 0x07, 0x16, 0x57, 0x37, 0x49, 0xb1, 0xfd, 0xd5, 0x8d, 0x8e, 0x21, 0x3d, + 0xfe, 0x8d, 0xf0, 0x0b, 0x55, 0xe8, 0x00, 0x23, 0x1c, 0xb6, 0x48, 0xc0, 0xa3, 0x2f, 0xd2, 0xc4, + 0x8b, 0x1b, 0x5a, 0xde, 0x35, 0x0e, 0x9e, 0xa9, 0x2c, 0x31, 0x83, 0x5a, 0x91, 0x48, 0x65, 0xd1, + 0xd5, 0x64, 0x19, 0xd5, 0x69, 0xcb, 0xb9, 0x32, 0xad, 0x5a, 0xac, 0x55, 0x66, 0x62, 0x28, 0x15, + 0x48, 0x0d, 0x1a, 0x3d, 0xea, 0xb5, 0x94, 0x22, 0x69, 0xc9, 0x78, 0x4f, 0x13, 0x5a, 0xdb, 0x0a, + 0x44, 0x8b, 0x50, 0xba, 0x3f, 0x1b, 0x23, 0x0c, 0xcf, 0xdf, 0xfd, 0x49, 0xd1, 0xdb, 0x76, 0x7f, + 0x52, 0x31, 0x4a, 0x4f, 0x45, 0xed, 0x11, 0xed, 0xd3, 0x80, 0x36, 0xa8, 0x37, 0x2e, 0x4d, 0x47, + 0x67, 0x37, 0xe3, 0x9e, 0x4a, 0x36, 0xc6, 0xb6, 0xa7, 0x32, 0x8d, 0xa6, 0x2c, 0xf7, 0xed, 0x6e, + 0x8b, 0xcc, 0xd2, 0x6c, 0x4b, 0xd1, 0xdb, 0x2e, 0x77, 0x2a, 0x46, 0xb9, 0x4e, 0xd8, 0xf1, 0xbd, + 0x64, 0x93, 0x28, 0x94, 0x1a, 0x5f, 0x27, 0x64, 0x30, 0x6c, 0xaf, 0x13, 0x32, 0x51, 0xd2, 0xf8, + 0x5f, 0x08, 0x3f, 0x5f, 0xe7, 0x0c, 0xc8, 0xf1, 0xf9, 0xc7, 0x3f, 0x59, 0x29, 0x19, 0x77, 0xac, + 0xa7, 0x91, 0xc4, 0x24, 0x76, 0x8a, 0x03, 0x8a, 0xa9, 0xbc, 0x8c, 0x5e, 0x41, 0xe3, 0x7d, 0xa8, + 0x6a, 0xba, 0x8d, 0x51, 0x8a, 0x34, 0xde, 0x87, 0x0c, 0x86, 0xed, 0x3e, 0x64, 0xa2, 0xe4, 0x3e, + 0xfc, 0x89, 0xf0, 0xc5, 0xcc, 0x91, 0x7d, 0x60, 0x01, 0x38, 0x3b, 0x45, 0x3c, 0x74, 0x8c, 0x12, + 0xd3, 0xd8, 0x2d, 0x90, 0xa8, 0xf4, 0x1a, 0x75, 0x82, 0x1a, 0xb9, 0x13, 0x69, 0xf6, 0x17, 0x8c, + 0x7b, 0x8d, 0xd3, 0x40, 0xb6, 0xbd, 0xc6, 0xe9, 0x3c, 0xe5, 0x52, 0x76, 0xcd, 0x67, 0x4d, 0x48, + 0xeb, 0xfa, 0x9b, 0x06, 0x41, 0x16, 0xc4, 0xf6, 0x52, 0x36, 0x9b, 0x25, 0xbc, 0x2f, 0x77, 0x4f, + 0x4e, 0xdd, 0xd2, 0xdd, 0x53, 0xb7, 0x74, 0xef, 0xd4, 0x45, 0x1f, 0x0e, 0x5d, 0xf4, 0xdd, 0xd0, + 0x45, 0x7f, 0x0c, 0x5d, 0x74, 0x32, 0x74, 0xd1, 0xbf, 0x43, 0x17, 0xfd, 0x37, 0x74, 0x4b, 0xf7, + 0x86, 0x2e, 0xfa, 0xfc, 0xcc, 0x2d, 0x9d, 0x9c, 0xb9, 0xa5, 0xbb, 0x67, 0x6e, 0xe9, 0x9d, 0x6b, + 0x87, 0xfe, 0xb9, 0x0d, 0xea, 0x67, 0xfe, 0x1d, 0xd6, 0x75, 0xf5, 0x27, 0x8d, 0xfb, 0xc6, 0x7f, + 0x86, 0x75, 0xf9, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x85, 0x61, 0x05, 0x22, 0x26, 0x00, 0x00, } @@ -318,7 +319,11 @@ type HistoryServiceClient interface { GenerateLastHistoryReplicationTasks(ctx context.Context, in *GenerateLastHistoryReplicationTasksRequest, opts ...grpc.CallOption) (*GenerateLastHistoryReplicationTasksResponse, error) GetReplicationStatus(ctx context.Context, in *GetReplicationStatusRequest, opts ...grpc.CallOption) (*GetReplicationStatusResponse, error) // RebuildMutableState attempts to rebuild mutable state according to persisted history events. + // NOTE: this is experimental API RebuildMutableState(ctx context.Context, in *RebuildMutableStateRequest, opts ...grpc.CallOption) (*RebuildMutableStateResponse, error) + // ImportWorkflowExecution attempts to import workflow according to persisted history events. + // NOTE: this is experimental API + ImportWorkflowExecution(ctx context.Context, in *ImportWorkflowExecutionRequest, opts ...grpc.CallOption) (*ImportWorkflowExecutionResponse, error) // DeleteWorkflowVisibilityRecord force delete a workflow's visibility record. // This is used by admin delete workflow execution API to delete visibility record as frontend // visibility manager doesn't support write operations @@ -758,6 +763,15 @@ func (c *historyServiceClient) RebuildMutableState(ctx context.Context, in *Rebu return out, nil } +func (c *historyServiceClient) ImportWorkflowExecution(ctx context.Context, in *ImportWorkflowExecutionRequest, opts ...grpc.CallOption) (*ImportWorkflowExecutionResponse, error) { + out := new(ImportWorkflowExecutionResponse) + err := c.cc.Invoke(ctx, "/temporal.server.api.historyservice.v1.HistoryService/ImportWorkflowExecution", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *historyServiceClient) DeleteWorkflowVisibilityRecord(ctx context.Context, in *DeleteWorkflowVisibilityRecordRequest, opts ...grpc.CallOption) (*DeleteWorkflowVisibilityRecordResponse, error) { out := new(DeleteWorkflowVisibilityRecordResponse) err := c.cc.Invoke(ctx, "/temporal.server.api.historyservice.v1.HistoryService/DeleteWorkflowVisibilityRecord", in, out, opts...) @@ -1013,7 +1027,11 @@ type HistoryServiceServer interface { GenerateLastHistoryReplicationTasks(context.Context, *GenerateLastHistoryReplicationTasksRequest) (*GenerateLastHistoryReplicationTasksResponse, error) GetReplicationStatus(context.Context, *GetReplicationStatusRequest) (*GetReplicationStatusResponse, error) // RebuildMutableState attempts to rebuild mutable state according to persisted history events. + // NOTE: this is experimental API RebuildMutableState(context.Context, *RebuildMutableStateRequest) (*RebuildMutableStateResponse, error) + // ImportWorkflowExecution attempts to import workflow according to persisted history events. + // NOTE: this is experimental API + ImportWorkflowExecution(context.Context, *ImportWorkflowExecutionRequest) (*ImportWorkflowExecutionResponse, error) // DeleteWorkflowVisibilityRecord force delete a workflow's visibility record. // This is used by admin delete workflow execution API to delete visibility record as frontend // visibility manager doesn't support write operations @@ -1173,6 +1191,9 @@ func (*UnimplementedHistoryServiceServer) GetReplicationStatus(ctx context.Conte func (*UnimplementedHistoryServiceServer) RebuildMutableState(ctx context.Context, req *RebuildMutableStateRequest) (*RebuildMutableStateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RebuildMutableState not implemented") } +func (*UnimplementedHistoryServiceServer) ImportWorkflowExecution(ctx context.Context, req *ImportWorkflowExecutionRequest) (*ImportWorkflowExecutionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ImportWorkflowExecution not implemented") +} func (*UnimplementedHistoryServiceServer) DeleteWorkflowVisibilityRecord(ctx context.Context, req *DeleteWorkflowVisibilityRecordRequest) (*DeleteWorkflowVisibilityRecordResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteWorkflowVisibilityRecord not implemented") } @@ -2030,6 +2051,24 @@ func _HistoryService_RebuildMutableState_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } +func _HistoryService_ImportWorkflowExecution_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ImportWorkflowExecutionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HistoryServiceServer).ImportWorkflowExecution(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/temporal.server.api.historyservice.v1.HistoryService/ImportWorkflowExecution", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HistoryServiceServer).ImportWorkflowExecution(ctx, req.(*ImportWorkflowExecutionRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _HistoryService_DeleteWorkflowVisibilityRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteWorkflowVisibilityRecordRequest) if err := dec(in); err != nil { @@ -2370,6 +2409,10 @@ var _HistoryService_serviceDesc = grpc.ServiceDesc{ MethodName: "RebuildMutableState", Handler: _HistoryService_RebuildMutableState_Handler, }, + { + MethodName: "ImportWorkflowExecution", + Handler: _HistoryService_ImportWorkflowExecution_Handler, + }, { MethodName: "DeleteWorkflowVisibilityRecord", Handler: _HistoryService_DeleteWorkflowVisibilityRecord_Handler, diff --git a/api/historyservicemock/v1/service.pb.mock.go b/api/historyservicemock/v1/service.pb.mock.go index df6c32597e0..f2173d9bc29 100644 --- a/api/historyservicemock/v1/service.pb.mock.go +++ b/api/historyservicemock/v1/service.pb.mock.go @@ -401,6 +401,26 @@ func (mr *MockHistoryServiceClientMockRecorder) GetWorkflowExecutionRawHistoryV2 return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkflowExecutionRawHistoryV2", reflect.TypeOf((*MockHistoryServiceClient)(nil).GetWorkflowExecutionRawHistoryV2), varargs...) } +// ImportWorkflowExecution mocks base method. +func (m *MockHistoryServiceClient) ImportWorkflowExecution(ctx context.Context, in *historyservice.ImportWorkflowExecutionRequest, opts ...grpc.CallOption) (*historyservice.ImportWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ImportWorkflowExecution", varargs...) + ret0, _ := ret[0].(*historyservice.ImportWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ImportWorkflowExecution indicates an expected call of ImportWorkflowExecution. +func (mr *MockHistoryServiceClientMockRecorder) ImportWorkflowExecution(ctx, in interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImportWorkflowExecution", reflect.TypeOf((*MockHistoryServiceClient)(nil).ImportWorkflowExecution), varargs...) +} + // IsActivityTaskValid mocks base method. func (m *MockHistoryServiceClient) IsActivityTaskValid(ctx context.Context, in *historyservice.IsActivityTaskValidRequest, opts ...grpc.CallOption) (*historyservice.IsActivityTaskValidResponse, error) { m.ctrl.T.Helper() @@ -1556,6 +1576,21 @@ func (mr *MockHistoryServiceServerMockRecorder) GetWorkflowExecutionRawHistoryV2 return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkflowExecutionRawHistoryV2", reflect.TypeOf((*MockHistoryServiceServer)(nil).GetWorkflowExecutionRawHistoryV2), arg0, arg1) } +// ImportWorkflowExecution mocks base method. +func (m *MockHistoryServiceServer) ImportWorkflowExecution(arg0 context.Context, arg1 *historyservice.ImportWorkflowExecutionRequest) (*historyservice.ImportWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ImportWorkflowExecution", arg0, arg1) + ret0, _ := ret[0].(*historyservice.ImportWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ImportWorkflowExecution indicates an expected call of ImportWorkflowExecution. +func (mr *MockHistoryServiceServerMockRecorder) ImportWorkflowExecution(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImportWorkflowExecution", reflect.TypeOf((*MockHistoryServiceServer)(nil).ImportWorkflowExecution), arg0, arg1) +} + // IsActivityTaskValid mocks base method. func (m *MockHistoryServiceServer) IsActivityTaskValid(arg0 context.Context, arg1 *historyservice.IsActivityTaskValidRequest) (*historyservice.IsActivityTaskValidResponse, error) { m.ctrl.T.Helper() diff --git a/client/admin/client_gen.go b/client/admin/client_gen.go index 0c6ae9d09ed..b1f4d051083 100644 --- a/client/admin/client_gen.go +++ b/client/admin/client_gen.go @@ -193,6 +193,16 @@ func (c *clientImpl) GetWorkflowExecutionRawHistoryV2( return c.client.GetWorkflowExecutionRawHistoryV2(ctx, request, opts...) } +func (c *clientImpl) ImportWorkflowExecution( + ctx context.Context, + request *adminservice.ImportWorkflowExecutionRequest, + opts ...grpc.CallOption, +) (*adminservice.ImportWorkflowExecutionResponse, error) { + ctx, cancel := c.createContext(ctx) + defer cancel() + return c.client.ImportWorkflowExecution(ctx, request, opts...) +} + func (c *clientImpl) ListClusterMembers( ctx context.Context, request *adminservice.ListClusterMembersRequest, diff --git a/client/admin/metric_client_gen.go b/client/admin/metric_client_gen.go index 4b121c36ec6..05c0f03f0bf 100644 --- a/client/admin/metric_client_gen.go +++ b/client/admin/metric_client_gen.go @@ -257,6 +257,20 @@ func (c *metricClient) GetWorkflowExecutionRawHistoryV2( return c.client.GetWorkflowExecutionRawHistoryV2(ctx, request, opts...) } +func (c *metricClient) ImportWorkflowExecution( + ctx context.Context, + request *adminservice.ImportWorkflowExecutionRequest, + opts ...grpc.CallOption, +) (_ *adminservice.ImportWorkflowExecutionResponse, retError error) { + + metricsHandler, startTime := c.startMetricsRecording(ctx, "AdminClientImportWorkflowExecution") + defer func() { + c.finishMetricsRecording(metricsHandler, startTime, retError) + }() + + return c.client.ImportWorkflowExecution(ctx, request, opts...) +} + func (c *metricClient) ListClusterMembers( ctx context.Context, request *adminservice.ListClusterMembersRequest, diff --git a/client/admin/retryable_client_gen.go b/client/admin/retryable_client_gen.go index 2e290ac917a..50369e1a3b6 100644 --- a/client/admin/retryable_client_gen.go +++ b/client/admin/retryable_client_gen.go @@ -275,6 +275,21 @@ func (c *retryableClient) GetWorkflowExecutionRawHistoryV2( return resp, err } +func (c *retryableClient) ImportWorkflowExecution( + ctx context.Context, + request *adminservice.ImportWorkflowExecutionRequest, + opts ...grpc.CallOption, +) (*adminservice.ImportWorkflowExecutionResponse, error) { + var resp *adminservice.ImportWorkflowExecutionResponse + op := func(ctx context.Context) error { + var err error + resp, err = c.client.ImportWorkflowExecution(ctx, request, opts...) + return err + } + err := backoff.ThrottleRetryContext(ctx, op, c.policy, c.isRetryable) + return resp, err +} + func (c *retryableClient) ListClusterMembers( ctx context.Context, request *adminservice.ListClusterMembersRequest, diff --git a/client/history/client_gen.go b/client/history/client_gen.go index 949e3ed230c..8f545556b0e 100644 --- a/client/history/client_gen.go +++ b/client/history/client_gen.go @@ -318,6 +318,26 @@ func (c *clientImpl) GetWorkflowExecutionRawHistoryV2( return response, nil } +func (c *clientImpl) ImportWorkflowExecution( + ctx context.Context, + request *historyservice.ImportWorkflowExecutionRequest, + opts ...grpc.CallOption, +) (*historyservice.ImportWorkflowExecutionResponse, error) { + shardID := c.shardIDFromWorkflowID(request.NamespaceId, request.GetExecution().GetWorkflowId()) + var response *historyservice.ImportWorkflowExecutionResponse + op := func(ctx context.Context, client historyservice.HistoryServiceClient) error { + var err error + ctx, cancel := c.createContext(ctx) + defer cancel() + response, err = client.ImportWorkflowExecution(ctx, request, opts...) + return err + } + if err := c.executeWithRedirect(ctx, shardID, op); err != nil { + return nil, err + } + return response, nil +} + func (c *clientImpl) IsActivityTaskValid( ctx context.Context, request *historyservice.IsActivityTaskValidRequest, diff --git a/client/history/metric_client_gen.go b/client/history/metric_client_gen.go index 7a3c2d80500..5b80da75092 100644 --- a/client/history/metric_client_gen.go +++ b/client/history/metric_client_gen.go @@ -271,6 +271,20 @@ func (c *metricClient) GetWorkflowExecutionRawHistoryV2( return c.client.GetWorkflowExecutionRawHistoryV2(ctx, request, opts...) } +func (c *metricClient) ImportWorkflowExecution( + ctx context.Context, + request *historyservice.ImportWorkflowExecutionRequest, + opts ...grpc.CallOption, +) (_ *historyservice.ImportWorkflowExecutionResponse, retError error) { + + metricsHandler, startTime := c.startMetricsRecording(ctx, "HistoryClientImportWorkflowExecution") + defer func() { + c.finishMetricsRecording(metricsHandler, startTime, retError) + }() + + return c.client.ImportWorkflowExecution(ctx, request, opts...) +} + func (c *metricClient) IsActivityTaskValid( ctx context.Context, request *historyservice.IsActivityTaskValidRequest, diff --git a/client/history/retryable_client_gen.go b/client/history/retryable_client_gen.go index bde755fecf6..f9befcb59a4 100644 --- a/client/history/retryable_client_gen.go +++ b/client/history/retryable_client_gen.go @@ -290,6 +290,21 @@ func (c *retryableClient) GetWorkflowExecutionRawHistoryV2( return resp, err } +func (c *retryableClient) ImportWorkflowExecution( + ctx context.Context, + request *historyservice.ImportWorkflowExecutionRequest, + opts ...grpc.CallOption, +) (*historyservice.ImportWorkflowExecutionResponse, error) { + var resp *historyservice.ImportWorkflowExecutionResponse + op := func(ctx context.Context) error { + var err error + resp, err = c.client.ImportWorkflowExecution(ctx, request, opts...) + return err + } + err := backoff.ThrottleRetryContext(ctx, op, c.policy, c.isRetryable) + return resp, err +} + func (c *retryableClient) IsActivityTaskValid( ctx context.Context, request *historyservice.IsActivityTaskValidRequest, diff --git a/common/persistence/versionhistory/version_history.go b/common/persistence/versionhistory/version_history.go index 3c2f4631159..8c3b5429fef 100644 --- a/common/persistence/versionhistory/version_history.go +++ b/common/persistence/versionhistory/version_history.go @@ -205,3 +205,16 @@ func GetVersionHistoryEventVersion(v *historyspb.VersionHistory, eventID int64) func IsEmptyVersionHistory(v *historyspb.VersionHistory) bool { return len(v.Items) == 0 } + +// CompareVersionHistory compares 2 version history items +func CompareVersionHistory(v1 *historyspb.VersionHistory, v2 *historyspb.VersionHistory) (int, error) { + lastItem1, err := GetLastVersionHistoryItem(v1) + if err != nil { + return 0, err + } + lastItem2, err := GetLastVersionHistoryItem(v2) + if err != nil { + return 0, err + } + return CompareVersionHistoryItem(lastItem1, lastItem2), nil +} diff --git a/common/persistence/versionhistory/version_history_item.go b/common/persistence/versionhistory/version_history_item.go index c93b9344c02..49a9299d74f 100644 --- a/common/persistence/versionhistory/version_history_item.go +++ b/common/persistence/versionhistory/version_history_item.go @@ -48,3 +48,35 @@ func CopyVersionHistoryItem(item *historyspb.VersionHistoryItem) *historyspb.Ver func IsEqualVersionHistoryItem(item1 *historyspb.VersionHistoryItem, item2 *historyspb.VersionHistoryItem) bool { return item1.EventId == item2.EventId && item1.Version == item2.Version } + +// IsEqualVersionHistoryItems checks whether version history items are equal +func IsEqualVersionHistoryItems(items1 []*historyspb.VersionHistoryItem, items2 []*historyspb.VersionHistoryItem) bool { + if len(items1) != len(items2) { + return false + } + for i := 0; i < len(items1); i++ { + if !IsEqualVersionHistoryItem(items1[i], items2[i]) { + return false + } + } + return true +} + +// CompareVersionHistoryItem compares 2 version history items +func CompareVersionHistoryItem(item1 *historyspb.VersionHistoryItem, item2 *historyspb.VersionHistoryItem) int { + if item1.Version < item2.Version { + return -1 + } + if item1.Version > item2.Version { + return 1 + } + + // item1.Version == item2.Version + if item1.EventId < item2.EventId { + return -1 + } + if item1.EventId > item2.EventId { + return 1 + } + return 0 +} diff --git a/proto/internal/temporal/server/api/adminservice/v1/request_response.proto b/proto/internal/temporal/server/api/adminservice/v1/request_response.proto index 5e2240a26f6..febe7d2bcfb 100644 --- a/proto/internal/temporal/server/api/adminservice/v1/request_response.proto +++ b/proto/internal/temporal/server/api/adminservice/v1/request_response.proto @@ -56,6 +56,18 @@ message RebuildMutableStateRequest { message RebuildMutableStateResponse { } +message ImportWorkflowExecutionRequest { + string namespace = 1; + temporal.api.common.v1.WorkflowExecution execution = 2; + repeated temporal.api.common.v1.DataBlob history_batches = 3; + temporal.server.api.history.v1.VersionHistory version_history = 4; + bytes token = 5; +} + +message ImportWorkflowExecutionResponse { + bytes token = 1; +} + message DescribeMutableStateRequest { string namespace = 1; temporal.api.common.v1.WorkflowExecution execution = 2; diff --git a/proto/internal/temporal/server/api/adminservice/v1/service.proto b/proto/internal/temporal/server/api/adminservice/v1/service.proto index 7311436f996..acfa739cef0 100644 --- a/proto/internal/temporal/server/api/adminservice/v1/service.proto +++ b/proto/internal/temporal/server/api/adminservice/v1/service.proto @@ -32,6 +32,11 @@ service AdminService { rpc RebuildMutableState (RebuildMutableStateRequest) returns (RebuildMutableStateResponse) { } + // ImportWorkflowExecution attempts to import workflow according to persisted history events. + // NOTE: this is experimental API + rpc ImportWorkflowExecution (ImportWorkflowExecutionRequest) returns (ImportWorkflowExecutionResponse) { + } + // DescribeWorkflowExecution returns information about the internal states of workflow execution. rpc DescribeMutableState (DescribeMutableStateRequest) returns (DescribeMutableStateResponse) { } diff --git a/proto/internal/temporal/server/api/historyservice/v1/request_response.proto b/proto/internal/temporal/server/api/historyservice/v1/request_response.proto index e812aa770c6..d0f7b9a9d94 100644 --- a/proto/internal/temporal/server/api/historyservice/v1/request_response.proto +++ b/proto/internal/temporal/server/api/historyservice/v1/request_response.proto @@ -651,6 +651,18 @@ message RebuildMutableStateRequest { message RebuildMutableStateResponse { } +message ImportWorkflowExecutionRequest { + string namespace_id = 1; + temporal.api.common.v1.WorkflowExecution execution = 2; + repeated temporal.api.common.v1.DataBlob history_batches = 3; + temporal.server.api.history.v1.VersionHistory version_history = 4; + bytes token = 5; +} + +message ImportWorkflowExecutionResponse { + bytes token = 1; +} + message DeleteWorkflowVisibilityRecordRequest { string namespace_id = 1; temporal.api.common.v1.WorkflowExecution execution = 2; diff --git a/proto/internal/temporal/server/api/historyservice/v1/service.proto b/proto/internal/temporal/server/api/historyservice/v1/service.proto index 19faf549413..fdf31fa5b11 100644 --- a/proto/internal/temporal/server/api/historyservice/v1/service.proto +++ b/proto/internal/temporal/server/api/historyservice/v1/service.proto @@ -278,9 +278,15 @@ service HistoryService { } // RebuildMutableState attempts to rebuild mutable state according to persisted history events. + // NOTE: this is experimental API rpc RebuildMutableState (RebuildMutableStateRequest) returns (RebuildMutableStateResponse) { } + // ImportWorkflowExecution attempts to import workflow according to persisted history events. + // NOTE: this is experimental API + rpc ImportWorkflowExecution (ImportWorkflowExecutionRequest) returns (ImportWorkflowExecutionResponse) { + } + // DeleteWorkflowVisibilityRecord force delete a workflow's visibility record. // This is used by admin delete workflow execution API to delete visibility record as frontend // visibility manager doesn't support write operations diff --git a/service/frontend/admin_handler.go b/service/frontend/admin_handler.go index 17c326f29a2..46f167e5a0b 100644 --- a/service/frontend/admin_handler.go +++ b/service/frontend/admin_handler.go @@ -632,7 +632,10 @@ func (adh *AdminHandler) getSearchAttributesSQL( }, nil } -func (adh *AdminHandler) RebuildMutableState(ctx context.Context, request *adminservice.RebuildMutableStateRequest) (_ *adminservice.RebuildMutableStateResponse, retError error) { +func (adh *AdminHandler) RebuildMutableState( + ctx context.Context, + request *adminservice.RebuildMutableStateRequest, +) (_ *adminservice.RebuildMutableStateResponse, retError error) { defer log.CapturePanic(adh.logger, &retError) if request == nil { @@ -657,6 +660,40 @@ func (adh *AdminHandler) RebuildMutableState(ctx context.Context, request *admin return &adminservice.RebuildMutableStateResponse{}, nil } +func (adh *AdminHandler) ImportWorkflowExecution( + ctx context.Context, + request *adminservice.ImportWorkflowExecutionRequest, +) (_ *adminservice.ImportWorkflowExecutionResponse, retError error) { + defer log.CapturePanic(adh.logger, &retError) + + if request == nil { + return nil, errRequestNotSet + } + + if err := validateExecution(request.Execution); err != nil { + return nil, err + } + + namespaceID, err := adh.namespaceRegistry.GetNamespaceID(namespace.Name(request.GetNamespace())) + if err != nil { + return nil, err + } + + resp, err := adh.historyClient.ImportWorkflowExecution(ctx, &historyservice.ImportWorkflowExecutionRequest{ + NamespaceId: namespaceID.String(), + Execution: request.Execution, + HistoryBatches: request.HistoryBatches, + VersionHistory: request.VersionHistory, + Token: request.Token, + }) + if err != nil { + return nil, err + } + return &adminservice.ImportWorkflowExecutionResponse{ + Token: resp.Token, + }, nil +} + // DescribeMutableState returns information about the specified workflow execution. func (adh *AdminHandler) DescribeMutableState(ctx context.Context, request *adminservice.DescribeMutableStateRequest) (_ *adminservice.DescribeMutableStateResponse, retError error) { defer log.CapturePanic(adh.logger, &retError) diff --git a/service/history/configs/quotas.go b/service/history/configs/quotas.go index a26be599089..edf28af507b 100644 --- a/service/history/configs/quotas.go +++ b/service/history/configs/quotas.go @@ -47,6 +47,7 @@ var ( "GetDLQReplicationMessages": 1, "GetMutableState": 1, "GetReplicationMessages": 1, + "ImportWorkflowExecution": 1, "IsActivityTaskValid": 1, "IsWorkflowTaskValid": 1, "MergeDLQMessages": 1, diff --git a/service/history/handler.go b/service/history/handler.go index 2b47733ae06..b031c152e2a 100644 --- a/service/history/handler.go +++ b/service/history/handler.go @@ -710,6 +710,45 @@ func (h *Handler) RebuildMutableState(ctx context.Context, request *historyservi return &historyservice.RebuildMutableStateResponse{}, nil } +// ImportWorkflowExecution attempts to workflow execution according to persisted history events +func (h *Handler) ImportWorkflowExecution(ctx context.Context, request *historyservice.ImportWorkflowExecutionRequest) (_ *historyservice.ImportWorkflowExecutionResponse, retError error) { + defer metrics.CapturePanic(h.logger, h.metricsHandler, &retError) + h.startWG.Wait() + + if h.isStopped() { + return nil, errShuttingDown + } + + namespaceID := namespace.ID(request.GetNamespaceId()) + if namespaceID == "" { + return nil, h.convertError(errNamespaceNotSet) + } + + workflowExecution := request.Execution + workflowID := workflowExecution.GetWorkflowId() + if workflowID == "" { + return nil, h.convertError(errWorkflowIDNotSet) + } + runID := workflowExecution.GetRunId() + if runID == "" { + return nil, h.convertError(errRunIDNotValid) + } + shardContext, err := h.controller.GetShardByNamespaceWorkflow(namespaceID, workflowID) + if err != nil { + return nil, h.convertError(err) + } + engine, err := shardContext.GetEngine(ctx) + if err != nil { + return nil, h.convertError(err) + } + + resp, err := engine.ImportWorkflowExecution(ctx, request) + if err != nil { + return nil, h.convertError(err) + } + return resp, nil +} + // DescribeMutableState - returns the internal analysis of workflow execution state func (h *Handler) DescribeMutableState(ctx context.Context, request *historyservice.DescribeMutableStateRequest) (_ *historyservice.DescribeMutableStateResponse, retError error) { defer metrics.CapturePanic(h.logger, h.metricsHandler, &retError) diff --git a/service/history/history_engine.go b/service/history/history_engine.go index 7158ade2fb6..1f90afbd71b 100644 --- a/service/history/history_engine.go +++ b/service/history/history_engine.go @@ -114,6 +114,7 @@ type ( queueProcessors map[tasks.Category]queues.Queue replicationAckMgr replication.AckManager nDCHistoryReplicator ndc.HistoryReplicator + nDCHistoryBackfiller ndc.HistoryImporter nDCActivityStateReplicator ndc.ActivityStateReplicator nDCWorkflowStateReplicator ndc.WorkflowStateReplicator replicationProcessorMgr replication.TaskProcessor @@ -219,6 +220,11 @@ func NewEngineWithShardContext( eventSerializer, logger, ) + historyEngImpl.nDCHistoryBackfiller = ndc.NewHistoryImporter( + shard, + workflowCache, + logger, + ) historyEngImpl.nDCActivityStateReplicator = ndc.NewActivityStateReplicator( shard, workflowCache, @@ -643,6 +649,33 @@ func (e *historyEngineImpl) ReplicateWorkflowState( return e.nDCWorkflowStateReplicator.SyncWorkflowState(ctx, request) } +func (e *historyEngineImpl) ImportWorkflowExecution( + ctx context.Context, + request *historyservice.ImportWorkflowExecutionRequest, +) (*historyservice.ImportWorkflowExecutionResponse, error) { + historyEvents, err := ndc.DeserializeBlobs(e.eventSerializer, request.HistoryBatches) + if err != nil { + return nil, err + } + token, err := e.nDCHistoryBackfiller.ImportWorkflow( + ctx, + definition.NewWorkflowKey( + request.NamespaceId, + request.Execution.GetWorkflowId(), + request.Execution.GetRunId(), + ), + request.VersionHistory.Items, + historyEvents, + request.Token, + ) + if err != nil { + return nil, err + } + return &historyservice.ImportWorkflowExecutionResponse{ + Token: token, + }, nil +} + func (e *historyEngineImpl) SyncShardStatus( ctx context.Context, request *historyservice.SyncShardStatusRequest, diff --git a/service/history/ndc/history_importer.go b/service/history/ndc/history_importer.go new file mode 100644 index 00000000000..f835ea6c916 --- /dev/null +++ b/service/history/ndc/history_importer.go @@ -0,0 +1,459 @@ +// The MIT License +// +// Copyright (c) 2020 Temporal Technologies Inc. All rights reserved. +// +// Copyright (c) 2020 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package ndc + +import ( + "context" + + enumspb "go.temporal.io/api/enums/v1" + historypb "go.temporal.io/api/history/v1" + "go.temporal.io/api/serviceerror" + + historyspb "go.temporal.io/server/api/history/v1" + persistencespb "go.temporal.io/server/api/persistence/v1" + "go.temporal.io/server/common/convert" + "go.temporal.io/server/common/definition" + "go.temporal.io/server/common/log" + "go.temporal.io/server/common/log/tag" + "go.temporal.io/server/common/namespace" + "go.temporal.io/server/common/persistence/versionhistory" + "go.temporal.io/server/service/history/shard" + "go.temporal.io/server/service/history/workflow" + wcache "go.temporal.io/server/service/history/workflow/cache" +) + +type ( + HistoryImporter interface { + ImportWorkflow( + ctx context.Context, + workflowKey definition.WorkflowKey, + versionHistoryItems []*historyspb.VersionHistoryItem, + events [][]*historypb.HistoryEvent, + token []byte, + ) ([]byte, error) + } + + HistoryImporterImpl struct { + shardContext shard.Context + namespaceCache namespace.Registry + workflowCache wcache.Cache + taskRefresher workflow.TaskRefresher + transactionMgr transactionMgr + logger log.Logger + + mutableStateInitializer *MutableStateInitializerImpl + mutableStateMapper *MutableStateMapperImpl + } +) + +func NewHistoryImporter( + shardContext shard.Context, + workflowCache wcache.Cache, + logger log.Logger, +) *HistoryImporterImpl { + backfiller := &HistoryImporterImpl{ + shardContext: shardContext, + namespaceCache: shardContext.GetNamespaceRegistry(), + workflowCache: workflowCache, + taskRefresher: workflow.NewTaskRefresher( + shardContext, + shardContext.GetConfig(), + shardContext.GetNamespaceRegistry(), + logger, + ), + transactionMgr: newTransactionMgr(shardContext, workflowCache, nil, logger), + logger: logger, + + mutableStateInitializer: NewMutableStateInitializer( + shardContext, + workflowCache, + logger, + ), + mutableStateMapper: NewMutableStateMapping( + shardContext, + func( + wfContext workflow.Context, + mutableState workflow.MutableState, + logger log.Logger, + ) BufferEventFlusher { + return NewBufferEventFlusher(shardContext, wfContext, mutableState, logger) + }, + func( + wfContext workflow.Context, + mutableState workflow.MutableState, + logger log.Logger, + ) BranchMgr { + return NewBranchMgr(shardContext, wfContext, mutableState, logger) + }, + func( + wfContext workflow.Context, + mutableState workflow.MutableState, + logger log.Logger, + ) ConflictResolver { + return NewConflictResolver(shardContext, wfContext, mutableState, logger) + }, + func( + state workflow.MutableState, + logger log.Logger, + ) workflow.MutableStateRebuilder { + return workflow.NewMutableStateRebuilder( + shardContext, + logger, + state, + ) + }, + ), + } + return backfiller +} + +func (r *HistoryImporterImpl) ImportWorkflow( + ctx context.Context, + workflowKey definition.WorkflowKey, + versionHistoryItems []*historyspb.VersionHistoryItem, + eventsSlice [][]*historypb.HistoryEvent, + token []byte, +) (_ []byte, retError error) { + if len(eventsSlice) == 0 && len(token) == 0 { + return nil, serviceerror.NewInvalidArgument("ImportWorkflowExecution cannot import empty history events") + } + + ndcWorkflow, mutableStateSpec, err := r.mutableStateInitializer.Initialize(ctx, workflowKey, token) + if err != nil { + return nil, err + } + defer func() { + if rec := recover(); rec != nil { + ndcWorkflow.GetReleaseFn()(errPanic) + panic(rec) + } else { + ndcWorkflow.GetReleaseFn()(retError) + } + }() + + if len(eventsSlice) != 0 { + return r.applyEvents( + ctx, + ndcWorkflow, + mutableStateSpec, + versionHistoryItems, + eventsSlice, + len(token) == 0, + ) + } + + if err := r.commit( + ctx, + ndcWorkflow, + mutableStateSpec, + ); err != nil { + return nil, err + } + return nil, nil +} + +func (r *HistoryImporterImpl) applyEvents( + ctx context.Context, + ndcWorkflow Workflow, + mutableStateSpec MutableStateInitializationSpec, + versionHistoryItems []*historyspb.VersionHistoryItem, + eventsSlice [][]*historypb.HistoryEvent, + createNewBranch bool, +) (_ []byte, retError error) { + + wfContext := ndcWorkflow.GetContext() + mutableState := ndcWorkflow.GetMutableState() + task, err := newReplicationTaskFromBatch( + r.shardContext.GetClusterMetadata(), + r.logger, + wfContext.GetWorkflowKey(), + nil, + versionHistoryItems, + eventsSlice, + nil, + ) + if err != nil { + return nil, err + } + + if mutableStateSpec.IsBrandNew { + if task.getFirstEvent().GetEventType() != enumspb.EVENT_TYPE_WORKFLOW_EXECUTION_STARTED { + err := serviceerror.NewInternal("mutable state is brand new, but events are not imported from beginning") + task.getLogger().Error("HistoryImporter::applyEvents encountered mutable state vs events mismatch", tag.Error(err)) + return nil, err + } + return r.applyStartEventsAndSerialize( + ctx, + wfContext, + mutableState, + mutableStateSpec, + task, + ) + } + return r.applyNonStartEventsAndSerialize( + ctx, + wfContext, + mutableState, + mutableStateSpec, + task, + createNewBranch, + ) +} + +func (r *HistoryImporterImpl) applyStartEventsAndSerialize( + ctx context.Context, + wfContext workflow.Context, + mutableState workflow.MutableState, + mutableStateSpec MutableStateInitializationSpec, + task replicationTask, +) ([]byte, error) { + mutableState, newMutableState, err := r.mutableStateMapper.ApplyEvents( + ctx, + wfContext, + mutableState, + task, + ) + if err != nil { + return nil, err + } + if newMutableState != nil { + task.getLogger().Error( + "HistoryImporter::applyStartEventsAndSerialize encountered create workflow with continue as new case", + tag.Error(err), + ) + } + return r.persistHistoryAndSerializeMutableState(ctx, mutableState, mutableStateSpec) +} + +func (r *HistoryImporterImpl) applyNonStartEventsAndSerialize( + ctx context.Context, + wfContext workflow.Context, + mutableState workflow.MutableState, + mutableStateSpec MutableStateInitializationSpec, + task replicationTask, + createNewBranch bool, +) ([]byte, error) { + prepareBranchFn := r.mutableStateMapper.GetOrCreateHistoryBranch + if createNewBranch { + prepareBranchFn = r.mutableStateMapper.CreateHistoryBranch + } + mutableState, prepareHistoryBranchOut, err := prepareBranchFn(ctx, wfContext, mutableState, task) + if err != nil { + return nil, err + } else if !prepareHistoryBranchOut.DoContinue { + return r.persistHistoryAndSerializeMutableState(ctx, mutableState, mutableStateSpec) + } else if createNewBranch && prepareHistoryBranchOut.BranchIndex == 0 { + // sanity check + return nil, serviceerror.NewInternal("HistoryImporter unable to correctly create new branch") + } + + mutableState, _, err = r.mutableStateMapper.GetOrRebuildMutableState( + ctx, + wfContext, + mutableState, + GetOrRebuildMutableStateIn{replicationTask: task, BranchIndex: prepareHistoryBranchOut.BranchIndex}, + ) + if err != nil { + return nil, err + } + mutableState, newMutableState, err := r.mutableStateMapper.ApplyEvents( + ctx, + wfContext, + mutableState, + task, + ) + if err != nil { + return nil, err + } + if newMutableState != nil { + task.getLogger().Error( + "HistoryImporter::applyNonStartEventsAndSerialize encountered create workflow with continue as new case", + tag.Error(err), + ) + } + return r.persistHistoryAndSerializeMutableState(ctx, mutableState, mutableStateSpec) +} + +func (r *HistoryImporterImpl) persistHistoryAndSerializeMutableState( + ctx context.Context, + mutableState workflow.MutableState, + mutableStateSpec MutableStateInitializationSpec, +) ([]byte, error) { + targetWorkflowSnapshot, targetWorkflowEventsSeq, err := mutableState.CloseTransactionAsSnapshot( + workflow.TransactionPolicyPassive, + ) + if err != nil { + return nil, err + } + + sizeSiff, err := workflow.PersistWorkflowEvents(ctx, r.shardContext, targetWorkflowEventsSeq...) + if err != nil { + return nil, err + } + mutableState.AddHistorySize(sizeSiff) + + mutableStateRow := &persistencespb.WorkflowMutableState{ + ActivityInfos: targetWorkflowSnapshot.ActivityInfos, + TimerInfos: targetWorkflowSnapshot.TimerInfos, + ChildExecutionInfos: targetWorkflowSnapshot.ChildExecutionInfos, + RequestCancelInfos: targetWorkflowSnapshot.RequestCancelInfos, + SignalInfos: targetWorkflowSnapshot.SignalInfos, + SignalRequestedIds: convert.StringSetToSlice(targetWorkflowSnapshot.SignalRequestedIDs), + ExecutionInfo: targetWorkflowSnapshot.ExecutionInfo, + ExecutionState: targetWorkflowSnapshot.ExecutionState, + NextEventId: targetWorkflowSnapshot.NextEventID, + BufferedEvents: nil, + Checksum: targetWorkflowSnapshot.Checksum, + } + return r.mutableStateInitializer.serializeBackfillToken( + mutableStateRow, + mutableStateSpec.DBRecordVersion, + mutableStateSpec.DBHistorySize, + mutableStateSpec.ExistsInDB, + ) +} + +func (r *HistoryImporterImpl) commit( + ctx context.Context, + memNDCWorkflow Workflow, + mutableStateSpec MutableStateInitializationSpec, +) (retError error) { + if mutableStateSpec.IsBrandNew { + return serviceerror.NewInvalidArgument("HistoryImporter::commit cannot create workflow without events") + } + + if !mutableStateSpec.ExistsInDB { + // refresh tasks to be generated + if err := r.taskRefresher.RefreshTasks( + ctx, + memNDCWorkflow.GetMutableState(), + ); err != nil { + return err + } + memMutableState := memNDCWorkflow.GetMutableState() + nextEventID, _ := memMutableState.GetUpdateCondition() + memMutableState.SetUpdateCondition(nextEventID, mutableStateSpec.DBRecordVersion) + if err := r.transactionMgr.createWorkflow( + ctx, + memNDCWorkflow, + ); err != nil { + r.logger.Error("HistoryImporter::commit encountered error", tag.Error(err)) + return err + } + return nil + } + + workflowKey := memNDCWorkflow.GetContext().GetWorkflowKey() + dbNDCWorkflow, err := r.transactionMgr.loadWorkflow( + ctx, + namespace.ID(workflowKey.NamespaceID), + workflowKey.WorkflowID, + workflowKey.RunID, + ) + if err != nil { + r.logger.Error("HistoryImporter::commit unable to find workflow in DB", tag.Error(err)) + return err + } + defer func() { + if rec := recover(); rec != nil { + dbNDCWorkflow.GetReleaseFn()(errPanic) + panic(rec) + } else { + dbNDCWorkflow.GetReleaseFn()(retError) + } + }() + + dbCurrentVersionHistory, err := versionhistory.GetCurrentVersionHistory( + dbNDCWorkflow.GetMutableState().GetExecutionInfo().GetVersionHistories(), + ) + if err != nil { + r.logger.Error("HistoryImporter::commit unable to find current version history from DB", tag.Error(err)) + return err + } + memCurrentVersionHistory, err := versionhistory.GetCurrentVersionHistory( + memNDCWorkflow.GetMutableState().GetExecutionInfo().GetVersionHistories(), + ) + if err != nil { + r.logger.Error("HistoryImporter::commit unable to find current version history from DB", tag.Error(err)) + return err + } + cmpResult, err := versionhistory.CompareVersionHistory(memCurrentVersionHistory, dbCurrentVersionHistory) + if err != nil { + r.logger.Error("HistoryImporter::commit unable to compare current version history between mem vs DB", tag.Error(err)) + return err + } + if cmpResult == 0 { + // version history from mem mutable state == db mutable state, dedup + r.logger.Info("HistoryImporter::commit skip, current version history between mem == DB") + return nil + } + + if cmpResult < 0 { + // imported events does not belong to current branch, update DB mutable state with new version history + updated, _, err := versionhistory.AddVersionHistory( + dbNDCWorkflow.GetMutableState().GetExecutionInfo().GetVersionHistories(), + memCurrentVersionHistory, + ) + if err != nil { + r.logger.Error("HistoryImporter::commit unable to update version history from DB", tag.Error(err)) + return err + } + if updated { + err = serviceerror.NewInternal("current version history should not be updated") + r.logger.Error("HistoryImporter::commit unable to update version history from DB", tag.Error(err)) + return err + } + sizeDiff := memNDCWorkflow.GetMutableState().GetHistorySize() - mutableStateSpec.DBHistorySize + dbNDCWorkflow.GetMutableState().AddHistorySize(sizeDiff) + if err := dbNDCWorkflow.GetContext().SetWorkflowExecution(ctx, r.shardContext); err != nil { + r.logger.Error("HistoryImporter::commit encountered error", tag.Error(err)) + } + return nil + } + + // cmpResult > 0 + dbNDCWorkflow.GetContext().Clear() + // imported events is the new current branch, update write to DB + // refresh tasks to be generated + if err := r.taskRefresher.RefreshTasks( + ctx, + memNDCWorkflow.GetMutableState(), + ); err != nil { + return err + } + memMutableState := memNDCWorkflow.GetMutableState() + nextEventID, _ := memMutableState.GetUpdateCondition() + memMutableState.SetUpdateCondition(nextEventID, mutableStateSpec.DBRecordVersion) + if err := r.transactionMgr.updateWorkflow( + ctx, + true, + memNDCWorkflow, + nil, + ); err != nil { + r.logger.Error("HistoryImporter::commit encountered error", tag.Error(err)) + return err + } + return nil +} diff --git a/service/history/ndc/history_replicator.go b/service/history/ndc/history_replicator.go index 5601ef24acb..64e9fb445ff 100644 --- a/service/history/ndc/history_replicator.go +++ b/service/history/ndc/history_replicator.go @@ -63,12 +63,6 @@ type ( logger log.Logger, ) workflow.MutableStateRebuilder - mutableStateProvider func( - namespaceEntry *namespace.Namespace, - startTime time.Time, - logger log.Logger, - ) workflow.MutableState - bufferEventFlusherProvider func( wfContext workflow.Context, mutableState workflow.MutableState, @@ -308,7 +302,7 @@ func (r *HistoryReplicatorImpl) doApplyEvents( ctx, wfContext, mutableState, - GetOrRebuildCurrentMutableStateIn{replicationTask: task, BranchIndex: prepareHistoryBranchOut.BranchIndex}, + GetOrRebuildMutableStateIn{replicationTask: task, BranchIndex: prepareHistoryBranchOut.BranchIndex}, ) if err != nil { return err diff --git a/service/history/ndc/mutable_state_initializer.go b/service/history/ndc/mutable_state_initializer.go new file mode 100644 index 00000000000..fbc10945b74 --- /dev/null +++ b/service/history/ndc/mutable_state_initializer.go @@ -0,0 +1,272 @@ +// The MIT License +// +// Copyright (c) 2020 Temporal Technologies Inc. All rights reserved. +// +// Copyright (c) 2020 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package ndc + +import ( + "context" + "encoding/json" + "time" + + "github.com/gogo/protobuf/proto" + commonpb "go.temporal.io/api/common/v1" + historypb "go.temporal.io/api/history/v1" + "go.temporal.io/api/serviceerror" + + persistencespb "go.temporal.io/server/api/persistence/v1" + "go.temporal.io/server/common/definition" + "go.temporal.io/server/common/log" + "go.temporal.io/server/common/log/tag" + "go.temporal.io/server/common/namespace" + "go.temporal.io/server/service/history/shard" + "go.temporal.io/server/service/history/workflow" + wcache "go.temporal.io/server/service/history/workflow/cache" +) + +type ( + MutableStateToken struct { + ExistsInDB bool + DBRecordVersion int64 + DBHistorySize int64 + MutableStateRow []byte + } + + MutableStateInitializationSpec struct { + ExistsInDB bool + IsBrandNew bool + DBRecordVersion int64 + DBHistorySize int64 + } + + MutableStateInitializer interface { + Initialize( + ctx context.Context, + workflowKey definition.WorkflowKey, + token []byte, + ) (Workflow, bool, error) + } + + MutableStateInitializerImpl struct { + shardContext shard.Context + namespaceCache namespace.Registry + workflowCache wcache.Cache + logger log.Logger + } +) + +func NewMutableStateInitializer( + shardContext shard.Context, + workflowCache wcache.Cache, + logger log.Logger, +) *MutableStateInitializerImpl { + return &MutableStateInitializerImpl{ + shardContext: shardContext, + namespaceCache: shardContext.GetNamespaceRegistry(), + workflowCache: workflowCache, + logger: logger, + } +} + +func (r *MutableStateInitializerImpl) Initialize( + ctx context.Context, + workflowKey definition.WorkflowKey, + token []byte, +) (Workflow, MutableStateInitializationSpec, error) { + namespaceEntry, err := r.namespaceCache.GetNamespaceByID(namespace.ID(workflowKey.NamespaceID)) + if err != nil { + return nil, MutableStateInitializationSpec{}, err + } + if len(token) == 0 { + return r.InitializeFromDB(ctx, namespaceEntry, workflowKey) + } + return r.InitializeFromToken(ctx, namespaceEntry, workflowKey, token) +} + +func (r *MutableStateInitializerImpl) InitializeFromDB( + ctx context.Context, + namespaceEntry *namespace.Namespace, + workflowKey definition.WorkflowKey, +) (Workflow, MutableStateInitializationSpec, error) { + wfContext, releaseFn, err := r.workflowCache.GetOrCreateWorkflowExecution( + ctx, + r.shardContext, + namespace.ID(workflowKey.NamespaceID), + commonpb.WorkflowExecution{ + WorkflowId: workflowKey.WorkflowID, + RunId: workflowKey.RunID, + }, + workflow.LockPriorityHigh, + ) + if err != nil { + return nil, MutableStateInitializationSpec{}, err + } + + mutableState, err := wfContext.LoadMutableState(ctx, r.shardContext) + switch err.(type) { + case nil: + mutableState, err = r.flushBufferEvents(ctx, wfContext, mutableState) + if err != nil { + releaseFn(err) + return nil, MutableStateInitializationSpec{}, err + } + _, dbRecordVersion := mutableState.GetUpdateCondition() + dbHistorySize := mutableState.GetHistorySize() + return NewWorkflow( + r.shardContext.GetClusterMetadata(), + wfContext, + mutableState, + releaseFn, + ), MutableStateInitializationSpec{ + ExistsInDB: true, + IsBrandNew: false, + DBRecordVersion: dbRecordVersion, + DBHistorySize: dbHistorySize, + }, nil + case *serviceerror.NotFound: + return NewWorkflow( + r.shardContext.GetClusterMetadata(), + wfContext, + workflow.NewMutableState( + r.shardContext, + r.shardContext.GetEventsCache(), + r.logger, + namespaceEntry, + time.Now().UTC(), + ), + releaseFn, + ), MutableStateInitializationSpec{ + ExistsInDB: false, + IsBrandNew: true, + DBRecordVersion: 1, + DBHistorySize: 0, + }, nil + default: + releaseFn(err) + return nil, MutableStateInitializationSpec{}, err + } +} + +func (r *MutableStateInitializerImpl) InitializeFromToken( + _ context.Context, + namespaceEntry *namespace.Namespace, + workflowKey definition.WorkflowKey, + token []byte, +) (Workflow, MutableStateInitializationSpec, error) { + wfContext := workflow.NewContext( + r.shardContext.GetConfig(), + workflowKey, + r.logger, + r.shardContext.GetThrottledLogger(), + r.shardContext.GetMetricsHandler(), + ) + mutableStateRow, dbRecordVersion, dbHistorySize, existsInDB, err := r.deserializeBackfillToken(token) + if err != nil { + return nil, MutableStateInitializationSpec{}, err + } + mutableState, err := workflow.NewMutableStateFromDB( + r.shardContext, + r.shardContext.GetEventsCache(), + r.logger, + namespaceEntry, + mutableStateRow, + dbRecordVersion, + ) + if err != nil { + return nil, MutableStateInitializationSpec{}, err + } + return NewWorkflow( + r.shardContext.GetClusterMetadata(), + wfContext, + mutableState, + wcache.NoopReleaseFn, + ), MutableStateInitializationSpec{ + ExistsInDB: existsInDB, + IsBrandNew: false, + DBRecordVersion: dbRecordVersion, + DBHistorySize: dbHistorySize, + }, nil +} + +func (r *MutableStateInitializerImpl) flushBufferEvents( + ctx context.Context, + wfContext workflow.Context, + mutableState workflow.MutableState, +) (workflow.MutableState, error) { + flusher := NewBufferEventFlusher(r.shardContext, wfContext, mutableState, r.logger) + _, mutableState, err := flusher.flush(ctx) + if err != nil { + r.logger.Error( + "MutableStateMapping::FlushBufferEvents unable to flush buffer events", + tag.Error(err), + ) + return nil, err + } + return mutableState, err +} + +func (r *MutableStateInitializerImpl) serializeBackfillToken( + mutableState *persistencespb.WorkflowMutableState, + dbRecordVersion int64, + dbHistorySize int64, + existsInDB bool, +) ([]byte, error) { + mutableStateRow, err := mutableState.Marshal() + if err != nil { + return nil, err + } + return json.Marshal(MutableStateToken{ + MutableStateRow: mutableStateRow, + DBRecordVersion: dbRecordVersion, + DBHistorySize: dbHistorySize, + ExistsInDB: existsInDB, + }) +} + +func (r *MutableStateInitializerImpl) deserializeBackfillToken( + token []byte, +) (_ *persistencespb.WorkflowMutableState, _ int64, _ int64, _ bool, _ error) { + mutableState := &persistencespb.WorkflowMutableState{ + ActivityInfos: make(map[int64]*persistencespb.ActivityInfo), + TimerInfos: make(map[string]*persistencespb.TimerInfo), + ChildExecutionInfos: make(map[int64]*persistencespb.ChildExecutionInfo), + RequestCancelInfos: make(map[int64]*persistencespb.RequestCancelInfo), + SignalInfos: make(map[int64]*persistencespb.SignalInfo), + SignalRequestedIds: make([]string, 0), + + ExecutionInfo: nil, + ExecutionState: nil, + NextEventId: 0, + BufferedEvents: make([]*historypb.HistoryEvent, 0), + Checksum: nil, + } + + historyBackfillToken := &MutableStateToken{} + if err := json.Unmarshal(token, historyBackfillToken); err != nil { + return nil, 0, 0, false, err + } + if err := proto.Unmarshal(historyBackfillToken.MutableStateRow, mutableState); err != nil { + return nil, 0, 0, false, err + } + return mutableState, historyBackfillToken.DBRecordVersion, historyBackfillToken.DBHistorySize, historyBackfillToken.ExistsInDB, nil +} diff --git a/service/history/ndc/mutable_state_mapper.go b/service/history/ndc/mutable_state_mapper.go index 5786110b2d9..547c1ecd2c7 100644 --- a/service/history/ndc/mutable_state_mapper.go +++ b/service/history/ndc/mutable_state_mapper.go @@ -56,7 +56,7 @@ type ( BranchIndex int32 } - GetOrRebuildCurrentMutableStateIn struct { + GetOrRebuildMutableStateIn struct { replicationTask BranchIndex int32 } @@ -64,7 +64,8 @@ type ( var _ MutableStateMapper[replicationTask, struct{}] = (*MutableStateMapperImpl)(nil).FlushBufferEvents var _ MutableStateMapper[replicationTask, PrepareHistoryBranchOut] = (*MutableStateMapperImpl)(nil).GetOrCreateHistoryBranch -var _ MutableStateMapper[GetOrRebuildCurrentMutableStateIn, bool] = (*MutableStateMapperImpl)(nil).GetOrRebuildCurrentMutableState +var _ MutableStateMapper[GetOrRebuildMutableStateIn, bool] = (*MutableStateMapperImpl)(nil).GetOrRebuildCurrentMutableState +var _ MutableStateMapper[GetOrRebuildMutableStateIn, bool] = (*MutableStateMapperImpl)(nil).GetOrRebuildMutableState var _ MutableStateMapper[replicationTask, workflow.MutableState] = (*MutableStateMapperImpl)(nil).ApplyEvents func NewMutableStateMapping( @@ -134,11 +135,44 @@ func (m *MutableStateMapperImpl) GetOrCreateHistoryBranch( } } +func (m *MutableStateMapperImpl) CreateHistoryBranch( + ctx context.Context, + wfContext workflow.Context, + mutableState workflow.MutableState, + task replicationTask, +) (workflow.MutableState, PrepareHistoryBranchOut, error) { + branchMgr := m.newBranchMgr(wfContext, mutableState, task.getLogger()) + incomingVersionHistory := task.getVersionHistory() + doContinue, versionHistoryIndex, err := branchMgr.Create( + ctx, + incomingVersionHistory, + task.getFirstEvent().GetEventId(), + task.getFirstEvent().GetVersion(), + ) + switch err.(type) { + case nil: + return mutableState, PrepareHistoryBranchOut{ + DoContinue: doContinue, + BranchIndex: versionHistoryIndex, + }, nil + case *serviceerrors.RetryReplication: + // replication message can arrive out of order + // do not log + return nil, PrepareHistoryBranchOut{}, err + default: + task.getLogger().Error( + "MutableStateMapping::GetOrCreateHistoryBranch unable to prepare version history", + tag.Error(err), + ) + return nil, PrepareHistoryBranchOut{}, err + } +} + func (m *MutableStateMapperImpl) GetOrRebuildCurrentMutableState( ctx context.Context, wfContext workflow.Context, mutableState workflow.MutableState, - task GetOrRebuildCurrentMutableStateIn, + task GetOrRebuildMutableStateIn, ) (workflow.MutableState, bool, error) { conflictResolver := m.newConflictResolver(wfContext, mutableState, task.getLogger()) incomingVersion := task.getVersion() @@ -156,6 +190,26 @@ func (m *MutableStateMapperImpl) GetOrRebuildCurrentMutableState( return mutableState, isRebuilt, err } +func (m *MutableStateMapperImpl) GetOrRebuildMutableState( + ctx context.Context, + wfContext workflow.Context, + mutableState workflow.MutableState, + task GetOrRebuildMutableStateIn, +) (workflow.MutableState, bool, error) { + conflictResolver := m.newConflictResolver(wfContext, mutableState, task.getLogger()) + mutableState, isRebuilt, err := conflictResolver.GetOrRebuildMutableState( + ctx, + task.BranchIndex, + ) + if err != nil { + task.getLogger().Error( + "MutableStateMapping::PrepareMutableState unable to prepare mutable state", + tag.Error(err), + ) + } + return mutableState, isRebuilt, err +} + func (m *MutableStateMapperImpl) ApplyEvents( ctx context.Context, wfContext workflow.Context, diff --git a/service/history/ndc/replication_task.go b/service/history/ndc/replication_task.go index f8d7bc45425..3e397011fdc 100644 --- a/service/history/ndc/replication_task.go +++ b/service/history/ndc/replication_task.go @@ -493,3 +493,24 @@ func deserializeBlob( return events, err } + +func DeserializeBlobs( + historySerializer serialization.Serializer, + blobs []*commonpb.DataBlob, +) ([][]*historypb.HistoryEvent, error) { + eventBatches := make([][]*historypb.HistoryEvent, 0, len(blobs)) + if blobs == nil { + return eventBatches, nil + } + for _, blob := range blobs { + events, err := historySerializer.DeserializeEvents(&commonpb.DataBlob{ + EncodingType: enumspb.ENCODING_TYPE_PROTO3, + Data: blob.Data, + }) + if err != nil { + return nil, err + } + eventBatches = append(eventBatches, events) + } + return eventBatches, nil +} diff --git a/service/history/ndc/transaction_manager.go b/service/history/ndc/transaction_manager.go index 984b8b39fe3..5309b0090cd 100644 --- a/service/history/ndc/transaction_manager.go +++ b/service/history/ndc/transaction_manager.go @@ -439,7 +439,6 @@ func (r *transactionMgrImpl) loadWorkflow( runID string, ) (Workflow, error) { - // we need to check the current workflow execution weContext, release, err := r.workflowCache.GetOrCreateWorkflowExecution( ctx, r.shardContext, diff --git a/service/history/replication/eager_namespace_refresher.go b/service/history/replication/eager_namespace_refresher.go index 622e12e40f4..142b5254a7b 100644 --- a/service/history/replication/eager_namespace_refresher.go +++ b/service/history/replication/eager_namespace_refresher.go @@ -30,6 +30,7 @@ import ( "sync" "go.temporal.io/api/serviceerror" + "go.temporal.io/server/api/adminservice/v1" enumsspb "go.temporal.io/server/api/enums/v1" replicationspb "go.temporal.io/server/api/replication/v1" @@ -143,7 +144,8 @@ func (e *eagerNamespaceRefresherImpl) UpdateNamespaceFailoverVersion(namespaceId func (e *eagerNamespaceRefresherImpl) SyncNamespaceFromSourceCluster( ctx context.Context, namespaceId namespace.ID, - sourceCluster string) (*namespace.Namespace, error) { + sourceCluster string, +) (*namespace.Namespace, error) { /* TODO: 1. Lock here is to prevent multiple creation happening at same time. Current implementation actually does not help in this case(i.e. after getting the lock, each thread will still fetch from remote and try to create the namespace). Once we have mechanism to immediate refresh the cache, we diff --git a/service/history/shard/engine.go b/service/history/shard/engine.go index f4be65f581c..383055dcdb8 100644 --- a/service/history/shard/engine.go +++ b/service/history/shard/engine.go @@ -32,6 +32,7 @@ import ( commonpb "go.temporal.io/api/common/v1" historypb "go.temporal.io/api/history/v1" + "go.temporal.io/server/api/historyservice/v1" replicationspb "go.temporal.io/server/api/replication/v1" "go.temporal.io/server/common/collection" @@ -82,6 +83,7 @@ type ( PurgeDLQMessages(ctx context.Context, messagesRequest *historyservice.PurgeDLQMessagesRequest) (*historyservice.PurgeDLQMessagesResponse, error) MergeDLQMessages(ctx context.Context, messagesRequest *historyservice.MergeDLQMessagesRequest) (*historyservice.MergeDLQMessagesResponse, error) RebuildMutableState(ctx context.Context, namespaceUUID namespace.ID, execution commonpb.WorkflowExecution) error + ImportWorkflowExecution(ctx context.Context, request *historyservice.ImportWorkflowExecutionRequest) (*historyservice.ImportWorkflowExecutionResponse, error) RefreshWorkflowTasks(ctx context.Context, namespaceUUID namespace.ID, execution commonpb.WorkflowExecution) error GenerateLastHistoryReplicationTasks(ctx context.Context, request *historyservice.GenerateLastHistoryReplicationTasksRequest) (*historyservice.GenerateLastHistoryReplicationTasksResponse, error) GetReplicationStatus(ctx context.Context, request *historyservice.GetReplicationStatusRequest) (*historyservice.ShardReplicationStatus, error) diff --git a/service/history/shard/engine_mock.go b/service/history/shard/engine_mock.go index 000d438968b..e96f93a808a 100644 --- a/service/history/shard/engine_mock.go +++ b/service/history/shard/engine_mock.go @@ -289,6 +289,21 @@ func (mr *MockEngineMockRecorder) GetWorkflowExecutionRawHistoryV2(ctx, request return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkflowExecutionRawHistoryV2", reflect.TypeOf((*MockEngine)(nil).GetWorkflowExecutionRawHistoryV2), ctx, request) } +// ImportWorkflowExecution mocks base method. +func (m *MockEngine) ImportWorkflowExecution(ctx context.Context, request *historyservice.ImportWorkflowExecutionRequest) (*historyservice.ImportWorkflowExecutionResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ImportWorkflowExecution", ctx, request) + ret0, _ := ret[0].(*historyservice.ImportWorkflowExecutionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ImportWorkflowExecution indicates an expected call of ImportWorkflowExecution. +func (mr *MockEngineMockRecorder) ImportWorkflowExecution(ctx, request interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImportWorkflowExecution", reflect.TypeOf((*MockEngine)(nil).ImportWorkflowExecution), ctx, request) +} + // IsActivityTaskValid mocks base method. func (m *MockEngine) IsActivityTaskValid(ctx context.Context, request *historyservice.IsActivityTaskValidRequest) (*historyservice.IsActivityTaskValidResponse, error) { m.ctrl.T.Helper() diff --git a/service/history/workflow/cache/cache.go b/service/history/workflow/cache/cache.go index 0d83db68199..ee6f4d816f0 100644 --- a/service/history/workflow/cache/cache.go +++ b/service/history/workflow/cache/cache.go @@ -228,11 +228,12 @@ func (c *CacheImpl) getOrCreateWorkflowExecutionInternal( return workflowCtx, releaseFunc, nil } -func (c *CacheImpl) lockWorkflowExecution(ctx context.Context, +func (c *CacheImpl) lockWorkflowExecution( + ctx context.Context, workflowCtx workflow.Context, cacheKey Key, - lockPriority workflow.LockPriority) error { - + lockPriority workflow.LockPriority, +) error { // skip if there is no deadline if deadline, ok := ctx.Deadline(); ok { var cancel context.CancelFunc diff --git a/tests/ndc/ndc_integration_test.go b/tests/ndc/ndc_integration_test.go index f17718b0a08..d620c9b5be5 100644 --- a/tests/ndc/ndc_integration_test.go +++ b/tests/ndc/ndc_integration_test.go @@ -27,12 +27,18 @@ package ndc import ( "context" "flag" + "fmt" + "math/rand" "os" "sync/atomic" "testing" "time" + "go.temporal.io/api/serviceerror" + "go.temporal.io/server/api/persistence/v1" + "go.temporal.io/server/client/history" + "go.temporal.io/server/common/headers" "go.temporal.io/server/common/namespace" "go.temporal.io/server/common/persistence/serialization" @@ -78,7 +84,7 @@ type ( suite.Suite controller *gomock.Controller - active *tests.TestCluster + cluster *tests.TestCluster generator test.Generator serializer serialization.Serializer logger log.Logger @@ -143,14 +149,14 @@ func (s *nDCIntegrationTestSuite) SetupSuite() { }, nil).AnyTimes() mockOtherClient.EXPECT().StreamWorkflowReplicationMessages(gomock.Any()).Return(mockStreamClient, nil).AnyTimes() s.mockAdminClient = map[string]adminservice.AdminServiceClient{ - "standby": mockStandbyClient, - "other": mockOtherClient, + "cluster-b": mockStandbyClient, + "cluster-c": mockOtherClient, } clusterConfigs[0].MockAdminClient = s.mockAdminClient cluster, err := tests.NewCluster(clusterConfigs[0], log.With(s.logger, tag.ClusterName(clusterName[0]))) s.Require().NoError(err) - s.active = cluster + s.cluster = cluster s.registerNamespace() @@ -203,7 +209,7 @@ func (s *nDCIntegrationTestSuite) TearDownSuite() { s.generator.Reset() } s.controller.Finish() - s.NoError(s.active.TearDownCluster()) + s.NoError(s.cluster.TearDownCluster()) } func (s *nDCIntegrationTestSuite) TestSingleBranch() { @@ -214,8 +220,8 @@ func (s *nDCIntegrationTestSuite) TestSingleBranch() { workflowType := "event-generator-workflow-type" taskqueue := "event-generator-taskQueue" - // active has initial version 1 - historyClient := s.active.GetHistoryClient() + // cluster has initial version 1 + historyClient := s.cluster.GetHistoryClient() versions := []int64{3, 13, 2, 202, 302, 402, 602, 502, 802, 1002, 902, 702, 1102} for _, version := range versions { @@ -258,10 +264,12 @@ func (s *nDCIntegrationTestSuite) TestMultipleBranches() { workflowType := "event-generator-workflow-type" taskqueue := "event-generator-taskQueue" - // active has initial version 1 - historyClient := s.active.GetHistoryClient() + // cluster has initial version 1 + historyClient := s.cluster.GetHistoryClient() versions := []int64{102, 2, 202} + versionIncs := [][]int64{{1, 10}, {11, 10}} + versionInc := versionIncs[rand.Intn(len(versionIncs))] for _, version := range versions { runID := uuid.New() historySize := int64(0) @@ -298,7 +306,7 @@ func (s *nDCIntegrationTestSuite) TestMultipleBranches() { var branch2 []*historypb.History branchVersionHistory2 := versionhistory.CopyVersionHistory(baseVersionHistory) branchGenerator2 := baseGenerator.DeepCopy() - branchGenerator2.SetVersion(branchGenerator2.GetVersion() + 1) + branchGenerator2.SetVersion(branchGenerator2.GetVersion() + versionInc[0]) for i := 0; i < 10 && branchGenerator2.HasNextVertex(); i++ { events := branchGenerator2.GetNextVertices() historyEvents := &historypb.History{} @@ -310,6 +318,21 @@ func (s *nDCIntegrationTestSuite) TestMultipleBranches() { } branchVersionHistory2 = s.eventBatchesToVersionHistory(branchVersionHistory2, branch2) + var branch3 []*historypb.History + branchVersionHistory3 := versionhistory.CopyVersionHistory(baseVersionHistory) + branchGenerator3 := baseGenerator.DeepCopy() + branchGenerator3.SetVersion(branchGenerator3.GetVersion() + versionInc[1]) + for i := 0; i < 10 && branchGenerator3.HasNextVertex(); i++ { + events := branchGenerator3.GetNextVertices() + historyEvents := &historypb.History{} + for _, event := range events { + historyEvents.Events = append(historyEvents.Events, event.GetData().(*historypb.HistoryEvent)) + } + historySize += s.sizeOfHistoryEvents(historyEvents.Events) + branch3 = append(branch3, historyEvents) + } + branchVersionHistory3 = s.eventBatchesToVersionHistory(branchVersionHistory3, branch3) + s.applyEvents( workflowID, runID, @@ -337,7 +360,31 @@ func (s *nDCIntegrationTestSuite) TestMultipleBranches() { branch2, historyClient, ) + s.applyEvents( + workflowID, + runID, + workflowType, + taskqueue, + branchVersionHistory3, + branch3, + historyClient, + ) s.verifyEventHistorySize(workflowID, runID, historySize) + s.verifyVersionHistory( + workflowID, + runID, + branchVersionHistory1, + ) + s.verifyVersionHistory( + workflowID, + runID, + branchVersionHistory2, + ) + s.verifyVersionHistory( + workflowID, + runID, + branchVersionHistory3, + ) } } @@ -347,8 +394,8 @@ func (s *nDCIntegrationTestSuite) TestEmptyVersionAndNonEmptyVersion() { workflowType := "event-generator-workflow-type" taskqueue := "event-generator-taskQueue" - // active has initial version 1 - historyClient := s.active.GetHistoryClient() + // cluster has initial version 1 + historyClient := s.cluster.GetHistoryClient() runID := uuid.New() @@ -381,8 +428,6 @@ func (s *nDCIntegrationTestSuite) TestEmptyVersionAndNonEmptyVersion() { } branchVersionHistory1 = s.eventBatchesToVersionHistory(branchVersionHistory1, branch1) - // TODO ? - s.applyEvents( workflowID, runID, @@ -411,8 +456,8 @@ func (s *nDCIntegrationTestSuite) TestReplicateWorkflowState_PartialReplicated() workflowType := "event-generator-workflow-type" taskqueue := "event-generator-taskQueue" - // active has initial version 1 - historyClient := s.active.GetHistoryClient() + // cluster has initial version 1 + historyClient := s.cluster.GetHistoryClient() var historyBatch []*historypb.History // standby initial failover version 2 s.generator = test.InitializeHistoryEventGenerator(s.namespace, s.namespaceID, 12) @@ -455,7 +500,7 @@ func (s *nDCIntegrationTestSuite) TestReplicateWorkflowState_PartialReplicated() ) _, err := historyClient.ReplicateWorkflowState(context.Background(), &historyservice.ReplicateWorkflowStateRequest{ WorkflowState: workflowState, - RemoteCluster: "standby", + RemoteCluster: "cluster-b", NamespaceId: s.namespaceID.String(), }) s.Error(err) @@ -471,7 +516,7 @@ func (s *nDCIntegrationTestSuite) TestReplicateWorkflowState_PartialReplicated() ) _, err = historyClient.ReplicateWorkflowState(context.Background(), &historyservice.ReplicateWorkflowStateRequest{ WorkflowState: workflowState, - RemoteCluster: "standby", + RemoteCluster: "cluster-b", NamespaceId: s.namespaceID.String(), }) s.NoError(err) @@ -488,8 +533,8 @@ func (s *nDCIntegrationTestSuite) TestHandcraftedMultipleBranches() { taskqueue := "event-generator-taskQueue" identity := "worker-identity" - // active has initial version 1 - historyClient := s.active.GetHistoryClient() + // cluster has initial version 1 + historyClient := s.cluster.GetHistoryClient() eventsBatch1 := []*historypb.History{ {Events: []*historypb.HistoryEvent{ @@ -831,8 +876,8 @@ func (s *nDCIntegrationTestSuite) TestHandcraftedMultipleBranchesWithZombieConti taskqueue := "event-generator-taskQueue" identity := "worker-identity" - // active has initial version 1 - historyClient := s.active.GetHistoryClient() + // cluster has initial version 1 + historyClient := s.cluster.GetHistoryClient() eventsBatch1 := []*historypb.History{ {Events: []*historypb.HistoryEvent{ @@ -1120,15 +1165,196 @@ func (s *nDCIntegrationTestSuite) TestHandcraftedMultipleBranchesWithZombieConti s.verifyEventHistorySize(workflowID, runID, historySize) } +func (s *nDCIntegrationTestSuite) TestImportSingleBranch() { + + s.setupRemoteFrontendClients() + workflowID := "ndc-import-single-branch-test" + uuid.New() + + workflowType := "event-generator-workflow-type" + taskqueue := "event-generator-taskQueue" + + // cluster has initial version 1 + historyClient := s.cluster.GetHistoryClient() + + versions := []int64{3, 13, 2, 202, 302, 402, 602, 502, 802, 1002, 902, 702, 1102} + for _, version := range versions { + runID := uuid.New() + historySize := int64(0) + + var historyBatch []*historypb.History + s.generator = test.InitializeHistoryEventGenerator(s.namespace, s.namespaceID, version) + for s.generator.HasNextVertex() { + events := s.generator.GetNextVertices() + historyEvents := &historypb.History{} + for _, event := range events { + historyEvents.Events = append(historyEvents.Events, event.GetData().(*historypb.HistoryEvent)) + } + historySize += s.sizeOfHistoryEvents(historyEvents.Events) + historyBatch = append(historyBatch, historyEvents) + } + + versionHistory := s.eventBatchesToVersionHistory(nil, historyBatch) + s.importEvents( + workflowID, + runID, + workflowType, + taskqueue, + versionHistory, + historyBatch, + historyClient, + true, + ) + s.verifyEventHistorySize(workflowID, runID, historySize) + s.verifyEventHistory(workflowID, runID, historyBatch) + } +} + +func (s *nDCIntegrationTestSuite) TestImportMultipleBranches() { + + s.setupRemoteFrontendClients() + workflowID := "ndc-import-multiple-branches-test" + uuid.New() + + workflowType := "event-generator-workflow-type" + taskqueue := "event-generator-taskQueue" + + // cluster has initial version 1 + historyClient := s.cluster.GetHistoryClient() + + versions := []int64{102, 2, 202} + versionIncs := [][]int64{{1, 10}, {11, 10}} + versionInc := versionIncs[rand.Intn(len(versionIncs))] + for _, version := range versions { + runID := uuid.New() + historySize := int64(0) + + var baseBranch []*historypb.History + baseGenerator := test.InitializeHistoryEventGenerator(s.namespace, s.namespaceID, version) + baseGenerator.SetVersion(version) + + for i := 0; i < 10 && baseGenerator.HasNextVertex(); i++ { + events := baseGenerator.GetNextVertices() + historyEvents := &historypb.History{} + for _, event := range events { + historyEvents.Events = append(historyEvents.Events, event.GetData().(*historypb.HistoryEvent)) + } + historySize += s.sizeOfHistoryEvents(historyEvents.Events) + baseBranch = append(baseBranch, historyEvents) + } + baseVersionHistory := s.eventBatchesToVersionHistory(nil, baseBranch) + + var branch1 []*historypb.History + branchVersionHistory1 := versionhistory.CopyVersionHistory(baseVersionHistory) + branchGenerator1 := baseGenerator.DeepCopy() + for i := 0; i < 10 && branchGenerator1.HasNextVertex(); i++ { + events := branchGenerator1.GetNextVertices() + historyEvents := &historypb.History{} + for _, event := range events { + historyEvents.Events = append(historyEvents.Events, event.GetData().(*historypb.HistoryEvent)) + } + historySize += s.sizeOfHistoryEvents(historyEvents.Events) + branch1 = append(branch1, historyEvents) + } + branchVersionHistory1 = s.eventBatchesToVersionHistory(branchVersionHistory1, branch1) + + var branch2 []*historypb.History + branchVersionHistory2 := versionhistory.CopyVersionHistory(baseVersionHistory) + branchGenerator2 := baseGenerator.DeepCopy() + branchGenerator2.SetVersion(branchGenerator2.GetVersion() + versionInc[0]) + for i := 0; i < 10 && branchGenerator2.HasNextVertex(); i++ { + events := branchGenerator2.GetNextVertices() + historyEvents := &historypb.History{} + for _, event := range events { + historyEvents.Events = append(historyEvents.Events, event.GetData().(*historypb.HistoryEvent)) + } + historySize += s.sizeOfHistoryEvents(historyEvents.Events) + branch2 = append(branch2, historyEvents) + } + branchVersionHistory2 = s.eventBatchesToVersionHistory(branchVersionHistory2, branch2) + + var branch3 []*historypb.History + branchVersionHistory3 := versionhistory.CopyVersionHistory(baseVersionHistory) + branchGenerator3 := baseGenerator.DeepCopy() + branchGenerator3.SetVersion(branchGenerator3.GetVersion() + versionInc[1]) + for i := 0; i < 10 && branchGenerator3.HasNextVertex(); i++ { + events := branchGenerator3.GetNextVertices() + historyEvents := &historypb.History{} + for _, event := range events { + historyEvents.Events = append(historyEvents.Events, event.GetData().(*historypb.HistoryEvent)) + } + historySize += s.sizeOfHistoryEvents(historyEvents.Events) + branch3 = append(branch3, historyEvents) + } + branchVersionHistory3 = s.eventBatchesToVersionHistory(branchVersionHistory3, branch3) + + s.importEvents( + workflowID, + runID, + workflowType, + taskqueue, + baseVersionHistory, + baseBranch, + historyClient, + true, + ) + s.importEvents( + workflowID, + runID, + workflowType, + taskqueue, + branchVersionHistory1, + branch1, + historyClient, + false, + ) + s.importEvents( + workflowID, + runID, + workflowType, + taskqueue, + branchVersionHistory2, + branch2, + historyClient, + false, + ) + s.importEvents( + workflowID, + runID, + workflowType, + taskqueue, + branchVersionHistory3, + branch3, + historyClient, + false, + ) + s.verifyEventHistorySize(workflowID, runID, historySize) + + s.verifyVersionHistory( + workflowID, + runID, + branchVersionHistory1, + ) + s.verifyVersionHistory( + workflowID, + runID, + branchVersionHistory2, + ) + s.verifyVersionHistory( + workflowID, + runID, + branchVersionHistory3, + ) + } +} + func (s *nDCIntegrationTestSuite) TestEventsReapply_ZombieWorkflow() { - workflowID := "ndc-single-branch-test" + uuid.New() + workflowID := "ndc-events-reapply-zombie-workflow-test" + uuid.New() workflowType := "event-generator-workflow-type" taskqueue := "event-generator-taskQueue" - // active has initial version 1 - historyClient := s.active.GetHistoryClient() + // cluster has initial version 1 + historyClient := s.cluster.GetHistoryClient() version := int64(102) runID := uuid.New() @@ -1183,7 +1409,7 @@ func (s *nDCIntegrationTestSuite) TestEventsReapply_ZombieWorkflow() { historySize += s.sizeOfHistoryEvents(historyEvents.Events) historyBatch = append(historyBatch, historyEvents) } - s.mockAdminClient["standby"].(*adminservicemock.MockAdminServiceClient).EXPECT().ReapplyEvents( + s.mockAdminClient["cluster-b"].(*adminservicemock.MockAdminServiceClient).EXPECT().ReapplyEvents( gomock.Any(), gomock.Any(), ).Return( @@ -1204,9 +1430,9 @@ func (s *nDCIntegrationTestSuite) TestEventsReapply_ZombieWorkflow() { s.verifyEventHistorySize(workflowID, runID, historySize) } -func (s *nDCIntegrationTestSuite) TestEventsReapply_UpdateNonCurrentBranch() { +func (s *nDCIntegrationTestSuite) TestEventsReapply_NonCurrentBranch() { - workflowID := "ndc-single-branch-test" + uuid.New() + workflowID := "ndc-events-reapply-non-current-test" + uuid.New() runID := uuid.New() historySize := int64(0) workflowType := "event-generator-workflow-type" @@ -1214,7 +1440,7 @@ func (s *nDCIntegrationTestSuite) TestEventsReapply_UpdateNonCurrentBranch() { version := int64(102) isWorkflowFinished := false - historyClient := s.active.GetHistoryClient() + historyClient := s.cluster.GetHistoryClient() s.generator = test.InitializeHistoryEventGenerator(s.namespace, s.namespaceID, version) baseBranch := []*historypb.History{} @@ -1285,7 +1511,7 @@ func (s *nDCIntegrationTestSuite) TestEventsReapply_UpdateNonCurrentBranch() { ) s.verifyEventHistorySize(workflowID, runID, historySize) - s.mockAdminClient["standby"].(*adminservicemock.MockAdminServiceClient).EXPECT().ReapplyEvents(gomock.Any(), gomock.Any()).Return(&adminservice.ReapplyEventsResponse{}, nil) + s.mockAdminClient["cluster-b"].(*adminservicemock.MockAdminServiceClient).EXPECT().ReapplyEvents(gomock.Any(), gomock.Any()).Return(&adminservice.ReapplyEventsResponse{}, nil) // Handcraft a stale signal event baseBranchLastEventBatch := baseBranch[len(baseBranch)-1].GetEvents() baseBranchLastEvent := baseBranchLastEventBatch[len(baseBranchLastEventBatch)-1] @@ -1319,7 +1545,7 @@ func (s *nDCIntegrationTestSuite) TestEventsReapply_UpdateNonCurrentBranch() { ) } -func (s *nDCIntegrationTestSuite) TestAdminGetWorkflowExecutionRawHistoryV2() { +func (s *nDCIntegrationTestSuite) TestResend() { workflowID := "ndc-re-send-test" + uuid.New() runID := uuid.New() @@ -1327,8 +1553,8 @@ func (s *nDCIntegrationTestSuite) TestAdminGetWorkflowExecutionRawHistoryV2() { taskqueue := "event-generator-taskQueue" identity := "ndc-re-send-test" - historyClient := s.active.GetHistoryClient() - adminClient := s.active.GetAdminClient() + historyClient := s.cluster.GetHistoryClient() + adminClient := s.cluster.GetAdminClient() getHistory := func( nsName namespace.Name, nsID namespace.ID, @@ -1346,7 +1572,7 @@ func (s *nDCIntegrationTestSuite) TestAdminGetWorkflowExecutionRawHistoryV2() { WorkflowId: workflowID, RunId: runID, } - return adminClient.GetWorkflowExecutionRawHistoryV2(tests.NewContext(), &adminservice.GetWorkflowExecutionRawHistoryV2Request{ + return adminClient.GetWorkflowExecutionRawHistoryV2(s.newContext(), &adminservice.GetWorkflowExecutionRawHistoryV2Request{ NamespaceId: nsID.String(), Execution: execution, StartEventId: startEventID, @@ -1819,12 +2045,12 @@ func (s *nDCIntegrationTestSuite) TestAdminGetWorkflowExecutionRawHistoryV2() { func (s *nDCIntegrationTestSuite) registerNamespace() { s.namespace = namespace.Name("test-simple-workflow-ndc-" + common.GenerateRandomString(5)) - client1 := s.active.GetFrontendClient() // active - _, err := client1.RegisterNamespace(tests.NewContext(), &workflowservice.RegisterNamespaceRequest{ + client1 := s.cluster.GetFrontendClient() // cluster + _, err := client1.RegisterNamespace(s.newContext(), &workflowservice.RegisterNamespaceRequest{ Namespace: s.namespace.String(), IsGlobalNamespace: true, Clusters: clusterReplicationConfig, - // make the active cluster `standby` and replicate to `active` cluster + // make the cluster `cluster-a` `passive` and replicate from `active` cluster `cluster-b` ActiveClusterName: clusterName[1], WorkflowExecutionRetentionPeriod: timestamp.DurationPtr(1 * time.Hour * 24), }) @@ -1835,7 +2061,7 @@ func (s *nDCIntegrationTestSuite) registerNamespace() { descReq := &workflowservice.DescribeNamespaceRequest{ Namespace: s.namespace.String(), } - resp, err := client1.DescribeNamespace(tests.NewContext(), descReq) + resp, err := client1.DescribeNamespace(s.newContext(), descReq) s.Require().NoError(err) s.Require().NotNil(resp) s.namespaceID = namespace.ID(resp.GetNamespaceInfo().GetId()) @@ -1929,6 +2155,11 @@ func (s *nDCIntegrationTestSuite) applyEvents( eventBatches []*historypb.History, historyClient tests.HistoryClient, ) { + historyClient = history.NewRetryableClient( + historyClient, + common.CreateHistoryClientRetryPolicy(), + common.IsServiceClientTransientError, + ) for _, batch := range eventBatches { eventBlob, newRunEventBlob := s.generateEventBlobs(workflowID, runID, workflowType, taskqueue, batch) req := &historyservice.ReplicateEventsV2Request{ @@ -1942,15 +2173,78 @@ func (s *nDCIntegrationTestSuite) applyEvents( NewRunEvents: newRunEventBlob, } - resp, err := historyClient.ReplicateEventsV2(tests.NewContext(), req) + resp, err := historyClient.ReplicateEventsV2(s.newContext(), req) s.NoError(err, "Failed to replicate history event") s.Equal(&historyservice.ReplicateEventsV2Response{}, resp) - resp, err = historyClient.ReplicateEventsV2(tests.NewContext(), req) + resp, err = historyClient.ReplicateEventsV2(s.newContext(), req) s.NoError(err, "Failed to dedup replicate history event") s.Equal(&historyservice.ReplicateEventsV2Response{}, resp) } } +func (s *nDCIntegrationTestSuite) importEvents( + workflowID string, + runID string, + workflowType string, + taskqueue string, + versionHistory *historyspb.VersionHistory, + eventBatches []*historypb.History, + historyClient tests.HistoryClient, + verifyWorkflowNotExists bool, +) { + if len(eventBatches) == 0 { + return + } + + historyClient = history.NewRetryableClient( + historyClient, + common.CreateHistoryClientRetryPolicy(), + common.IsResourceExhausted, + ) + var token []byte + for _, batch := range eventBatches { + eventBlob, _ := s.generateEventBlobs(workflowID, runID, workflowType, taskqueue, batch) + req := &historyservice.ImportWorkflowExecutionRequest{ + NamespaceId: s.namespaceID.String(), + Execution: &commonpb.WorkflowExecution{ + WorkflowId: workflowID, + RunId: runID, + }, + VersionHistory: versionHistory, + HistoryBatches: []*commonpb.DataBlob{eventBlob}, + Token: token, + } + resp, err := historyClient.ImportWorkflowExecution(s.newContext(), req) + s.NoError(err, "Failed to import history event") + token = resp.Token + + if verifyWorkflowNotExists { + _, err := historyClient.GetMutableState(s.newContext(), &historyservice.GetMutableStateRequest{ + NamespaceId: s.namespaceID.String(), + Execution: &commonpb.WorkflowExecution{ + WorkflowId: workflowID, + RunId: runID, + }, + }) + s.IsType(&serviceerror.NotFound{}, err) + } + } + + req := &historyservice.ImportWorkflowExecutionRequest{ + NamespaceId: s.namespaceID.String(), + Execution: &commonpb.WorkflowExecution{ + WorkflowId: workflowID, + RunId: runID, + }, + VersionHistory: versionHistory, + HistoryBatches: []*commonpb.DataBlob{}, + Token: token, + } + resp, err := historyClient.ImportWorkflowExecution(s.newContext(), req) + s.NoError(err, "Failed to import history event") + s.Nil(resp.Token) +} + func (s *nDCIntegrationTestSuite) applyEventsThroughFetcher( workflowID string, runID string, @@ -2013,9 +2307,9 @@ func (s *nDCIntegrationTestSuite) verifyEventHistorySize( historySize int64, ) { // get replicated history events from passive side - passiveClient := s.active.GetFrontendClient() + passiveClient := s.cluster.GetFrontendClient() describeWorkflow, err := passiveClient.DescribeWorkflowExecution( - tests.NewContext(), + s.newContext(), &workflowservice.DescribeWorkflowExecutionRequest{ Namespace: s.namespace.String(), Execution: &commonpb.WorkflowExecution{ @@ -2025,7 +2319,39 @@ func (s *nDCIntegrationTestSuite) verifyEventHistorySize( }, ) s.NoError(err) - s.Equal(describeWorkflow.WorkflowExecutionInfo.HistorySizeBytes, historySize) + s.Equal(historySize, describeWorkflow.WorkflowExecutionInfo.HistorySizeBytes) +} + +func (s *nDCIntegrationTestSuite) verifyVersionHistory( + workflowID string, + runID string, + expectedVersionHistory *historyspb.VersionHistory, +) { + // get replicated history events from passive side + resp, err := s.cluster.GetHistoryClient().GetMutableState( + s.newContext(), + &historyservice.GetMutableStateRequest{ + NamespaceId: string(s.namespaceID), + Execution: &commonpb.WorkflowExecution{ + WorkflowId: workflowID, + RunId: runID, + }, + }, + ) + s.NoError(err) + for _, actualVersionHistory := range resp.VersionHistories.Histories { + if versionhistory.IsEqualVersionHistoryItems( + expectedVersionHistory.Items, + actualVersionHistory.Items, + ) { + return + } + } + s.Fail(fmt.Sprintf( + "unable to find version history in mutable state %v vs %v", + expectedVersionHistory, + resp.VersionHistories.Histories, + )) } func (s *nDCIntegrationTestSuite) verifyEventHistory( @@ -2034,9 +2360,8 @@ func (s *nDCIntegrationTestSuite) verifyEventHistory( historyBatch []*historypb.History, ) { // get replicated history events from passive side - passiveClient := s.active.GetFrontendClient() - replicatedHistory, err := passiveClient.GetWorkflowExecutionHistory( - tests.NewContext(), + replicatedHistory, err := s.cluster.GetFrontendClient().GetWorkflowExecutionHistory( + s.newContext(), &workflowservice.GetWorkflowExecutionHistoryRequest{ Namespace: s.namespace.String(), Execution: &commonpb.WorkflowExecution{ @@ -2068,8 +2393,8 @@ func (s *nDCIntegrationTestSuite) verifyEventHistory( } func (s *nDCIntegrationTestSuite) setupRemoteFrontendClients() { - s.mockAdminClient["standby"].(*adminservicemock.MockAdminServiceClient).EXPECT().ReapplyEvents(gomock.Any(), gomock.Any()).Return(&adminservice.ReapplyEventsResponse{}, nil).AnyTimes() - s.mockAdminClient["other"].(*adminservicemock.MockAdminServiceClient).EXPECT().ReapplyEvents(gomock.Any(), gomock.Any()).Return(&adminservice.ReapplyEventsResponse{}, nil).AnyTimes() + s.mockAdminClient["cluster-b"].(*adminservicemock.MockAdminServiceClient).EXPECT().ReapplyEvents(gomock.Any(), gomock.Any()).Return(&adminservice.ReapplyEventsResponse{}, nil).AnyTimes() + s.mockAdminClient["cluster-c"].(*adminservicemock.MockAdminServiceClient).EXPECT().ReapplyEvents(gomock.Any(), gomock.Any()).Return(&adminservice.ReapplyEventsResponse{}, nil).AnyTimes() } func (s *nDCIntegrationTestSuite) sizeOfHistoryEvents( @@ -2079,3 +2404,11 @@ func (s *nDCIntegrationTestSuite) sizeOfHistoryEvents( s.NoError(err) return int64(len(blob.Data)) } + +func (s *nDCIntegrationTestSuite) newContext() context.Context { + ctx := tests.NewContext() + return headers.SetCallerInfo( + ctx, + headers.NewCallerInfo(s.namespace.String(), headers.CallerTypeAPI, ""), + ) +} diff --git a/tests/ndc/replication_integration_test.go b/tests/ndc/replication_integration_test.go index 1dc4fdf9c66..cc49f2767dd 100644 --- a/tests/ndc/replication_integration_test.go +++ b/tests/ndc/replication_integration_test.go @@ -72,7 +72,7 @@ func (s *nDCIntegrationTestSuite) TestReplicationMessageDLQ() { historyBatch, ) - executionManager := s.active.GetExecutionManager() + executionManager := s.cluster.GetExecutionManager() expectedDLQMsgs := map[int64]bool{} for _, batch := range historyBatch { firstEventID := batch.Events[0].GetEventId() diff --git a/tests/ndc/test_data.go b/tests/ndc/test_data.go index bc8c30c0a04..1002443f448 100644 --- a/tests/ndc/test_data.go +++ b/tests/ndc/test_data.go @@ -27,7 +27,7 @@ package ndc import replicationpb "go.temporal.io/api/replication/v1" var ( - clusterName = []string{"active", "standby", "other"} + clusterName = []string{"cluster-a", "cluster-b", "cluster-c"} clusterReplicationConfig = []*replicationpb.ClusterReplicationConfig{ {ClusterName: clusterName[0]}, {ClusterName: clusterName[1]}, diff --git a/tests/testdata/ndc_integration_test_clusters.yaml b/tests/testdata/ndc_integration_test_clusters.yaml index 09a8a25b9b6..e3acc95a80a 100644 --- a/tests/testdata/ndc_integration_test_clusters.yaml +++ b/tests/testdata/ndc_integration_test_clusters.yaml @@ -1,22 +1,22 @@ - persistence: - dbname: integration_active + dbname: integration_cluster_a clustermetadata: enableGlobalNamespace: true failoverVersionIncrement: 10 - masterClusterName: "active" - currentClusterName: "active" + masterClusterName: "cluster-a" + currentClusterName: "cluster-a" clusterInformation: - active: + cluster-a: enabled: true initialFailoverVersion: 1 rpcName: "frontend" rpcAddress: "127.0.0.1:7134" - standby: + cluster-b: enabled: true initialFailoverVersion: 2 rpcName: "frontend" rpcAddress: "127.0.0.1:8134" - other: + cluster-c: enabled: true initialFailoverVersion: 3 rpcName: "frontend" @@ -30,24 +30,24 @@ numhistoryshards: 1 numhistoryhosts: 1 - persistence: - dbname: integration_standby + dbname: integration_cluster_b clustermetadata: enableGlobalNamespace: true failoverVersionIncrement: 10 - masterClusterName: "active" - currentClusterName: "standby" + masterClusterName: "cluster-a" + currentClusterName: "cluster-b" clusterInformation: - active: + cluster-a: enabled: true initialFailoverVersion: 1 rpcName: "frontend" rpcAddress: "127.0.0.1:7134" - standby: + cluster-b: enabled: true initialFailoverVersion: 2 rpcName: "frontend" rpcAddress: "127.0.0.1:8134" - other: + cluster-c: enabled: true initialFailoverVersion: 3 rpcName: "frontend" @@ -65,20 +65,20 @@ clustermetadata: enableGlobalNamespace: true failoverVersionIncrement: 10 - masterClusterName: "active" - currentClusterName: "other" + masterClusterName: "cluster-a" + currentClusterName: "cluster-c" clusterInformation: - active: + cluster-a: enabled: true initialFailoverVersion: 1 rpcName: "frontend" rpcAddress: "127.0.0.1:7134" - standby: + cluster-b: enabled: true initialFailoverVersion: 2 rpcName: "frontend" rpcAddress: "127.0.0.1:8134" - other: + cluster-c: enabled: true initialFailoverVersion: 3 rpcName: "frontend"