Support passing channel names to DataNode (#16424)

/kind feature

issue: #15604
Signed-off-by: Yuchen Gao <yuchen.gao@zilliz.com>
pull/16414/head
Ten Thousand Leaves 2022-04-12 13:25:34 +08:00 committed by GitHub
parent 88d11b958b
commit 442c73a544
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 1193 additions and 896 deletions

View File

@ -287,54 +287,54 @@ const char descriptor_table_protodef_common_2eproto[] PROTOBUF_SECTION_VARIABLE(
"dUsersFailure\020!\022\022\n\rDDRequestRace\020\350\007*X\n\nI"
"ndexState\022\022\n\016IndexStateNone\020\000\022\014\n\010Unissue"
"d\020\001\022\016\n\nInProgress\020\002\022\014\n\010Finished\020\003\022\n\n\006Fai"
"led\020\004*s\n\014SegmentState\022\024\n\020SegmentStateNon"
"e\020\000\022\014\n\010NotExist\020\001\022\013\n\007Growing\020\002\022\n\n\006Sealed"
"\020\003\022\013\n\007Flushed\020\004\022\014\n\010Flushing\020\005\022\013\n\007Dropped"
"\020\006*\261\n\n\007MsgType\022\r\n\tUndefined\020\000\022\024\n\020CreateC"
"ollection\020d\022\022\n\016DropCollection\020e\022\021\n\rHasCo"
"llection\020f\022\026\n\022DescribeCollection\020g\022\023\n\017Sh"
"owCollections\020h\022\024\n\020GetSystemConfigs\020i\022\022\n"
"\016LoadCollection\020j\022\025\n\021ReleaseCollection\020k"
"\022\017\n\013CreateAlias\020l\022\r\n\tDropAlias\020m\022\016\n\nAlte"
"rAlias\020n\022\024\n\017CreatePartition\020\310\001\022\022\n\rDropPa"
"rtition\020\311\001\022\021\n\014HasPartition\020\312\001\022\026\n\021Describ"
"ePartition\020\313\001\022\023\n\016ShowPartitions\020\314\001\022\023\n\016Lo"
"adPartitions\020\315\001\022\026\n\021ReleasePartitions\020\316\001\022"
"\021\n\014ShowSegments\020\372\001\022\024\n\017DescribeSegment\020\373\001"
"\022\021\n\014LoadSegments\020\374\001\022\024\n\017ReleaseSegments\020\375"
"\001\022\024\n\017HandoffSegments\020\376\001\022\030\n\023LoadBalanceSe"
"gments\020\377\001\022\025\n\020DescribeSegments\020\200\002\022\020\n\013Crea"
"teIndex\020\254\002\022\022\n\rDescribeIndex\020\255\002\022\016\n\tDropIn"
"dex\020\256\002\022\013\n\006Insert\020\220\003\022\013\n\006Delete\020\221\003\022\n\n\005Flus"
"h\020\222\003\022\013\n\006Search\020\364\003\022\021\n\014SearchResult\020\365\003\022\022\n\r"
"GetIndexState\020\366\003\022\032\n\025GetIndexBuildProgres"
"s\020\367\003\022\034\n\027GetCollectionStatistics\020\370\003\022\033\n\026Ge"
"tPartitionStatistics\020\371\003\022\r\n\010Retrieve\020\372\003\022\023"
"\n\016RetrieveResult\020\373\003\022\024\n\017WatchDmChannels\020\374"
"\003\022\025\n\020RemoveDmChannels\020\375\003\022\027\n\022WatchQueryCh"
"annels\020\376\003\022\030\n\023RemoveQueryChannels\020\377\003\022\035\n\030S"
"ealedSegmentsChangeInfo\020\200\004\022\027\n\022WatchDelta"
"Channels\020\201\004\022\020\n\013SegmentInfo\020\330\004\022\017\n\nSystemI"
"nfo\020\331\004\022\024\n\017GetRecoveryInfo\020\332\004\022\024\n\017GetSegme"
"ntState\020\333\004\022\r\n\010TimeTick\020\260\t\022\023\n\016QueryNodeSt"
"ats\020\261\t\022\016\n\tLoadIndex\020\262\t\022\016\n\tRequestID\020\263\t\022\017"
"\n\nRequestTSO\020\264\t\022\024\n\017AllocateSegment\020\265\t\022\026\n"
"\021SegmentStatistics\020\266\t\022\025\n\020SegmentFlushDon"
"e\020\267\t\022\017\n\nDataNodeTt\020\270\t\022\025\n\020CreateCredentia"
"l\020\334\013\022\022\n\rGetCredential\020\335\013\022\025\n\020DeleteCreden"
"tial\020\336\013\022\025\n\020UpdateCredential\020\337\013\022\026\n\021ListCr"
"edUsernames\020\340\013*\"\n\007DslType\022\007\n\003Dsl\020\000\022\016\n\nBo"
"olExprV1\020\001*B\n\017CompactionState\022\021\n\rUndefie"
"dState\020\000\022\r\n\tExecuting\020\001\022\r\n\tCompleted\020\002*X"
"\n\020ConsistencyLevel\022\n\n\006Strong\020\000\022\013\n\007Sessio"
"n\020\001\022\013\n\007Bounded\020\002\022\016\n\nEventually\020\003\022\016\n\nCust"
"omized\020\004*\227\001\n\013ImportState\022\021\n\rImportPendin"
"g\020\000\022\020\n\014ImportFailed\020\001\022\021\n\rImportStarted\020\002"
"\022\024\n\020ImportDownloaded\020\003\022\020\n\014ImportParsed\020\004"
"\022\023\n\017ImportPersisted\020\005\022\023\n\017ImportCompleted"
"\020\006BW\n\016io.milvus.grpcB\013CommonProtoP\001Z3git"
"hub.com/milvus-io/milvus/internal/proto/"
"commonpb\240\001\001b\006proto3"
"led\020\004*\202\001\n\014SegmentState\022\024\n\020SegmentStateNo"
"ne\020\000\022\014\n\010NotExist\020\001\022\013\n\007Growing\020\002\022\n\n\006Seale"
"d\020\003\022\013\n\007Flushed\020\004\022\014\n\010Flushing\020\005\022\013\n\007Droppe"
"d\020\006\022\r\n\tImporting\020\007*\261\n\n\007MsgType\022\r\n\tUndefi"
"ned\020\000\022\024\n\020CreateCollection\020d\022\022\n\016DropColle"
"ction\020e\022\021\n\rHasCollection\020f\022\026\n\022DescribeCo"
"llection\020g\022\023\n\017ShowCollections\020h\022\024\n\020GetSy"
"stemConfigs\020i\022\022\n\016LoadCollection\020j\022\025\n\021Rel"
"easeCollection\020k\022\017\n\013CreateAlias\020l\022\r\n\tDro"
"pAlias\020m\022\016\n\nAlterAlias\020n\022\024\n\017CreatePartit"
"ion\020\310\001\022\022\n\rDropPartition\020\311\001\022\021\n\014HasPartiti"
"on\020\312\001\022\026\n\021DescribePartition\020\313\001\022\023\n\016ShowPar"
"titions\020\314\001\022\023\n\016LoadPartitions\020\315\001\022\026\n\021Relea"
"sePartitions\020\316\001\022\021\n\014ShowSegments\020\372\001\022\024\n\017De"
"scribeSegment\020\373\001\022\021\n\014LoadSegments\020\374\001\022\024\n\017R"
"eleaseSegments\020\375\001\022\024\n\017HandoffSegments\020\376\001\022"
"\030\n\023LoadBalanceSegments\020\377\001\022\025\n\020DescribeSeg"
"ments\020\200\002\022\020\n\013CreateIndex\020\254\002\022\022\n\rDescribeIn"
"dex\020\255\002\022\016\n\tDropIndex\020\256\002\022\013\n\006Insert\020\220\003\022\013\n\006D"
"elete\020\221\003\022\n\n\005Flush\020\222\003\022\013\n\006Search\020\364\003\022\021\n\014Sea"
"rchResult\020\365\003\022\022\n\rGetIndexState\020\366\003\022\032\n\025GetI"
"ndexBuildProgress\020\367\003\022\034\n\027GetCollectionSta"
"tistics\020\370\003\022\033\n\026GetPartitionStatistics\020\371\003\022"
"\r\n\010Retrieve\020\372\003\022\023\n\016RetrieveResult\020\373\003\022\024\n\017W"
"atchDmChannels\020\374\003\022\025\n\020RemoveDmChannels\020\375\003"
"\022\027\n\022WatchQueryChannels\020\376\003\022\030\n\023RemoveQuery"
"Channels\020\377\003\022\035\n\030SealedSegmentsChangeInfo\020"
"\200\004\022\027\n\022WatchDeltaChannels\020\201\004\022\020\n\013SegmentIn"
"fo\020\330\004\022\017\n\nSystemInfo\020\331\004\022\024\n\017GetRecoveryInf"
"o\020\332\004\022\024\n\017GetSegmentState\020\333\004\022\r\n\010TimeTick\020\260"
"\t\022\023\n\016QueryNodeStats\020\261\t\022\016\n\tLoadIndex\020\262\t\022\016"
"\n\tRequestID\020\263\t\022\017\n\nRequestTSO\020\264\t\022\024\n\017Alloc"
"ateSegment\020\265\t\022\026\n\021SegmentStatistics\020\266\t\022\025\n"
"\020SegmentFlushDone\020\267\t\022\017\n\nDataNodeTt\020\270\t\022\025\n"
"\020CreateCredential\020\334\013\022\022\n\rGetCredential\020\335\013"
"\022\025\n\020DeleteCredential\020\336\013\022\025\n\020UpdateCredent"
"ial\020\337\013\022\026\n\021ListCredUsernames\020\340\013*\"\n\007DslTyp"
"e\022\007\n\003Dsl\020\000\022\016\n\nBoolExprV1\020\001*B\n\017Compaction"
"State\022\021\n\rUndefiedState\020\000\022\r\n\tExecuting\020\001\022"
"\r\n\tCompleted\020\002*X\n\020ConsistencyLevel\022\n\n\006St"
"rong\020\000\022\013\n\007Session\020\001\022\013\n\007Bounded\020\002\022\016\n\nEven"
"tually\020\003\022\016\n\nCustomized\020\004*\227\001\n\013ImportState"
"\022\021\n\rImportPending\020\000\022\020\n\014ImportFailed\020\001\022\021\n"
"\rImportStarted\020\002\022\024\n\020ImportDownloaded\020\003\022\020"
"\n\014ImportParsed\020\004\022\023\n\017ImportPersisted\020\005\022\023\n"
"\017ImportCompleted\020\006BW\n\016io.milvus.grpcB\013Co"
"mmonProtoP\001Z3github.com/milvus-io/milvus"
"/internal/proto/commonpb\240\001\001b\006proto3"
;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_common_2eproto_deps[1] = {
};
@ -351,7 +351,7 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_com
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_common_2eproto_once;
static bool descriptor_table_common_2eproto_initialized = false;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_common_2eproto = {
&descriptor_table_common_2eproto_initialized, descriptor_table_protodef_common_2eproto, "common.proto", 3259,
&descriptor_table_common_2eproto_initialized, descriptor_table_protodef_common_2eproto, "common.proto", 3275,
&descriptor_table_common_2eproto_once, descriptor_table_common_2eproto_sccs, descriptor_table_common_2eproto_deps, 8, 0,
schemas, file_default_instances, TableStruct_common_2eproto::offsets,
file_level_metadata_common_2eproto, 8, file_level_enum_descriptors_common_2eproto, file_level_service_descriptors_common_2eproto,
@ -438,6 +438,7 @@ bool SegmentState_IsValid(int value) {
case 4:
case 5:
case 6:
case 7:
return true;
default:
return false;

View File

@ -192,12 +192,13 @@ enum SegmentState : int {
Flushed = 4,
Flushing = 5,
Dropped = 6,
Importing = 7,
SegmentState_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
SegmentState_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool SegmentState_IsValid(int value);
constexpr SegmentState SegmentState_MIN = SegmentStateNone;
constexpr SegmentState SegmentState_MAX = Dropped;
constexpr SegmentState SegmentState_MAX = Importing;
constexpr int SegmentState_ARRAYSIZE = SegmentState_MAX + 1;
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SegmentState_descriptor();

View File

@ -2436,6 +2436,7 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_milvus_2eproto::offsets[] PROT
~0u, // no _weak_field_map_
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::ImportRequest, collection_name_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::ImportRequest, partition_name_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::ImportRequest, channel_names_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::ImportRequest, row_based_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::ImportRequest, files_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::ImportRequest, options_),
@ -2606,17 +2607,17 @@ static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOB
{ 664, -1, sizeof(::milvus::proto::milvus::GetFlushStateRequest)},
{ 670, -1, sizeof(::milvus::proto::milvus::GetFlushStateResponse)},
{ 677, -1, sizeof(::milvus::proto::milvus::ImportRequest)},
{ 687, -1, sizeof(::milvus::proto::milvus::ImportResponse)},
{ 694, -1, sizeof(::milvus::proto::milvus::GetImportStateRequest)},
{ 700, -1, sizeof(::milvus::proto::milvus::GetImportStateResponse)},
{ 710, -1, sizeof(::milvus::proto::milvus::GetReplicasRequest)},
{ 718, -1, sizeof(::milvus::proto::milvus::GetReplicasResponse)},
{ 725, -1, sizeof(::milvus::proto::milvus::ReplicaInfo)},
{ 735, -1, sizeof(::milvus::proto::milvus::ShardReplica)},
{ 744, -1, sizeof(::milvus::proto::milvus::CreateCredentialRequest)},
{ 754, -1, sizeof(::milvus::proto::milvus::DeleteCredentialRequest)},
{ 761, -1, sizeof(::milvus::proto::milvus::ListCredUsersResponse)},
{ 768, -1, sizeof(::milvus::proto::milvus::ListCredUsersRequest)},
{ 688, -1, sizeof(::milvus::proto::milvus::ImportResponse)},
{ 695, -1, sizeof(::milvus::proto::milvus::GetImportStateRequest)},
{ 701, -1, sizeof(::milvus::proto::milvus::GetImportStateResponse)},
{ 711, -1, sizeof(::milvus::proto::milvus::GetReplicasRequest)},
{ 719, -1, sizeof(::milvus::proto::milvus::GetReplicasResponse)},
{ 726, -1, sizeof(::milvus::proto::milvus::ReplicaInfo)},
{ 736, -1, sizeof(::milvus::proto::milvus::ShardReplica)},
{ 745, -1, sizeof(::milvus::proto::milvus::CreateCredentialRequest)},
{ 755, -1, sizeof(::milvus::proto::milvus::DeleteCredentialRequest)},
{ 762, -1, sizeof(::milvus::proto::milvus::ListCredUsersResponse)},
{ 769, -1, sizeof(::milvus::proto::milvus::ListCredUsersRequest)},
};
static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
@ -2979,166 +2980,166 @@ const char descriptor_table_protodef_milvus_2eproto[] PROTOBUF_SECTION_VARIABLE(
"FlushStateRequest\022\022\n\nsegmentIDs\030\001 \003(\003\"U\n"
"\025GetFlushStateResponse\022+\n\006status\030\001 \001(\0132\033"
".milvus.proto.common.Status\022\017\n\007flushed\030\002"
" \001(\010\"\226\001\n\rImportRequest\022\027\n\017collection_nam"
"e\030\001 \001(\t\022\026\n\016partition_name\030\002 \001(\t\022\021\n\trow_b"
"ased\030\003 \001(\010\022\r\n\005files\030\004 \003(\t\0222\n\007options\030\005 \003"
"(\0132!.milvus.proto.common.KeyValuePair\"L\n"
"\016ImportResponse\022+\n\006status\030\001 \001(\0132\033.milvus"
".proto.common.Status\022\r\n\005tasks\030\002 \003(\003\"%\n\025G"
"etImportStateRequest\022\014\n\004task\030\001 \001(\003\"\314\001\n\026G"
"etImportStateResponse\022+\n\006status\030\001 \001(\0132\033."
"milvus.proto.common.Status\022/\n\005state\030\002 \001("
"\0162 .milvus.proto.common.ImportState\022\021\n\tr"
"ow_count\030\003 \001(\003\022\017\n\007id_list\030\004 \003(\003\0220\n\005infos"
"\030\005 \003(\0132!.milvus.proto.common.KeyValuePai"
"r\"p\n\022GetReplicasRequest\022*\n\004base\030\001 \001(\0132\034."
"milvus.proto.common.MsgBase\022\024\n\014collectio"
"nID\030\002 \001(\003\022\030\n\020with_shard_nodes\030\003 \001(\010\"v\n\023G"
"etReplicasResponse\022+\n\006status\030\001 \001(\0132\033.mil"
"vus.proto.common.Status\0222\n\010replicas\030\002 \003("
"\0132 .milvus.proto.milvus.ReplicaInfo\"\232\001\n\013"
"ReplicaInfo\022\021\n\treplicaID\030\001 \001(\003\022\024\n\014collec"
"tionID\030\002 \001(\003\022\025\n\rpartition_ids\030\003 \003(\003\0229\n\016s"
"hard_replicas\030\004 \003(\0132!.milvus.proto.milvu"
"s.ShardReplica\022\020\n\010node_ids\030\005 \003(\003\"`\n\014Shar"
"dReplica\022\020\n\010leaderID\030\001 \001(\003\022\023\n\013leader_add"
"r\030\002 \001(\t\022\027\n\017dm_channel_name\030\003 \001(\t\022\020\n\010node"
"_ids\030\004 \003(\003\"\252\001\n\027CreateCredentialRequest\022*"
"\n\004base\030\001 \001(\0132\034.milvus.proto.common.MsgBa"
"se\022\020\n\010username\030\002 \001(\t\022\020\n\010password\030\003 \001(\t\022\036"
"\n\026created_utc_timestamps\030\004 \001(\004\022\037\n\027modifi"
"ed_utc_timestamps\030\005 \001(\004\"W\n\027DeleteCredent"
"ialRequest\022*\n\004base\030\001 \001(\0132\034.milvus.proto."
"common.MsgBase\022\020\n\010username\030\002 \001(\t\"W\n\025List"
"CredUsersResponse\022+\n\006status\030\001 \001(\0132\033.milv"
"us.proto.common.Status\022\021\n\tusernames\030\002 \003("
"\t\"B\n\024ListCredUsersRequest\022*\n\004base\030\001 \001(\0132"
"\034.milvus.proto.common.MsgBase*!\n\010ShowTyp"
"e\022\007\n\003All\020\000\022\014\n\010InMemory\020\001*>\n\017PlaceholderT"
"ype\022\010\n\004None\020\000\022\020\n\014BinaryVector\020d\022\017\n\013Float"
"Vector\020e2\270$\n\rMilvusService\022_\n\020CreateColl"
"ection\022,.milvus.proto.milvus.CreateColle"
"ctionRequest\032\033.milvus.proto.common.Statu"
"s\"\000\022[\n\016DropCollection\022*.milvus.proto.mil"
"vus.DropCollectionRequest\032\033.milvus.proto"
".common.Status\"\000\022_\n\rHasCollection\022).milv"
"us.proto.milvus.HasCollectionRequest\032!.m"
"ilvus.proto.milvus.BoolResponse\"\000\022[\n\016Loa"
"dCollection\022*.milvus.proto.milvus.LoadCo"
"llectionRequest\032\033.milvus.proto.common.St"
"atus\"\000\022a\n\021ReleaseCollection\022-.milvus.pro"
"to.milvus.ReleaseCollectionRequest\032\033.mil"
"vus.proto.common.Status\"\000\022w\n\022DescribeCol"
"lection\022..milvus.proto.milvus.DescribeCo"
"llectionRequest\032/.milvus.proto.milvus.De"
"scribeCollectionResponse\"\000\022\206\001\n\027GetCollec"
"tionStatistics\0223.milvus.proto.milvus.Get"
"CollectionStatisticsRequest\0324.milvus.pro"
"to.milvus.GetCollectionStatisticsRespons"
"e\"\000\022n\n\017ShowCollections\022+.milvus.proto.mi"
"lvus.ShowCollectionsRequest\032,.milvus.pro"
"to.milvus.ShowCollectionsResponse\"\000\022]\n\017C"
"reatePartition\022+.milvus.proto.milvus.Cre"
"atePartitionRequest\032\033.milvus.proto.commo"
"n.Status\"\000\022Y\n\rDropPartition\022).milvus.pro"
"to.milvus.DropPartitionRequest\032\033.milvus."
"proto.common.Status\"\000\022]\n\014HasPartition\022(."
"milvus.proto.milvus.HasPartitionRequest\032"
"!.milvus.proto.milvus.BoolResponse\"\000\022[\n\016"
"LoadPartitions\022*.milvus.proto.milvus.Loa"
"dPartitionsRequest\032\033.milvus.proto.common"
".Status\"\000\022a\n\021ReleasePartitions\022-.milvus."
"proto.milvus.ReleasePartitionsRequest\032\033."
"milvus.proto.common.Status\"\000\022\203\001\n\026GetPart"
"itionStatistics\0222.milvus.proto.milvus.Ge"
"tPartitionStatisticsRequest\0323.milvus.pro"
"to.milvus.GetPartitionStatisticsResponse"
"\"\000\022k\n\016ShowPartitions\022*.milvus.proto.milv"
"us.ShowPartitionsRequest\032+.milvus.proto."
"milvus.ShowPartitionsResponse\"\000\022U\n\013Creat"
"eAlias\022\'.milvus.proto.milvus.CreateAlias"
"Request\032\033.milvus.proto.common.Status\"\000\022Q"
"\n\tDropAlias\022%.milvus.proto.milvus.DropAl"
"iasRequest\032\033.milvus.proto.common.Status\""
"\000\022S\n\nAlterAlias\022&.milvus.proto.milvus.Al"
"terAliasRequest\032\033.milvus.proto.common.St"
"atus\"\000\022U\n\013CreateIndex\022\'.milvus.proto.mil"
"vus.CreateIndexRequest\032\033.milvus.proto.co"
"mmon.Status\"\000\022h\n\rDescribeIndex\022).milvus."
"proto.milvus.DescribeIndexRequest\032*.milv"
"us.proto.milvus.DescribeIndexResponse\"\000\022"
"h\n\rGetIndexState\022).milvus.proto.milvus.G"
"etIndexStateRequest\032*.milvus.proto.milvu"
"s.GetIndexStateResponse\"\000\022\200\001\n\025GetIndexBu"
"ildProgress\0221.milvus.proto.milvus.GetInd"
"exBuildProgressRequest\0322.milvus.proto.mi"
"lvus.GetIndexBuildProgressResponse\"\000\022Q\n\t"
"DropIndex\022%.milvus.proto.milvus.DropInde"
"xRequest\032\033.milvus.proto.common.Status\"\000\022"
"S\n\006Insert\022\".milvus.proto.milvus.InsertRe"
"quest\032#.milvus.proto.milvus.MutationResu"
"lt\"\000\022S\n\006Delete\022\".milvus.proto.milvus.Del"
"eteRequest\032#.milvus.proto.milvus.Mutatio"
"nResult\"\000\022R\n\006Search\022\".milvus.proto.milvu"
"s.SearchRequest\032\".milvus.proto.milvus.Se"
"archResults\"\000\022P\n\005Flush\022!.milvus.proto.mi"
"lvus.FlushRequest\032\".milvus.proto.milvus."
"FlushResponse\"\000\022O\n\005Query\022!.milvus.proto."
"milvus.QueryRequest\032!.milvus.proto.milvu"
"s.QueryResults\"\000\022d\n\014CalcDistance\022(.milvu"
"s.proto.milvus.CalcDistanceRequest\032(.mil"
"vus.proto.milvus.CalcDistanceResults\"\000\022h"
"\n\rGetFlushState\022).milvus.proto.milvus.Ge"
"tFlushStateRequest\032*.milvus.proto.milvus"
".GetFlushStateResponse\"\000\022\211\001\n\030GetPersiste"
"ntSegmentInfo\0224.milvus.proto.milvus.GetP"
"ersistentSegmentInfoRequest\0325.milvus.pro"
"to.milvus.GetPersistentSegmentInfoRespon"
"se\"\000\022z\n\023GetQuerySegmentInfo\022/.milvus.pro"
"to.milvus.GetQuerySegmentInfoRequest\0320.m"
"ilvus.proto.milvus.GetQuerySegmentInfoRe"
"sponse\"\000\022b\n\013GetReplicas\022\'.milvus.proto.m"
"ilvus.GetReplicasRequest\032(.milvus.proto."
"milvus.GetReplicasResponse\"\000\022P\n\005Dummy\022!."
"milvus.proto.milvus.DummyRequest\032\".milvu"
"s.proto.milvus.DummyResponse\"\000\022e\n\014Regist"
"erLink\022(.milvus.proto.milvus.RegisterLin"
"kRequest\032).milvus.proto.milvus.RegisterL"
"inkResponse\"\000\022_\n\nGetMetrics\022&.milvus.pro"
"to.milvus.GetMetricsRequest\032\'.milvus.pro"
"to.milvus.GetMetricsResponse\"\000\022U\n\013LoadBa"
"lance\022\'.milvus.proto.milvus.LoadBalanceR"
"equest\032\033.milvus.proto.common.Status\"\000\022w\n"
"\022GetCompactionState\022..milvus.proto.milvu"
"s.GetCompactionStateRequest\032/.milvus.pro"
"to.milvus.GetCompactionStateResponse\"\000\022q"
"\n\020ManualCompaction\022,.milvus.proto.milvus"
".ManualCompactionRequest\032-.milvus.proto."
"milvus.ManualCompactionResponse\"\000\022\200\001\n\033Ge"
"tCompactionStateWithPlans\022..milvus.proto"
".milvus.GetCompactionPlansRequest\032/.milv"
"us.proto.milvus.GetCompactionPlansRespon"
"se\"\000\022S\n\006Import\022\".milvus.proto.milvus.Imp"
"ortRequest\032#.milvus.proto.milvus.ImportR"
"esponse\"\000\022k\n\016GetImportState\022*.milvus.pro"
"to.milvus.GetImportStateRequest\032+.milvus"
".proto.milvus.GetImportStateResponse\"\000\022_"
"\n\020CreateCredential\022,.milvus.proto.milvus"
" \001(\010\"\255\001\n\rImportRequest\022\027\n\017collection_nam"
"e\030\001 \001(\t\022\026\n\016partition_name\030\002 \001(\t\022\025\n\rchann"
"el_names\030\003 \003(\t\022\021\n\trow_based\030\004 \001(\010\022\r\n\005fil"
"es\030\005 \003(\t\0222\n\007options\030\006 \003(\0132!.milvus.proto"
".common.KeyValuePair\"L\n\016ImportResponse\022+"
"\n\006status\030\001 \001(\0132\033.milvus.proto.common.Sta"
"tus\022\r\n\005tasks\030\002 \003(\003\"%\n\025GetImportStateRequ"
"est\022\014\n\004task\030\001 \001(\003\"\314\001\n\026GetImportStateResp"
"onse\022+\n\006status\030\001 \001(\0132\033.milvus.proto.comm"
"on.Status\022/\n\005state\030\002 \001(\0162 .milvus.proto."
"common.ImportState\022\021\n\trow_count\030\003 \001(\003\022\017\n"
"\007id_list\030\004 \003(\003\0220\n\005infos\030\005 \003(\0132!.milvus.p"
"roto.common.KeyValuePair\"p\n\022GetReplicasR"
"equest\022*\n\004base\030\001 \001(\0132\034.milvus.proto.comm"
"on.MsgBase\022\024\n\014collectionID\030\002 \001(\003\022\030\n\020with"
"_shard_nodes\030\003 \001(\010\"v\n\023GetReplicasRespons"
"e\022+\n\006status\030\001 \001(\0132\033.milvus.proto.common."
"Status\0222\n\010replicas\030\002 \003(\0132 .milvus.proto."
"milvus.ReplicaInfo\"\232\001\n\013ReplicaInfo\022\021\n\tre"
"plicaID\030\001 \001(\003\022\024\n\014collectionID\030\002 \001(\003\022\025\n\rp"
"artition_ids\030\003 \003(\003\0229\n\016shard_replicas\030\004 \003"
"(\0132!.milvus.proto.milvus.ShardReplica\022\020\n"
"\010node_ids\030\005 \003(\003\"`\n\014ShardReplica\022\020\n\010leade"
"rID\030\001 \001(\003\022\023\n\013leader_addr\030\002 \001(\t\022\027\n\017dm_cha"
"nnel_name\030\003 \001(\t\022\020\n\010node_ids\030\004 \003(\003\"\252\001\n\027Cr"
"eateCredentialRequest\022*\n\004base\030\001 \001(\0132\034.mi"
"lvus.proto.common.MsgBase\022\020\n\010username\030\002 "
"\001(\t\022\020\n\010password\030\003 \001(\t\022\036\n\026created_utc_tim"
"estamps\030\004 \001(\004\022\037\n\027modified_utc_timestamps"
"\030\005 \001(\004\"W\n\027DeleteCredentialRequest\022*\n\004bas"
"e\030\001 \001(\0132\034.milvus.proto.common.MsgBase\022\020\n"
"\010username\030\002 \001(\t\"W\n\025ListCredUsersResponse"
"\022+\n\006status\030\001 \001(\0132\033.milvus.proto.common.S"
"tatus\022\021\n\tusernames\030\002 \003(\t\"B\n\024ListCredUser"
"sRequest\022*\n\004base\030\001 \001(\0132\034.milvus.proto.co"
"mmon.MsgBase*!\n\010ShowType\022\007\n\003All\020\000\022\014\n\010InM"
"emory\020\001*>\n\017PlaceholderType\022\010\n\004None\020\000\022\020\n\014"
"BinaryVector\020d\022\017\n\013FloatVector\020e2\270$\n\rMilv"
"usService\022_\n\020CreateCollection\022,.milvus.p"
"roto.milvus.CreateCollectionRequest\032\033.mi"
"lvus.proto.common.Status\"\000\022[\n\016DropCollec"
"tion\022*.milvus.proto.milvus.DropCollectio"
"nRequest\032\033.milvus.proto.common.Status\"\000\022"
"_\n\rHasCollection\022).milvus.proto.milvus.H"
"asCollectionRequest\032!.milvus.proto.milvu"
"s.BoolResponse\"\000\022[\n\016LoadCollection\022*.mil"
"vus.proto.milvus.LoadCollectionRequest\032\033"
".milvus.proto.common.Status\"\000\022a\n\021Release"
"Collection\022-.milvus.proto.milvus.Release"
"CollectionRequest\032\033.milvus.proto.common."
"Status\"\000\022w\n\022DescribeCollection\022..milvus."
"proto.milvus.DescribeCollectionRequest\032/"
".milvus.proto.milvus.DescribeCollectionR"
"esponse\"\000\022\206\001\n\027GetCollectionStatistics\0223."
"milvus.proto.milvus.GetCollectionStatist"
"icsRequest\0324.milvus.proto.milvus.GetColl"
"ectionStatisticsResponse\"\000\022n\n\017ShowCollec"
"tions\022+.milvus.proto.milvus.ShowCollecti"
"onsRequest\032,.milvus.proto.milvus.ShowCol"
"lectionsResponse\"\000\022]\n\017CreatePartition\022+."
"milvus.proto.milvus.CreatePartitionReque"
"st\032\033.milvus.proto.common.Status\"\000\022Y\n\rDro"
"pPartition\022).milvus.proto.milvus.DropPar"
"titionRequest\032\033.milvus.proto.common.Stat"
"us\"\000\022]\n\014HasPartition\022(.milvus.proto.milv"
"us.HasPartitionRequest\032!.milvus.proto.mi"
"lvus.BoolResponse\"\000\022[\n\016LoadPartitions\022*."
"milvus.proto.milvus.LoadPartitionsReques"
"t\032\033.milvus.proto.common.Status\"\000\022a\n\021Rele"
"asePartitions\022-.milvus.proto.milvus.Rele"
"asePartitionsRequest\032\033.milvus.proto.comm"
"on.Status\"\000\022\203\001\n\026GetPartitionStatistics\0222"
".milvus.proto.milvus.GetPartitionStatist"
"icsRequest\0323.milvus.proto.milvus.GetPart"
"itionStatisticsResponse\"\000\022k\n\016ShowPartiti"
"ons\022*.milvus.proto.milvus.ShowPartitions"
"Request\032+.milvus.proto.milvus.ShowPartit"
"ionsResponse\"\000\022U\n\013CreateAlias\022\'.milvus.p"
"roto.milvus.CreateAliasRequest\032\033.milvus."
"proto.common.Status\"\000\022Q\n\tDropAlias\022%.mil"
"vus.proto.milvus.DropAliasRequest\032\033.milv"
"us.proto.common.Status\"\000\022S\n\nAlterAlias\022&"
".milvus.proto.milvus.AlterAliasRequest\032\033"
".milvus.proto.common.Status\"\000\022U\n\013CreateI"
"ndex\022\'.milvus.proto.milvus.CreateIndexRe"
"quest\032\033.milvus.proto.common.Status\"\000\022h\n\r"
"DescribeIndex\022).milvus.proto.milvus.Desc"
"ribeIndexRequest\032*.milvus.proto.milvus.D"
"escribeIndexResponse\"\000\022h\n\rGetIndexState\022"
").milvus.proto.milvus.GetIndexStateReque"
"st\032*.milvus.proto.milvus.GetIndexStateRe"
"sponse\"\000\022\200\001\n\025GetIndexBuildProgress\0221.mil"
"vus.proto.milvus.GetIndexBuildProgressRe"
"quest\0322.milvus.proto.milvus.GetIndexBuil"
"dProgressResponse\"\000\022Q\n\tDropIndex\022%.milvu"
"s.proto.milvus.DropIndexRequest\032\033.milvus"
".proto.common.Status\"\000\022S\n\006Insert\022\".milvu"
"s.proto.milvus.InsertRequest\032#.milvus.pr"
"oto.milvus.MutationResult\"\000\022S\n\006Delete\022\"."
"milvus.proto.milvus.DeleteRequest\032#.milv"
"us.proto.milvus.MutationResult\"\000\022R\n\006Sear"
"ch\022\".milvus.proto.milvus.SearchRequest\032\""
".milvus.proto.milvus.SearchResults\"\000\022P\n\005"
"Flush\022!.milvus.proto.milvus.FlushRequest"
"\032\".milvus.proto.milvus.FlushResponse\"\000\022O"
"\n\005Query\022!.milvus.proto.milvus.QueryReque"
"st\032!.milvus.proto.milvus.QueryResults\"\000\022"
"d\n\014CalcDistance\022(.milvus.proto.milvus.Ca"
"lcDistanceRequest\032(.milvus.proto.milvus."
"CalcDistanceResults\"\000\022h\n\rGetFlushState\022)"
".milvus.proto.milvus.GetFlushStateReques"
"t\032*.milvus.proto.milvus.GetFlushStateRes"
"ponse\"\000\022\211\001\n\030GetPersistentSegmentInfo\0224.m"
"ilvus.proto.milvus.GetPersistentSegmentI"
"nfoRequest\0325.milvus.proto.milvus.GetPers"
"istentSegmentInfoResponse\"\000\022z\n\023GetQueryS"
"egmentInfo\022/.milvus.proto.milvus.GetQuer"
"ySegmentInfoRequest\0320.milvus.proto.milvu"
"s.GetQuerySegmentInfoResponse\"\000\022b\n\013GetRe"
"plicas\022\'.milvus.proto.milvus.GetReplicas"
"Request\032(.milvus.proto.milvus.GetReplica"
"sResponse\"\000\022P\n\005Dummy\022!.milvus.proto.milv"
"us.DummyRequest\032\".milvus.proto.milvus.Du"
"mmyResponse\"\000\022e\n\014RegisterLink\022(.milvus.p"
"roto.milvus.RegisterLinkRequest\032).milvus"
".proto.milvus.RegisterLinkResponse\"\000\022_\n\n"
"GetMetrics\022&.milvus.proto.milvus.GetMetr"
"icsRequest\032\'.milvus.proto.milvus.GetMetr"
"icsResponse\"\000\022U\n\013LoadBalance\022\'.milvus.pr"
"oto.milvus.LoadBalanceRequest\032\033.milvus.p"
"roto.common.Status\"\000\022w\n\022GetCompactionSta"
"te\022..milvus.proto.milvus.GetCompactionSt"
"ateRequest\032/.milvus.proto.milvus.GetComp"
"actionStateResponse\"\000\022q\n\020ManualCompactio"
"n\022,.milvus.proto.milvus.ManualCompaction"
"Request\032-.milvus.proto.milvus.ManualComp"
"actionResponse\"\000\022\200\001\n\033GetCompactionStateW"
"ithPlans\022..milvus.proto.milvus.GetCompac"
"tionPlansRequest\032/.milvus.proto.milvus.G"
"etCompactionPlansResponse\"\000\022S\n\006Import\022\"."
"milvus.proto.milvus.ImportRequest\032#.milv"
"us.proto.milvus.ImportResponse\"\000\022k\n\016GetI"
"mportState\022*.milvus.proto.milvus.GetImpo"
"rtStateRequest\032+.milvus.proto.milvus.Get"
"ImportStateResponse\"\000\022_\n\020CreateCredentia"
"l\022,.milvus.proto.milvus.CreateCredential"
"Request\032\033.milvus.proto.common.Status\"\000\022_"
"\n\020UpdateCredential\022,.milvus.proto.milvus"
".CreateCredentialRequest\032\033.milvus.proto."
"common.Status\"\000\022_\n\020UpdateCredential\022,.mi"
"lvus.proto.milvus.CreateCredentialReques"
"t\032\033.milvus.proto.common.Status\"\000\022_\n\020Dele"
"teCredential\022,.milvus.proto.milvus.Delet"
"eCredentialRequest\032\033.milvus.proto.common"
".Status\"\000\022h\n\rListCredUsers\022).milvus.prot"
"o.milvus.ListCredUsersRequest\032*.milvus.p"
"roto.milvus.ListCredUsersResponse\"\0002u\n\014P"
"roxyService\022e\n\014RegisterLink\022(.milvus.pro"
"to.milvus.RegisterLinkRequest\032).milvus.p"
"roto.milvus.RegisterLinkResponse\"\000BW\n\016io"
".milvus.grpcB\013MilvusProtoP\001Z3github.com/"
"milvus-io/milvus/internal/proto/milvuspb"
"\240\001\001b\006proto3"
"common.Status\"\000\022_\n\020DeleteCredential\022,.mi"
"lvus.proto.milvus.DeleteCredentialReques"
"t\032\033.milvus.proto.common.Status\"\000\022h\n\rList"
"CredUsers\022).milvus.proto.milvus.ListCred"
"UsersRequest\032*.milvus.proto.milvus.ListC"
"redUsersResponse\"\0002u\n\014ProxyService\022e\n\014Re"
"gisterLink\022(.milvus.proto.milvus.Registe"
"rLinkRequest\032).milvus.proto.milvus.Regis"
"terLinkResponse\"\000BW\n\016io.milvus.grpcB\013Mil"
"vusProtoP\001Z3github.com/milvus-io/milvus/"
"internal/proto/milvuspb\240\001\001b\006proto3"
;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_milvus_2eproto_deps[2] = {
&::descriptor_table_common_2eproto,
@ -3238,7 +3239,7 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_mil
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_milvus_2eproto_once;
static bool descriptor_table_milvus_2eproto_initialized = false;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_milvus_2eproto = {
&descriptor_table_milvus_2eproto_initialized, descriptor_table_protodef_milvus_2eproto, "milvus.proto", 17051,
&descriptor_table_milvus_2eproto_initialized, descriptor_table_protodef_milvus_2eproto, "milvus.proto", 17074,
&descriptor_table_milvus_2eproto_once, descriptor_table_milvus_2eproto_sccs, descriptor_table_milvus_2eproto_deps, 89, 2,
schemas, file_default_instances, TableStruct_milvus_2eproto::offsets,
file_level_metadata_milvus_2eproto, 89, file_level_enum_descriptors_milvus_2eproto, file_level_service_descriptors_milvus_2eproto,
@ -36033,6 +36034,7 @@ ImportRequest::ImportRequest()
ImportRequest::ImportRequest(const ImportRequest& from)
: ::PROTOBUF_NAMESPACE_ID::Message(),
_internal_metadata_(nullptr),
channel_names_(from.channel_names_),
files_(from.files_),
options_(from.options_) {
_internal_metadata_.MergeFrom(from._internal_metadata_);
@ -36080,6 +36082,7 @@ void ImportRequest::Clear() {
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
channel_names_.Clear();
files_.Clear();
options_.Clear();
collection_name_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
@ -36110,35 +36113,47 @@ const char* ImportRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_
CHK_(ptr);
} else goto handle_unusual;
continue;
// bool row_based = 3;
// repeated string channel_names = 3;
case 3:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
ptr -= 1;
do {
ptr += 1;
ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParserUTF8(add_channel_names(), ptr, ctx, "milvus.proto.milvus.ImportRequest.channel_names");
CHK_(ptr);
if (!ctx->DataAvailable(ptr)) break;
} while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 26);
} else goto handle_unusual;
continue;
// bool row_based = 4;
case 4:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
row_based_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
CHK_(ptr);
} else goto handle_unusual;
continue;
// repeated string files = 4;
case 4:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
// repeated string files = 5;
case 5:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
ptr -= 1;
do {
ptr += 1;
ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParserUTF8(add_files(), ptr, ctx, "milvus.proto.milvus.ImportRequest.files");
CHK_(ptr);
if (!ctx->DataAvailable(ptr)) break;
} while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 34);
} while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 42);
} else goto handle_unusual;
continue;
// repeated .milvus.proto.common.KeyValuePair options = 5;
case 5:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
// repeated .milvus.proto.common.KeyValuePair options = 6;
case 6:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) {
ptr -= 1;
do {
ptr += 1;
ptr = ctx->ParseMessage(add_options(), ptr);
CHK_(ptr);
if (!ctx->DataAvailable(ptr)) break;
} while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 42);
} while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 50);
} else goto handle_unusual;
continue;
default: {
@ -36201,9 +36216,25 @@ bool ImportRequest::MergePartialFromCodedStream(
break;
}
// bool row_based = 3;
// repeated string channel_names = 3;
case 3: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (26 & 0xFF)) {
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
input, this->add_channel_names()));
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->channel_names(this->channel_names_size() - 1).data(),
static_cast<int>(this->channel_names(this->channel_names_size() - 1).length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::PARSE,
"milvus.proto.milvus.ImportRequest.channel_names"));
} else {
goto handle_unusual;
}
break;
}
// bool row_based = 4;
case 4: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
@ -36214,9 +36245,9 @@ bool ImportRequest::MergePartialFromCodedStream(
break;
}
// repeated string files = 4;
case 4: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (34 & 0xFF)) {
// repeated string files = 5;
case 5: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (42 & 0xFF)) {
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
input, this->add_files()));
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
@ -36230,9 +36261,9 @@ bool ImportRequest::MergePartialFromCodedStream(
break;
}
// repeated .milvus.proto.common.KeyValuePair options = 5;
case 5: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (42 & 0xFF)) {
// repeated .milvus.proto.common.KeyValuePair options = 6;
case 6: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (50 & 0xFF)) {
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
input, add_options()));
} else {
@ -36288,26 +36319,36 @@ void ImportRequest::SerializeWithCachedSizes(
2, this->partition_name(), output);
}
// bool row_based = 3;
if (this->row_based() != 0) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(3, this->row_based(), output);
// repeated string channel_names = 3;
for (int i = 0, n = this->channel_names_size(); i < n; i++) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->channel_names(i).data(), static_cast<int>(this->channel_names(i).length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
"milvus.proto.milvus.ImportRequest.channel_names");
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteString(
3, this->channel_names(i), output);
}
// repeated string files = 4;
// bool row_based = 4;
if (this->row_based() != 0) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(4, this->row_based(), output);
}
// repeated string files = 5;
for (int i = 0, n = this->files_size(); i < n; i++) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->files(i).data(), static_cast<int>(this->files(i).length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
"milvus.proto.milvus.ImportRequest.files");
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteString(
4, this->files(i), output);
5, this->files(i), output);
}
// repeated .milvus.proto.common.KeyValuePair options = 5;
// repeated .milvus.proto.common.KeyValuePair options = 6;
for (unsigned int i = 0,
n = static_cast<unsigned int>(this->options_size()); i < n; i++) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessageMaybeToArray(
5,
6,
this->options(static_cast<int>(i)),
output);
}
@ -36347,27 +36388,37 @@ void ImportRequest::SerializeWithCachedSizes(
2, this->partition_name(), target);
}
// bool row_based = 3;
if (this->row_based() != 0) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->row_based(), target);
// repeated string channel_names = 3;
for (int i = 0, n = this->channel_names_size(); i < n; i++) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->channel_names(i).data(), static_cast<int>(this->channel_names(i).length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
"milvus.proto.milvus.ImportRequest.channel_names");
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
WriteStringToArray(3, this->channel_names(i), target);
}
// repeated string files = 4;
// bool row_based = 4;
if (this->row_based() != 0) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->row_based(), target);
}
// repeated string files = 5;
for (int i = 0, n = this->files_size(); i < n; i++) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->files(i).data(), static_cast<int>(this->files(i).length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
"milvus.proto.milvus.ImportRequest.files");
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
WriteStringToArray(4, this->files(i), target);
WriteStringToArray(5, this->files(i), target);
}
// repeated .milvus.proto.common.KeyValuePair options = 5;
// repeated .milvus.proto.common.KeyValuePair options = 6;
for (unsigned int i = 0,
n = static_cast<unsigned int>(this->options_size()); i < n; i++) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
InternalWriteMessageToArray(
5, this->options(static_cast<int>(i)), target);
6, this->options(static_cast<int>(i)), target);
}
if (_internal_metadata_.have_unknown_fields()) {
@ -36391,7 +36442,15 @@ size_t ImportRequest::ByteSizeLong() const {
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
// repeated string files = 4;
// repeated string channel_names = 3;
total_size += 1 *
::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->channel_names_size());
for (int i = 0, n = this->channel_names_size(); i < n; i++) {
total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
this->channel_names(i));
}
// repeated string files = 5;
total_size += 1 *
::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->files_size());
for (int i = 0, n = this->files_size(); i < n; i++) {
@ -36399,7 +36458,7 @@ size_t ImportRequest::ByteSizeLong() const {
this->files(i));
}
// repeated .milvus.proto.common.KeyValuePair options = 5;
// repeated .milvus.proto.common.KeyValuePair options = 6;
{
unsigned int count = static_cast<unsigned int>(this->options_size());
total_size += 1UL * count;
@ -36424,7 +36483,7 @@ size_t ImportRequest::ByteSizeLong() const {
this->partition_name());
}
// bool row_based = 3;
// bool row_based = 4;
if (this->row_based() != 0) {
total_size += 1 + 1;
}
@ -36456,6 +36515,7 @@ void ImportRequest::MergeFrom(const ImportRequest& from) {
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
channel_names_.MergeFrom(from.channel_names_);
files_.MergeFrom(from.files_);
options_.MergeFrom(from.options_);
if (from.collection_name().size() > 0) {
@ -36492,6 +36552,7 @@ bool ImportRequest::IsInitialized() const {
void ImportRequest::InternalSwap(ImportRequest* other) {
using std::swap;
_internal_metadata_.Swap(&other->_internal_metadata_);
channel_names_.InternalSwap(CastToBase(&other->channel_names_));
files_.InternalSwap(CastToBase(&other->files_));
CastToBase(&options_)->InternalSwap(CastToBase(&other->options_));
collection_name_.Swap(&other->collection_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),

View File

@ -13317,13 +13317,31 @@ class ImportRequest :
// accessors -------------------------------------------------------
enum : int {
kFilesFieldNumber = 4,
kOptionsFieldNumber = 5,
kChannelNamesFieldNumber = 3,
kFilesFieldNumber = 5,
kOptionsFieldNumber = 6,
kCollectionNameFieldNumber = 1,
kPartitionNameFieldNumber = 2,
kRowBasedFieldNumber = 3,
kRowBasedFieldNumber = 4,
};
// repeated string files = 4;
// repeated string channel_names = 3;
int channel_names_size() const;
void clear_channel_names();
const std::string& channel_names(int index) const;
std::string* mutable_channel_names(int index);
void set_channel_names(int index, const std::string& value);
void set_channel_names(int index, std::string&& value);
void set_channel_names(int index, const char* value);
void set_channel_names(int index, const char* value, size_t size);
std::string* add_channel_names();
void add_channel_names(const std::string& value);
void add_channel_names(std::string&& value);
void add_channel_names(const char* value);
void add_channel_names(const char* value, size_t size);
const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& channel_names() const;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_channel_names();
// repeated string files = 5;
int files_size() const;
void clear_files();
const std::string& files(int index) const;
@ -13340,7 +13358,7 @@ class ImportRequest :
const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& files() const;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_files();
// repeated .milvus.proto.common.KeyValuePair options = 5;
// repeated .milvus.proto.common.KeyValuePair options = 6;
int options_size() const;
void clear_options();
::milvus::proto::common::KeyValuePair* mutable_options(int index);
@ -13373,7 +13391,7 @@ class ImportRequest :
std::string* release_partition_name();
void set_allocated_partition_name(std::string* partition_name);
// bool row_based = 3;
// bool row_based = 4;
void clear_row_based();
bool row_based() const;
void set_row_based(bool value);
@ -13383,6 +13401,7 @@ class ImportRequest :
class _Internal;
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> channel_names_;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> files_;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::KeyValuePair > options_;
::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr collection_name_;
@ -26713,7 +26732,72 @@ inline void ImportRequest::set_allocated_partition_name(std::string* partition_n
// @@protoc_insertion_point(field_set_allocated:milvus.proto.milvus.ImportRequest.partition_name)
}
// bool row_based = 3;
// repeated string channel_names = 3;
inline int ImportRequest::channel_names_size() const {
return channel_names_.size();
}
inline void ImportRequest::clear_channel_names() {
channel_names_.Clear();
}
inline const std::string& ImportRequest::channel_names(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.milvus.ImportRequest.channel_names)
return channel_names_.Get(index);
}
inline std::string* ImportRequest::mutable_channel_names(int index) {
// @@protoc_insertion_point(field_mutable:milvus.proto.milvus.ImportRequest.channel_names)
return channel_names_.Mutable(index);
}
inline void ImportRequest::set_channel_names(int index, const std::string& value) {
// @@protoc_insertion_point(field_set:milvus.proto.milvus.ImportRequest.channel_names)
channel_names_.Mutable(index)->assign(value);
}
inline void ImportRequest::set_channel_names(int index, std::string&& value) {
// @@protoc_insertion_point(field_set:milvus.proto.milvus.ImportRequest.channel_names)
channel_names_.Mutable(index)->assign(std::move(value));
}
inline void ImportRequest::set_channel_names(int index, const char* value) {
GOOGLE_DCHECK(value != nullptr);
channel_names_.Mutable(index)->assign(value);
// @@protoc_insertion_point(field_set_char:milvus.proto.milvus.ImportRequest.channel_names)
}
inline void ImportRequest::set_channel_names(int index, const char* value, size_t size) {
channel_names_.Mutable(index)->assign(
reinterpret_cast<const char*>(value), size);
// @@protoc_insertion_point(field_set_pointer:milvus.proto.milvus.ImportRequest.channel_names)
}
inline std::string* ImportRequest::add_channel_names() {
// @@protoc_insertion_point(field_add_mutable:milvus.proto.milvus.ImportRequest.channel_names)
return channel_names_.Add();
}
inline void ImportRequest::add_channel_names(const std::string& value) {
channel_names_.Add()->assign(value);
// @@protoc_insertion_point(field_add:milvus.proto.milvus.ImportRequest.channel_names)
}
inline void ImportRequest::add_channel_names(std::string&& value) {
channel_names_.Add(std::move(value));
// @@protoc_insertion_point(field_add:milvus.proto.milvus.ImportRequest.channel_names)
}
inline void ImportRequest::add_channel_names(const char* value) {
GOOGLE_DCHECK(value != nullptr);
channel_names_.Add()->assign(value);
// @@protoc_insertion_point(field_add_char:milvus.proto.milvus.ImportRequest.channel_names)
}
inline void ImportRequest::add_channel_names(const char* value, size_t size) {
channel_names_.Add()->assign(reinterpret_cast<const char*>(value), size);
// @@protoc_insertion_point(field_add_pointer:milvus.proto.milvus.ImportRequest.channel_names)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
ImportRequest::channel_names() const {
// @@protoc_insertion_point(field_list:milvus.proto.milvus.ImportRequest.channel_names)
return channel_names_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
ImportRequest::mutable_channel_names() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.milvus.ImportRequest.channel_names)
return &channel_names_;
}
// bool row_based = 4;
inline void ImportRequest::clear_row_based() {
row_based_ = false;
}
@ -26727,7 +26811,7 @@ inline void ImportRequest::set_row_based(bool value) {
// @@protoc_insertion_point(field_set:milvus.proto.milvus.ImportRequest.row_based)
}
// repeated string files = 4;
// repeated string files = 5;
inline int ImportRequest::files_size() const {
return files_.size();
}
@ -26792,7 +26876,7 @@ ImportRequest::mutable_files() {
return &files_;
}
// repeated .milvus.proto.common.KeyValuePair options = 5;
// repeated .milvus.proto.common.KeyValuePair options = 6;
inline int ImportRequest::options_size() const {
return options_.size();
}

View File

@ -1017,14 +1017,14 @@ func (s *Server) Import(ctx context.Context, itr *datapb.ImportTaskRequest) (*da
log.Info("picking a free dataNode",
zap.Any("all dataNodes", nodes),
zap.Int64("picking free dataNode with ID", dnID))
s.cluster.Import(ctx, dnID, itr)
s.cluster.Import(s.ctx, dnID, itr)
} else {
// No DataNodes are available, choose a still working DataNode randomly.
dnID := nodes[rand.Intn(len(nodes))]
log.Info("all dataNodes are busy, picking a random dataNode still",
zap.Any("all dataNodes", nodes),
zap.Int64("picking dataNode with ID", dnID))
s.cluster.Import(ctx, dnID, itr)
s.cluster.Import(s.ctx, dnID, itr)
}
resp.Status.ErrorCode = commonpb.ErrorCode_Success

View File

@ -768,7 +768,12 @@ func (node *DataNode) Compaction(ctx context.Context, req *datapb.CompactionPlan
// Import data files(json, numpy, etc.) on MinIO/S3 storage, read and parse them into sealed segments
func (node *DataNode) Import(ctx context.Context, req *datapb.ImportTaskRequest) (*commonpb.Status, error) {
log.Info("receive import request")
log.Info("receive import request",
zap.Int64("task ID", req.GetImportTask().GetTaskId()),
zap.Int64("collection ID", req.GetImportTask().GetCollectionId()),
zap.Int64("partition ID", req.GetImportTask().GetPartitionId()),
zap.Any("channel names", req.GetImportTask().GetChannelNames()),
zap.Any("working dataNodes", req.WorkingNodes))
if !node.isHealthy() {
log.Warn("DataNode.Import failed",

View File

@ -63,6 +63,7 @@ enum SegmentState {
Flushed = 4;
Flushing = 5;
Dropped = 6;
Importing = 7;
}
message Status {

View File

@ -186,6 +186,7 @@ const (
SegmentState_Flushed SegmentState = 4
SegmentState_Flushing SegmentState = 5
SegmentState_Dropped SegmentState = 6
SegmentState_Importing SegmentState = 7
)
var SegmentState_name = map[int32]string{
@ -196,6 +197,7 @@ var SegmentState_name = map[int32]string{
4: "Flushed",
5: "Flushing",
6: "Dropped",
7: "Importing",
}
var SegmentState_value = map[string]int32{
@ -206,6 +208,7 @@ var SegmentState_value = map[string]int32{
"Flushed": 4,
"Flushing": 5,
"Dropped": 6,
"Importing": 7,
}
func (x SegmentState) String() string {
@ -963,113 +966,113 @@ func init() {
func init() { proto.RegisterFile("common.proto", fileDescriptor_555bd8c177793206) }
var fileDescriptor_555bd8c177793206 = []byte{
// 1715 bytes of a gzipped FileDescriptorProto
// 1727 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4b, 0x73, 0x1c, 0x49,
0x11, 0x56, 0xcf, 0x8c, 0x1e, 0x93, 0xa3, 0x47, 0xb9, 0xf4, 0xb0, 0xd6, 0xd6, 0x2e, 0x46, 0x27,
0x87, 0x22, 0xd6, 0x06, 0x1c, 0x01, 0xa7, 0x3d, 0x48, 0xd3, 0x92, 0x3c, 0x61, 0x49, 0x16, 0x33,
0x92, 0x77, 0x83, 0x03, 0x8e, 0x52, 0x77, 0x6a, 0x54, 0xb8, 0xbb, 0x6a, 0xa8, 0xaa, 0x96, 0x35,
0x9c, 0x96, 0x7f, 0x00, 0x7b, 0xe1, 0xca, 0x0f, 0x00, 0x82, 0xe5, 0xfd, 0x13, 0x78, 0x9f, 0x79,
0xc3, 0x91, 0x1f, 0xc0, 0x73, 0x1f, 0x5e, 0x22, 0xab, 0x7b, 0xba, 0xdb, 0xf6, 0xee, 0x89, 0x5b,
0xe5, 0x97, 0x99, 0x5f, 0x65, 0x65, 0x66, 0x65, 0x15, 0xcc, 0x47, 0x3a, 0x4d, 0xb5, 0xba, 0x33,
0x32, 0xda, 0x69, 0xbe, 0x9c, 0xca, 0xe4, 0x32, 0xb3, 0xb9, 0x74, 0x27, 0x57, 0x6d, 0x3e, 0x86,
0x99, 0x81, 0x13, 0x2e, 0xb3, 0xfc, 0x0d, 0x00, 0x34, 0x46, 0x9b, 0xc7, 0x91, 0x8e, 0x71, 0x3d,
0xb8, 0x15, 0xdc, 0x5e, 0xfc, 0xdc, 0x6b, 0x77, 0x3e, 0xc6, 0xe7, 0xce, 0x2e, 0x99, 0x75, 0x75,
0x8c, 0xfd, 0x36, 0x4e, 0x96, 0x7c, 0x0d, 0x66, 0x0c, 0x0a, 0xab, 0xd5, 0x7a, 0xe3, 0x56, 0x70,
0xbb, 0xdd, 0x2f, 0xa4, 0xcd, 0xcf, 0xc3, 0xfc, 0x03, 0x1c, 0x3f, 0x12, 0x49, 0x86, 0xc7, 0x42,
0x1a, 0xce, 0xa0, 0xf9, 0x04, 0xc7, 0x9e, 0xbf, 0xdd, 0xa7, 0x25, 0x5f, 0x81, 0xe9, 0x4b, 0x52,
0x17, 0x8e, 0xb9, 0xb0, 0x79, 0x0f, 0x3a, 0x0f, 0x70, 0x1c, 0x0a, 0x27, 0x3e, 0xc1, 0x8d, 0x43,
0x2b, 0x16, 0x4e, 0x78, 0xaf, 0xf9, 0xbe, 0x5f, 0x6f, 0x6e, 0x40, 0x6b, 0x27, 0xd1, 0x67, 0x15,
0x65, 0xe0, 0x95, 0x05, 0xe5, 0xeb, 0x30, 0xbb, 0x1d, 0xc7, 0x06, 0xad, 0xe5, 0x8b, 0xd0, 0x90,
0xa3, 0x82, 0xad, 0x21, 0x47, 0x44, 0x36, 0xd2, 0xc6, 0x79, 0xb2, 0x66, 0xdf, 0xaf, 0x37, 0xdf,
0x09, 0x60, 0xf6, 0xd0, 0x0e, 0x77, 0x84, 0x45, 0xfe, 0x05, 0x98, 0x4b, 0xed, 0xf0, 0xb1, 0x1b,
0x8f, 0x26, 0xa9, 0xd9, 0xf8, 0xd8, 0xd4, 0x1c, 0xda, 0xe1, 0xc9, 0x78, 0x84, 0xfd, 0xd9, 0x34,
0x5f, 0x50, 0x24, 0xa9, 0x1d, 0xf6, 0xc2, 0x82, 0x39, 0x17, 0xf8, 0x06, 0xb4, 0x9d, 0x4c, 0xd1,
0x3a, 0x91, 0x8e, 0xd6, 0x9b, 0xb7, 0x82, 0xdb, 0xad, 0x7e, 0x05, 0xf0, 0x1b, 0x30, 0x67, 0x75,
0x66, 0x22, 0xec, 0x85, 0xeb, 0x2d, 0xef, 0x56, 0xca, 0x9b, 0x6f, 0x40, 0xfb, 0xd0, 0x0e, 0xef,
0xa3, 0x88, 0xd1, 0xf0, 0xcf, 0x40, 0xeb, 0x4c, 0xd8, 0x3c, 0xa2, 0xce, 0x27, 0x47, 0x44, 0x27,
0xe8, 0x7b, 0xcb, 0xcd, 0x2f, 0xc3, 0x7c, 0x78, 0x78, 0xf0, 0x7f, 0x30, 0x50, 0xe8, 0xf6, 0x42,
0x98, 0xf8, 0x48, 0xa4, 0x93, 0x8a, 0x55, 0xc0, 0xd6, 0xb3, 0x69, 0x68, 0x97, 0xed, 0xc1, 0x3b,
0x30, 0x3b, 0xc8, 0xa2, 0x08, 0xad, 0x65, 0x53, 0x7c, 0x19, 0x96, 0x4e, 0x15, 0x5e, 0x8d, 0x30,
0x72, 0x18, 0x7b, 0x1b, 0x16, 0xf0, 0x6b, 0xb0, 0xd0, 0xd5, 0x4a, 0x61, 0xe4, 0xf6, 0x84, 0x4c,
0x30, 0x66, 0x0d, 0xbe, 0x02, 0xec, 0x18, 0x4d, 0x2a, 0xad, 0x95, 0x5a, 0x85, 0xa8, 0x24, 0xc6,
0xac, 0xc9, 0xaf, 0xc3, 0x72, 0x57, 0x27, 0x09, 0x46, 0x4e, 0x6a, 0x75, 0xa4, 0xdd, 0xee, 0x95,
0xb4, 0xce, 0xb2, 0x16, 0xd1, 0xf6, 0x92, 0x04, 0x87, 0x22, 0xd9, 0x36, 0xc3, 0x2c, 0x45, 0xe5,
0xd8, 0x34, 0x71, 0x14, 0x60, 0x28, 0x53, 0x54, 0xc4, 0xc4, 0x66, 0x6b, 0x68, 0x4f, 0xc5, 0x78,
0x45, 0xf5, 0x61, 0x73, 0xfc, 0x15, 0x58, 0x2d, 0xd0, 0xda, 0x06, 0x22, 0x45, 0xd6, 0xe6, 0x4b,
0xd0, 0x29, 0x54, 0x27, 0x0f, 0x8f, 0x1f, 0x30, 0xa8, 0x31, 0xf4, 0xf5, 0xd3, 0x3e, 0x46, 0xda,
0xc4, 0xac, 0x53, 0x0b, 0xe1, 0x11, 0x46, 0x4e, 0x9b, 0x5e, 0xc8, 0xe6, 0x29, 0xe0, 0x02, 0x1c,
0xa0, 0x30, 0xd1, 0x45, 0x1f, 0x6d, 0x96, 0x38, 0xb6, 0xc0, 0x19, 0xcc, 0xef, 0xc9, 0x04, 0x8f,
0xb4, 0xdb, 0xd3, 0x99, 0x8a, 0xd9, 0x22, 0x5f, 0x04, 0x38, 0x44, 0x27, 0x8a, 0x0c, 0x2c, 0xd1,
0xb6, 0x5d, 0x11, 0x5d, 0x60, 0x01, 0x30, 0xbe, 0x06, 0xbc, 0x2b, 0x94, 0xd2, 0xae, 0x6b, 0x50,
0x38, 0xdc, 0xd3, 0x49, 0x8c, 0x86, 0x5d, 0xa3, 0x70, 0x9e, 0xc3, 0x65, 0x82, 0x8c, 0x57, 0xd6,
0x21, 0x26, 0x58, 0x5a, 0x2f, 0x57, 0xd6, 0x05, 0x4e, 0xd6, 0x2b, 0x14, 0xfc, 0x4e, 0x26, 0x93,
0xd8, 0xa7, 0x24, 0x2f, 0xcb, 0x2a, 0xc5, 0x58, 0x04, 0x7f, 0x74, 0xd0, 0x1b, 0x9c, 0xb0, 0x35,
0xbe, 0x0a, 0xd7, 0x0a, 0xe4, 0x10, 0x9d, 0x91, 0x91, 0x4f, 0xde, 0x75, 0x0a, 0xf5, 0x61, 0xe6,
0x1e, 0x9e, 0x1f, 0x62, 0xaa, 0xcd, 0x98, 0xad, 0x53, 0x41, 0x3d, 0xd3, 0xa4, 0x44, 0xec, 0x15,
0xda, 0x61, 0x37, 0x1d, 0xb9, 0x71, 0x95, 0x5e, 0x76, 0x83, 0xdf, 0x84, 0xeb, 0xa7, 0xa3, 0x58,
0x38, 0xec, 0xa5, 0x74, 0xd9, 0x4e, 0x84, 0x7d, 0x42, 0xc7, 0xcd, 0x0c, 0xb2, 0x9b, 0xfc, 0x06,
0xac, 0x3d, 0x5f, 0x8b, 0x32, 0x59, 0x1b, 0xe4, 0x98, 0x9f, 0xb6, 0x6b, 0x30, 0x46, 0xe5, 0xa4,
0x48, 0x26, 0x8e, 0xaf, 0x56, 0xac, 0x2f, 0x2b, 0x5f, 0x23, 0x65, 0x7e, 0xf2, 0x97, 0x95, 0x9f,
0xe2, 0xeb, 0xb0, 0xb2, 0x8f, 0xee, 0x65, 0xcd, 0x2d, 0xd2, 0x1c, 0x48, 0xeb, 0x55, 0xa7, 0x16,
0x8d, 0x9d, 0x68, 0x3e, 0xcd, 0x39, 0x2c, 0x84, 0x61, 0x1f, 0xbf, 0x9a, 0xa1, 0x75, 0x7d, 0x11,
0x21, 0xfb, 0xfb, 0xec, 0xd6, 0x5b, 0x00, 0xfe, 0xfc, 0x34, 0x54, 0x91, 0x73, 0x58, 0xac, 0xa4,
0x23, 0xad, 0x90, 0x4d, 0xf1, 0x79, 0x98, 0x3b, 0x55, 0xd2, 0xda, 0x0c, 0x63, 0x16, 0x50, 0xed,
0x7b, 0xea, 0xd8, 0xe8, 0x21, 0x8d, 0x25, 0xd6, 0x20, 0xed, 0x9e, 0x54, 0xd2, 0x5e, 0xf8, 0xae,
0x07, 0x98, 0x29, 0x9a, 0xa0, 0xb5, 0x65, 0x61, 0x7e, 0x80, 0x43, 0x6a, 0xf0, 0x9c, 0x7b, 0x05,
0x58, 0x5d, 0xae, 0xd8, 0xcb, 0xd4, 0x07, 0x74, 0x01, 0xf7, 0x8d, 0x7e, 0x2a, 0xd5, 0x90, 0x35,
0x88, 0x6c, 0x80, 0x22, 0xf1, 0xc4, 0x1d, 0x98, 0xdd, 0x4b, 0x32, 0xbf, 0x4b, 0xcb, 0xef, 0x49,
0x02, 0x99, 0x4d, 0x93, 0x2a, 0x34, 0x7a, 0x34, 0xc2, 0x98, 0xcd, 0x6c, 0xbd, 0x0b, 0x7e, 0x06,
0xfa, 0x51, 0xb6, 0x00, 0xed, 0x53, 0x15, 0xe3, 0xb9, 0x54, 0x18, 0xb3, 0x29, 0xdf, 0x4e, 0x79,
0x21, 0xaa, 0xba, 0xc6, 0x74, 0x62, 0xf2, 0xae, 0x61, 0x48, 0x3d, 0x71, 0x5f, 0xd8, 0x1a, 0x74,
0x4e, 0x3d, 0x1a, 0xa2, 0x8d, 0x8c, 0x3c, 0xab, 0xbb, 0x0f, 0xa9, 0x57, 0x06, 0x17, 0xfa, 0x69,
0x85, 0x59, 0x76, 0x41, 0x3b, 0xed, 0xa3, 0x1b, 0x8c, 0xad, 0xc3, 0xb4, 0xab, 0xd5, 0xb9, 0x1c,
0x5a, 0x26, 0x69, 0xa7, 0x03, 0x2d, 0xe2, 0x9a, 0xfb, 0x57, 0xa8, 0x4b, 0xfb, 0x98, 0xa0, 0xb0,
0x75, 0xd6, 0x27, 0xfe, 0x42, 0xf9, 0x50, 0xb7, 0x13, 0x29, 0x2c, 0x4b, 0xe8, 0x28, 0x14, 0x65,
0x2e, 0xa6, 0x54, 0x84, 0xed, 0xc4, 0xa1, 0xc9, 0x65, 0xc5, 0x57, 0x60, 0x29, 0xb7, 0x3f, 0x16,
0xc6, 0x49, 0x4f, 0xf2, 0xf3, 0xc0, 0x97, 0xdb, 0xe8, 0x51, 0x85, 0xfd, 0x82, 0xe6, 0xd7, 0xfc,
0x7d, 0x61, 0x2b, 0xe8, 0x97, 0x01, 0x5f, 0x83, 0x6b, 0x93, 0xa3, 0x55, 0xf8, 0xaf, 0x02, 0xbe,
0x0c, 0x8b, 0x74, 0xb4, 0x12, 0xb3, 0xec, 0xd7, 0x1e, 0xa4, 0x43, 0xd4, 0xc0, 0xdf, 0x78, 0x86,
0xe2, 0x14, 0x35, 0xfc, 0xb7, 0x7e, 0x33, 0x62, 0x28, 0xaa, 0x6e, 0xd9, 0x7b, 0x01, 0x45, 0x3a,
0xd9, 0xac, 0x80, 0xd9, 0xfb, 0xde, 0x90, 0x58, 0x4b, 0xc3, 0x0f, 0xbc, 0x61, 0xc1, 0x59, 0xa2,
0x1f, 0x7a, 0xf4, 0xbe, 0x50, 0xb1, 0x3e, 0x3f, 0x2f, 0xd1, 0x67, 0x01, 0x5f, 0x87, 0x65, 0x72,
0xdf, 0x11, 0x89, 0x50, 0x51, 0x65, 0xff, 0x51, 0xc0, 0x57, 0x81, 0xbd, 0xb0, 0x9d, 0x65, 0x6f,
0x37, 0x38, 0x9b, 0xe4, 0xd7, 0x37, 0x3b, 0xfb, 0x4e, 0xc3, 0xe7, 0xaa, 0x30, 0xcc, 0xb1, 0xef,
0x36, 0xf8, 0x62, 0x9e, 0xf4, 0x5c, 0xfe, 0x5e, 0x83, 0x77, 0x60, 0xa6, 0xa7, 0x2c, 0x1a, 0xc7,
0xbe, 0x41, 0x0d, 0x39, 0x93, 0x5f, 0x4e, 0xf6, 0x4d, 0x6a, 0xfb, 0x69, 0xdf, 0x90, 0xec, 0x1d,
0xaf, 0xc8, 0x07, 0x28, 0xfb, 0x47, 0xd3, 0x67, 0xa0, 0x3e, 0x4d, 0xff, 0xd9, 0xa4, 0x9d, 0xf6,
0xd1, 0x55, 0xb7, 0x8c, 0xfd, 0xab, 0xc9, 0x6f, 0xc0, 0xea, 0x04, 0xf3, 0xb3, 0xad, 0xbc, 0x5f,
0xff, 0x6e, 0xf2, 0x0d, 0xb8, 0x4e, 0x17, 0xbd, 0x6c, 0x0f, 0x72, 0x92, 0xd6, 0xc9, 0xc8, 0xb2,
0xff, 0x34, 0xf9, 0x4d, 0x58, 0xdb, 0x47, 0x57, 0xa6, 0xbd, 0xa6, 0xfc, 0x6f, 0x93, 0x2f, 0xc0,
0x5c, 0x9f, 0x86, 0x1f, 0x5e, 0x22, 0x7b, 0xaf, 0x49, 0xb5, 0x9b, 0x88, 0x45, 0x38, 0xef, 0x37,
0x29, 0xa3, 0x6f, 0x0a, 0x17, 0x5d, 0x84, 0x69, 0xf7, 0x42, 0x28, 0x85, 0x89, 0x65, 0x1f, 0x34,
0x29, 0x6f, 0x7d, 0x4c, 0xf5, 0x25, 0xd6, 0xe0, 0x0f, 0xe9, 0x51, 0xe3, 0xde, 0xf8, 0x8b, 0x19,
0x9a, 0x71, 0xa9, 0x78, 0xd6, 0xa4, 0x0a, 0xe4, 0xf6, 0xcf, 0x6b, 0x3e, 0x6a, 0xf2, 0x57, 0x61,
0x3d, 0xbf, 0xc4, 0x93, 0xfc, 0x93, 0x72, 0x88, 0x3d, 0x75, 0xae, 0xd9, 0xdb, 0xad, 0x92, 0x31,
0xc4, 0xc4, 0x89, 0xd2, 0xef, 0xeb, 0x2d, 0x2a, 0x51, 0xe1, 0xe1, 0x4d, 0x7f, 0xd7, 0xe2, 0x4b,
0x00, 0xf9, 0x95, 0xf2, 0xc0, 0xef, 0x5b, 0x14, 0xfa, 0x3e, 0x3a, 0x7a, 0xd5, 0x2e, 0xd1, 0x8c,
0x3d, 0xfa, 0x87, 0x09, 0x5a, 0x9f, 0x34, 0xec, 0x8f, 0x2d, 0x4a, 0xc5, 0x89, 0x4c, 0xf1, 0x44,
0x46, 0x4f, 0xd8, 0xf7, 0xdb, 0x94, 0x0a, 0x1f, 0xe9, 0x91, 0x8e, 0x91, 0x6c, 0x2c, 0x7b, 0xb7,
0x4d, 0xf5, 0xa6, 0x36, 0xca, 0xeb, 0xfd, 0x03, 0x2f, 0x17, 0xc3, 0xb2, 0x17, 0xb2, 0x1f, 0xd2,
0xeb, 0x0a, 0x85, 0x7c, 0x32, 0x78, 0xc8, 0x7e, 0xd4, 0xa6, 0xad, 0xb6, 0x93, 0x44, 0x47, 0xc2,
0x95, 0xcd, 0xfc, 0xe3, 0x36, 0xdd, 0x86, 0xda, 0xee, 0x45, 0x35, 0x7e, 0xd2, 0xa6, 0x9c, 0x16,
0xb8, 0xef, 0x95, 0x90, 0xe6, 0xdf, 0x4f, 0x3d, 0x2b, 0x7d, 0x1a, 0x29, 0x92, 0x13, 0xc7, 0x7e,
0xe6, 0xed, 0x5e, 0x7c, 0x30, 0xd8, 0x9f, 0x3a, 0x45, 0xdf, 0xd4, 0xb0, 0x3f, 0x77, 0xf2, 0xf6,
0x7e, 0xfe, 0x85, 0x60, 0x7f, 0xf1, 0xf0, 0x8b, 0xaf, 0x0a, 0xfb, 0x6b, 0x87, 0x02, 0xab, 0x3f,
0x0c, 0x4a, 0xa4, 0x68, 0xd9, 0xdf, 0x3a, 0x5b, 0x9b, 0x30, 0x1b, 0xda, 0xc4, 0x8f, 0xcc, 0x59,
0x68, 0x86, 0x36, 0x61, 0x53, 0x34, 0x61, 0x76, 0xb4, 0x4e, 0x76, 0xaf, 0x46, 0xe6, 0xd1, 0x67,
0x59, 0xb0, 0xb5, 0x03, 0x4b, 0x5d, 0x9d, 0x8e, 0x44, 0xd9, 0x82, 0x7e, 0x4a, 0xe6, 0xe3, 0x15,
0xe3, 0x3c, 0xcd, 0x53, 0x34, 0xa6, 0x76, 0xaf, 0x30, 0xca, 0x1c, 0x4d, 0xe6, 0x80, 0x44, 0x72,
0xa2, 0x00, 0x63, 0xd6, 0xd8, 0x7a, 0x0b, 0x58, 0x57, 0x2b, 0x2b, 0xad, 0x43, 0x15, 0x8d, 0x0f,
0xf0, 0x12, 0x13, 0x3f, 0xe3, 0x9d, 0xd1, 0x6a, 0xc8, 0xa6, 0xfc, 0xef, 0x0b, 0xfd, 0x2f, 0x2a,
0x7f, 0x09, 0x76, 0xe8, 0x05, 0xf5, 0x5f, 0xac, 0x45, 0x80, 0xdd, 0x4b, 0x54, 0x2e, 0x13, 0x49,
0x32, 0x66, 0x4d, 0x92, 0xbb, 0x99, 0x75, 0x3a, 0x95, 0x5f, 0xf3, 0x4f, 0xcd, 0xb7, 0x02, 0xe8,
0xe4, 0xef, 0x72, 0x19, 0x5a, 0x2e, 0x1e, 0xa3, 0x8a, 0xa5, 0x27, 0xa7, 0x1f, 0x82, 0x87, 0x8a,
0xf7, 0x29, 0xa8, 0x8c, 0x06, 0x4e, 0x18, 0x37, 0xf9, 0xca, 0xe5, 0x50, 0xa8, 0x9f, 0xaa, 0x44,
0x8b, 0xd8, 0xbf, 0x3d, 0xa5, 0xeb, 0xb1, 0x30, 0xd6, 0x3f, 0x40, 0xf4, 0x81, 0x2a, 0xf8, 0x8d,
0x3f, 0x4f, 0xcc, 0xa6, 0x2b, 0xb0, 0x3a, 0xf3, 0xcc, 0xce, 0x9b, 0xb0, 0x28, 0xf5, 0xe4, 0x97,
0x3a, 0x34, 0xa3, 0x68, 0xa7, 0xd3, 0xf5, 0xbf, 0xd4, 0x63, 0xfa, 0xb1, 0x1e, 0x07, 0x5f, 0xba,
0x37, 0x94, 0xee, 0x22, 0x3b, 0xa3, 0xbf, 0xeb, 0xdd, 0xdc, 0xec, 0x75, 0xa9, 0x8b, 0xd5, 0x5d,
0xa9, 0x1c, 0xd5, 0x29, 0xb9, 0xeb, 0xff, 0xb7, 0x77, 0xf3, 0xff, 0xed, 0xe8, 0xec, 0xdb, 0x41,
0x70, 0x36, 0xe3, 0xa1, 0x7b, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x51, 0xd5, 0x43, 0x23, 0x33,
0x0d, 0x00, 0x00,
0xf1, 0x57, 0xcf, 0x8c, 0x34, 0x9e, 0x1c, 0x3d, 0xca, 0x25, 0x59, 0xd6, 0xda, 0xda, 0xfd, 0xfb,
0xaf, 0x93, 0x43, 0x11, 0x6b, 0x03, 0x8e, 0x80, 0xd3, 0x1e, 0xa4, 0x69, 0x49, 0x9e, 0xb0, 0x24,
0x8b, 0x19, 0xc9, 0xbb, 0xc1, 0x01, 0x47, 0xa9, 0x3b, 0x35, 0x2a, 0xdc, 0x5d, 0x35, 0x54, 0x55,
0xcb, 0x1a, 0x4e, 0x0b, 0x9f, 0x00, 0xf6, 0xc2, 0x95, 0x0f, 0x00, 0x04, 0xcb, 0xfb, 0x23, 0xf0,
0x3e, 0xf3, 0x86, 0x23, 0x1f, 0x80, 0xe7, 0x3e, 0xbc, 0x44, 0x56, 0xf7, 0x74, 0xb7, 0xed, 0xdd,
0x13, 0xb7, 0xca, 0x5f, 0x66, 0xfe, 0x2a, 0x2b, 0x33, 0x2b, 0xab, 0x60, 0x3e, 0xd2, 0x69, 0xaa,
0xd5, 0x9d, 0xb1, 0xd1, 0x4e, 0xf3, 0xe5, 0x54, 0x26, 0x17, 0x99, 0xcd, 0xa5, 0x3b, 0xb9, 0x6a,
0xe3, 0x31, 0xcc, 0x0d, 0x9d, 0x70, 0x99, 0xe5, 0x6f, 0x00, 0xa0, 0x31, 0xda, 0x3c, 0x8e, 0x74,
0x8c, 0x6b, 0xc1, 0xad, 0xe0, 0xf6, 0xe2, 0x67, 0x5e, 0xbb, 0xf3, 0x31, 0x3e, 0x77, 0x76, 0xc8,
0xac, 0xa7, 0x63, 0x1c, 0x74, 0x70, 0xba, 0xe4, 0xab, 0x30, 0x67, 0x50, 0x58, 0xad, 0xd6, 0x1a,
0xb7, 0x82, 0xdb, 0x9d, 0x41, 0x21, 0x6d, 0x7c, 0x16, 0xe6, 0x1f, 0xe0, 0xe4, 0x91, 0x48, 0x32,
0x3c, 0x12, 0xd2, 0x70, 0x06, 0xcd, 0x27, 0x38, 0xf1, 0xfc, 0x9d, 0x01, 0x2d, 0xf9, 0x0a, 0xcc,
0x5e, 0x90, 0xba, 0x70, 0xcc, 0x85, 0x8d, 0x7b, 0xd0, 0x7d, 0x80, 0x93, 0x50, 0x38, 0xf1, 0x09,
0x6e, 0x1c, 0x5a, 0xb1, 0x70, 0xc2, 0x7b, 0xcd, 0x0f, 0xfc, 0x7a, 0x63, 0x1d, 0x5a, 0xdb, 0x89,
0x3e, 0xad, 0x28, 0x03, 0xaf, 0x2c, 0x28, 0x5f, 0x87, 0xf6, 0x56, 0x1c, 0x1b, 0xb4, 0x96, 0x2f,
0x42, 0x43, 0x8e, 0x0b, 0xb6, 0x86, 0x1c, 0x13, 0xd9, 0x58, 0x1b, 0xe7, 0xc9, 0x9a, 0x03, 0xbf,
0xde, 0x78, 0x27, 0x80, 0xf6, 0x81, 0x1d, 0x6d, 0x0b, 0x8b, 0xfc, 0x73, 0x70, 0x25, 0xb5, 0xa3,
0xc7, 0x6e, 0x32, 0x9e, 0xa6, 0x66, 0xfd, 0x63, 0x53, 0x73, 0x60, 0x47, 0xc7, 0x93, 0x31, 0x0e,
0xda, 0x69, 0xbe, 0xa0, 0x48, 0x52, 0x3b, 0xea, 0x87, 0x05, 0x73, 0x2e, 0xf0, 0x75, 0xe8, 0x38,
0x99, 0xa2, 0x75, 0x22, 0x1d, 0xaf, 0x35, 0x6f, 0x05, 0xb7, 0x5b, 0x83, 0x0a, 0xe0, 0x37, 0xe0,
0x8a, 0xd5, 0x99, 0x89, 0xb0, 0x1f, 0xae, 0xb5, 0xbc, 0x5b, 0x29, 0x6f, 0xbc, 0x01, 0x9d, 0x03,
0x3b, 0xba, 0x8f, 0x22, 0x46, 0xc3, 0x3f, 0x05, 0xad, 0x53, 0x61, 0xf3, 0x88, 0xba, 0x9f, 0x1c,
0x11, 0x9d, 0x60, 0xe0, 0x2d, 0x37, 0xbe, 0x08, 0xf3, 0xe1, 0xc1, 0xfe, 0xff, 0xc0, 0x40, 0xa1,
0xdb, 0x73, 0x61, 0xe2, 0x43, 0x91, 0x4e, 0x2b, 0x56, 0x01, 0x9b, 0xcf, 0x66, 0xa1, 0x53, 0xb6,
0x07, 0xef, 0x42, 0x7b, 0x98, 0x45, 0x11, 0x5a, 0xcb, 0x66, 0xf8, 0x32, 0x2c, 0x9d, 0x28, 0xbc,
0x1c, 0x63, 0xe4, 0x30, 0xf6, 0x36, 0x2c, 0xe0, 0x57, 0x61, 0xa1, 0xa7, 0x95, 0xc2, 0xc8, 0xed,
0x0a, 0x99, 0x60, 0xcc, 0x1a, 0x7c, 0x05, 0xd8, 0x11, 0x9a, 0x54, 0x5a, 0x2b, 0xb5, 0x0a, 0x51,
0x49, 0x8c, 0x59, 0x93, 0x5f, 0x87, 0xe5, 0x9e, 0x4e, 0x12, 0x8c, 0x9c, 0xd4, 0xea, 0x50, 0xbb,
0x9d, 0x4b, 0x69, 0x9d, 0x65, 0x2d, 0xa2, 0xed, 0x27, 0x09, 0x8e, 0x44, 0xb2, 0x65, 0x46, 0x59,
0x8a, 0xca, 0xb1, 0x59, 0xe2, 0x28, 0xc0, 0x50, 0xa6, 0xa8, 0x88, 0x89, 0xb5, 0x6b, 0x68, 0x5f,
0xc5, 0x78, 0x49, 0xf5, 0x61, 0x57, 0xf8, 0x2b, 0x70, 0xad, 0x40, 0x6b, 0x1b, 0x88, 0x14, 0x59,
0x87, 0x2f, 0x41, 0xb7, 0x50, 0x1d, 0x3f, 0x3c, 0x7a, 0xc0, 0xa0, 0xc6, 0x30, 0xd0, 0x4f, 0x07,
0x18, 0x69, 0x13, 0xb3, 0x6e, 0x2d, 0x84, 0x47, 0x18, 0x39, 0x6d, 0xfa, 0x21, 0x9b, 0xa7, 0x80,
0x0b, 0x70, 0x88, 0xc2, 0x44, 0xe7, 0x03, 0xb4, 0x59, 0xe2, 0xd8, 0x02, 0x67, 0x30, 0xbf, 0x2b,
0x13, 0x3c, 0xd4, 0x6e, 0x57, 0x67, 0x2a, 0x66, 0x8b, 0x7c, 0x11, 0xe0, 0x00, 0x9d, 0x28, 0x32,
0xb0, 0x44, 0xdb, 0xf6, 0x44, 0x74, 0x8e, 0x05, 0xc0, 0xf8, 0x2a, 0xf0, 0x9e, 0x50, 0x4a, 0xbb,
0x9e, 0x41, 0xe1, 0x70, 0x57, 0x27, 0x31, 0x1a, 0x76, 0x95, 0xc2, 0x79, 0x0e, 0x97, 0x09, 0x32,
0x5e, 0x59, 0x87, 0x98, 0x60, 0x69, 0xbd, 0x5c, 0x59, 0x17, 0x38, 0x59, 0xaf, 0x50, 0xf0, 0xdb,
0x99, 0x4c, 0x62, 0x9f, 0x92, 0xbc, 0x2c, 0xd7, 0x28, 0xc6, 0x22, 0xf8, 0xc3, 0xfd, 0xfe, 0xf0,
0x98, 0xad, 0xf2, 0x6b, 0x70, 0xb5, 0x40, 0x0e, 0xd0, 0x19, 0x19, 0xf9, 0xe4, 0x5d, 0xa7, 0x50,
0x1f, 0x66, 0xee, 0xe1, 0xd9, 0x01, 0xa6, 0xda, 0x4c, 0xd8, 0x1a, 0x15, 0xd4, 0x33, 0x4d, 0x4b,
0xc4, 0x5e, 0xa1, 0x1d, 0x76, 0xd2, 0xb1, 0x9b, 0x54, 0xe9, 0x65, 0x37, 0xf8, 0x4d, 0xb8, 0x7e,
0x32, 0x8e, 0x85, 0xc3, 0x7e, 0x4a, 0x97, 0xed, 0x58, 0xd8, 0x27, 0x74, 0xdc, 0xcc, 0x20, 0xbb,
0xc9, 0x6f, 0xc0, 0xea, 0xf3, 0xb5, 0x28, 0x93, 0xb5, 0x4e, 0x8e, 0xf9, 0x69, 0x7b, 0x06, 0x63,
0x54, 0x4e, 0x8a, 0x64, 0xea, 0xf8, 0x6a, 0xc5, 0xfa, 0xb2, 0xf2, 0x35, 0x52, 0xe6, 0x27, 0x7f,
0x59, 0xf9, 0x7f, 0x7c, 0x0d, 0x56, 0xf6, 0xd0, 0xbd, 0xac, 0xb9, 0x45, 0x9a, 0x7d, 0x69, 0xbd,
0xea, 0xc4, 0xa2, 0xb1, 0x53, 0xcd, 0xff, 0x73, 0x0e, 0x0b, 0x61, 0x38, 0xc0, 0x2f, 0x67, 0x68,
0xdd, 0x40, 0x44, 0xc8, 0xfe, 0xd6, 0xde, 0x7c, 0x0b, 0xc0, 0x9f, 0x9f, 0x86, 0x2a, 0x72, 0x0e,
0x8b, 0x95, 0x74, 0xa8, 0x15, 0xb2, 0x19, 0x3e, 0x0f, 0x57, 0x4e, 0x94, 0xb4, 0x36, 0xc3, 0x98,
0x05, 0x54, 0xfb, 0xbe, 0x3a, 0x32, 0x7a, 0x44, 0x63, 0x89, 0x35, 0x48, 0xbb, 0x2b, 0x95, 0xb4,
0xe7, 0xbe, 0xeb, 0x01, 0xe6, 0x8a, 0x26, 0x68, 0x6d, 0x7e, 0x2d, 0x80, 0xf9, 0x21, 0x8e, 0xa8,
0xc3, 0x73, 0xf2, 0x15, 0x60, 0x75, 0xb9, 0xa2, 0x2f, 0x73, 0x1f, 0xd0, 0x0d, 0xdc, 0x33, 0xfa,
0xa9, 0x54, 0x23, 0xd6, 0x20, 0xb6, 0x21, 0x8a, 0xc4, 0x33, 0x77, 0xa1, 0xbd, 0x9b, 0x64, 0x7e,
0x9b, 0x96, 0xdf, 0x94, 0x04, 0x32, 0x9b, 0x25, 0x55, 0x68, 0xf4, 0x78, 0x8c, 0x31, 0x9b, 0xe3,
0x0b, 0xd0, 0xc9, 0x2b, 0x44, 0xba, 0xf6, 0xe6, 0xbb, 0xe0, 0x67, 0xa2, 0x1f, 0x6d, 0x0b, 0xd0,
0x39, 0x51, 0x31, 0x9e, 0x49, 0x85, 0x31, 0x9b, 0xf1, 0xed, 0x95, 0x17, 0xa6, 0xaa, 0x73, 0x4c,
0x19, 0x20, 0xb2, 0x1a, 0x86, 0xd4, 0x23, 0xf7, 0x85, 0xad, 0x41, 0x67, 0xd4, 0xb3, 0x21, 0xda,
0xc8, 0xc8, 0xd3, 0xba, 0xfb, 0x88, 0x7a, 0x67, 0x78, 0xae, 0x9f, 0x56, 0x98, 0x65, 0xe7, 0xb4,
0xd3, 0x1e, 0xba, 0xe1, 0xc4, 0x3a, 0x4c, 0x7b, 0x5a, 0x9d, 0xc9, 0x91, 0x65, 0x92, 0x76, 0xda,
0xd7, 0x22, 0xae, 0xb9, 0x7f, 0x89, 0xba, 0x76, 0x80, 0x09, 0x0a, 0x5b, 0x67, 0x7d, 0xe2, 0x2f,
0x98, 0x0f, 0x75, 0x2b, 0x91, 0xc2, 0xb2, 0x84, 0x8e, 0x42, 0x51, 0xe6, 0x62, 0x4a, 0x45, 0xd9,
0x4a, 0x1c, 0x9a, 0x5c, 0x56, 0x7c, 0x05, 0x96, 0x72, 0xfb, 0x23, 0x61, 0x9c, 0xf4, 0x24, 0x3f,
0x0b, 0x7c, 0xf9, 0x8d, 0x1e, 0x57, 0xd8, 0xcf, 0x69, 0x9e, 0xcd, 0xdf, 0x17, 0xb6, 0x82, 0x7e,
0x11, 0xf0, 0x55, 0xb8, 0x3a, 0x3d, 0x5a, 0x85, 0xff, 0x32, 0xe0, 0xcb, 0xb0, 0x48, 0x47, 0x2b,
0x31, 0xcb, 0x7e, 0xe5, 0x41, 0x3a, 0x44, 0x0d, 0xfc, 0xb5, 0x67, 0x28, 0x4e, 0x51, 0xc3, 0x7f,
0xe3, 0x37, 0x23, 0x86, 0xa2, 0x09, 0x2c, 0x7b, 0x2f, 0xa0, 0x48, 0xa7, 0x9b, 0x15, 0x30, 0x7b,
0xdf, 0x1b, 0x12, 0x6b, 0x69, 0xf8, 0x81, 0x37, 0x2c, 0x38, 0x4b, 0xf4, 0x43, 0x8f, 0xde, 0x17,
0x2a, 0xd6, 0x67, 0x67, 0x25, 0xfa, 0x2c, 0xe0, 0x6b, 0xb0, 0x4c, 0xee, 0xdb, 0x22, 0x11, 0x2a,
0xaa, 0xec, 0x3f, 0x0a, 0xf8, 0x35, 0x60, 0x2f, 0x6c, 0x67, 0xd9, 0xdb, 0x0d, 0xce, 0xa6, 0xf9,
0xf5, 0xcd, 0xcf, 0xbe, 0xdd, 0xf0, 0xb9, 0x2a, 0x0c, 0x73, 0xec, 0x3b, 0x0d, 0xbe, 0x98, 0x27,
0x3d, 0x97, 0xbf, 0xdb, 0xe0, 0x5d, 0x98, 0xeb, 0x2b, 0x8b, 0xc6, 0xb1, 0xaf, 0x53, 0x7f, 0xce,
0xe5, 0x97, 0x95, 0x7d, 0x83, 0xae, 0xc1, 0xac, 0xef, 0x4f, 0xf6, 0x8e, 0x57, 0xe4, 0x03, 0x95,
0xfd, 0xbd, 0xe9, 0x33, 0x50, 0x9f, 0xae, 0xff, 0x68, 0xd2, 0x4e, 0x7b, 0xe8, 0xaa, 0x5b, 0xc7,
0xfe, 0xd9, 0xe4, 0x37, 0xe0, 0xda, 0x14, 0xf3, 0xb3, 0xae, 0xbc, 0x6f, 0xff, 0x6a, 0xf2, 0x75,
0xb8, 0x4e, 0x17, 0xbf, 0x6c, 0x0f, 0x72, 0x92, 0xd6, 0xc9, 0xc8, 0xb2, 0x7f, 0x37, 0xf9, 0x4d,
0x58, 0xdd, 0x43, 0x57, 0xa6, 0xbd, 0xa6, 0xfc, 0x4f, 0x93, 0x2f, 0xc0, 0x95, 0x01, 0x0d, 0x43,
0xbc, 0x40, 0xf6, 0x5e, 0x93, 0x6a, 0x37, 0x15, 0x8b, 0x70, 0xde, 0x6f, 0x52, 0x46, 0xdf, 0x14,
0x2e, 0x3a, 0x0f, 0xd3, 0xde, 0xb9, 0x50, 0x0a, 0x13, 0xcb, 0x3e, 0x68, 0x52, 0xde, 0x06, 0x98,
0xea, 0x0b, 0xac, 0xc1, 0x1f, 0xd2, 0x23, 0xc7, 0xbd, 0xf1, 0xe7, 0x33, 0x34, 0x93, 0x52, 0xf1,
0xac, 0x49, 0x15, 0xc8, 0xed, 0x9f, 0xd7, 0x7c, 0xd4, 0xe4, 0xaf, 0xc2, 0x5a, 0x7e, 0xa7, 0xa7,
0xf9, 0x27, 0xe5, 0x08, 0xfb, 0xea, 0x4c, 0xb3, 0xb7, 0x5b, 0x25, 0x63, 0x88, 0x89, 0x13, 0xa5,
0xdf, 0x57, 0x5b, 0x54, 0xa2, 0xc2, 0xc3, 0x9b, 0xfe, 0xb6, 0xc5, 0x97, 0x00, 0xf2, 0x2b, 0xe5,
0x81, 0xdf, 0xb5, 0x28, 0xf4, 0x3d, 0x74, 0xf4, 0xca, 0x5d, 0xa0, 0x99, 0x78, 0xf4, 0xf7, 0x53,
0xb4, 0x3e, 0x78, 0xd8, 0x1f, 0x5a, 0x94, 0x8a, 0x63, 0x99, 0xe2, 0xb1, 0x8c, 0x9e, 0xb0, 0xef,
0x75, 0x28, 0x15, 0x3e, 0xd2, 0x43, 0x1d, 0x23, 0xd9, 0x58, 0xf6, 0x6e, 0x87, 0xea, 0x4d, 0x6d,
0x94, 0xd7, 0xfb, 0xfb, 0x5e, 0x2e, 0x86, 0x67, 0x3f, 0x64, 0x3f, 0xa0, 0xd7, 0x16, 0x0a, 0xf9,
0x78, 0xf8, 0x90, 0xfd, 0xb0, 0x43, 0x5b, 0x6d, 0x25, 0x89, 0x8e, 0x84, 0x2b, 0x9b, 0xf9, 0x47,
0x1d, 0xba, 0x0d, 0xb5, 0xdd, 0x8b, 0x6a, 0xfc, 0xb8, 0x43, 0x39, 0x2d, 0x70, 0xdf, 0x2b, 0x21,
0x8d, 0xc3, 0x9f, 0x78, 0x56, 0xfa, 0x44, 0x52, 0x24, 0xc7, 0x8e, 0xfd, 0xd4, 0xdb, 0xbd, 0xf8,
0x80, 0xb0, 0x3f, 0x76, 0x8b, 0xbe, 0xa9, 0x61, 0x7f, 0xea, 0xe6, 0xed, 0xfd, 0xfc, 0x8b, 0xc1,
0xfe, 0xec, 0xe1, 0x17, 0x5f, 0x19, 0xf6, 0x97, 0x2e, 0x05, 0x56, 0x7f, 0x28, 0x94, 0x48, 0xd1,
0xb2, 0xbf, 0x76, 0x37, 0x37, 0xa0, 0x1d, 0xda, 0xc4, 0x8f, 0xcc, 0x36, 0x34, 0x43, 0x9b, 0xb0,
0x19, 0x9a, 0x30, 0xdb, 0x5a, 0x27, 0x3b, 0x97, 0x63, 0xf3, 0xe8, 0xd3, 0x2c, 0xd8, 0xdc, 0x86,
0xa5, 0x9e, 0x4e, 0xc7, 0xa2, 0x6c, 0x41, 0x3f, 0x25, 0xf3, 0xf1, 0x8a, 0x71, 0x9e, 0xe6, 0x19,
0x1a, 0x53, 0x3b, 0x97, 0x18, 0x65, 0x7e, 0x18, 0x07, 0x24, 0x92, 0x13, 0x05, 0x18, 0xb3, 0xc6,
0xe6, 0x5b, 0xc0, 0x7a, 0x5a, 0x59, 0x69, 0x1d, 0xaa, 0x68, 0xb2, 0x8f, 0x17, 0x98, 0xf8, 0x91,
0xef, 0x8c, 0x56, 0x23, 0x36, 0xe3, 0x7f, 0x63, 0xe8, 0x7f, 0x55, 0xf9, 0xc3, 0xb0, 0x4d, 0x2f,
0xaa, 0xff, 0x72, 0x2d, 0x02, 0xec, 0x5c, 0xa0, 0x72, 0x99, 0x48, 0x92, 0x09, 0x6b, 0x92, 0xdc,
0xcb, 0xac, 0xd3, 0xa9, 0xfc, 0x8a, 0x7f, 0x7a, 0xbe, 0x19, 0x40, 0x37, 0x7f, 0x05, 0xca, 0xd0,
0x72, 0xf1, 0x08, 0x55, 0x2c, 0x3d, 0x39, 0xfd, 0x18, 0x3c, 0x54, 0xbc, 0x57, 0x41, 0x65, 0x34,
0x74, 0xc2, 0xb8, 0xe9, 0xd7, 0x2e, 0x87, 0x42, 0xfd, 0x54, 0x25, 0x5a, 0xc4, 0xfe, 0x29, 0x2a,
0x5d, 0x8f, 0x84, 0xb1, 0xfe, 0x3d, 0xa2, 0x0f, 0x55, 0xc1, 0x6f, 0xfc, 0x79, 0x62, 0x36, 0x5b,
0x81, 0xd5, 0x99, 0xe7, 0xb6, 0xdf, 0x84, 0x45, 0xa9, 0xa7, 0xbf, 0xd6, 0x91, 0x19, 0x47, 0xdb,
0xdd, 0x9e, 0xff, 0xb5, 0x1e, 0xd1, 0x0f, 0xf6, 0x28, 0xf8, 0xc2, 0xbd, 0x91, 0x74, 0xe7, 0xd9,
0x29, 0xfd, 0x65, 0xef, 0xe6, 0x66, 0xaf, 0x4b, 0x5d, 0xac, 0xee, 0x4a, 0xe5, 0xa8, 0x4e, 0xc9,
0x5d, 0xff, 0xdf, 0xbd, 0x9b, 0xff, 0x77, 0xc7, 0xa7, 0xdf, 0x0a, 0x82, 0xd3, 0x39, 0x0f, 0xdd,
0xfb, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x25, 0x53, 0x30, 0x43, 0x0d, 0x00, 0x00,
}

View File

@ -241,6 +241,7 @@ message SaveBinlogPathsRequest {
repeated FieldBinlog field2StatslogPaths = 8;
repeated FieldBinlog deltalogs = 9;
bool dropped = 10;
bool importing = 11;
}
message CheckPoint {
@ -433,10 +434,11 @@ message ImportTask {
common.Status status = 1;
int64 collection_id = 2; // target collection ID
int64 partition_id = 3; // target partition ID
bool row_based = 4; // the file is row-based or column-based
int64 task_id = 5; // id of the task
repeated string files = 6; // file paths to be imported
repeated common.KeyValuePair infos = 7; // more informations about the task, bucket, etc.
repeated string channel_names = 4; // target channel names of the collection.
bool row_based = 5; // the file is row-based or column-based
int64 task_id = 6; // id of the task
repeated string files = 7; // file paths to be imported
repeated common.KeyValuePair infos = 8; // extra information about the task, bucket, etc.
}
message ImportTaskState {
@ -448,16 +450,17 @@ message ImportTaskState {
}
message ImportTaskInfo {
int64 id = 1; // Task ID.
int64 request_id = 2; // Request ID of the import task.
int64 datanode_id = 3; // ID of DataNode that processes the task.
int64 collection_id = 4; // Collection ID for the import task.
int64 partition_id = 5; // Partition ID for the import task.
string bucket = 6; // Bucket for the import task.
bool row_based = 7; // Boolean indicating whether import files are row-based or column-based.
repeated string files = 8; // A list of files to import.
int64 create_ts = 9; // Timestamp when the import task is created.
ImportTaskState state = 10; // State of the import task.
int64 id = 1; // Task ID.
int64 request_id = 2; // Request ID of the import task.
int64 datanode_id = 3; // ID of DataNode that processes the task.
int64 collection_id = 4; // Collection ID for the import task.
int64 partition_id = 5; // Partition ID for the import task.
repeated string channel_names = 6; // Names of channels for the collection.
string bucket = 7; // Bucket for the import task.
bool row_based = 8; // Boolean indicating whether import files are row-based or column-based.
repeated string files = 9; // A list of files to import.
int64 create_ts = 10; // Timestamp when the import task is created.
ImportTaskState state = 11; // State of the import task.
}
message ImportTaskResponse {

View File

@ -1602,6 +1602,7 @@ type SaveBinlogPathsRequest struct {
Field2StatslogPaths []*FieldBinlog `protobuf:"bytes,8,rep,name=field2StatslogPaths,proto3" json:"field2StatslogPaths,omitempty"`
Deltalogs []*FieldBinlog `protobuf:"bytes,9,rep,name=deltalogs,proto3" json:"deltalogs,omitempty"`
Dropped bool `protobuf:"varint,10,opt,name=dropped,proto3" json:"dropped,omitempty"`
Importing bool `protobuf:"varint,11,opt,name=importing,proto3" json:"importing,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1702,6 +1703,13 @@ func (m *SaveBinlogPathsRequest) GetDropped() bool {
return false
}
func (m *SaveBinlogPathsRequest) GetImporting() bool {
if m != nil {
return m.Importing
}
return false
}
type CheckPoint struct {
SegmentID int64 `protobuf:"varint,1,opt,name=segmentID,proto3" json:"segmentID,omitempty"`
Position *internalpb.MsgPosition `protobuf:"bytes,2,opt,name=position,proto3" json:"position,omitempty"`
@ -3211,10 +3219,11 @@ type ImportTask struct {
Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
CollectionId int64 `protobuf:"varint,2,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"`
PartitionId int64 `protobuf:"varint,3,opt,name=partition_id,json=partitionId,proto3" json:"partition_id,omitempty"`
RowBased bool `protobuf:"varint,4,opt,name=row_based,json=rowBased,proto3" json:"row_based,omitempty"`
TaskId int64 `protobuf:"varint,5,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
Files []string `protobuf:"bytes,6,rep,name=files,proto3" json:"files,omitempty"`
Infos []*commonpb.KeyValuePair `protobuf:"bytes,7,rep,name=infos,proto3" json:"infos,omitempty"`
ChannelNames []string `protobuf:"bytes,4,rep,name=channel_names,json=channelNames,proto3" json:"channel_names,omitempty"`
RowBased bool `protobuf:"varint,5,opt,name=row_based,json=rowBased,proto3" json:"row_based,omitempty"`
TaskId int64 `protobuf:"varint,6,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
Files []string `protobuf:"bytes,7,rep,name=files,proto3" json:"files,omitempty"`
Infos []*commonpb.KeyValuePair `protobuf:"bytes,8,rep,name=infos,proto3" json:"infos,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -3266,6 +3275,13 @@ func (m *ImportTask) GetPartitionId() int64 {
return 0
}
func (m *ImportTask) GetChannelNames() []string {
if m != nil {
return m.ChannelNames
}
return nil
}
func (m *ImportTask) GetRowBased() bool {
if m != nil {
return m.RowBased
@ -3371,11 +3387,12 @@ type ImportTaskInfo struct {
DatanodeId int64 `protobuf:"varint,3,opt,name=datanode_id,json=datanodeId,proto3" json:"datanode_id,omitempty"`
CollectionId int64 `protobuf:"varint,4,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"`
PartitionId int64 `protobuf:"varint,5,opt,name=partition_id,json=partitionId,proto3" json:"partition_id,omitempty"`
Bucket string `protobuf:"bytes,6,opt,name=bucket,proto3" json:"bucket,omitempty"`
RowBased bool `protobuf:"varint,7,opt,name=row_based,json=rowBased,proto3" json:"row_based,omitempty"`
Files []string `protobuf:"bytes,8,rep,name=files,proto3" json:"files,omitempty"`
CreateTs int64 `protobuf:"varint,9,opt,name=create_ts,json=createTs,proto3" json:"create_ts,omitempty"`
State *ImportTaskState `protobuf:"bytes,10,opt,name=state,proto3" json:"state,omitempty"`
ChannelNames []string `protobuf:"bytes,6,rep,name=channel_names,json=channelNames,proto3" json:"channel_names,omitempty"`
Bucket string `protobuf:"bytes,7,opt,name=bucket,proto3" json:"bucket,omitempty"`
RowBased bool `protobuf:"varint,8,opt,name=row_based,json=rowBased,proto3" json:"row_based,omitempty"`
Files []string `protobuf:"bytes,9,rep,name=files,proto3" json:"files,omitempty"`
CreateTs int64 `protobuf:"varint,10,opt,name=create_ts,json=createTs,proto3" json:"create_ts,omitempty"`
State *ImportTaskState `protobuf:"bytes,11,opt,name=state,proto3" json:"state,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -3441,6 +3458,13 @@ func (m *ImportTaskInfo) GetPartitionId() int64 {
return 0
}
func (m *ImportTaskInfo) GetChannelNames() []string {
if m != nil {
return m.ChannelNames
}
return nil
}
func (m *ImportTaskInfo) GetBucket() string {
if m != nil {
return m.Bucket
@ -3643,216 +3667,218 @@ func init() {
func init() { proto.RegisterFile("data_coord.proto", fileDescriptor_82cd95f524594f49) }
var fileDescriptor_82cd95f524594f49 = []byte{
// 3333 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0xcb, 0x6f, 0x1b, 0xd7,
0xd5, 0xf7, 0xf0, 0x25, 0xf2, 0xf0, 0x21, 0xea, 0x5a, 0x91, 0x69, 0xda, 0x96, 0xe5, 0x71, 0xec,
0x28, 0x8e, 0x63, 0x27, 0xf2, 0x17, 0x24, 0xf8, 0xf2, 0x42, 0x24, 0x45, 0x0a, 0xf1, 0x49, 0xfa,
0x94, 0x91, 0x12, 0x17, 0x4d, 0x51, 0x62, 0xc4, 0xb9, 0xa2, 0x26, 0xe2, 0xcc, 0x30, 0x73, 0x87,
0x96, 0x9d, 0x4d, 0x8c, 0x06, 0x28, 0xd0, 0x22, 0x48, 0x5b, 0x74, 0x55, 0xa0, 0x8b, 0xa2, 0x40,
0x81, 0x3e, 0x36, 0xed, 0xb2, 0x2d, 0xba, 0x0f, 0xd2, 0x75, 0xff, 0x86, 0xee, 0xfa, 0x37, 0x14,
0xf7, 0x31, 0x77, 0x1e, 0x1c, 0x92, 0x23, 0xca, 0x8e, 0x77, 0xba, 0x87, 0xe7, 0xdc, 0xc7, 0xb9,
0xe7, 0xfc, 0xce, 0x63, 0xae, 0xa0, 0x6e, 0xe8, 0x9e, 0xde, 0xee, 0x38, 0x8e, 0x6b, 0xdc, 0xe9,
0xbb, 0x8e, 0xe7, 0xa0, 0x39, 0xcb, 0xec, 0x3d, 0x18, 0x10, 0x3e, 0xba, 0x43, 0x7f, 0x6e, 0x56,
0x3a, 0x8e, 0x65, 0x39, 0x36, 0x27, 0x35, 0x6b, 0xa6, 0xed, 0x61, 0xd7, 0xd6, 0x7b, 0x62, 0x5c,
0x09, 0x0b, 0x34, 0x2b, 0xa4, 0x73, 0x84, 0x2d, 0x9d, 0x8f, 0xd4, 0x87, 0x50, 0xd9, 0xe8, 0x0d,
0xc8, 0x91, 0x86, 0x3f, 0x1b, 0x60, 0xe2, 0xa1, 0x57, 0x20, 0x77, 0xa0, 0x13, 0xdc, 0x50, 0x96,
0x94, 0xe5, 0xf2, 0xca, 0xe5, 0x3b, 0x91, 0xb5, 0xc4, 0x2a, 0xdb, 0xa4, 0xbb, 0xaa, 0x13, 0xac,
0x31, 0x4e, 0x84, 0x20, 0x67, 0x1c, 0xb4, 0xd6, 0x1b, 0x99, 0x25, 0x65, 0x39, 0xab, 0xb1, 0xbf,
0x91, 0x0a, 0x95, 0x8e, 0xd3, 0xeb, 0xe1, 0x8e, 0x67, 0x3a, 0x76, 0x6b, 0xbd, 0x91, 0x63, 0xbf,
0x45, 0x68, 0xea, 0xaf, 0x15, 0xa8, 0x8a, 0xa5, 0x49, 0xdf, 0xb1, 0x09, 0x46, 0xf7, 0xa0, 0x40,
0x3c, 0xdd, 0x1b, 0x10, 0xb1, 0xfa, 0xa5, 0xc4, 0xd5, 0xf7, 0x18, 0x8b, 0x26, 0x58, 0x53, 0x2d,
0x9f, 0x1d, 0x5e, 0x1e, 0x2d, 0x02, 0x10, 0xdc, 0xb5, 0xb0, 0xed, 0xb5, 0xd6, 0x49, 0x23, 0xb7,
0x94, 0x5d, 0xce, 0x6a, 0x21, 0x8a, 0xfa, 0x0b, 0x05, 0xea, 0x7b, 0xfe, 0xd0, 0xd7, 0xce, 0x3c,
0xe4, 0x3b, 0xce, 0xc0, 0xf6, 0xd8, 0x06, 0xab, 0x1a, 0x1f, 0xa0, 0x6b, 0x50, 0xe9, 0x1c, 0xe9,
0xb6, 0x8d, 0x7b, 0x6d, 0x5b, 0xb7, 0x30, 0xdb, 0x4a, 0x49, 0x2b, 0x0b, 0xda, 0x8e, 0x6e, 0xe1,
0x54, 0x3b, 0x5a, 0x82, 0x72, 0x5f, 0x77, 0x3d, 0x33, 0xa2, 0xb3, 0x30, 0x49, 0xfd, 0x8d, 0x02,
0x0b, 0xef, 0x11, 0x62, 0x76, 0xed, 0xa1, 0x9d, 0x2d, 0x40, 0xc1, 0x76, 0x0c, 0xdc, 0x5a, 0x67,
0x5b, 0xcb, 0x6a, 0x62, 0x84, 0x2e, 0x41, 0xa9, 0x8f, 0xb1, 0xdb, 0x76, 0x9d, 0x9e, 0xbf, 0xb1,
0x22, 0x25, 0x68, 0x4e, 0x0f, 0xa3, 0x0f, 0x61, 0x8e, 0xc4, 0x26, 0x22, 0x8d, 0xec, 0x52, 0x76,
0xb9, 0xbc, 0x72, 0xfd, 0xce, 0x90, 0x95, 0xdd, 0x89, 0x2f, 0xaa, 0x0d, 0x4b, 0xab, 0x8f, 0x33,
0x70, 0x5e, 0xf2, 0xf1, 0xbd, 0xd2, 0xbf, 0xa9, 0xe6, 0x08, 0xee, 0xca, 0xed, 0xf1, 0x41, 0x1a,
0xcd, 0x49, 0x95, 0x67, 0xc3, 0x2a, 0x4f, 0x61, 0x60, 0x71, 0x7d, 0xe6, 0x87, 0xf4, 0x89, 0xae,
0x42, 0x19, 0x3f, 0xec, 0x9b, 0x2e, 0x6e, 0x7b, 0xa6, 0x85, 0x1b, 0x85, 0x25, 0x65, 0x39, 0xa7,
0x01, 0x27, 0xed, 0x9b, 0x56, 0xd8, 0x22, 0x67, 0x52, 0x5b, 0xa4, 0xfa, 0x5b, 0x05, 0x2e, 0x0c,
0xdd, 0x92, 0x30, 0x71, 0x0d, 0xea, 0xec, 0xe4, 0x81, 0x66, 0xa8, 0xb1, 0x53, 0x85, 0xdf, 0x1c,
0xa7, 0xf0, 0x80, 0x5d, 0x1b, 0x92, 0x0f, 0x6d, 0x32, 0x93, 0x7e, 0x93, 0xc7, 0x70, 0x61, 0x13,
0x7b, 0x62, 0x01, 0xfa, 0x1b, 0x26, 0xd3, 0x43, 0x40, 0xd4, 0x97, 0x32, 0x43, 0xbe, 0xf4, 0xe7,
0x8c, 0xf4, 0x25, 0xb6, 0x54, 0xcb, 0x3e, 0x74, 0xd0, 0x65, 0x28, 0x49, 0x16, 0x61, 0x15, 0x01,
0x01, 0xbd, 0x0e, 0x79, 0xba, 0x53, 0x6e, 0x12, 0xb5, 0x95, 0x6b, 0xc9, 0x67, 0x0a, 0xcd, 0xa9,
0x71, 0x7e, 0xd4, 0x82, 0x1a, 0xf1, 0x74, 0xd7, 0x6b, 0xf7, 0x1d, 0xc2, 0xee, 0x99, 0x19, 0x4e,
0x79, 0x45, 0x8d, 0xce, 0x20, 0x21, 0x72, 0x9b, 0x74, 0x77, 0x05, 0xa7, 0x56, 0x65, 0x92, 0xfe,
0x10, 0xbd, 0x0f, 0x15, 0x6c, 0x1b, 0xc1, 0x44, 0xb9, 0xd4, 0x13, 0x95, 0xb1, 0x6d, 0xc8, 0x69,
0x82, 0xfb, 0xc9, 0xa7, 0xbf, 0x9f, 0xaf, 0x14, 0x68, 0x0c, 0x5f, 0xd0, 0x59, 0x80, 0xf2, 0x4d,
0x2e, 0x84, 0xf9, 0x05, 0x8d, 0xf5, 0x70, 0x79, 0x49, 0x9a, 0x10, 0x51, 0x4d, 0x78, 0x2e, 0xd8,
0x0d, 0xfb, 0xe5, 0xa9, 0x19, 0xcb, 0x97, 0x0a, 0x2c, 0xc4, 0xd7, 0x3a, 0xcb, 0xb9, 0xff, 0x07,
0xf2, 0xa6, 0x7d, 0xe8, 0xf8, 0xc7, 0x5e, 0x1c, 0xe3, 0x67, 0x74, 0x2d, 0xce, 0xac, 0x5a, 0x70,
0x69, 0x13, 0x7b, 0x2d, 0x9b, 0x60, 0xd7, 0x5b, 0x35, 0xed, 0x9e, 0xd3, 0xdd, 0xd5, 0xbd, 0xa3,
0x33, 0xf8, 0x48, 0xc4, 0xdc, 0x33, 0x31, 0x73, 0x57, 0x7f, 0xaf, 0xc0, 0xe5, 0xe4, 0xf5, 0xc4,
0xd1, 0x9b, 0x50, 0x3c, 0x34, 0x71, 0xcf, 0xa0, 0x3a, 0x53, 0x98, 0xce, 0xe4, 0x98, 0xfa, 0x4a,
0x9f, 0x32, 0x8b, 0x13, 0x5e, 0x1b, 0x61, 0xa0, 0x7b, 0x9e, 0x6b, 0xda, 0xdd, 0x2d, 0x93, 0x78,
0x1a, 0xe7, 0x0f, 0xe9, 0x33, 0x9b, 0xde, 0x32, 0x7f, 0xaa, 0xc0, 0xe2, 0x26, 0xf6, 0xd6, 0x24,
0xd4, 0xd2, 0xdf, 0x4d, 0xe2, 0x99, 0x1d, 0xf2, 0x74, 0x93, 0x88, 0x84, 0x98, 0xa9, 0xfe, 0x4c,
0x81, 0xab, 0x23, 0x37, 0x23, 0x54, 0x27, 0xa0, 0xc4, 0x07, 0xda, 0x64, 0x28, 0xf9, 0x3f, 0xfc,
0xe8, 0x63, 0xbd, 0x37, 0xc0, 0xbb, 0xba, 0xe9, 0x72, 0x28, 0x99, 0x12, 0x58, 0xff, 0xa4, 0xc0,
0x95, 0x4d, 0xec, 0xed, 0xfa, 0x61, 0xe6, 0x19, 0x6a, 0x27, 0x45, 0x46, 0xf1, 0x35, 0xbf, 0xcc,
0xc4, 0xdd, 0x3e, 0x13, 0xf5, 0x2d, 0x32, 0x3f, 0x08, 0x39, 0xe4, 0x1a, 0xcf, 0x05, 0x84, 0xf2,
0xd4, 0xc7, 0x59, 0xa8, 0x7c, 0x2c, 0xf2, 0x03, 0x16, 0x46, 0xe2, 0x7a, 0x50, 0x92, 0xf5, 0x10,
0x4a, 0x29, 0x92, 0xb2, 0x8c, 0x4d, 0xa8, 0x12, 0x8c, 0x8f, 0xa7, 0x09, 0x1a, 0x15, 0x2a, 0x28,
0xc1, 0x7e, 0x0b, 0xe6, 0x06, 0xf6, 0x21, 0x4d, 0x6b, 0xb1, 0x21, 0x4e, 0xc1, 0xb3, 0xcb, 0xc9,
0xc8, 0x33, 0x2c, 0x88, 0x3e, 0x80, 0xd9, 0xf8, 0x5c, 0xf9, 0x54, 0x73, 0xc5, 0xc5, 0x50, 0x0b,
0xea, 0x86, 0xeb, 0xf4, 0xfb, 0xd8, 0x68, 0x13, 0x7f, 0xaa, 0x42, 0xba, 0xa9, 0x84, 0x9c, 0x3f,
0x95, 0xfa, 0x13, 0x05, 0x16, 0xee, 0xeb, 0x5e, 0xe7, 0x68, 0xdd, 0x12, 0x97, 0x73, 0x06, 0xd3,
0x7e, 0x1b, 0x4a, 0x0f, 0xc4, 0x45, 0xf8, 0xf8, 0x75, 0x35, 0x61, 0x43, 0xe1, 0x2b, 0xd7, 0x02,
0x09, 0xf5, 0x1b, 0x05, 0xe6, 0x59, 0x11, 0xe1, 0xef, 0xee, 0xbb, 0x77, 0xb2, 0x09, 0x85, 0x04,
0xba, 0x09, 0x35, 0x4b, 0x77, 0x8f, 0xf7, 0x02, 0x9e, 0x3c, 0xe3, 0x89, 0x51, 0xd5, 0x87, 0x00,
0x62, 0xb4, 0x4d, 0xba, 0x53, 0xec, 0xff, 0x0d, 0x98, 0x11, 0xab, 0x0a, 0x7f, 0x9b, 0x74, 0xb1,
0x3e, 0xbb, 0xfa, 0xad, 0x02, 0xb5, 0x00, 0x41, 0x99, 0x57, 0xd5, 0x20, 0x23, 0x7d, 0x29, 0xd3,
0x5a, 0x47, 0x6f, 0x43, 0x81, 0x97, 0x8d, 0x62, 0xee, 0x1b, 0xd1, 0xb9, 0x45, 0x49, 0x19, 0x82,
0x61, 0x46, 0xd0, 0x84, 0x10, 0xd5, 0x91, 0x44, 0x1d, 0x5e, 0x61, 0x64, 0xb5, 0x10, 0x05, 0xb5,
0x60, 0x36, 0x9a, 0xb4, 0xf9, 0x3e, 0xb3, 0x34, 0x0a, 0x6d, 0xd6, 0x75, 0x4f, 0x67, 0x60, 0x53,
0x8b, 0xe4, 0x6c, 0x44, 0xfd, 0x4f, 0x1e, 0xca, 0xa1, 0x53, 0x0e, 0x9d, 0x24, 0x7e, 0xa5, 0x99,
0xc9, 0xb8, 0x99, 0x1d, 0xae, 0x1c, 0x6e, 0x40, 0xcd, 0x64, 0xb1, 0xba, 0x2d, 0x4c, 0x91, 0x81,
0x6b, 0x49, 0xab, 0x72, 0xaa, 0xf0, 0x0b, 0xb4, 0x08, 0x65, 0x7b, 0x60, 0xb5, 0x9d, 0xc3, 0xb6,
0xeb, 0x9c, 0x10, 0x51, 0x82, 0x94, 0xec, 0x81, 0xf5, 0xff, 0x87, 0x9a, 0x73, 0x42, 0x82, 0x2c,
0xb7, 0x70, 0xca, 0x2c, 0x77, 0x11, 0xca, 0x96, 0xfe, 0x90, 0xce, 0xda, 0xb6, 0x07, 0x16, 0xab,
0x4e, 0xb2, 0x5a, 0xc9, 0xd2, 0x1f, 0x6a, 0xce, 0xc9, 0xce, 0xc0, 0x42, 0xcb, 0x50, 0xef, 0xe9,
0xc4, 0x6b, 0x87, 0xcb, 0x9b, 0x22, 0x2b, 0x6f, 0x6a, 0x94, 0xfe, 0x7e, 0x50, 0xe2, 0x0c, 0xe7,
0xcb, 0xa5, 0x33, 0xe4, 0xcb, 0x86, 0xd5, 0x0b, 0x26, 0x82, 0xf4, 0xf9, 0xb2, 0x61, 0xf5, 0xe4,
0x34, 0x6f, 0xc0, 0xcc, 0x01, 0xcb, 0x80, 0x48, 0xa3, 0x3c, 0x12, 0xa1, 0x36, 0x68, 0xf2, 0xc3,
0x13, 0x25, 0xcd, 0x67, 0x47, 0x6f, 0x41, 0x89, 0x85, 0x1e, 0x26, 0x5b, 0x49, 0x25, 0x1b, 0x08,
0x50, 0x69, 0x03, 0xf7, 0x3c, 0x9d, 0x49, 0x57, 0xd3, 0x49, 0x4b, 0x01, 0xf4, 0x0a, 0x9c, 0xef,
0xb8, 0x58, 0xf7, 0xb0, 0xb1, 0xfa, 0x68, 0xcd, 0xb1, 0xfa, 0x3a, 0x33, 0xa6, 0x46, 0x6d, 0x49,
0x59, 0x2e, 0x6a, 0x49, 0x3f, 0x51, 0x60, 0xe8, 0xc8, 0xd1, 0x86, 0xeb, 0x58, 0x8d, 0x59, 0x0e,
0x0c, 0x51, 0x2a, 0xba, 0x02, 0xe0, 0x43, 0xb7, 0xee, 0x35, 0xea, 0xec, 0x16, 0x4b, 0x82, 0xf2,
0x9e, 0xa7, 0x7e, 0x01, 0xf3, 0x81, 0x85, 0x84, 0x6e, 0x63, 0xf8, 0x62, 0x95, 0x69, 0x2f, 0x76,
0x7c, 0xee, 0xfa, 0x97, 0x1c, 0x2c, 0xec, 0xe9, 0x0f, 0xf0, 0xd3, 0x4f, 0x93, 0x53, 0xe1, 0xf1,
0x16, 0xcc, 0xb1, 0xcc, 0x78, 0x25, 0xb4, 0x9f, 0x31, 0x11, 0x38, 0x7c, 0x9d, 0xc3, 0x82, 0xe8,
0x5d, 0x9a, 0x3a, 0xe0, 0xce, 0xf1, 0xae, 0x63, 0x06, 0xd1, 0xf7, 0x4a, 0xc2, 0x3c, 0x6b, 0x92,
0x4b, 0x0b, 0x4b, 0xa0, 0xdd, 0x61, 0x68, 0xe3, 0x71, 0xf7, 0x85, 0xb1, 0xf5, 0x57, 0xa0, 0xfd,
0x38, 0xc2, 0xa1, 0x06, 0xcc, 0x88, 0xe8, 0xce, 0xfc, 0xbe, 0xa8, 0xf9, 0x43, 0xb4, 0x0b, 0xe7,
0xf9, 0x09, 0xf6, 0x84, 0x51, 0xf3, 0xc3, 0x17, 0x53, 0x1d, 0x3e, 0x49, 0x34, 0xea, 0x13, 0xa5,
0xd3, 0xfa, 0x44, 0x03, 0x66, 0x84, 0x9d, 0x32, 0x2c, 0x28, 0x6a, 0xfe, 0x90, 0x16, 0x11, 0x10,
0x68, 0x6c, 0x42, 0x2f, 0xe0, 0x1d, 0x28, 0x4a, 0x1b, 0xce, 0xa4, 0xb6, 0x61, 0x29, 0x13, 0x47,
0xe1, 0x6c, 0x0c, 0x85, 0xd5, 0x7f, 0x2a, 0x50, 0x59, 0xa7, 0x9b, 0xde, 0x72, 0xba, 0x2c, 0x66,
0xdc, 0x80, 0x9a, 0x8b, 0x3b, 0x8e, 0x6b, 0xb4, 0xb1, 0xed, 0xb9, 0x26, 0xe6, 0xf5, 0x66, 0x4e,
0xab, 0x72, 0xea, 0xfb, 0x9c, 0x48, 0xd9, 0x28, 0xb0, 0x12, 0x4f, 0xb7, 0xfa, 0xed, 0x43, 0xea,
0xc0, 0x19, 0xce, 0x26, 0xa9, 0xcc, 0x7f, 0xaf, 0x41, 0x25, 0x60, 0xf3, 0x1c, 0xb6, 0x7e, 0x4e,
0x2b, 0x4b, 0xda, 0xbe, 0x83, 0x9e, 0x87, 0x1a, 0xd3, 0x5a, 0xbb, 0xe7, 0x74, 0xdb, 0xb4, 0x36,
0x13, 0xe1, 0xa4, 0x62, 0x88, 0x6d, 0xd1, 0xdb, 0x88, 0x72, 0x11, 0xf3, 0x73, 0x2c, 0x02, 0x8a,
0xe4, 0xda, 0x33, 0x3f, 0xc7, 0x34, 0x9a, 0x57, 0x69, 0x74, 0xdc, 0x71, 0x0c, 0xbc, 0x3f, 0x65,
0x2e, 0x91, 0xa2, 0x2f, 0x77, 0x19, 0x4a, 0xf2, 0x04, 0xe2, 0x48, 0x01, 0x01, 0x6d, 0x40, 0xcd,
0x4f, 0x33, 0xdb, 0xbc, 0x7a, 0xc8, 0x8d, 0xcc, 0xed, 0x42, 0xf1, 0x8d, 0x68, 0x55, 0x5f, 0x8c,
0x0d, 0xd5, 0x0d, 0xa8, 0x84, 0x7f, 0xa6, 0xab, 0xee, 0xc5, 0x0d, 0x45, 0x12, 0xa8, 0xbd, 0xed,
0x0c, 0x2c, 0x7a, 0xa7, 0x02, 0x3a, 0xfc, 0xa1, 0xfa, 0xa5, 0x02, 0x55, 0x11, 0x94, 0xf7, 0x64,
0xdf, 0x98, 0x1d, 0x4d, 0x61, 0x47, 0x63, 0x7f, 0xa3, 0xff, 0x8d, 0x36, 0x9d, 0x9e, 0x4f, 0x74,
0x73, 0x36, 0x09, 0xcb, 0x7f, 0x23, 0x11, 0x39, 0x4d, 0xb5, 0xfa, 0x98, 0x1a, 0x9a, 0xb8, 0x1a,
0x66, 0x68, 0x0d, 0x98, 0xd1, 0x0d, 0xc3, 0xc5, 0x84, 0x88, 0x7d, 0xf8, 0x43, 0xfa, 0xcb, 0x03,
0xec, 0x12, 0xdf, 0xe4, 0xb3, 0x9a, 0x3f, 0x44, 0x6f, 0x41, 0x51, 0x26, 0xcc, 0xd9, 0xa4, 0x24,
0x29, 0xbc, 0x4f, 0x51, 0x5d, 0x49, 0x09, 0xf5, 0xeb, 0x0c, 0xd4, 0x84, 0xc2, 0x56, 0x45, 0xd4,
0x1c, 0xef, 0x7c, 0xab, 0x50, 0x39, 0x0c, 0xbc, 0x7b, 0x5c, 0x17, 0x25, 0x0c, 0x02, 0x11, 0x99,
0x49, 0x0e, 0x18, 0x8d, 0xdb, 0xb9, 0x33, 0xc5, 0xed, 0xfc, 0x29, 0x31, 0x4a, 0xfd, 0x01, 0x94,
0x43, 0xbf, 0x30, 0x70, 0xe5, 0x7d, 0x15, 0xa1, 0x0a, 0x7f, 0x88, 0xee, 0x05, 0x69, 0x09, 0xd7,
0xc1, 0xc5, 0x84, 0x45, 0x62, 0x19, 0x89, 0xfa, 0x07, 0x05, 0x0a, 0x62, 0xe6, 0xab, 0x50, 0x16,
0x68, 0xc2, 0x52, 0x36, 0x3e, 0x3b, 0x08, 0x12, 0xcd, 0xd9, 0x9e, 0x1c, 0x9c, 0x5c, 0x84, 0x62,
0x0c, 0x48, 0x66, 0x04, 0xa2, 0xfb, 0x3f, 0x85, 0xd0, 0x83, 0xfe, 0xc4, 0x80, 0xe3, 0x1b, 0x85,
0xf5, 0x84, 0x35, 0xdc, 0x71, 0x1e, 0x60, 0xf7, 0xd1, 0xd9, 0x3b, 0x6f, 0x6f, 0x86, 0x2c, 0x35,
0x65, 0x69, 0x27, 0x05, 0xd0, 0x9b, 0x81, 0xba, 0xb3, 0x49, 0x8d, 0x87, 0x30, 0x74, 0x08, 0x3b,
0x0b, 0xd4, 0xfe, 0x73, 0xde, 0x43, 0x8c, 0x1e, 0x65, 0xda, 0x94, 0xe4, 0x89, 0x54, 0x0c, 0xea,
0x2f, 0x15, 0xb8, 0xb8, 0x89, 0xbd, 0x8d, 0x68, 0x5d, 0xfe, 0xac, 0x77, 0x65, 0x41, 0x33, 0x69,
0x53, 0x67, 0xb9, 0xf5, 0x26, 0x14, 0x65, 0x87, 0x81, 0x77, 0x77, 0xe5, 0x58, 0xfd, 0xb1, 0x02,
0x0d, 0xb1, 0x0a, 0x5b, 0x93, 0x66, 0xc3, 0x3d, 0xec, 0x61, 0xe3, 0xbb, 0x2e, 0x79, 0xff, 0xa1,
0x40, 0x3d, 0x0c, 0xe5, 0x0c, 0x8d, 0x5f, 0x83, 0x3c, 0xeb, 0x2c, 0x88, 0x1d, 0x4c, 0x34, 0x56,
0xce, 0x4d, 0x21, 0x83, 0x65, 0x68, 0xfb, 0x32, 0xea, 0x88, 0x61, 0x10, 0x4f, 0xb2, 0xa7, 0x8f,
0x27, 0x22, 0xbe, 0x3a, 0x03, 0x3a, 0x2f, 0xef, 0xdc, 0x05, 0x04, 0xf5, 0xab, 0x0c, 0x34, 0x82,
0x52, 0xe2, 0x3b, 0x07, 0xf4, 0x11, 0x89, 0x66, 0xf6, 0x09, 0x25, 0x9a, 0xb9, 0xd3, 0x82, 0xf8,
0xdf, 0x33, 0x50, 0x0b, 0xd4, 0xb1, 0xdb, 0xd3, 0x6d, 0xb4, 0x00, 0x85, 0x7e, 0x4f, 0x0f, 0x3a,
0x82, 0x62, 0x84, 0xf6, 0x64, 0x66, 0x12, 0x55, 0xc0, 0x4b, 0x49, 0x97, 0x33, 0x42, 0xc3, 0x5a,
0x6c, 0x0a, 0x5a, 0xa2, 0xf1, 0x24, 0x9f, 0x15, 0xda, 0x22, 0x1b, 0xe2, 0x56, 0x40, 0x6b, 0xec,
0xdb, 0x80, 0xc4, 0xd5, 0xb5, 0x4d, 0xbb, 0x4d, 0x70, 0xc7, 0xb1, 0x0d, 0x7e, 0xa9, 0x79, 0xad,
0x2e, 0x7e, 0x69, 0xd9, 0x7b, 0x9c, 0x8e, 0x5e, 0x83, 0x9c, 0xf7, 0xa8, 0xcf, 0xe1, 0xb9, 0x96,
0x08, 0x7b, 0xc1, 0xbe, 0xf6, 0x1f, 0xf5, 0xb1, 0xc6, 0xd8, 0xd1, 0x22, 0x00, 0x9d, 0xca, 0x73,
0xf5, 0x07, 0xb8, 0xe7, 0x7f, 0xcb, 0x0c, 0x28, 0xd4, 0x4c, 0xfd, 0x5e, 0xc5, 0x0c, 0x8f, 0x09,
0x62, 0xa8, 0xfe, 0x35, 0x03, 0xf5, 0x60, 0x4a, 0x0d, 0x93, 0x41, 0xcf, 0x1b, 0xa9, 0xbf, 0xf1,
0x05, 0xda, 0xa4, 0x48, 0xff, 0x2e, 0x94, 0x45, 0xdf, 0xe4, 0x14, 0x17, 0x0d, 0x5c, 0x64, 0x6b,
0x8c, 0xe5, 0xe5, 0x9f, 0x90, 0xe5, 0x15, 0x4e, 0x6b, 0x79, 0x7b, 0xb0, 0xe0, 0x03, 0x5a, 0xc0,
0xb0, 0x8d, 0x3d, 0x7d, 0x4c, 0x26, 0x71, 0x15, 0xca, 0x3c, 0x50, 0xf1, 0x08, 0xcd, 0x93, 0x6b,
0x38, 0x90, 0x55, 0xa7, 0xfa, 0x43, 0x98, 0x67, 0x80, 0x10, 0x6f, 0xaf, 0xa6, 0xe9, 0x75, 0xab,
0x32, 0x75, 0xa7, 0x69, 0x3a, 0xb7, 0xee, 0x92, 0x16, 0xa1, 0xa9, 0x5b, 0xf0, 0x5c, 0x6c, 0xfe,
0x33, 0x00, 0x3e, 0xcd, 0x71, 0x16, 0xf6, 0xa2, 0x9f, 0x2a, 0xa7, 0x0f, 0x6b, 0x57, 0x64, 0x37,
0xb5, 0x6d, 0x1a, 0x71, 0xfb, 0x32, 0xd0, 0x3b, 0x50, 0xb2, 0xf1, 0x49, 0x3b, 0x8c, 0xaa, 0x29,
0x9a, 0x66, 0x45, 0x1b, 0x9f, 0xb0, 0xbf, 0xd4, 0x1d, 0xb8, 0x30, 0xb4, 0xd5, 0xb3, 0x9c, 0xfd,
0x6f, 0x0a, 0x5c, 0x5c, 0x77, 0x9d, 0xfe, 0xc7, 0xa6, 0xeb, 0x0d, 0xf4, 0x5e, 0xf4, 0x63, 0xc5,
0xd3, 0x29, 0xbc, 0x3e, 0x08, 0xc5, 0x57, 0x0e, 0xb8, 0xb7, 0x13, 0xcc, 0x75, 0x78, 0x53, 0xe2,
0xd0, 0xa1, 0x68, 0xfc, 0xef, 0x6c, 0xd2, 0xe6, 0x05, 0xdf, 0x84, 0x28, 0x92, 0x26, 0xfd, 0x48,
0xec, 0xc4, 0x64, 0xa7, 0xed, 0xc4, 0x8c, 0xf0, 0xfc, 0xdc, 0x13, 0xf2, 0xfc, 0xd3, 0x16, 0x0e,
0xe8, 0x03, 0x88, 0x76, 0xc9, 0x18, 0xe4, 0x4e, 0xd5, 0x5e, 0x5b, 0x05, 0x08, 0x3a, 0x46, 0xe2,
0xa5, 0x49, 0x9a, 0x69, 0x42, 0x52, 0xf4, 0xb6, 0x24, 0xca, 0xb2, 0x4e, 0x6f, 0xa4, 0xc3, 0xf1,
0x21, 0x34, 0x93, 0xac, 0xf4, 0x2c, 0x96, 0xff, 0x75, 0x06, 0xa0, 0x65, 0xf5, 0x1d, 0xd7, 0xdb,
// 3362 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0xdb, 0x6f, 0x1b, 0xc7,
0xd5, 0xf7, 0xf2, 0x26, 0xf2, 0xf0, 0x22, 0x6a, 0xac, 0xc8, 0x34, 0x6d, 0xcb, 0xf2, 0x3a, 0x76,
0x14, 0xc7, 0xb1, 0x13, 0xf9, 0x0b, 0x12, 0x7c, 0xb9, 0x21, 0x92, 0x22, 0x85, 0xf8, 0x24, 0x7d,
0xca, 0x4a, 0x89, 0x3f, 0x7c, 0x29, 0x4a, 0xac, 0xb8, 0x23, 0x6a, 0x23, 0xee, 0x2e, 0xb3, 0xb3,
0xb4, 0xec, 0xbc, 0xc4, 0x68, 0x80, 0x02, 0x2d, 0x82, 0xb4, 0x45, 0x9f, 0x0a, 0xf4, 0xa1, 0x28,
0x50, 0xa0, 0x97, 0x97, 0x02, 0x7d, 0x6a, 0x8b, 0xbe, 0x07, 0xed, 0x43, 0x9f, 0xfa, 0x37, 0xf4,
0xad, 0xfd, 0x17, 0x8a, 0xb9, 0xec, 0xec, 0x85, 0x4b, 0x72, 0x45, 0xd9, 0xf1, 0x9b, 0x66, 0xf6,
0x9c, 0x33, 0x33, 0x67, 0xce, 0xf9, 0x9d, 0x0b, 0x47, 0x50, 0x37, 0x74, 0x4f, 0x6f, 0x77, 0x1c,
0xc7, 0x35, 0xee, 0xf4, 0x5d, 0xc7, 0x73, 0xd0, 0x9c, 0x65, 0xf6, 0x1e, 0x0c, 0x08, 0x1f, 0xdd,
0xa1, 0x9f, 0x9b, 0x95, 0x8e, 0x63, 0x59, 0x8e, 0xcd, 0xa7, 0x9a, 0x35, 0xd3, 0xf6, 0xb0, 0x6b,
0xeb, 0x3d, 0x31, 0xae, 0x84, 0x19, 0x9a, 0x15, 0xd2, 0x39, 0xc2, 0x96, 0xce, 0x47, 0xea, 0x43,
0xa8, 0x6c, 0xf4, 0x06, 0xe4, 0x48, 0xc3, 0x9f, 0x0d, 0x30, 0xf1, 0xd0, 0x2b, 0x90, 0x3b, 0xd0,
0x09, 0x6e, 0x28, 0x4b, 0xca, 0x72, 0x79, 0xe5, 0xf2, 0x9d, 0xc8, 0x5a, 0x62, 0x95, 0x6d, 0xd2,
0x5d, 0xd5, 0x09, 0xd6, 0x18, 0x25, 0x42, 0x90, 0x33, 0x0e, 0x5a, 0xeb, 0x8d, 0xcc, 0x92, 0xb2,
0x9c, 0xd5, 0xd8, 0xdf, 0x48, 0x85, 0x4a, 0xc7, 0xe9, 0xf5, 0x70, 0xc7, 0x33, 0x1d, 0xbb, 0xb5,
0xde, 0xc8, 0xb1, 0x6f, 0x91, 0x39, 0xf5, 0xe7, 0x0a, 0x54, 0xc5, 0xd2, 0xa4, 0xef, 0xd8, 0x04,
0xa3, 0x7b, 0x50, 0x20, 0x9e, 0xee, 0x0d, 0x88, 0x58, 0xfd, 0x52, 0xe2, 0xea, 0x7b, 0x8c, 0x44,
0x13, 0xa4, 0xa9, 0x96, 0xcf, 0x0e, 0x2f, 0x8f, 0x16, 0x01, 0x08, 0xee, 0x5a, 0xd8, 0xf6, 0x5a,
0xeb, 0xa4, 0x91, 0x5b, 0xca, 0x2e, 0x67, 0xb5, 0xd0, 0x8c, 0xfa, 0x13, 0x05, 0xea, 0x7b, 0xfe,
0xd0, 0xd7, 0xce, 0x3c, 0xe4, 0x3b, 0xce, 0xc0, 0xf6, 0xd8, 0x06, 0xab, 0x1a, 0x1f, 0xa0, 0x6b,
0x50, 0xe9, 0x1c, 0xe9, 0xb6, 0x8d, 0x7b, 0x6d, 0x5b, 0xb7, 0x30, 0xdb, 0x4a, 0x49, 0x2b, 0x8b,
0xb9, 0x1d, 0xdd, 0xc2, 0xa9, 0x76, 0xb4, 0x04, 0xe5, 0xbe, 0xee, 0x7a, 0x66, 0x44, 0x67, 0xe1,
0x29, 0xf5, 0x17, 0x0a, 0x2c, 0xbc, 0x47, 0x88, 0xd9, 0xb5, 0x87, 0x76, 0xb6, 0x00, 0x05, 0xdb,
0x31, 0x70, 0x6b, 0x9d, 0x6d, 0x2d, 0xab, 0x89, 0x11, 0xba, 0x04, 0xa5, 0x3e, 0xc6, 0x6e, 0xdb,
0x75, 0x7a, 0xfe, 0xc6, 0x8a, 0x74, 0x42, 0x73, 0x7a, 0x18, 0x7d, 0x08, 0x73, 0x24, 0x26, 0x88,
0x34, 0xb2, 0x4b, 0xd9, 0xe5, 0xf2, 0xca, 0xf5, 0x3b, 0x43, 0x56, 0x76, 0x27, 0xbe, 0xa8, 0x36,
0xcc, 0xad, 0x3e, 0xce, 0xc0, 0x79, 0x49, 0xc7, 0xf7, 0x4a, 0xff, 0xa6, 0x9a, 0x23, 0xb8, 0x2b,
0xb7, 0xc7, 0x07, 0x69, 0x34, 0x27, 0x55, 0x9e, 0x0d, 0xab, 0x3c, 0x85, 0x81, 0xc5, 0xf5, 0x99,
0x1f, 0xd2, 0x27, 0xba, 0x0a, 0x65, 0xfc, 0xb0, 0x6f, 0xba, 0xb8, 0xed, 0x99, 0x16, 0x6e, 0x14,
0x96, 0x94, 0xe5, 0x9c, 0x06, 0x7c, 0x6a, 0xdf, 0xb4, 0xc2, 0x16, 0x39, 0x93, 0xda, 0x22, 0xd5,
0x5f, 0x2a, 0x70, 0x61, 0xe8, 0x96, 0x84, 0x89, 0x6b, 0x50, 0x67, 0x27, 0x0f, 0x34, 0x43, 0x8d,
0x9d, 0x2a, 0xfc, 0xe6, 0x38, 0x85, 0x07, 0xe4, 0xda, 0x10, 0x7f, 0x68, 0x93, 0x99, 0xf4, 0x9b,
0x3c, 0x86, 0x0b, 0x9b, 0xd8, 0x13, 0x0b, 0xd0, 0x6f, 0x98, 0x4c, 0x0f, 0x01, 0x51, 0x5f, 0xca,
0x0c, 0xf9, 0xd2, 0xef, 0x33, 0xd2, 0x97, 0xd8, 0x52, 0x2d, 0xfb, 0xd0, 0x41, 0x97, 0xa1, 0x24,
0x49, 0x84, 0x55, 0x04, 0x13, 0xe8, 0x75, 0xc8, 0xd3, 0x9d, 0x72, 0x93, 0xa8, 0xad, 0x5c, 0x4b,
0x3e, 0x53, 0x48, 0xa6, 0xc6, 0xe9, 0x51, 0x0b, 0x6a, 0xc4, 0xd3, 0x5d, 0xaf, 0xdd, 0x77, 0x08,
0xbb, 0x67, 0x66, 0x38, 0xe5, 0x15, 0x35, 0x2a, 0x41, 0x42, 0xe4, 0x36, 0xe9, 0xee, 0x0a, 0x4a,
0xad, 0xca, 0x38, 0xfd, 0x21, 0x7a, 0x1f, 0x2a, 0xd8, 0x36, 0x02, 0x41, 0xb9, 0xd4, 0x82, 0xca,
0xd8, 0x36, 0xa4, 0x98, 0xe0, 0x7e, 0xf2, 0xe9, 0xef, 0xe7, 0x2b, 0x05, 0x1a, 0xc3, 0x17, 0x74,
0x16, 0xa0, 0x7c, 0x93, 0x33, 0x61, 0x7e, 0x41, 0x63, 0x3d, 0x5c, 0x5e, 0x92, 0x26, 0x58, 0x54,
0x13, 0x9e, 0x0b, 0x76, 0xc3, 0xbe, 0x3c, 0x35, 0x63, 0xf9, 0x52, 0x81, 0x85, 0xf8, 0x5a, 0x67,
0x39, 0xf7, 0x7f, 0x41, 0xde, 0xb4, 0x0f, 0x1d, 0xff, 0xd8, 0x8b, 0x63, 0xfc, 0x8c, 0xae, 0xc5,
0x89, 0x55, 0x0b, 0x2e, 0x6d, 0x62, 0xaf, 0x65, 0x13, 0xec, 0x7a, 0xab, 0xa6, 0xdd, 0x73, 0xba,
0xbb, 0xba, 0x77, 0x74, 0x06, 0x1f, 0x89, 0x98, 0x7b, 0x26, 0x66, 0xee, 0xea, 0xaf, 0x15, 0xb8,
0x9c, 0xbc, 0x9e, 0x38, 0x7a, 0x13, 0x8a, 0x87, 0x26, 0xee, 0x19, 0x54, 0x67, 0x0a, 0xd3, 0x99,
0x1c, 0x53, 0x5f, 0xe9, 0x53, 0x62, 0x71, 0xc2, 0x6b, 0x23, 0x0c, 0x74, 0xcf, 0x73, 0x4d, 0xbb,
0xbb, 0x65, 0x12, 0x4f, 0xe3, 0xf4, 0x21, 0x7d, 0x66, 0xd3, 0x5b, 0xe6, 0x0f, 0x15, 0x58, 0xdc,
0xc4, 0xde, 0x9a, 0x84, 0x5a, 0xfa, 0xdd, 0x24, 0x9e, 0xd9, 0x21, 0x4f, 0x37, 0x89, 0x48, 0x88,
0x99, 0xea, 0x8f, 0x14, 0xb8, 0x3a, 0x72, 0x33, 0x42, 0x75, 0x02, 0x4a, 0x7c, 0xa0, 0x4d, 0x86,
0x92, 0xff, 0xc1, 0x8f, 0x3e, 0xd6, 0x7b, 0x03, 0xbc, 0xab, 0x9b, 0x2e, 0x87, 0x92, 0x29, 0x81,
0xf5, 0x77, 0x0a, 0x5c, 0xd9, 0xc4, 0xde, 0xae, 0x1f, 0x66, 0x9e, 0xa1, 0x76, 0x52, 0x64, 0x14,
0x5f, 0xf3, 0xcb, 0x4c, 0xdc, 0xed, 0x33, 0x51, 0xdf, 0x22, 0xf3, 0x83, 0x90, 0x43, 0xae, 0xf1,
0x5c, 0x40, 0x28, 0x4f, 0x7d, 0x9c, 0x85, 0xca, 0xc7, 0x22, 0x3f, 0x60, 0x61, 0x24, 0xae, 0x07,
0x25, 0x59, 0x0f, 0xa1, 0x94, 0x22, 0x29, 0xcb, 0xd8, 0x84, 0x2a, 0xc1, 0xf8, 0x78, 0x9a, 0xa0,
0x51, 0xa1, 0x8c, 0x12, 0xec, 0xb7, 0x60, 0x6e, 0x60, 0x1f, 0xd2, 0xb4, 0x16, 0x1b, 0xe2, 0x14,
0x3c, 0xbb, 0x9c, 0x8c, 0x3c, 0xc3, 0x8c, 0xe8, 0x03, 0x98, 0x8d, 0xcb, 0xca, 0xa7, 0x92, 0x15,
0x67, 0x43, 0x2d, 0xa8, 0x1b, 0xae, 0xd3, 0xef, 0x63, 0xa3, 0x4d, 0x7c, 0x51, 0x85, 0x74, 0xa2,
0x04, 0x9f, 0x2f, 0x4a, 0xfd, 0x81, 0x02, 0x0b, 0xf7, 0x75, 0xaf, 0x73, 0xb4, 0x6e, 0x89, 0xcb,
0x39, 0x83, 0x69, 0xbf, 0x0d, 0xa5, 0x07, 0xe2, 0x22, 0x7c, 0xfc, 0xba, 0x9a, 0xb0, 0xa1, 0xf0,
0x95, 0x6b, 0x01, 0x87, 0xfa, 0x8d, 0x02, 0xf3, 0xac, 0x88, 0xf0, 0x77, 0xf7, 0xed, 0x3b, 0xd9,
0x84, 0x42, 0x02, 0xdd, 0x84, 0x9a, 0xa5, 0xbb, 0xc7, 0x7b, 0x01, 0x4d, 0x9e, 0xd1, 0xc4, 0x66,
0xd5, 0x87, 0x00, 0x62, 0xb4, 0x4d, 0xba, 0x53, 0xec, 0xff, 0x0d, 0x98, 0x11, 0xab, 0x0a, 0x7f,
0x9b, 0x74, 0xb1, 0x3e, 0xb9, 0xfa, 0x57, 0x05, 0x6a, 0x01, 0x82, 0x32, 0xaf, 0xaa, 0x41, 0x46,
0xfa, 0x52, 0xa6, 0xb5, 0x8e, 0xde, 0x86, 0x02, 0x2f, 0x1b, 0x85, 0xec, 0x1b, 0x51, 0xd9, 0xa2,
0xa4, 0x0c, 0xc1, 0x30, 0x9b, 0xd0, 0x04, 0x13, 0xd5, 0x91, 0x44, 0x1d, 0x5e, 0x61, 0x64, 0xb5,
0xd0, 0x0c, 0x6a, 0xc1, 0x6c, 0x34, 0x69, 0xf3, 0x7d, 0x66, 0x69, 0x14, 0xda, 0xac, 0xeb, 0x9e,
0xce, 0xc0, 0xa6, 0x16, 0xc9, 0xd9, 0x88, 0xfa, 0xaf, 0x3c, 0x94, 0x43, 0xa7, 0x1c, 0x3a, 0x49,
0xfc, 0x4a, 0x33, 0x93, 0x71, 0x33, 0x3b, 0x5c, 0x39, 0xdc, 0x80, 0x9a, 0xc9, 0x62, 0x75, 0x5b,
0x98, 0x22, 0x03, 0xd7, 0x92, 0x56, 0xe5, 0xb3, 0xc2, 0x2f, 0xd0, 0x22, 0x94, 0xed, 0x81, 0xd5,
0x76, 0x0e, 0xdb, 0xae, 0x73, 0x42, 0x44, 0x09, 0x52, 0xb2, 0x07, 0xd6, 0xff, 0x1e, 0x6a, 0xce,
0x09, 0x09, 0xb2, 0xdc, 0xc2, 0x29, 0xb3, 0xdc, 0x45, 0x28, 0x5b, 0xfa, 0x43, 0x2a, 0xb5, 0x6d,
0x0f, 0x2c, 0x56, 0x9d, 0x64, 0xb5, 0x92, 0xa5, 0x3f, 0xd4, 0x9c, 0x93, 0x9d, 0x81, 0x85, 0x96,
0xa1, 0xde, 0xd3, 0x89, 0xd7, 0x0e, 0x97, 0x37, 0x45, 0x56, 0xde, 0xd4, 0xe8, 0xfc, 0xfb, 0x41,
0x89, 0x33, 0x9c, 0x2f, 0x97, 0xce, 0x90, 0x2f, 0x1b, 0x56, 0x2f, 0x10, 0x04, 0xe9, 0xf3, 0x65,
0xc3, 0xea, 0x49, 0x31, 0x6f, 0xc0, 0xcc, 0x01, 0xcb, 0x80, 0x48, 0xa3, 0x3c, 0x12, 0xa1, 0x36,
0x68, 0xf2, 0xc3, 0x13, 0x25, 0xcd, 0x27, 0x47, 0x6f, 0x41, 0x89, 0x85, 0x1e, 0xc6, 0x5b, 0x49,
0xc5, 0x1b, 0x30, 0x50, 0x6e, 0x03, 0xf7, 0x3c, 0x9d, 0x71, 0x57, 0xd3, 0x71, 0x4b, 0x06, 0xf4,
0x0a, 0x9c, 0xef, 0xb8, 0x58, 0xf7, 0xb0, 0xb1, 0xfa, 0x68, 0xcd, 0xb1, 0xfa, 0x3a, 0x33, 0xa6,
0x46, 0x6d, 0x49, 0x59, 0x2e, 0x6a, 0x49, 0x9f, 0x28, 0x30, 0x74, 0xe4, 0x68, 0xc3, 0x75, 0xac,
0xc6, 0x2c, 0x07, 0x86, 0xe8, 0x2c, 0xba, 0x02, 0xe0, 0x43, 0xb7, 0xee, 0x35, 0xea, 0xec, 0x16,
0x4b, 0x62, 0xe6, 0x3d, 0x4f, 0xfd, 0x02, 0xe6, 0x03, 0x0b, 0x09, 0xdd, 0xc6, 0xf0, 0xc5, 0x2a,
0xd3, 0x5e, 0xec, 0xf8, 0xdc, 0xf5, 0xef, 0x39, 0x58, 0xd8, 0xd3, 0x1f, 0xe0, 0xa7, 0x9f, 0x26,
0xa7, 0xc2, 0xe3, 0x2d, 0x98, 0x63, 0x99, 0xf1, 0x4a, 0x68, 0x3f, 0x63, 0x22, 0x70, 0xf8, 0x3a,
0x87, 0x19, 0xd1, 0xbb, 0x34, 0x75, 0xc0, 0x9d, 0xe3, 0x5d, 0xc7, 0x0c, 0xa2, 0xef, 0x95, 0x04,
0x39, 0x6b, 0x92, 0x4a, 0x0b, 0x73, 0xa0, 0xdd, 0x61, 0x68, 0xe3, 0x71, 0xf7, 0x85, 0xb1, 0xf5,
0x57, 0xa0, 0xfd, 0x38, 0xc2, 0xa1, 0x06, 0xcc, 0x88, 0xe8, 0xce, 0xfc, 0xbe, 0xa8, 0xf9, 0x43,
0xb4, 0x0b, 0xe7, 0xf9, 0x09, 0xf6, 0x84, 0x51, 0xf3, 0xc3, 0x17, 0x53, 0x1d, 0x3e, 0x89, 0x35,
0xea, 0x13, 0xa5, 0xd3, 0xfa, 0x44, 0x03, 0x66, 0x84, 0x9d, 0x32, 0x2c, 0x28, 0x6a, 0xfe, 0x90,
0x5e, 0xb3, 0x69, 0xf5, 0x1d, 0xd7, 0x33, 0xed, 0x6e, 0xa3, 0xcc, 0xbe, 0x05, 0x13, 0xb4, 0xc4,
0x80, 0x40, 0x9f, 0x13, 0x3a, 0x05, 0xef, 0x40, 0x51, 0x5a, 0x78, 0x26, 0xb5, 0x85, 0x4b, 0x9e,
0x38, 0x46, 0x67, 0x63, 0x18, 0xad, 0xfe, 0x4d, 0x81, 0xca, 0x3a, 0x3d, 0xd2, 0x96, 0xd3, 0x65,
0x11, 0xe5, 0x06, 0xd4, 0x5c, 0xdc, 0x71, 0x5c, 0xa3, 0x8d, 0x6d, 0xcf, 0x35, 0x31, 0xaf, 0x46,
0x73, 0x5a, 0x95, 0xcf, 0xbe, 0xcf, 0x27, 0x29, 0x19, 0x85, 0x5d, 0xe2, 0xe9, 0x56, 0xbf, 0x7d,
0x48, 0xdd, 0x3b, 0xc3, 0xc9, 0xe4, 0x2c, 0xf3, 0xee, 0x6b, 0x50, 0x09, 0xc8, 0x3c, 0x87, 0xad,
0x9f, 0xd3, 0xca, 0x72, 0x6e, 0xdf, 0x41, 0xcf, 0x43, 0x8d, 0xe9, 0xb4, 0xdd, 0x73, 0xba, 0x6d,
0x5a, 0xb9, 0x89, 0x60, 0x53, 0x31, 0xc4, 0xb6, 0xe8, 0x5d, 0x45, 0xa9, 0x88, 0xf9, 0x39, 0x16,
0xe1, 0x46, 0x52, 0xed, 0x99, 0x9f, 0x63, 0x1a, 0xeb, 0xab, 0x34, 0x76, 0xee, 0x38, 0x06, 0xde,
0x9f, 0x32, 0xd3, 0x48, 0xd1, 0xb5, 0xbb, 0x0c, 0x25, 0x79, 0x02, 0x71, 0xa4, 0x60, 0x02, 0x6d,
0x40, 0xcd, 0x4f, 0x42, 0xdb, 0xbc, 0xb6, 0xc8, 0x8d, 0xcc, 0xfc, 0x42, 0xd1, 0x8f, 0x68, 0x55,
0x9f, 0x8d, 0x0d, 0xd5, 0x0d, 0xa8, 0x84, 0x3f, 0xd3, 0x55, 0xf7, 0xe2, 0x86, 0x22, 0x27, 0xa8,
0x35, 0xee, 0x0c, 0x2c, 0x7a, 0xa7, 0x02, 0x58, 0xfc, 0xa1, 0xfa, 0xa5, 0x02, 0x55, 0x11, 0xb2,
0xf7, 0x64, 0x57, 0x99, 0x1d, 0x4d, 0x61, 0x47, 0x63, 0x7f, 0xa3, 0xff, 0x8e, 0xb6, 0xa4, 0x9e,
0x4f, 0x04, 0x01, 0x26, 0x84, 0x65, 0xc7, 0x91, 0x78, 0x9d, 0xa6, 0x96, 0x7d, 0x4c, 0x0d, 0x4d,
0x5c, 0x0d, 0x33, 0xb4, 0x06, 0xcc, 0xe8, 0x86, 0xe1, 0x62, 0x42, 0xc4, 0x3e, 0xfc, 0x21, 0xfd,
0xf2, 0x00, 0xbb, 0xc4, 0x37, 0xf9, 0xac, 0xe6, 0x0f, 0xd1, 0x5b, 0x50, 0x94, 0xe9, 0x74, 0x36,
0x29, 0x85, 0x0a, 0xef, 0x53, 0xd4, 0x5e, 0x92, 0x43, 0xfd, 0x3a, 0x03, 0x35, 0xa1, 0xb0, 0x55,
0x11, 0x53, 0xc7, 0x3b, 0xdf, 0x2a, 0x54, 0x0e, 0x03, 0xdf, 0x1f, 0xd7, 0x63, 0x09, 0x43, 0x44,
0x84, 0x67, 0x92, 0x03, 0x46, 0xa3, 0x7a, 0xee, 0x4c, 0x51, 0x3d, 0x7f, 0x4a, 0x04, 0x53, 0xbf,
0x03, 0xe5, 0xd0, 0x17, 0x06, 0xbd, 0xbc, 0xeb, 0x22, 0x54, 0xe1, 0x0f, 0xd1, 0xbd, 0x20, 0x69,
0xe1, 0x3a, 0xb8, 0x98, 0xb0, 0x48, 0x2c, 0x5f, 0x51, 0x7f, 0xa3, 0x40, 0x41, 0x48, 0xbe, 0x0a,
0x65, 0x81, 0x26, 0x2c, 0xa1, 0xe3, 0xd2, 0x41, 0x4c, 0xd1, 0x8c, 0xee, 0xc9, 0xc1, 0xc9, 0x45,
0x28, 0xc6, 0x80, 0x64, 0x46, 0xe0, 0xbd, 0xff, 0x29, 0x84, 0x1e, 0xf4, 0x13, 0x03, 0x8e, 0x6f,
0x14, 0xd6, 0x31, 0xd6, 0x70, 0xc7, 0x79, 0x80, 0xdd, 0x47, 0x67, 0xef, 0xcb, 0xbd, 0x19, 0xb2,
0xd4, 0x94, 0x85, 0x9f, 0x64, 0x40, 0x6f, 0x06, 0xea, 0xce, 0x26, 0xb5, 0x25, 0xc2, 0xd0, 0x21,
0xec, 0x2c, 0x50, 0xfb, 0x8f, 0x79, 0x87, 0x31, 0x7a, 0x94, 0x69, 0x13, 0x96, 0x27, 0x52, 0x4f,
0xa8, 0x3f, 0x55, 0xe0, 0xe2, 0x26, 0xf6, 0x36, 0xa2, 0x55, 0xfb, 0xb3, 0xde, 0x95, 0x05, 0xcd,
0xa4, 0x4d, 0x9d, 0xe5, 0xd6, 0x9b, 0x50, 0x94, 0xfd, 0x07, 0xde, 0xfb, 0x95, 0x63, 0xf5, 0xfb,
0x0a, 0x34, 0xc4, 0x2a, 0x6c, 0x4d, 0x9a, 0x2b, 0xf7, 0xb0, 0x87, 0x8d, 0x6f, 0xbb, 0x20, 0xfe,
0x8b, 0x02, 0xf5, 0x30, 0x94, 0x33, 0x34, 0x7e, 0x0d, 0xf2, 0xac, 0xef, 0x20, 0x76, 0x30, 0xd1,
0x58, 0x39, 0x35, 0x85, 0x0c, 0x96, 0xbf, 0xed, 0xcb, 0xa8, 0x23, 0x86, 0x41, 0x3c, 0xc9, 0x9e,
0x3e, 0x9e, 0x88, 0xf8, 0xea, 0x0c, 0xa8, 0x5c, 0xde, 0xd7, 0x0b, 0x26, 0xd4, 0xaf, 0x32, 0xd0,
0x08, 0x0a, 0x8d, 0x6f, 0x1d, 0xd0, 0x47, 0xa4, 0xa1, 0xd9, 0x27, 0x94, 0x86, 0xe6, 0x4e, 0x0b,
0xe2, 0x7f, 0xce, 0x40, 0x2d, 0x50, 0xc7, 0x6e, 0x4f, 0xb7, 0xd1, 0x02, 0x14, 0xfa, 0x3d, 0x3d,
0xe8, 0x17, 0x8a, 0x11, 0xda, 0x93, 0x99, 0x49, 0x54, 0x01, 0x2f, 0x25, 0x5d, 0xce, 0x08, 0x0d,
0x6b, 0x31, 0x11, 0xb4, 0x80, 0xe3, 0x25, 0x00, 0x2b, 0xc3, 0x45, 0x36, 0xc4, 0xad, 0x80, 0x56,
0xe0, 0xb7, 0x01, 0x89, 0xab, 0x6b, 0x9b, 0x76, 0x9b, 0xe0, 0x8e, 0x63, 0x1b, 0xfc, 0x52, 0xf3,
0x5a, 0x5d, 0x7c, 0x69, 0xd9, 0x7b, 0x7c, 0x1e, 0xbd, 0x06, 0x39, 0xef, 0x51, 0x9f, 0xc3, 0x73,
0x2d, 0x11, 0xf6, 0x82, 0x7d, 0xed, 0x3f, 0xea, 0x63, 0x8d, 0x91, 0xa3, 0x45, 0x00, 0x2a, 0xca,
0x73, 0xf5, 0x07, 0xb8, 0xe7, 0xff, 0xd2, 0x19, 0xcc, 0x50, 0x33, 0xf5, 0x3b, 0x19, 0x33, 0x3c,
0x26, 0x88, 0xa1, 0xfa, 0xc7, 0x0c, 0xd4, 0x03, 0x91, 0x1a, 0x26, 0x83, 0x9e, 0x37, 0x52, 0x7f,
0xe3, 0xcb, 0xb7, 0x49, 0x91, 0xfe, 0x5d, 0x28, 0x8b, 0xae, 0xca, 0x29, 0x2e, 0x1a, 0x38, 0xcb,
0xd6, 0x18, 0xcb, 0xcb, 0x3f, 0x21, 0xcb, 0x2b, 0x9c, 0xd6, 0xf2, 0xf6, 0x60, 0xc1, 0x07, 0xb4,
0x80, 0x60, 0x1b, 0x7b, 0xfa, 0x98, 0x4c, 0xe2, 0x2a, 0x94, 0x79, 0xa0, 0xe2, 0x11, 0x9a, 0x27,
0xd7, 0x70, 0x20, 0x6b, 0x52, 0xf5, 0xbb, 0x30, 0xcf, 0x00, 0x21, 0xde, 0x7c, 0x4d, 0xd3, 0x09,
0x57, 0x65, 0xea, 0x4e, 0xd3, 0x74, 0x6e, 0xdd, 0x25, 0x2d, 0x32, 0xa7, 0x6e, 0xc1, 0x73, 0x31,
0xf9, 0x67, 0x00, 0x7c, 0x9a, 0xe3, 0x2c, 0xec, 0x45, 0x7f, 0xc8, 0x9c, 0x3e, 0xac, 0x5d, 0x91,
0xbd, 0xd6, 0xb6, 0x69, 0xc4, 0xed, 0xcb, 0x40, 0xef, 0x40, 0xc9, 0xc6, 0x27, 0xed, 0x30, 0xaa,
0xa6, 0x68, 0xa9, 0x15, 0x6d, 0x7c, 0xc2, 0xfe, 0x52, 0x77, 0xe0, 0xc2, 0xd0, 0x56, 0xcf, 0x72,
0xf6, 0x3f, 0x29, 0x70, 0x71, 0xdd, 0x75, 0xfa, 0x1f, 0x9b, 0xae, 0x37, 0xd0, 0x7b, 0xd1, 0x9f,
0x32, 0x9e, 0x4e, 0xe1, 0xf5, 0x41, 0x28, 0xbe, 0x72, 0xc0, 0xbd, 0x9d, 0x60, 0xae, 0xc3, 0x9b,
0x12, 0x87, 0x0e, 0x45, 0xe3, 0x7f, 0x66, 0x93, 0x36, 0x2f, 0xe8, 0x26, 0x44, 0x91, 0x34, 0xe9,
0x47, 0x62, 0x9f, 0x26, 0x3b, 0x6d, 0x9f, 0x66, 0x84, 0xe7, 0xe7, 0x9e, 0x90, 0xe7, 0x9f, 0xb6,
0x70, 0x40, 0x1f, 0x40, 0xb4, 0x87, 0xc6, 0x20, 0x77, 0xaa, 0xe6, 0xdb, 0x2a, 0x40, 0xd0, 0x4f,
0x12, 0xef, 0x50, 0xd2, 0x88, 0x09, 0x71, 0xd1, 0xdb, 0x92, 0x28, 0xcb, 0xfa, 0xc0, 0x91, 0x0e,
0xc7, 0x87, 0xd0, 0x4c, 0xb2, 0xd2, 0xb3, 0x58, 0xfe, 0x1f, 0x32, 0x00, 0x2d, 0xd6, 0xcf, 0xd9,
0xd7, 0xc9, 0xf1, 0x74, 0xa9, 0xe2, 0x75, 0xa8, 0x06, 0x06, 0x13, 0xf8, 0x7b, 0xd8, 0x8a, 0x0c,
0xea, 0x12, 0x32, 0x63, 0xa5, 0x3c, 0x43, 0x59, 0xac, 0x81, 0x2e, 0x41, 0xc9, 0x75, 0x4e, 0xda,
0xd4, 0x83, 0x0c, 0x16, 0x56, 0x8b, 0x5a, 0xd1, 0x75, 0x4e, 0xa8, 0x5f, 0x19, 0xe8, 0x02, 0xcc,
0x78, 0x3a, 0x39, 0xa6, 0xa2, 0xbc, 0xe0, 0x29, 0xd0, 0x61, 0xcb, 0x40, 0xf3, 0x90, 0x3f, 0x34,
0x7b, 0x98, 0x83, 0x7e, 0x49, 0xe3, 0x03, 0xf4, 0xba, 0xff, 0x5c, 0x60, 0x26, 0xf5, 0xe7, 0x4e,
0xfe, 0x62, 0xe0, 0x1b, 0x05, 0x66, 0x03, 0x85, 0x30, 0x6c, 0xa1, 0x70, 0xc5, 0xa0, 0x6a, 0xcd,
0x31, 0x38, 0x0a, 0xd4, 0x46, 0x7c, 0xd1, 0xe0, 0x82, 0x1c, 0x90, 0x02, 0x91, 0x71, 0xb9, 0x34,
0x3d, 0x17, 0x3d, 0xb4, 0x69, 0xf8, 0x1f, 0x54, 0x0a, 0xae, 0x73, 0xd2, 0x32, 0x88, 0xaf, 0x0d,
0xfe, 0x6a, 0x8a, 0x67, 0x8e, 0x54, 0x1b, 0x6b, 0xec, 0xe1, 0xd4, 0x75, 0xa8, 0x62, 0xd7, 0x75,
0xdc, 0xb6, 0x85, 0x09, 0xd1, 0xbb, 0x3c, 0xcb, 0x28, 0x69, 0x15, 0x46, 0xdc, 0xe6, 0x34, 0xf5,
0xdb, 0x0c, 0xd4, 0x82, 0xa3, 0xf8, 0x9f, 0x51, 0x4c, 0xc3, 0xff, 0x8c, 0x62, 0x1a, 0x14, 0xa7,
0x5d, 0x8e, 0x72, 0x21, 0x9c, 0x16, 0x94, 0x96, 0x41, 0x43, 0x1c, 0xf5, 0x1d, 0xdb, 0x31, 0x70,
0x70, 0x67, 0xe0, 0x93, 0x5a, 0xc6, 0xf0, 0xd5, 0xe7, 0x52, 0x5c, 0x7d, 0x7e, 0xf8, 0xea, 0x17,
0xa0, 0x70, 0x30, 0xe8, 0x1c, 0x63, 0x8f, 0xb9, 0x5f, 0x49, 0x13, 0xa3, 0xa8, 0x49, 0xcc, 0xc4,
0x4c, 0x42, 0xde, 0x7c, 0x31, 0x7c, 0xf3, 0x97, 0xa0, 0xc4, 0xdb, 0xf4, 0x6d, 0x8f, 0xb0, 0x8f,
0x20, 0x59, 0xad, 0xc8, 0x09, 0xfb, 0x04, 0xbd, 0xe1, 0xa7, 0xf2, 0x89, 0x1f, 0x35, 0x18, 0x4e,
0xc4, 0x2e, 0x5f, 0x24, 0xf2, 0xea, 0xa7, 0x80, 0x82, 0x5f, 0xce, 0x56, 0x5a, 0xc5, 0xb4, 0x9a,
0x89, 0x6b, 0x55, 0xfd, 0xa3, 0x02, 0x73, 0xe1, 0xc5, 0xa6, 0x0d, 0x43, 0xef, 0x40, 0xd9, 0x64,
0xd3, 0xb4, 0xa9, 0xaf, 0x88, 0xe2, 0xea, 0xca, 0xd8, 0x33, 0x6b, 0x60, 0x06, 0x68, 0x70, 0x1d,
0xaa, 0x27, 0x8e, 0x7b, 0x6c, 0xda, 0xdd, 0x36, 0xdd, 0x99, 0x6f, 0xa1, 0x15, 0x41, 0xdc, 0xa1,
0xb4, 0x5b, 0xbf, 0x52, 0x60, 0x6e, 0xa8, 0xfc, 0x41, 0x35, 0x80, 0x8f, 0xec, 0x8e, 0xa8, 0x0b,
0xeb, 0xe7, 0x50, 0x05, 0x8a, 0x7e, 0x95, 0x58, 0x57, 0x50, 0x19, 0x66, 0xf6, 0x1d, 0xc6, 0x5d,
0xcf, 0xa0, 0x3a, 0x54, 0xb8, 0xe0, 0xa0, 0xd3, 0xc1, 0x84, 0xd4, 0xb3, 0x92, 0xb2, 0xa1, 0x9b,
0xbd, 0x81, 0x8b, 0xeb, 0x39, 0x54, 0x85, 0xd2, 0xbe, 0xa3, 0xe1, 0x1e, 0xd6, 0x09, 0xae, 0xe7,
0x11, 0x82, 0x9a, 0x18, 0xf8, 0x42, 0x85, 0x10, 0xcd, 0x17, 0x9b, 0xb9, 0x75, 0x18, 0xae, 0x27,
0x68, 0x92, 0x8d, 0x2e, 0xc0, 0xf9, 0x8f, 0x6c, 0x03, 0x1f, 0x9a, 0x36, 0x36, 0x82, 0x9f, 0xea,
0xe7, 0xd0, 0x79, 0x98, 0x6d, 0xd9, 0x36, 0x76, 0x43, 0x44, 0x85, 0x12, 0xb7, 0xb1, 0xdb, 0xc5,
0x21, 0x62, 0x06, 0xcd, 0x41, 0x75, 0xdb, 0x7c, 0x18, 0x22, 0x65, 0x57, 0xfe, 0x35, 0x0f, 0xa5,
0x75, 0xdd, 0xd3, 0xd7, 0x1c, 0xc7, 0x35, 0x50, 0x1f, 0x10, 0x7b, 0xcc, 0x62, 0xf5, 0x1d, 0x5b,
0xbe, 0xfa, 0x42, 0xaf, 0x8c, 0x08, 0x05, 0xc3, 0xac, 0xe2, 0xc2, 0x9b, 0x37, 0x47, 0x48, 0xc4,
0xd8, 0xd5, 0x73, 0xc8, 0x62, 0x2b, 0xd2, 0x22, 0x65, 0xdf, 0xec, 0x1c, 0xfb, 0x9f, 0x2d, 0xc7,
0xac, 0x18, 0x63, 0xf5, 0x57, 0x8c, 0x3d, 0x26, 0x13, 0x03, 0xfe, 0xe2, 0xc8, 0xb7, 0x79, 0xf5,
0x1c, 0xfa, 0x0c, 0xe6, 0x37, 0xb1, 0x17, 0x3c, 0x32, 0xf1, 0x17, 0x5c, 0x19, 0xbd, 0xe0, 0x10,
0xf3, 0x29, 0x97, 0xdc, 0x82, 0x3c, 0x6b, 0x35, 0xa0, 0xa4, 0x72, 0x3e, 0xfc, 0xf4, 0xb9, 0xb9,
0x34, 0x9a, 0x41, 0xce, 0xf6, 0x29, 0xcc, 0xc6, 0x9e, 0x76, 0xa2, 0x17, 0x13, 0xc4, 0x92, 0x1f,
0xe9, 0x36, 0x6f, 0xa5, 0x61, 0x95, 0x6b, 0x75, 0xa1, 0x16, 0x7d, 0x0a, 0x83, 0x96, 0x13, 0xe4,
0x13, 0x9f, 0xe5, 0x35, 0x5f, 0x4c, 0xc1, 0x29, 0x17, 0xb2, 0xa0, 0x1e, 0x7f, 0x6a, 0x88, 0x6e,
0x8d, 0x9d, 0x20, 0x6a, 0x6e, 0x2f, 0xa5, 0xe2, 0x95, 0xcb, 0x3d, 0x62, 0x46, 0x30, 0xf4, 0xd4,
0x0d, 0xdd, 0x49, 0x9e, 0x66, 0xd4, 0x1b, 0xbc, 0xe6, 0xdd, 0xd4, 0xfc, 0x72, 0xe9, 0x1f, 0xf1,
0x16, 0x67, 0xd2, 0x73, 0x31, 0xf4, 0x6a, 0xf2, 0x74, 0x63, 0xde, 0xb9, 0x35, 0x57, 0x4e, 0x23,
0x22, 0x37, 0xf1, 0x05, 0xeb, 0x4d, 0x26, 0x3c, 0xb9, 0x8a, 0xfb, 0x9d, 0x3f, 0xdf, 0xe8, 0xb7,
0x64, 0xcd, 0x57, 0x4f, 0x21, 0x21, 0x37, 0xe0, 0xc4, 0x1f, 0x73, 0xfa, 0x6e, 0x78, 0x77, 0xa2,
0xd5, 0x4c, 0xe7, 0x83, 0x9f, 0xc0, 0x6c, 0xec, 0x03, 0x71, 0xa2, 0xd7, 0x24, 0x7f, 0x44, 0x6e,
0x8e, 0x0b, 0x8d, 0xdc, 0x25, 0x63, 0xad, 0x5e, 0x34, 0xc2, 0xfa, 0x13, 0xda, 0xc1, 0xcd, 0x5b,
0x69, 0x58, 0xe5, 0x41, 0x08, 0x83, 0xcb, 0x58, 0xbb, 0x14, 0xdd, 0x4e, 0x9e, 0x23, 0xb9, 0xd5,
0xdb, 0x7c, 0x39, 0x25, 0xb7, 0x5c, 0xb4, 0x0d, 0xb0, 0x89, 0xbd, 0x6d, 0xec, 0xb9, 0xd4, 0x46,
0x6e, 0x26, 0xaa, 0x3c, 0x60, 0xf0, 0x97, 0x79, 0x61, 0x22, 0x9f, 0x5c, 0xe0, 0x7b, 0x80, 0xfc,
0x10, 0x1b, 0x7a, 0x9e, 0x70, 0x7d, 0x6c, 0xe3, 0x89, 0x77, 0x89, 0x26, 0xdd, 0xcd, 0x67, 0x50,
0xdf, 0xd6, 0x6d, 0x5a, 0x72, 0x04, 0xf3, 0xde, 0x4e, 0xdc, 0x58, 0x9c, 0x6d, 0x84, 0xb6, 0x46,
0x72, 0xcb, 0xc3, 0x9c, 0xc8, 0x18, 0xaa, 0x4b, 0x17, 0xc4, 0x71, 0x6c, 0x09, 0xb4, 0x11, 0x63,
0x1c, 0x81, 0x2d, 0x63, 0xf8, 0xe5, 0xc2, 0x8f, 0x15, 0xf6, 0x64, 0x38, 0xc6, 0x70, 0xdf, 0xf4,
0x8e, 0x76, 0x7b, 0xba, 0x4d, 0xd2, 0x6c, 0x81, 0x31, 0x9e, 0x62, 0x0b, 0x82, 0x5f, 0x6e, 0xc1,
0x80, 0x6a, 0xa4, 0xaf, 0x83, 0x92, 0xde, 0x18, 0x24, 0x75, 0x96, 0x9a, 0xcb, 0x93, 0x19, 0xe5,
0x2a, 0x47, 0x50, 0xf5, 0xed, 0x95, 0x2b, 0xf7, 0xc5, 0x51, 0x3b, 0x0d, 0x78, 0x46, 0xb8, 0x5b,
0x32, 0x6b, 0xd8, 0xdd, 0x86, 0xcb, 0x56, 0x94, 0xae, 0xdd, 0x31, 0xce, 0xdd, 0x46, 0xd7, 0xc2,
0x1c, 0x4f, 0x62, 0x2d, 0xa2, 0x64, 0xb0, 0x4a, 0xec, 0x78, 0x25, 0xe2, 0xc9, 0x88, 0x8e, 0x93,
0x7a, 0x0e, 0xdd, 0x87, 0x02, 0xcf, 0xa0, 0xd1, 0xf3, 0xe3, 0x93, 0x6b, 0x31, 0xfb, 0x8d, 0x09,
0x5c, 0xfe, 0xc4, 0x2b, 0xbf, 0xcb, 0x43, 0xd1, 0xff, 0xd2, 0xfc, 0x0c, 0xd2, 0xca, 0x67, 0x90,
0xe7, 0x7d, 0x02, 0xb3, 0xb1, 0x47, 0xa9, 0x89, 0xd7, 0x96, 0xfc, 0x70, 0x75, 0x12, 0x8e, 0xdd,
0x17, 0xff, 0xaa, 0x26, 0x21, 0xff, 0x85, 0x51, 0xb9, 0x62, 0x1c, 0xed, 0x27, 0x4c, 0xfc, 0xd4,
0xb1, 0x7d, 0x07, 0x20, 0x84, 0xbd, 0xe3, 0x3f, 0x26, 0x50, 0x38, 0x99, 0xb4, 0xe1, 0xed, 0x53,
0x5a, 0xec, 0xf8, 0xe9, 0x56, 0xef, 0x7d, 0xff, 0xd5, 0xae, 0xe9, 0x1d, 0x0d, 0x0e, 0xe8, 0x2f,
0x77, 0x39, 0xeb, 0xcb, 0xa6, 0x23, 0xfe, 0xba, 0xeb, 0x1b, 0xc8, 0x5d, 0x26, 0x7d, 0x97, 0xae,
0xd1, 0x3f, 0x38, 0x28, 0xb0, 0xd1, 0xbd, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x6f, 0xfb, 0xf2,
0xac, 0x1b, 0x39, 0x00, 0x00,
0xea, 0x12, 0x32, 0x63, 0xa5, 0x34, 0x43, 0x59, 0xac, 0xc1, 0xe4, 0x84, 0xbc, 0x86, 0x1b, 0x45,
0x0c, 0xf4, 0xd0, 0x25, 0x28, 0xb9, 0xce, 0x49, 0x9b, 0xba, 0x99, 0xc1, 0x62, 0x6b, 0x51, 0x2b,
0xba, 0xce, 0x09, 0x75, 0x3e, 0x03, 0x5d, 0x80, 0x19, 0x4f, 0x27, 0xc7, 0x54, 0x7e, 0x81, 0x87,
0x3b, 0x3a, 0x6c, 0x19, 0x68, 0x1e, 0xf2, 0x87, 0x66, 0x0f, 0x93, 0xc6, 0x0c, 0x13, 0xc9, 0x07,
0xe8, 0x75, 0xff, 0xc5, 0x41, 0x31, 0xf5, 0x2f, 0xa6, 0xfc, 0xd1, 0xc1, 0x37, 0x0a, 0xcc, 0x06,
0x5a, 0x63, 0x00, 0x44, 0x31, 0x8d, 0xe1, 0xd9, 0x9a, 0x63, 0x70, 0xa8, 0xa8, 0x8d, 0xf8, 0x51,
0x84, 0x33, 0x72, 0xd4, 0x0a, 0x58, 0xc6, 0x25, 0xdc, 0xf4, 0x5c, 0xf4, 0xd0, 0xa6, 0xe1, 0xff,
0x26, 0x53, 0x70, 0x9d, 0x93, 0x96, 0x21, 0xb5, 0xc1, 0x1f, 0x5e, 0xf1, 0xf4, 0x92, 0x6a, 0x63,
0x8d, 0xbd, 0xbd, 0xba, 0x0e, 0x55, 0xec, 0xba, 0x8e, 0xdb, 0xb6, 0x30, 0x21, 0x7a, 0x97, 0xa7,
0x22, 0x25, 0xad, 0xc2, 0x26, 0xb7, 0xf9, 0x9c, 0xfa, 0xef, 0x0c, 0xd4, 0x82, 0xa3, 0xf8, 0xbf,
0xc4, 0x98, 0x86, 0xff, 0x4b, 0x8c, 0x69, 0x50, 0x30, 0x77, 0x39, 0x14, 0x86, 0xc0, 0x5c, 0xcc,
0xb4, 0x0c, 0x1a, 0x07, 0xa9, 0x83, 0xd9, 0x8e, 0x81, 0x83, 0x8b, 0x05, 0x7f, 0x4a, 0xdc, 0x6b,
0xc4, 0x3e, 0x72, 0x29, 0xec, 0x23, 0x9f, 0xc2, 0x3e, 0x0a, 0x09, 0xf6, 0xb1, 0x00, 0x85, 0x83,
0x41, 0xe7, 0x18, 0x7b, 0x22, 0x3d, 0x12, 0xa3, 0xa8, 0xdd, 0x14, 0x63, 0x76, 0x23, 0xcd, 0xa3,
0x14, 0x36, 0x8f, 0x4b, 0x50, 0xe2, 0x3f, 0x07, 0xb4, 0x3d, 0xc2, 0xfa, 0xa2, 0x59, 0xad, 0xc8,
0x27, 0xf6, 0x09, 0x7a, 0xc3, 0x2f, 0x0a, 0xca, 0x49, 0x8e, 0xce, 0x10, 0x27, 0x66, 0x21, 0xa2,
0x24, 0x50, 0x3f, 0x05, 0x14, 0x7c, 0x39, 0x5b, 0x91, 0x16, 0x53, 0x7d, 0x26, 0xae, 0x7a, 0xf5,
0xb7, 0x0a, 0xcc, 0x85, 0x17, 0x9b, 0x36, 0xa0, 0xbd, 0x03, 0x65, 0xde, 0xf5, 0x6d, 0x53, 0x87,
0x12, 0x65, 0xda, 0x95, 0xb1, 0x67, 0xd6, 0xc0, 0x0c, 0x70, 0xe5, 0x3a, 0x54, 0x4f, 0x1c, 0xf7,
0xd8, 0xb4, 0xbb, 0x6d, 0xba, 0x33, 0xdf, 0x8c, 0x2b, 0x62, 0x72, 0x87, 0xce, 0xdd, 0xfa, 0x99,
0x02, 0x73, 0x43, 0x85, 0x14, 0xaa, 0x01, 0x7c, 0x64, 0x77, 0x44, 0x85, 0x59, 0x3f, 0x87, 0x2a,
0x50, 0xf4, 0xeb, 0xcd, 0xba, 0x82, 0xca, 0x30, 0xb3, 0xef, 0x30, 0xea, 0x7a, 0x06, 0xd5, 0xa1,
0xc2, 0x19, 0x07, 0x9d, 0x0e, 0x26, 0xa4, 0x9e, 0x95, 0x33, 0x1b, 0xba, 0xd9, 0x1b, 0xb8, 0xb8,
0x9e, 0x43, 0x55, 0x28, 0xed, 0x3b, 0x1a, 0xee, 0x61, 0x9d, 0xe0, 0x7a, 0x1e, 0x21, 0xa8, 0x89,
0x81, 0xcf, 0x54, 0x08, 0xcd, 0xf9, 0x6c, 0x33, 0xb7, 0x0e, 0xc3, 0x95, 0x09, 0x4d, 0xd7, 0xd1,
0x05, 0x38, 0xff, 0x91, 0x6d, 0xe0, 0x43, 0xd3, 0xc6, 0x46, 0xf0, 0xa9, 0x7e, 0x0e, 0x9d, 0x87,
0xd9, 0x96, 0x6d, 0x63, 0x37, 0x34, 0xa9, 0xd0, 0xc9, 0x6d, 0xec, 0x76, 0x71, 0x68, 0x32, 0x83,
0xe6, 0xa0, 0xba, 0x6d, 0x3e, 0x0c, 0x4d, 0x65, 0x57, 0xfe, 0x31, 0x0f, 0xa5, 0x75, 0xdd, 0xd3,
0xd7, 0x1c, 0xc7, 0x35, 0x50, 0x1f, 0x10, 0x7b, 0x34, 0x63, 0xf5, 0x1d, 0x5b, 0xbe, 0x2e, 0x43,
0xaf, 0x8c, 0x08, 0x2a, 0xc3, 0xa4, 0xe2, 0xc2, 0x9b, 0x37, 0x47, 0x70, 0xc4, 0xc8, 0xd5, 0x73,
0xc8, 0x62, 0x2b, 0xd2, 0x72, 0x67, 0xdf, 0xec, 0x1c, 0xfb, 0x3f, 0x8f, 0x8e, 0x59, 0x31, 0x46,
0xea, 0xaf, 0x18, 0x7b, 0xb4, 0x26, 0x06, 0xfc, 0x65, 0x93, 0x6f, 0xf3, 0xea, 0x39, 0xf4, 0x19,
0xcc, 0x6f, 0x62, 0x2f, 0x78, 0xcc, 0xe2, 0x2f, 0xb8, 0x32, 0x7a, 0xc1, 0x21, 0xe2, 0x53, 0x2e,
0xb9, 0x05, 0x79, 0xd6, 0xb4, 0x40, 0x49, 0x8d, 0x81, 0xf0, 0x13, 0xeb, 0xe6, 0xd2, 0x68, 0x02,
0x29, 0xed, 0x53, 0x98, 0x8d, 0x3d, 0x21, 0x45, 0x2f, 0x26, 0xb0, 0x25, 0x3f, 0x06, 0x6e, 0xde,
0x4a, 0x43, 0x2a, 0xd7, 0xea, 0x42, 0x2d, 0xfa, 0xe4, 0x06, 0x2d, 0x27, 0xf0, 0x27, 0x3e, 0xff,
0x6b, 0xbe, 0x98, 0x82, 0x52, 0x2e, 0x64, 0x41, 0x3d, 0xfe, 0xa4, 0x11, 0xdd, 0x1a, 0x2b, 0x20,
0x6a, 0x6e, 0x2f, 0xa5, 0xa2, 0x95, 0xcb, 0x3d, 0x62, 0x46, 0x30, 0xf4, 0xa4, 0x0e, 0xdd, 0x49,
0x16, 0x33, 0xea, 0xad, 0x5f, 0xf3, 0x6e, 0x6a, 0x7a, 0xb9, 0xf4, 0xf7, 0x78, 0xb3, 0x34, 0xe9,
0x59, 0x1a, 0x7a, 0x35, 0x59, 0xdc, 0x98, 0xf7, 0x74, 0xcd, 0x95, 0xd3, 0xb0, 0xc8, 0x4d, 0x7c,
0xc1, 0xba, 0x9c, 0x09, 0x4f, 0xbb, 0xe2, 0x7e, 0xe7, 0xcb, 0x1b, 0xfd, 0x66, 0xad, 0xf9, 0xea,
0x29, 0x38, 0xe4, 0x06, 0x9c, 0xf8, 0xa3, 0x51, 0xdf, 0x0d, 0xef, 0x4e, 0xb4, 0x9a, 0xe9, 0x7c,
0xf0, 0x13, 0x98, 0x8d, 0xfd, 0x10, 0x9d, 0xe8, 0x35, 0xc9, 0x3f, 0x56, 0x37, 0xc7, 0x85, 0x46,
0xee, 0x92, 0xb1, 0xa6, 0x31, 0x1a, 0x61, 0xfd, 0x09, 0x8d, 0xe5, 0xe6, 0xad, 0x34, 0xa4, 0xf2,
0x20, 0x84, 0xc1, 0x65, 0xac, 0xf1, 0x8a, 0x6e, 0x27, 0xcb, 0x48, 0x6e, 0x1a, 0x37, 0x5f, 0x4e,
0x49, 0x2d, 0x17, 0x6d, 0x03, 0x6c, 0x62, 0x6f, 0x1b, 0x7b, 0x2e, 0xb5, 0x91, 0x9b, 0x89, 0x2a,
0x0f, 0x08, 0xfc, 0x65, 0x5e, 0x98, 0x48, 0x27, 0x17, 0xf8, 0x3f, 0x40, 0x7e, 0x88, 0x0d, 0x3d,
0x83, 0xb8, 0x3e, 0xb6, 0x85, 0xc5, 0xfb, 0x4d, 0x93, 0xee, 0xe6, 0x33, 0xa8, 0x6f, 0xeb, 0x36,
0x2d, 0x5e, 0x02, 0xb9, 0xb7, 0x13, 0x37, 0x16, 0x27, 0x1b, 0xa1, 0xad, 0x91, 0xd4, 0xf2, 0x30,
0x27, 0x32, 0x86, 0xea, 0xd2, 0x05, 0x71, 0x1c, 0x5b, 0x02, 0x6d, 0xc4, 0x08, 0x47, 0x60, 0xcb,
0x18, 0x7a, 0xb9, 0xf0, 0x63, 0x85, 0x3d, 0x4d, 0x8e, 0x11, 0xdc, 0x37, 0xbd, 0xa3, 0xdd, 0x9e,
0x6e, 0x93, 0x34, 0x5b, 0x60, 0x84, 0xa7, 0xd8, 0x82, 0xa0, 0x97, 0x5b, 0x30, 0xa0, 0x1a, 0xe9,
0x10, 0xa1, 0xa4, 0xb7, 0x0c, 0x49, 0x3d, 0xaa, 0xe6, 0xf2, 0x64, 0x42, 0xb9, 0xca, 0x11, 0x54,
0x7d, 0x7b, 0xe5, 0xca, 0x7d, 0x71, 0xd4, 0x4e, 0x03, 0x9a, 0x11, 0xee, 0x96, 0x4c, 0x1a, 0x76,
0xb7, 0xe1, 0x02, 0x18, 0xa5, 0x6b, 0x9c, 0x8c, 0x73, 0xb7, 0xd1, 0x55, 0x35, 0xc7, 0x93, 0x58,
0xb3, 0x29, 0x19, 0xac, 0x12, 0x7b, 0x67, 0x89, 0x78, 0x32, 0xa2, 0x77, 0xa5, 0x9e, 0x43, 0xf7,
0xa1, 0xc0, 0x33, 0x68, 0xf4, 0xfc, 0xf8, 0xe4, 0x5a, 0x48, 0xbf, 0x31, 0x81, 0xca, 0x17, 0xbc,
0xf2, 0xab, 0x3c, 0x14, 0xfd, 0xdf, 0xac, 0x9f, 0x41, 0x5a, 0xf9, 0x0c, 0xf2, 0xbc, 0x4f, 0x60,
0x36, 0xf6, 0xf8, 0x35, 0xf1, 0xda, 0x92, 0x1f, 0xc8, 0x4e, 0xc2, 0xb1, 0xfb, 0xe2, 0x5f, 0xe2,
0x24, 0xe4, 0xbf, 0x30, 0x2a, 0x57, 0x8c, 0xa3, 0xfd, 0x04, 0xc1, 0x4f, 0x1d, 0xdb, 0x77, 0x00,
0x42, 0xd8, 0x3b, 0xfe, 0x67, 0x09, 0x0a, 0x27, 0x93, 0x36, 0xbc, 0x7d, 0x4a, 0x8b, 0x1d, 0x2f,
0x6e, 0xf5, 0xde, 0xff, 0xbf, 0xda, 0x35, 0xbd, 0xa3, 0xc1, 0x01, 0xfd, 0x72, 0x97, 0x93, 0xbe,
0x6c, 0x3a, 0xe2, 0xaf, 0xbb, 0xbe, 0x81, 0xdc, 0x65, 0xdc, 0x77, 0xe9, 0x1a, 0xfd, 0x83, 0x83,
0x02, 0x1b, 0xdd, 0xfb, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x5f, 0xe4, 0x01, 0x83, 0x39,
0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View File

@ -804,11 +804,12 @@ message GetFlushStateResponse {
}
message ImportRequest {
string collection_name = 1; // target collection
string partition_name = 2; // target partition
bool row_based = 3; // the file is row-based or column-based
repeated string files = 4; // file paths to be imported
repeated common.KeyValuePair options = 5; // import options, bucket, etc.
string collection_name = 1; // target collection
string partition_name = 2; // target partition
repeated string channel_names = 3; // channel names for the collection
bool row_based = 4; // the file is row-based or column-based
repeated string files = 5; // file paths to be imported
repeated common.KeyValuePair options = 6; // import options, bucket, etc.
}
message ImportResponse {

View File

@ -4966,9 +4966,10 @@ func (m *GetFlushStateResponse) GetFlushed() bool {
type ImportRequest struct {
CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"`
PartitionName string `protobuf:"bytes,2,opt,name=partition_name,json=partitionName,proto3" json:"partition_name,omitempty"`
RowBased bool `protobuf:"varint,3,opt,name=row_based,json=rowBased,proto3" json:"row_based,omitempty"`
Files []string `protobuf:"bytes,4,rep,name=files,proto3" json:"files,omitempty"`
Options []*commonpb.KeyValuePair `protobuf:"bytes,5,rep,name=options,proto3" json:"options,omitempty"`
ChannelNames []string `protobuf:"bytes,3,rep,name=channel_names,json=channelNames,proto3" json:"channel_names,omitempty"`
RowBased bool `protobuf:"varint,4,opt,name=row_based,json=rowBased,proto3" json:"row_based,omitempty"`
Files []string `protobuf:"bytes,5,rep,name=files,proto3" json:"files,omitempty"`
Options []*commonpb.KeyValuePair `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -5013,6 +5014,13 @@ func (m *ImportRequest) GetPartitionName() string {
return ""
}
func (m *ImportRequest) GetChannelNames() []string {
if m != nil {
return m.ChannelNames
}
return nil
}
func (m *ImportRequest) GetRowBased() bool {
if m != nil {
return m.RowBased
@ -5740,269 +5748,270 @@ func init() {
func init() { proto.RegisterFile("milvus.proto", fileDescriptor_02345ba45cc0e303) }
var fileDescriptor_02345ba45cc0e303 = []byte{
// 4187 bytes of a gzipped FileDescriptorProto
// 4201 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3c, 0x4d, 0x6f, 0x1c, 0xc9,
0x75, 0xec, 0x19, 0xce, 0xd7, 0x9b, 0x19, 0x72, 0x54, 0xfc, 0x9a, 0x1d, 0x49, 0x2b, 0xaa, 0xf7,
0x8b, 0x2b, 0x79, 0x25, 0x2f, 0xb5, 0xde, 0x75, 0x76, 0x9d, 0xac, 0x25, 0x31, 0x2b, 0x11, 0x2b,
0x29, 0x74, 0x73, 0xd7, 0x86, 0xb3, 0x10, 0x1a, 0xc5, 0xe9, 0xe2, 0xb0, 0xa3, 0x9e, 0xee, 0x71,
0x29, 0x74, 0x73, 0xd7, 0x86, 0xb3, 0x10, 0x06, 0xc5, 0xee, 0xe2, 0xb0, 0xa3, 0x9e, 0xee, 0x71,
0x57, 0x8d, 0x28, 0xee, 0xc9, 0x80, 0x83, 0x7c, 0xc0, 0x9b, 0x35, 0x82, 0x18, 0xf9, 0x38, 0x24,
0x08, 0xf2, 0x71, 0xc8, 0x21, 0x41, 0x6c, 0x07, 0x89, 0x91, 0x4b, 0x72, 0xc8, 0x21, 0x87, 0x00,
0xf9, 0xb8, 0x04, 0x41, 0x2e, 0xf9, 0x03, 0x39, 0x04, 0xc8, 0x31, 0x87, 0xa0, 0x3e, 0xba, 0xa7,
0xbb, 0xa7, 0x7a, 0x38, 0xd4, 0x58, 0x26, 0x75, 0x9b, 0x7e, 0xf5, 0x5e, 0xd5, 0xab, 0x57, 0xaf,
0x5e, 0xbd, 0x7a, 0xef, 0xd5, 0x40, 0xa3, 0xef, 0x7a, 0x8f, 0x87, 0xf4, 0xda, 0x20, 0x0c, 0x58,
0x80, 0x96, 0x92, 0x5f, 0xd7, 0xe4, 0x47, 0xa7, 0xd1, 0x0d, 0xfa, 0xfd, 0xc0, 0x97, 0xc0, 0x4e,
0x83, 0x76, 0x0f, 0x48, 0x1f, 0xcb, 0x2f, 0xf3, 0x0f, 0x0c, 0x40, 0xb7, 0x43, 0x82, 0x19, 0xb9,
0xe9, 0xb9, 0x98, 0x5a, 0xe4, 0x5b, 0x43, 0x42, 0x19, 0xfa, 0x22, 0xcc, 0xef, 0x61, 0x4a, 0xda,
0xc6, 0xba, 0xb1, 0x51, 0xdf, 0xbc, 0x70, 0x2d, 0xd5, 0xad, 0xea, 0xee, 0x3e, 0xed, 0xdd, 0xc2,
0x94, 0x58, 0x02, 0x13, 0xad, 0x41, 0xc5, 0xd9, 0xb3, 0x7d, 0xdc, 0x27, 0xed, 0xc2, 0xba, 0xb1,
0x51, 0xb3, 0xca, 0xce, 0xde, 0x03, 0xdc, 0x27, 0xe8, 0x35, 0x58, 0xec, 0x06, 0x9e, 0x47, 0xba,
0xcc, 0x0d, 0x7c, 0x89, 0x50, 0x14, 0x08, 0x0b, 0x23, 0xb0, 0x40, 0x5c, 0x86, 0x12, 0xe6, 0x3c,
0xb4, 0xe7, 0x45, 0xb3, 0xfc, 0x30, 0x29, 0xb4, 0xb6, 0xc2, 0x60, 0xf0, 0xac, 0xb8, 0x8b, 0x07,
0x2d, 0x26, 0x07, 0xfd, 0x7d, 0x03, 0xce, 0xdd, 0xf4, 0x18, 0x09, 0xcf, 0xa8, 0x50, 0x7e, 0xb7,
0x00, 0x6b, 0x72, 0xd5, 0x6e, 0xc7, 0xe8, 0xa7, 0xc9, 0xe5, 0x2a, 0x94, 0xa5, 0x56, 0x09, 0x36,
0x1b, 0x96, 0xfa, 0x42, 0x17, 0x01, 0xe8, 0x01, 0x0e, 0x1d, 0x6a, 0xfb, 0xc3, 0x7e, 0xbb, 0xb4,
0x6e, 0x6c, 0x94, 0xac, 0x9a, 0x84, 0x3c, 0x18, 0xf6, 0x91, 0x05, 0xe7, 0xba, 0x81, 0x4f, 0x5d,
0xca, 0x88, 0xdf, 0x3d, 0xb2, 0x3d, 0xf2, 0x98, 0x78, 0xed, 0xf2, 0xba, 0xb1, 0xb1, 0xb0, 0xf9,
0x8a, 0x96, 0xef, 0xdb, 0x23, 0xec, 0x7b, 0x1c, 0xd9, 0x6a, 0x75, 0x33, 0x10, 0xf3, 0xbb, 0x06,
0xac, 0x70, 0x85, 0x39, 0x13, 0x82, 0x31, 0xff, 0xcc, 0x80, 0xe5, 0xbb, 0x98, 0x9e, 0x8d, 0x55,
0xba, 0x08, 0xc0, 0xdc, 0x3e, 0xb1, 0x29, 0xc3, 0xfd, 0x81, 0x58, 0xa9, 0x79, 0xab, 0xc6, 0x21,
0xbb, 0x1c, 0x60, 0x7e, 0x13, 0x1a, 0xb7, 0x82, 0xc0, 0xb3, 0x08, 0x1d, 0x04, 0x3e, 0x25, 0xe8,
0x06, 0x94, 0x29, 0xc3, 0x6c, 0x48, 0x15, 0x93, 0xe7, 0xb5, 0x4c, 0xee, 0x0a, 0x14, 0x4b, 0xa1,
0x72, 0x7d, 0x7d, 0x8c, 0xbd, 0xa1, 0xe4, 0xb1, 0x6a, 0xc9, 0x0f, 0xf3, 0x13, 0x58, 0xd8, 0x65,
0xa1, 0xeb, 0xf7, 0x7e, 0x82, 0x9d, 0xd7, 0xa2, 0xce, 0xff, 0xcd, 0x80, 0x17, 0xb6, 0x08, 0xed,
0x86, 0xee, 0xde, 0x19, 0xd9, 0x0e, 0x26, 0x34, 0x46, 0x90, 0xed, 0x2d, 0x21, 0xea, 0xa2, 0x95,
0x82, 0x65, 0x16, 0xa3, 0x94, 0x5d, 0x8c, 0x6f, 0x97, 0xa0, 0xa3, 0x9b, 0xd4, 0x2c, 0xe2, 0xfb,
0xd9, 0x78, 0x97, 0x16, 0x04, 0x51, 0x66, 0x8f, 0xa9, 0x73, 0x61, 0x34, 0xda, 0xae, 0x00, 0xc4,
0x9b, 0x39, 0x3b, 0xab, 0xa2, 0x66, 0x56, 0x9b, 0xb0, 0xf2, 0xd8, 0x0d, 0xd9, 0x10, 0x7b, 0x76,
0xf7, 0x00, 0xfb, 0x3e, 0xf1, 0x84, 0x9c, 0xb8, 0xf9, 0x2a, 0x6e, 0xd4, 0xac, 0x25, 0xd5, 0x78,
0x5b, 0xb6, 0x71, 0x61, 0x51, 0xf4, 0x16, 0xac, 0x0e, 0x0e, 0x8e, 0xa8, 0xdb, 0x1d, 0x23, 0x2a,
0x09, 0xa2, 0xe5, 0xa8, 0x35, 0x45, 0x75, 0x15, 0xce, 0x75, 0x85, 0x05, 0x74, 0x6c, 0x2e, 0x35,
0x29, 0xc6, 0xb2, 0x10, 0x63, 0x4b, 0x35, 0x7c, 0x14, 0xc1, 0x39, 0x5b, 0x11, 0xf2, 0x90, 0x75,
0x13, 0x04, 0x15, 0x41, 0xb0, 0xa4, 0x1a, 0x3f, 0x66, 0xdd, 0x11, 0x4d, 0xda, 0x76, 0x55, 0xb3,
0xb6, 0xab, 0x0d, 0x15, 0x61, 0x8b, 0x09, 0x6d, 0xd7, 0x04, 0x9b, 0xd1, 0x27, 0xda, 0x86, 0x45,
0xca, 0x70, 0xc8, 0xec, 0x41, 0x40, 0x5d, 0x2e, 0x17, 0xda, 0x86, 0xf5, 0xe2, 0x46, 0x7d, 0x73,
0x5d, 0xbb, 0x48, 0x1f, 0x92, 0xa3, 0x2d, 0xcc, 0xf0, 0x0e, 0x76, 0x43, 0x6b, 0x41, 0x10, 0xee,
0x44, 0x74, 0x7a, 0x03, 0x59, 0x9f, 0xc9, 0x40, 0xea, 0xb4, 0xb8, 0xa1, 0xb5, 0x5d, 0x3f, 0x34,
0x60, 0xe5, 0x5e, 0x80, 0x9d, 0xb3, 0xb1, 0xa7, 0x5e, 0x81, 0x85, 0x90, 0x0c, 0x3c, 0xb7, 0x8b,
0xf9, 0x7a, 0xec, 0x91, 0x50, 0xec, 0xaa, 0x92, 0xd5, 0x54, 0xd0, 0x07, 0x02, 0x68, 0x7e, 0x6e,
0x40, 0xdb, 0x22, 0x1e, 0xc1, 0xf4, 0x6c, 0xd8, 0x02, 0xf3, 0xfb, 0x06, 0xbc, 0x78, 0x87, 0xb0,
0xc4, 0xae, 0x62, 0x98, 0xb9, 0x94, 0xb9, 0xdd, 0xd3, 0xf4, 0x2b, 0xcc, 0xef, 0x19, 0x70, 0x29,
0x97, 0xad, 0x59, 0x8c, 0xcc, 0x3b, 0x50, 0xe2, 0xbf, 0x68, 0xbb, 0x20, 0x74, 0xfe, 0x72, 0x9e,
0xce, 0x7f, 0x9d, 0xdb, 0x6e, 0xa1, 0xf4, 0x12, 0xdf, 0xfc, 0x2f, 0x03, 0x56, 0x77, 0x0f, 0x82,
0xc3, 0x11, 0x4b, 0xcf, 0x42, 0x40, 0x69, 0xb3, 0x5b, 0xcc, 0x98, 0x5d, 0xf4, 0x26, 0xcc, 0xb3,
0xa3, 0x01, 0x11, 0xba, 0xb5, 0xb0, 0x79, 0xf1, 0x9a, 0xc6, 0x9d, 0xbe, 0xc6, 0x99, 0xfc, 0xe8,
0x68, 0x40, 0x2c, 0x81, 0x8a, 0x5e, 0x87, 0x56, 0x46, 0xe4, 0x91, 0xe1, 0x5a, 0x4c, 0xcb, 0x9c,
0x9a, 0x3f, 0x2e, 0xc0, 0xda, 0xd8, 0x14, 0x67, 0x11, 0xb6, 0x6e, 0xec, 0x82, 0x76, 0x6c, 0xbe,
0x7f, 0x12, 0xa8, 0xae, 0xc3, 0x3d, 0xde, 0xe2, 0x46, 0xd1, 0x6a, 0x26, 0xec, 0xb7, 0x43, 0xd1,
0x1b, 0x80, 0xc6, 0xcc, 0xaa, 0xb4, 0xde, 0xf3, 0xd6, 0xb9, 0xac, 0x5d, 0x15, 0xb6, 0x5b, 0x6b,
0x58, 0xa5, 0x08, 0xe6, 0xad, 0x65, 0x8d, 0x65, 0xa5, 0xe8, 0x4d, 0x58, 0x76, 0xfd, 0xfb, 0xa4,
0x1f, 0x84, 0x47, 0xf6, 0x80, 0x84, 0x5d, 0xe2, 0x33, 0xdc, 0x23, 0xb4, 0x5d, 0x16, 0x1c, 0x2d,
0x45, 0x6d, 0x3b, 0xa3, 0x26, 0xf3, 0x47, 0x06, 0xac, 0x4a, 0x8f, 0x77, 0x07, 0x87, 0xcc, 0x3d,
0x03, 0xd6, 0x68, 0x10, 0xf1, 0x21, 0xf1, 0xa4, 0x7f, 0xde, 0x8c, 0xa1, 0x62, 0x97, 0xfd, 0xc0,
0x80, 0x65, 0xee, 0x8c, 0x3e, 0x4f, 0x3c, 0xff, 0xa5, 0x01, 0x4b, 0x77, 0x31, 0x7d, 0x9e, 0x58,
0xfe, 0x2b, 0x75, 0x52, 0xc5, 0x3c, 0x9f, 0xea, 0x95, 0xed, 0x35, 0x58, 0x4c, 0x33, 0x1d, 0x79,
0x3f, 0x0b, 0x29, 0xae, 0xa9, 0xf9, 0x37, 0xa3, 0xb3, 0xea, 0x39, 0xe3, 0xfc, 0x6f, 0x0d, 0xb8,
0x78, 0x87, 0xb0, 0x98, 0xeb, 0x33, 0x71, 0xa6, 0x4d, 0xab, 0x2d, 0x9f, 0xcb, 0x13, 0x59, 0xcb,
0xfc, 0xa9, 0x9c, 0x7c, 0xdf, 0x2d, 0xc0, 0x0a, 0x3f, 0x16, 0xce, 0x86, 0x12, 0x4c, 0x73, 0x79,
0xd1, 0x28, 0x4a, 0x49, 0xa7, 0x28, 0xf1, 0x79, 0x5a, 0x9e, 0xfa, 0x3c, 0x35, 0x7f, 0x58, 0x90,
0x7e, 0x40, 0x52, 0x1a, 0xb3, 0x2c, 0x8b, 0x86, 0xd7, 0x82, 0x96, 0x57, 0x13, 0x1a, 0x31, 0x64,
0x7b, 0x2b, 0x3a, 0x1f, 0x53, 0xb0, 0x33, 0x7b, 0x3c, 0x7e, 0x66, 0xc0, 0x6a, 0x74, 0x5d, 0xdc,
0x25, 0xbd, 0x3e, 0xf1, 0xd9, 0xd3, 0xeb, 0x50, 0x56, 0x03, 0x0a, 0x1a, 0x0d, 0xb8, 0x00, 0x35,
0x2a, 0xc7, 0x89, 0x6f, 0x82, 0x23, 0x80, 0xf9, 0x77, 0x06, 0xac, 0x8d, 0xb1, 0x33, 0xcb, 0x22,
0xb6, 0xa1, 0xe2, 0xfa, 0x0e, 0x79, 0x12, 0x73, 0x13, 0x7d, 0xf2, 0x96, 0xbd, 0xa1, 0xeb, 0x39,
0x31, 0x1b, 0xd1, 0x27, 0xba, 0x0c, 0x0d, 0xe2, 0xe3, 0x3d, 0x8f, 0xd8, 0x02, 0x57, 0x28, 0x72,
0xd5, 0xaa, 0x4b, 0xd8, 0x36, 0x07, 0x71, 0xe2, 0x7d, 0x97, 0x08, 0xe2, 0x92, 0x24, 0x56, 0x9f,
0xe6, 0x6f, 0x18, 0xb0, 0xc4, 0xb5, 0x50, 0x71, 0x4f, 0x9f, 0xad, 0x34, 0xd7, 0xa1, 0x9e, 0x50,
0x33, 0x35, 0x91, 0x24, 0xc8, 0x7c, 0x04, 0xcb, 0x69, 0x76, 0x66, 0x91, 0xe6, 0x8b, 0x00, 0xf1,
0x5a, 0xc9, 0xdd, 0x50, 0xb4, 0x12, 0x10, 0xf3, 0xb3, 0x42, 0x14, 0x14, 0x16, 0x62, 0x3a, 0xe5,
0x98, 0x95, 0x58, 0x92, 0xa4, 0x3d, 0xaf, 0x09, 0x88, 0x68, 0xde, 0x82, 0x06, 0x79, 0xc2, 0x42,
0x6c, 0x0f, 0x70, 0x88, 0xfb, 0x72, 0x5b, 0x4d, 0x65, 0x7a, 0xeb, 0x82, 0x6c, 0x47, 0x50, 0xf1,
0x41, 0x84, 0x8a, 0xc8, 0x41, 0xca, 0x72, 0x10, 0x01, 0x11, 0x07, 0xc6, 0x3f, 0x72, 0x2f, 0x4e,
0x69, 0xf3, 0x59, 0x17, 0x48, 0x7a, 0x2a, 0xa5, 0xec, 0x54, 0xfe, 0xd4, 0x80, 0x96, 0x98, 0x82,
0x9c, 0xcf, 0x80, 0x77, 0x9b, 0xa1, 0x31, 0x32, 0x34, 0x13, 0xf6, 0xde, 0xcf, 0x40, 0x59, 0xc9,
0xbd, 0x38, 0xad, 0xdc, 0x15, 0xc1, 0x31, 0xd3, 0x30, 0xff, 0xc8, 0x80, 0x95, 0x8c, 0xc8, 0x67,
0x51, 0xf8, 0x8f, 0x00, 0xc9, 0x19, 0x3a, 0xa3, 0x69, 0x47, 0xe7, 0xf4, 0x2b, 0xda, 0x43, 0x29,
0x2b, 0x24, 0xeb, 0x9c, 0x9b, 0x81, 0x50, 0xf3, 0x5f, 0x0c, 0xb8, 0x70, 0x87, 0x30, 0x81, 0x7a,
0x8b, 0x1b, 0x9d, 0x9d, 0x30, 0xe8, 0x85, 0x84, 0xd2, 0xe7, 0x57, 0x3f, 0x7e, 0x5b, 0x3a, 0x76,
0xba, 0x29, 0xcd, 0x22, 0xff, 0xcb, 0xd0, 0x10, 0x63, 0x10, 0xc7, 0x0e, 0x83, 0x43, 0xaa, 0xf4,
0xa8, 0xae, 0x60, 0x56, 0x70, 0x28, 0x14, 0x82, 0x05, 0x0c, 0x7b, 0x12, 0x41, 0x9d, 0x28, 0x02,
0xc2, 0x9b, 0xc5, 0x1e, 0x8c, 0x18, 0xe3, 0x9d, 0x93, 0xe7, 0x57, 0xc6, 0x7f, 0x62, 0xc0, 0x4a,
0x66, 0x2a, 0xb3, 0xc8, 0xf6, 0x4b, 0xd2, 0xed, 0x94, 0x93, 0x59, 0xd8, 0xbc, 0xa4, 0xa5, 0x49,
0x0c, 0x26, 0xb1, 0xd1, 0x25, 0xa8, 0xef, 0x63, 0xd7, 0xb3, 0x43, 0x82, 0x69, 0xe0, 0xab, 0x89,
0x02, 0x07, 0x59, 0x02, 0x62, 0xfe, 0x83, 0x21, 0x33, 0x6f, 0xcf, 0xb9, 0xc5, 0xfb, 0xe3, 0x02,
0x34, 0xb7, 0x7d, 0x4a, 0x42, 0x76, 0xf6, 0xaf, 0x26, 0xe8, 0x7d, 0xa8, 0x8b, 0x89, 0x51, 0xdb,
0xc1, 0x0c, 0xab, 0xd3, 0xec, 0x45, 0x6d, 0x98, 0xfe, 0x03, 0x8e, 0xb7, 0x85, 0x19, 0xb6, 0xa4,
0x74, 0x28, 0xff, 0x8d, 0xce, 0x43, 0xed, 0x00, 0xd3, 0x03, 0xfb, 0x11, 0x39, 0x92, 0xfe, 0x62,
0xd3, 0xaa, 0x72, 0xc0, 0x87, 0xe4, 0x88, 0xa2, 0x17, 0xa0, 0xea, 0x0f, 0xfb, 0x72, 0x83, 0x55,
0xd6, 0x8d, 0x8d, 0xa6, 0x55, 0xf1, 0x87, 0x7d, 0xb1, 0xbd, 0xfe, 0xa9, 0x00, 0x0b, 0xf7, 0x87,
0xfc, 0x22, 0x24, 0x92, 0x0c, 0x43, 0x8f, 0x3d, 0x9d, 0x32, 0x5e, 0x81, 0xa2, 0x74, 0x29, 0x38,
0x45, 0x5b, 0xcb, 0xf8, 0xf6, 0x16, 0xb5, 0x38, 0x92, 0x08, 0xb0, 0x0f, 0xbb, 0x5d, 0xe5, 0x9d,
0x15, 0x05, 0xb3, 0x35, 0x0e, 0x91, 0xbe, 0xd9, 0x79, 0xa8, 0x91, 0x30, 0x8c, 0x7d, 0x37, 0x31,
0x15, 0x12, 0x86, 0xb2, 0xd1, 0x84, 0x06, 0xee, 0x3e, 0xf2, 0x83, 0x43, 0x8f, 0x38, 0x3d, 0xe2,
0x88, 0x65, 0xaf, 0x5a, 0x29, 0x98, 0x54, 0x0c, 0xbe, 0xf0, 0x76, 0xd7, 0x67, 0xe2, 0x54, 0x2f,
0x72, 0xc5, 0xe0, 0x90, 0xdb, 0x3e, 0xe3, 0xcd, 0x0e, 0xf1, 0x08, 0x23, 0xa2, 0xb9, 0x22, 0x9b,
0x25, 0x44, 0x35, 0x0f, 0x07, 0x31, 0x75, 0x55, 0x36, 0x4b, 0x08, 0x6f, 0xbe, 0x00, 0xb5, 0x51,
0x16, 0xa1, 0x36, 0x0a, 0x23, 0x0a, 0x80, 0xf9, 0x9f, 0x06, 0x34, 0xb7, 0x44, 0x57, 0xcf, 0x81,
0xd2, 0x21, 0x98, 0x27, 0x4f, 0x06, 0xa1, 0xda, 0x3a, 0xe2, 0xf7, 0x44, 0x3d, 0x32, 0x1f, 0x43,
0x6b, 0xc7, 0xc3, 0x5d, 0x72, 0x10, 0x78, 0x0e, 0x09, 0xc5, 0xd9, 0x8e, 0x5a, 0x50, 0x64, 0xb8,
0xa7, 0x9c, 0x07, 0xfe, 0x13, 0x7d, 0x59, 0x5d, 0xfd, 0xa4, 0x59, 0x7a, 0x59, 0x7b, 0xca, 0x26,
0xba, 0x49, 0x44, 0x54, 0x57, 0xa1, 0x2c, 0x32, 0x7b, 0xd2, 0xad, 0x68, 0x58, 0xea, 0xcb, 0x7c,
0x98, 0x1a, 0xf7, 0x4e, 0x18, 0x0c, 0x07, 0x68, 0x1b, 0x1a, 0x83, 0x11, 0x8c, 0xeb, 0x6a, 0xfe,
0x99, 0x9e, 0x65, 0xda, 0x4a, 0x91, 0x9a, 0xff, 0x5d, 0x84, 0xe6, 0x2e, 0xc1, 0x61, 0xf7, 0xe0,
0x79, 0x88, 0xc1, 0x70, 0x89, 0x3b, 0xd4, 0x53, 0xab, 0xc6, 0x7f, 0xa2, 0xab, 0x70, 0x2e, 0x31,
0x21, 0xbb, 0xc7, 0x05, 0x24, 0xf4, 0xbe, 0x61, 0xb5, 0x06, 0x59, 0xc1, 0xbd, 0x03, 0x55, 0x87,
0x7a, 0xb6, 0x58, 0xa2, 0x8a, 0x58, 0x22, 0xfd, 0xfc, 0xb6, 0xa8, 0x27, 0x96, 0xa6, 0xe2, 0xc8,
0x1f, 0xe8, 0x25, 0x68, 0x06, 0x43, 0x36, 0x18, 0x32, 0x5b, 0xda, 0x9d, 0x76, 0x55, 0xb0, 0xd7,
0x90, 0x40, 0x61, 0x96, 0x28, 0xfa, 0x00, 0x9a, 0x54, 0x88, 0x32, 0x72, 0xcc, 0x6b, 0xd3, 0x3a,
0x88, 0x0d, 0x49, 0xa7, 0x3c, 0xf3, 0xd7, 0xa1, 0xc5, 0x42, 0xfc, 0x98, 0x78, 0x89, 0x9c, 0x1d,
0x88, 0xdd, 0xb6, 0x28, 0xe1, 0xa3, 0x7c, 0xdd, 0x75, 0x58, 0xea, 0x0d, 0x71, 0x88, 0x7d, 0x46,
0x48, 0x02, 0xbb, 0x2e, 0xb0, 0x51, 0xdc, 0x14, 0x13, 0x98, 0x1f, 0xc2, 0xfc, 0x5d, 0x97, 0x09,
0x41, 0x72, 0x9b, 0x65, 0x88, 0x6b, 0x90, 0xb0, 0x4c, 0x2f, 0x40, 0x35, 0x0c, 0x0e, 0xa5, 0x0d,
0x2e, 0x08, 0x15, 0xac, 0x84, 0xc1, 0xa1, 0x30, 0xb0, 0xa2, 0xd2, 0x21, 0x08, 0x95, 0x6e, 0x16,
0x2c, 0xf5, 0x65, 0xfe, 0x85, 0x31, 0x52, 0x1e, 0x6e, 0x3e, 0xe9, 0xd3, 0xd9, 0xcf, 0xf7, 0xa1,
0x12, 0x4a, 0xfa, 0x89, 0x39, 0xda, 0xe4, 0x48, 0xe2, 0x0c, 0x88, 0xa8, 0xa6, 0x4f, 0x00, 0xfd,
0xb2, 0x01, 0x8d, 0x0f, 0xbc, 0x21, 0x7d, 0x16, 0xca, 0xae, 0x4b, 0x4b, 0x14, 0xf5, 0x29, 0x91,
0xdf, 0x2c, 0x40, 0x53, 0xb1, 0x31, 0x8b, 0x13, 0x94, 0xcb, 0xca, 0x2e, 0xd4, 0xf9, 0x90, 0x36,
0x25, 0xbd, 0x28, 0xa6, 0x53, 0xdf, 0xdc, 0xd4, 0x9a, 0x87, 0x14, 0x1b, 0x22, 0x0d, 0xbe, 0x2b,
0x88, 0x7e, 0xde, 0x67, 0xe1, 0x91, 0x05, 0xdd, 0x18, 0xd0, 0x79, 0x08, 0x8b, 0x99, 0x66, 0xae,
0x44, 0x8f, 0xc8, 0x51, 0x64, 0xff, 0x1e, 0x91, 0x23, 0xf4, 0x56, 0xb2, 0x58, 0x21, 0xef, 0x14,
0xbf, 0x17, 0xf8, 0xbd, 0x9b, 0x61, 0x88, 0x8f, 0x54, 0x31, 0xc3, 0xbb, 0x85, 0x2f, 0x1b, 0xe6,
0xdf, 0x17, 0xa0, 0xf1, 0xb5, 0x21, 0x09, 0x8f, 0x4e, 0xd3, 0x0e, 0x45, 0xa7, 0xc2, 0x7c, 0xe2,
0x54, 0x18, 0xdb, 0xfa, 0x25, 0xcd, 0xd6, 0xd7, 0x18, 0xb0, 0xb2, 0xd6, 0x80, 0xe9, 0xf6, 0x76,
0xe5, 0x44, 0x7b, 0xbb, 0x9a, 0xbb, 0xb7, 0xff, 0xdc, 0x88, 0x45, 0x38, 0xd3, 0x6e, 0x4c, 0xb9,
0x63, 0x85, 0x13, 0xbb, 0x63, 0x53, 0xef, 0xc6, 0x1f, 0x18, 0x50, 0xfb, 0x3a, 0xe9, 0xb2, 0x20,
0xe4, 0xf6, 0x47, 0x43, 0x66, 0x4c, 0xe1, 0x1a, 0x17, 0xb2, 0xae, 0xf1, 0x0d, 0xa8, 0xba, 0x8e,
0x8d, 0xb9, 0x7e, 0x89, 0x71, 0x27, 0xb9, 0x64, 0x15, 0xd7, 0x11, 0x8a, 0x38, 0x7d, 0x12, 0xe0,
0x77, 0x0c, 0x68, 0x48, 0x9e, 0xa9, 0xa4, 0x7c, 0x2f, 0x31, 0x9c, 0xa1, 0x53, 0x7a, 0xf5, 0x11,
0x4f, 0xf4, 0xee, 0xdc, 0x68, 0xd8, 0x9b, 0x00, 0x5c, 0xc8, 0x8a, 0x5c, 0xee, 0x99, 0x75, 0x2d,
0xb7, 0x92, 0x5c, 0x08, 0xfc, 0xee, 0x9c, 0x55, 0xe3, 0x54, 0xa2, 0x8b, 0x5b, 0x15, 0x28, 0x09,
0x6a, 0xf3, 0xff, 0x0c, 0x58, 0xba, 0x8d, 0xbd, 0xee, 0x96, 0x4b, 0x19, 0xf6, 0xbb, 0x33, 0x38,
0x61, 0xef, 0x42, 0x25, 0x18, 0xd8, 0x1e, 0xd9, 0x67, 0x8a, 0xa5, 0xcb, 0x13, 0x66, 0x24, 0xc5,
0x60, 0x95, 0x83, 0xc1, 0x3d, 0xb2, 0xcf, 0xd0, 0x57, 0xa0, 0x1a, 0x0c, 0xec, 0xd0, 0xed, 0x1d,
0x30, 0x25, 0xfd, 0x29, 0x88, 0x2b, 0xc1, 0xc0, 0xe2, 0x14, 0x89, 0xd8, 0xca, 0xfc, 0x09, 0x63,
0x2b, 0xe6, 0xbf, 0x8e, 0x4d, 0x7f, 0x86, 0x3d, 0xf0, 0x2e, 0x54, 0x5d, 0x9f, 0xd9, 0x8e, 0x4b,
0x23, 0x11, 0x5c, 0xd4, 0xeb, 0x90, 0xcf, 0xc4, 0x0c, 0xc4, 0x9a, 0xfa, 0x8c, 0x8f, 0x8d, 0xbe,
0x0a, 0xb0, 0xef, 0x05, 0x58, 0x51, 0x4b, 0x19, 0x5c, 0xd2, 0x6f, 0x1f, 0x8e, 0x16, 0xd1, 0xd7,
0x04, 0x11, 0xef, 0x61, 0xb4, 0xa4, 0xff, 0x6c, 0xc0, 0xca, 0x0e, 0x09, 0x65, 0x29, 0x0b, 0x53,
0x61, 0xd0, 0x6d, 0x7f, 0x3f, 0x48, 0x47, 0xa2, 0x8d, 0x4c, 0x24, 0xfa, 0x27, 0x13, 0x7d, 0x4d,
0xdd, 0x9c, 0x64, 0x3e, 0x24, 0xba, 0x39, 0x45, 0x59, 0x1f, 0x79, 0xf3, 0x5c, 0xc8, 0x59, 0x26,
0xc5, 0x6f, 0xf2, 0x02, 0x6e, 0xfe, 0x96, 0xac, 0xc0, 0xd0, 0x4e, 0xea, 0xe9, 0x15, 0x76, 0x15,
0x94, 0xa5, 0xcf, 0xd8, 0xfd, 0x57, 0x21, 0x63, 0x3b, 0x72, 0x0c, 0xd1, 0xef, 0x19, 0xb0, 0x9e,
0xcf, 0xd5, 0x2c, 0x47, 0xf4, 0x57, 0xa1, 0xe4, 0xfa, 0xfb, 0x41, 0x14, 0x76, 0xbb, 0xa2, 0x77,
0xd1, 0xb5, 0xe3, 0x4a, 0x42, 0xf3, 0xaf, 0x0b, 0xd0, 0x12, 0x46, 0xfd, 0x14, 0x96, 0xbf, 0x4f,
0xfa, 0x36, 0x75, 0x3f, 0x25, 0xd1, 0xf2, 0xf7, 0x49, 0x7f, 0xd7, 0xfd, 0x94, 0xa4, 0x34, 0xa3,
0x94, 0xd6, 0x8c, 0xc9, 0x51, 0xe5, 0x64, 0x58, 0xb5, 0x92, 0x0e, 0xab, 0xae, 0x42, 0xd9, 0x0f,
0x1c, 0xb2, 0xbd, 0xa5, 0xae, 0x9d, 0xea, 0x6b, 0xa4, 0x6a, 0xb5, 0x13, 0xaa, 0xda, 0xe7, 0x06,
0x74, 0xee, 0x10, 0x96, 0x95, 0xdd, 0xe9, 0x69, 0xd9, 0xf7, 0x0c, 0x38, 0xaf, 0x65, 0x68, 0x16,
0x05, 0x7b, 0x2f, 0xad, 0x60, 0xfa, 0x3b, 0xe0, 0xd8, 0x90, 0x4a, 0xb7, 0xde, 0x84, 0xc6, 0xd6,
0xb0, 0xdf, 0x8f, 0x5d, 0xae, 0xcb, 0xd0, 0x08, 0xe5, 0x4f, 0x79, 0x45, 0x92, 0xe7, 0x6f, 0x5d,
0xc1, 0xf8, 0x45, 0xc8, 0xbc, 0x0a, 0x4d, 0x45, 0xa2, 0xb8, 0xee, 0x40, 0x35, 0x54, 0xbf, 0x15,
0x7e, 0xfc, 0x6d, 0xae, 0xc0, 0x92, 0x45, 0x7a, 0x5c, 0xb5, 0xc3, 0x7b, 0xae, 0xff, 0x48, 0x0d,
0x63, 0x7e, 0xc7, 0x80, 0xe5, 0x34, 0x5c, 0xf5, 0xf5, 0x36, 0x54, 0xb0, 0xe3, 0x84, 0x84, 0xd2,
0x89, 0xcb, 0x72, 0x53, 0xe2, 0x58, 0x11, 0x72, 0x42, 0x72, 0x85, 0xa9, 0x25, 0x67, 0xda, 0x70,
0xee, 0x0e, 0x61, 0xf7, 0x09, 0x0b, 0x67, 0xca, 0xe0, 0xb7, 0xf9, 0xe5, 0x45, 0x10, 0x2b, 0xb5,
0x88, 0x3e, 0xcd, 0xcf, 0x0c, 0x40, 0xc9, 0x11, 0x66, 0x59, 0xe6, 0xa4, 0x94, 0x0b, 0x69, 0x29,
0xcb, 0x22, 0xa7, 0xfe, 0x20, 0xf0, 0x89, 0xcf, 0x92, 0xee, 0x56, 0x33, 0x86, 0x0a, 0xf5, 0xfb,
0x91, 0x01, 0xe8, 0x5e, 0x80, 0x9d, 0x5b, 0xd8, 0x9b, 0xcd, 0x3d, 0xb8, 0x08, 0x40, 0xc3, 0xae,
0xad, 0x76, 0x6b, 0x41, 0x59, 0x9f, 0xb0, 0xfb, 0x40, 0x6e, 0xd8, 0x4b, 0x50, 0x77, 0x28, 0x53,
0xcd, 0x51, 0x42, 0x19, 0x1c, 0xca, 0x64, 0xbb, 0x28, 0x62, 0xa5, 0x04, 0x7b, 0xc4, 0xb1, 0x13,
0xf9, 0xb8, 0x79, 0x81, 0xd6, 0x92, 0x0d, 0xbb, 0xa3, 0xac, 0xdc, 0x43, 0x58, 0xbb, 0x8f, 0xfd,
0x21, 0xf6, 0x6e, 0x07, 0xfd, 0x01, 0x4e, 0x15, 0x36, 0x66, 0xcd, 0x9c, 0xa1, 0x31, 0x73, 0x2f,
0xca, 0xca, 0x37, 0xe9, 0x5a, 0x0b, 0x5e, 0xe7, 0xad, 0x04, 0xc4, 0xa4, 0xd0, 0x1e, 0xef, 0x7e,
0x96, 0x85, 0x12, 0x4c, 0x45, 0x5d, 0x25, 0x6d, 0xef, 0x08, 0x66, 0xbe, 0x0f, 0x2f, 0x88, 0x2a,
0xc4, 0x08, 0x94, 0x0a, 0xed, 0x67, 0x3b, 0x30, 0x34, 0x1d, 0xfc, 0x6a, 0x41, 0x98, 0xb6, 0xb1,
0x1e, 0x66, 0x61, 0xfc, 0xdd, 0x74, 0x44, 0xfd, 0xe5, 0x9c, 0x4a, 0xdb, 0xf4, 0x88, 0x2a, 0xac,
0xbe, 0x01, 0x8b, 0xe4, 0x09, 0xe9, 0x0e, 0x99, 0xeb, 0xf7, 0x76, 0x3c, 0xec, 0x3f, 0x08, 0xd4,
0x81, 0x92, 0x05, 0xa3, 0x97, 0xa1, 0xc9, 0xa5, 0x1f, 0x0c, 0x99, 0xc2, 0x93, 0x27, 0x4b, 0x1a,
0xc8, 0xfb, 0xe3, 0xf3, 0xf5, 0x08, 0x23, 0x8e, 0xc2, 0x93, 0xc7, 0x4c, 0x16, 0x3c, 0x26, 0x4a,
0x0e, 0xa6, 0x27, 0x11, 0xe5, 0xbf, 0x1b, 0x19, 0x51, 0xaa, 0x1e, 0x4e, 0x4b, 0x94, 0x77, 0x01,
0xfa, 0x24, 0xec, 0x91, 0x6d, 0x61, 0xd4, 0xe5, 0xcd, 0x7d, 0x43, 0x6b, 0xd4, 0x47, 0x1d, 0xdc,
0x8f, 0x08, 0xac, 0x04, 0xad, 0x79, 0x07, 0x96, 0x34, 0x28, 0xdc, 0x5e, 0xd1, 0x60, 0x18, 0x76,
0x49, 0x14, 0xfc, 0x89, 0x3e, 0xf9, 0xf9, 0xc6, 0x70, 0xd8, 0x23, 0x4c, 0x29, 0xad, 0xfa, 0x32,
0xdf, 0x16, 0x49, 0x28, 0x11, 0x28, 0x48, 0x69, 0x6a, 0x3a, 0xa1, 0x6e, 0x8c, 0x25, 0xd4, 0xf7,
0x45, 0xc6, 0x27, 0x49, 0x37, 0x63, 0x31, 0xc4, 0x3e, 0xef, 0x8a, 0x38, 0xea, 0x95, 0x45, 0xf4,
0xc9, 0xbd, 0xe4, 0xe6, 0x76, 0x7f, 0x10, 0x8c, 0x92, 0x1d, 0x53, 0x5f, 0x25, 0xc7, 0x83, 0xc5,
0x05, 0x5d, 0xb0, 0xf8, 0x3c, 0xd4, 0xc2, 0xe0, 0xd0, 0xe6, 0xd6, 0xcf, 0x11, 0x9a, 0x5d, 0xb5,
0xaa, 0x61, 0x70, 0xc8, 0x6d, 0xa2, 0x83, 0x96, 0xa1, 0xb4, 0xef, 0x7a, 0xf1, 0x85, 0x51, 0x7e,
0xa0, 0xf7, 0xf8, 0x1d, 0x4a, 0x66, 0x5c, 0xa7, 0x4e, 0xcf, 0x47, 0x14, 0xe6, 0x27, 0xb0, 0x10,
0x4d, 0x68, 0xc6, 0x97, 0x23, 0x0c, 0xd3, 0x47, 0x51, 0xb1, 0x83, 0xfc, 0x30, 0xaf, 0xca, 0x44,
0x9c, 0xe8, 0x3f, 0xb5, 0x9e, 0x08, 0xe6, 0x39, 0x86, 0xda, 0x26, 0xe2, 0xb7, 0xf9, 0xbf, 0x06,
0xac, 0x66, 0xb1, 0x67, 0x61, 0xe9, 0xed, 0xf4, 0xd6, 0xd0, 0x3f, 0x0e, 0x48, 0x8e, 0xa6, 0xb6,
0x85, 0x5a, 0x81, 0x6e, 0x30, 0xf4, 0x99, 0xb2, 0x2d, 0x7c, 0x05, 0x6e, 0xf3, 0x6f, 0xb4, 0x06,
0x15, 0xd7, 0xb1, 0x3d, 0x7e, 0xdd, 0x92, 0xc7, 0x48, 0xd9, 0x75, 0xee, 0xf1, 0xab, 0xd8, 0x3b,
0x91, 0x73, 0x34, 0xf5, 0x12, 0x28, 0xc7, 0xe8, 0xfb, 0xf2, 0xe8, 0xb6, 0x64, 0x95, 0xfd, 0x33,
0xae, 0x83, 0xd9, 0x80, 0xd6, 0xa1, 0xcb, 0x0e, 0x6c, 0xf1, 0xcc, 0x42, 0x9c, 0x9b, 0x54, 0x29,
0xd9, 0x02, 0x87, 0xef, 0x72, 0x30, 0x3f, 0x3b, 0xa9, 0xf9, 0x6b, 0x06, 0x2c, 0xa5, 0xd8, 0x9a,
0x65, 0x29, 0xbe, 0xc2, 0x5d, 0x0a, 0xd9, 0x91, 0x72, 0x1e, 0xd7, 0xb5, 0x76, 0x46, 0x8d, 0x26,
0xec, 0x4b, 0x4c, 0x61, 0xfe, 0x87, 0x01, 0xf5, 0x44, 0x0b, 0xbf, 0x91, 0xa8, 0xb6, 0xd1, 0x8d,
0x24, 0x06, 0x4c, 0x25, 0x86, 0x97, 0x60, 0xb4, 0xeb, 0x12, 0xa5, 0xda, 0x89, 0x52, 0x34, 0x87,
0xa2, 0xbb, 0xb0, 0x20, 0xc5, 0x14, 0xb3, 0xae, 0x0d, 0x14, 0xc4, 0x45, 0x76, 0x38, 0x74, 0x14,
0x97, 0x56, 0x93, 0x26, 0xbe, 0x64, 0x5e, 0x30, 0x70, 0x88, 0x18, 0xa9, 0x24, 0x0d, 0xa1, 0x70,
0x59, 0x1c, 0xca, 0x6f, 0x0e, 0x8d, 0x24, 0x29, 0xf7, 0xbe, 0x3c, 0x82, 0x1d, 0x12, 0xc6, 0x73,
0x8b, 0xbf, 0xb9, 0xbb, 0x23, 0x7f, 0xdb, 0xdc, 0x1b, 0x55, 0xf6, 0x03, 0x24, 0x88, 0x3b, 0xaa,
0xe8, 0x55, 0x58, 0x74, 0xfa, 0xa9, 0x37, 0x3e, 0x91, 0x7f, 0xe6, 0xf4, 0x13, 0x8f, 0x7b, 0x52,
0x0c, 0xcd, 0xa7, 0x19, 0xfa, 0x1f, 0x23, 0x7e, 0xf9, 0x18, 0x12, 0x87, 0xf8, 0xcc, 0xc5, 0xde,
0xd3, 0xeb, 0x64, 0x07, 0xaa, 0x43, 0x4a, 0xc2, 0x84, 0xb9, 0x8b, 0xbf, 0x79, 0xdb, 0x00, 0x53,
0x7a, 0x18, 0x84, 0x8e, 0xe2, 0x32, 0xfe, 0x9e, 0x50, 0xd7, 0x27, 0x5f, 0xd5, 0xe9, 0xeb, 0xfa,
0xde, 0x86, 0xb5, 0x7e, 0xe0, 0xb8, 0xfb, 0xae, 0xae, 0x1c, 0x90, 0x93, 0xad, 0x44, 0xcd, 0x29,
0x3a, 0xb3, 0x07, 0x6b, 0x32, 0x99, 0xf8, 0x8c, 0xa7, 0x6c, 0xfe, 0x12, 0xac, 0x70, 0x63, 0xc1,
0x87, 0xf9, 0x98, 0x92, 0x70, 0xc6, 0x5d, 0x75, 0x01, 0x6a, 0x51, 0xcf, 0x51, 0xc9, 0xe5, 0x08,
0x60, 0xde, 0x85, 0xe5, 0xcc, 0x58, 0x4f, 0x39, 0xa3, 0x2b, 0x97, 0xa1, 0x1a, 0x95, 0x90, 0xa2,
0x0a, 0x14, 0x6f, 0x7a, 0x5e, 0x6b, 0x0e, 0x35, 0xa0, 0xba, 0xad, 0xea, 0x24, 0x5b, 0xc6, 0x95,
0x9f, 0x83, 0xc5, 0x4c, 0xaa, 0x11, 0x55, 0x61, 0xfe, 0x41, 0xe0, 0x93, 0xd6, 0x1c, 0x6a, 0x41,
0xe3, 0x96, 0xeb, 0xe3, 0xf0, 0x48, 0x06, 0xe2, 0x5a, 0x0e, 0x5a, 0x84, 0xba, 0x08, 0x48, 0x29,
0x00, 0xd9, 0xfc, 0xf1, 0xcb, 0xd0, 0xbc, 0x2f, 0x18, 0xd9, 0x25, 0xe1, 0x63, 0xb7, 0x4b, 0x90,
0x0d, 0xad, 0xec, 0x03, 0x5c, 0xf4, 0x05, 0xbd, 0x73, 0xa2, 0x7f, 0xa7, 0xdb, 0x99, 0x24, 0x43,
0x73, 0x0e, 0x7d, 0x02, 0x0b, 0xe9, 0x67, 0xac, 0x48, 0x1f, 0x31, 0xd1, 0xbe, 0x75, 0x3d, 0xae,
0x73, 0x1b, 0x9a, 0xa9, 0x57, 0xa9, 0xe8, 0x75, 0x6d, 0xdf, 0xba, 0x97, 0xab, 0x1d, 0xbd, 0x7d,
0x49, 0xbe, 0x1c, 0x95, 0xdc, 0xa7, 0x9f, 0x8e, 0xe5, 0x70, 0xaf, 0x7d, 0x5f, 0x76, 0x1c, 0xf7,
0x18, 0xce, 0x8d, 0x3d, 0xf1, 0x42, 0x6f, 0xe4, 0x58, 0x6c, 0xfd, 0x53, 0xb0, 0xe3, 0x86, 0x38,
0x04, 0x34, 0xfe, 0xfa, 0x12, 0x5d, 0xd3, 0xaf, 0x40, 0xde, 0xdb, 0xd3, 0xce, 0xf5, 0xa9, 0xf1,
0x63, 0xc1, 0xfd, 0x8a, 0x01, 0x6b, 0x39, 0xef, 0xb2, 0xd0, 0x0d, 0x6d, 0x77, 0x93, 0x1f, 0x97,
0x75, 0xde, 0x3a, 0x19, 0x51, 0xcc, 0x88, 0x0f, 0x8b, 0x99, 0xa7, 0x4a, 0xe8, 0x6a, 0x6e, 0xf9,
0xf6, 0xf8, 0x9b, 0xad, 0xce, 0x17, 0xa6, 0x43, 0x8e, 0xc7, 0x7b, 0x08, 0x8b, 0x99, 0xf7, 0x3d,
0x39, 0xe3, 0xe9, 0x5f, 0x01, 0x1d, 0xb7, 0xa0, 0xdf, 0x84, 0x66, 0xea, 0x21, 0x4e, 0x8e, 0xc6,
0xeb, 0x1e, 0xeb, 0x1c, 0xd7, 0xf5, 0x43, 0x68, 0x24, 0xdf, 0xcb, 0xa0, 0x8d, 0xbc, 0xbd, 0x34,
0xd6, 0xf1, 0x49, 0xb6, 0xd2, 0xa8, 0x1c, 0x7e, 0xc2, 0x56, 0x1a, 0x7b, 0x41, 0x30, 0xfd, 0x56,
0x4a, 0xf4, 0x3f, 0x71, 0x2b, 0x9d, 0x78, 0x88, 0xef, 0x48, 0xbf, 0x59, 0xf3, 0xdc, 0x02, 0x6d,
0xe6, 0xe9, 0x66, 0xfe, 0xc3, 0x92, 0xce, 0x8d, 0x13, 0xd1, 0xc4, 0x52, 0x7c, 0x04, 0x0b, 0xe9,
0x47, 0x05, 0x39, 0x52, 0xd4, 0xbe, 0xc3, 0xe8, 0x5c, 0x9d, 0x0a, 0x37, 0x1e, 0xec, 0x63, 0xa8,
0x27, 0xfe, 0x53, 0x03, 0xbd, 0x36, 0x41, 0x8f, 0x93, 0x7f, 0x30, 0x71, 0x9c, 0x24, 0xbf, 0x06,
0xb5, 0xf8, 0xaf, 0x30, 0xd0, 0x2b, 0xb9, 0xfa, 0x7b, 0x92, 0x2e, 0x77, 0x01, 0x46, 0xff, 0x73,
0x81, 0x5e, 0xd5, 0xf6, 0x39, 0xf6, 0x47, 0x18, 0xc7, 0x75, 0x1a, 0x4f, 0x5f, 0xd6, 0x6a, 0x4d,
0x9a, 0x7e, 0xb2, 0xb8, 0xf0, 0xb8, 0x6e, 0x0f, 0xa0, 0x99, 0x2a, 0x09, 0xce, 0xdb, 0xc2, 0x9a,
0x4a, 0xed, 0xce, 0x95, 0x69, 0x50, 0xe3, 0xf5, 0x3b, 0x80, 0x66, 0xaa, 0x40, 0x33, 0x67, 0x24,
0x5d, 0x3d, 0x6a, 0xce, 0x48, 0xda, 0x7a, 0x4f, 0x73, 0x0e, 0x7d, 0x3b, 0x51, 0x0b, 0x9a, 0xaa,
0xb7, 0x45, 0x6f, 0x4e, 0xec, 0x47, 0x57, 0x6e, 0xdc, 0xd9, 0x3c, 0x09, 0x49, 0xcc, 0x82, 0xd2,
0x2a, 0x29, 0xd2, 0x7c, 0xad, 0x3a, 0xc9, 0x4a, 0xed, 0x42, 0x59, 0x96, 0x5c, 0x22, 0x33, 0xa7,
0xb8, 0x3a, 0x51, 0x8f, 0xd9, 0x79, 0x49, 0x8b, 0x93, 0xae, 0x46, 0x94, 0x9d, 0x4a, 0x2f, 0x38,
0xa7, 0xd3, 0x54, 0xbd, 0xdd, 0xb4, 0x9d, 0x5a, 0x50, 0x96, 0xb5, 0x34, 0x39, 0x9d, 0xa6, 0xea,
0xc1, 0x3a, 0x93, 0x71, 0x44, 0x92, 0xd5, 0x9c, 0x43, 0x3b, 0x50, 0x12, 0x91, 0x1e, 0x74, 0x79,
0x52, 0x99, 0xc9, 0xa4, 0x1e, 0x53, 0x95, 0x28, 0xe6, 0x1c, 0xfa, 0x05, 0x28, 0x89, 0xbc, 0x45,
0x4e, 0x8f, 0xc9, 0x5a, 0x91, 0xce, 0x44, 0x94, 0x88, 0x45, 0x07, 0x1a, 0xc9, 0x04, 0x71, 0xce,
0x91, 0xa5, 0x49, 0xa1, 0x77, 0xa6, 0xc1, 0x8c, 0x46, 0x91, 0xdb, 0x68, 0x14, 0xf5, 0xca, 0xdf,
0x46, 0x63, 0x11, 0xb5, 0xfc, 0x6d, 0x34, 0x1e, 0x44, 0x33, 0xe7, 0xd0, 0xaf, 0x1b, 0xd0, 0xce,
0xcb, 0x5a, 0xa2, 0x5c, 0x0f, 0x68, 0x52, 0xea, 0xb5, 0xf3, 0xa5, 0x13, 0x52, 0xc5, 0xbc, 0x7c,
0x2a, 0x02, 0x13, 0x63, 0x79, 0xca, 0xeb, 0x79, 0xfd, 0xe5, 0x64, 0xe5, 0x3a, 0x5f, 0x9c, 0x9e,
0x20, 0x1e, 0x7b, 0x0f, 0xea, 0x89, 0xa0, 0x48, 0x8e, 0xe5, 0x1d, 0x8f, 0xe6, 0xe4, 0xac, 0xaa,
0x26, 0xbe, 0x22, 0xd5, 0x5b, 0xa4, 0xbd, 0x72, 0x94, 0x31, 0x99, 0x45, 0xcb, 0x51, 0xef, 0x54,
0xd6, 0xcc, 0x9c, 0x43, 0x04, 0x1a, 0xc9, 0x1c, 0x58, 0x8e, 0x36, 0x6a, 0xd2, 0x67, 0x9d, 0xd7,
0xa7, 0xc0, 0x8c, 0x87, 0xb1, 0x01, 0x46, 0x39, 0xa8, 0x9c, 0xb3, 0x6e, 0x2c, 0x0d, 0xd6, 0x79,
0xed, 0x58, 0xbc, 0xe4, 0xb1, 0x9f, 0xc8, 0x2a, 0xe5, 0x48, 0x7f, 0x3c, 0xef, 0x34, 0xc5, 0x5d,
0x64, 0x3c, 0xc3, 0x91, 0x73, 0x17, 0xc9, 0x4d, 0xa6, 0x74, 0xae, 0x4f, 0x8d, 0x1f, 0xcf, 0xe7,
0x5b, 0xd0, 0xca, 0x66, 0x84, 0x72, 0xee, 0xb8, 0x39, 0x79, 0xa9, 0xce, 0x1b, 0x53, 0x62, 0x27,
0xcf, 0xc3, 0xf3, 0xe3, 0x3c, 0x7d, 0xc3, 0x65, 0x07, 0x22, 0x19, 0x31, 0xcd, 0xac, 0x93, 0x79,
0x8f, 0x69, 0x66, 0x9d, 0xca, 0x72, 0xa8, 0xc3, 0x4b, 0x44, 0x5d, 0xf3, 0x0e, 0xaf, 0x64, 0x7c,
0x3d, 0xe7, 0x9c, 0x49, 0x87, 0xac, 0xa5, 0xfb, 0x99, 0x8e, 0x1d, 0xa3, 0x7c, 0x3f, 0x61, 0x2c,
0x1c, 0x9d, 0xe3, 0x7e, 0xea, 0x83, 0xd1, 0x42, 0xd1, 0x5b, 0xd9, 0x10, 0xd9, 0xe4, 0xd8, 0x44,
0x36, 0xac, 0x74, 0x7c, 0xf8, 0xa0, 0xf5, 0xf1, 0xc0, 0x79, 0xb6, 0x03, 0x64, 0x23, 0x5e, 0x39,
0x03, 0xe4, 0x04, 0xc6, 0xa6, 0xf0, 0x25, 0x53, 0xd1, 0xa7, 0x9c, 0xa3, 0x49, 0x17, 0xa1, 0xca,
0x39, 0x9a, 0xb4, 0x81, 0x33, 0x73, 0x6e, 0x73, 0x08, 0x8d, 0x9d, 0x30, 0x78, 0x72, 0x14, 0x05,
0x8e, 0x7e, 0x3a, 0xc6, 0xee, 0xd6, 0x37, 0x60, 0xc1, 0x8d, 0x71, 0x7a, 0xe1, 0xa0, 0x7b, 0xab,
0x2e, 0x03, 0x58, 0x3b, 0x9c, 0x78, 0xc7, 0xf8, 0xc5, 0x1b, 0x3d, 0x97, 0x1d, 0x0c, 0xf7, 0xb8,
0x64, 0xae, 0x4b, 0xb4, 0x37, 0xdc, 0x40, 0xfd, 0xba, 0xee, 0xfa, 0x8c, 0x84, 0x3e, 0xf6, 0xae,
0x8b, 0xa1, 0x14, 0x74, 0xb0, 0xf7, 0x87, 0x86, 0xb1, 0x57, 0x16, 0xa0, 0x1b, 0xff, 0x1f, 0x00,
0x00, 0xff, 0xff, 0x30, 0xd9, 0x29, 0x9e, 0x78, 0x50, 0x00, 0x00,
0x80, 0x96, 0x92, 0x5f, 0xd7, 0xe4, 0x47, 0xa7, 0x61, 0x07, 0xfd, 0x7e, 0xe0, 0x4b, 0x60, 0xa7,
0x41, 0xed, 0x03, 0xd2, 0xc7, 0xf2, 0xcb, 0xfc, 0x03, 0x03, 0xd0, 0xed, 0x90, 0x60, 0x46, 0x6e,
0x7a, 0x2e, 0xa6, 0x16, 0xf9, 0xd6, 0x90, 0x50, 0x86, 0xbe, 0x08, 0xf3, 0x7b, 0x98, 0x92, 0xb6,
0xb1, 0x6e, 0x6c, 0xd4, 0x37, 0x2f, 0x5c, 0x4b, 0x75, 0xab, 0xba, 0xbb, 0x4f, 0x7b, 0xb7, 0x30,
0x25, 0x96, 0xc0, 0x44, 0x6b, 0x50, 0x71, 0xf6, 0xba, 0x3e, 0xee, 0x93, 0x76, 0x61, 0xdd, 0xd8,
0xa8, 0x59, 0x65, 0x67, 0xef, 0x01, 0xee, 0x13, 0xf4, 0x1a, 0x2c, 0xda, 0x81, 0xe7, 0x11, 0x9b,
0xb9, 0x81, 0x2f, 0x11, 0x8a, 0x02, 0x61, 0x61, 0x04, 0x16, 0x88, 0xcb, 0x50, 0xc2, 0x9c, 0x87,
0xf6, 0xbc, 0x68, 0x96, 0x1f, 0x26, 0x85, 0xd6, 0x56, 0x18, 0x0c, 0x9e, 0x15, 0x77, 0xf1, 0xa0,
0xc5, 0xe4, 0xa0, 0xbf, 0x6f, 0xc0, 0xb9, 0x9b, 0x1e, 0x23, 0xe1, 0x19, 0x15, 0xca, 0xef, 0x16,
0x60, 0x4d, 0xae, 0xda, 0xed, 0x18, 0xfd, 0x34, 0xb9, 0x5c, 0x85, 0xb2, 0xd4, 0x2a, 0xc1, 0x66,
0xc3, 0x52, 0x5f, 0xe8, 0x22, 0x00, 0x3d, 0xc0, 0xa1, 0x43, 0xbb, 0xfe, 0xb0, 0xdf, 0x2e, 0xad,
0x1b, 0x1b, 0x25, 0xab, 0x26, 0x21, 0x0f, 0x86, 0x7d, 0x64, 0xc1, 0x39, 0x3b, 0xf0, 0xa9, 0x4b,
0x19, 0xf1, 0xed, 0xa3, 0xae, 0x47, 0x1e, 0x13, 0xaf, 0x5d, 0x5e, 0x37, 0x36, 0x16, 0x36, 0x5f,
0xd1, 0xf2, 0x7d, 0x7b, 0x84, 0x7d, 0x8f, 0x23, 0x5b, 0x2d, 0x3b, 0x03, 0x31, 0xbf, 0x6b, 0xc0,
0x0a, 0x57, 0x98, 0x33, 0x21, 0x18, 0xf3, 0xcf, 0x0c, 0x58, 0xbe, 0x8b, 0xe9, 0xd9, 0x58, 0xa5,
0x8b, 0x00, 0xcc, 0xed, 0x93, 0x2e, 0x65, 0xb8, 0x3f, 0x10, 0x2b, 0x35, 0x6f, 0xd5, 0x38, 0x64,
0x97, 0x03, 0xcc, 0x6f, 0x42, 0xe3, 0x56, 0x10, 0x78, 0x16, 0xa1, 0x83, 0xc0, 0xa7, 0x04, 0xdd,
0x80, 0x32, 0x65, 0x98, 0x0d, 0xa9, 0x62, 0xf2, 0xbc, 0x96, 0xc9, 0x5d, 0x81, 0x62, 0x29, 0x54,
0xae, 0xaf, 0x8f, 0xb1, 0x37, 0x94, 0x3c, 0x56, 0x2d, 0xf9, 0x61, 0x7e, 0x02, 0x0b, 0xbb, 0x2c,
0x74, 0xfd, 0xde, 0x4f, 0xb0, 0xf3, 0x5a, 0xd4, 0xf9, 0xbf, 0x19, 0xf0, 0xc2, 0x16, 0xa1, 0x76,
0xe8, 0xee, 0x9d, 0x91, 0xed, 0x60, 0x42, 0x63, 0x04, 0xd9, 0xde, 0x12, 0xa2, 0x2e, 0x5a, 0x29,
0x58, 0x66, 0x31, 0x4a, 0xd9, 0xc5, 0xf8, 0x76, 0x09, 0x3a, 0xba, 0x49, 0xcd, 0x22, 0xbe, 0x9f,
0x8d, 0x77, 0x69, 0x41, 0x10, 0x65, 0xf6, 0x98, 0x3a, 0x17, 0x46, 0xa3, 0xed, 0x0a, 0x40, 0xbc,
0x99, 0xb3, 0xb3, 0x2a, 0x6a, 0x66, 0xb5, 0x09, 0x2b, 0x8f, 0xdd, 0x90, 0x0d, 0xb1, 0xd7, 0xb5,
0x0f, 0xb0, 0xef, 0x13, 0x4f, 0xc8, 0x89, 0x9b, 0xaf, 0xe2, 0x46, 0xcd, 0x5a, 0x52, 0x8d, 0xb7,
0x65, 0x1b, 0x17, 0x16, 0x45, 0x6f, 0xc1, 0xea, 0xe0, 0xe0, 0x88, 0xba, 0xf6, 0x18, 0x51, 0x49,
0x10, 0x2d, 0x47, 0xad, 0x29, 0xaa, 0xab, 0x70, 0xce, 0x16, 0x16, 0xd0, 0xe9, 0x72, 0xa9, 0x49,
0x31, 0x96, 0x85, 0x18, 0x5b, 0xaa, 0xe1, 0xa3, 0x08, 0xce, 0xd9, 0x8a, 0x90, 0x87, 0xcc, 0x4e,
0x10, 0x54, 0x04, 0xc1, 0x92, 0x6a, 0xfc, 0x98, 0xd9, 0x23, 0x9a, 0xb4, 0xed, 0xaa, 0x66, 0x6d,
0x57, 0x1b, 0x2a, 0xc2, 0x16, 0x13, 0xda, 0xae, 0x09, 0x36, 0xa3, 0x4f, 0xb4, 0x0d, 0x8b, 0x94,
0xe1, 0x90, 0x75, 0x07, 0x01, 0x75, 0xb9, 0x5c, 0x68, 0x1b, 0xd6, 0x8b, 0x1b, 0xf5, 0xcd, 0x75,
0xed, 0x22, 0x7d, 0x48, 0x8e, 0xb6, 0x30, 0xc3, 0x3b, 0xd8, 0x0d, 0xad, 0x05, 0x41, 0xb8, 0x13,
0xd1, 0xe9, 0x0d, 0x64, 0x7d, 0x26, 0x03, 0xa9, 0xd3, 0xe2, 0x86, 0xd6, 0x76, 0xfd, 0xd0, 0x80,
0x95, 0x7b, 0x01, 0x76, 0xce, 0xc6, 0x9e, 0x7a, 0x05, 0x16, 0x42, 0x32, 0xf0, 0x5c, 0x1b, 0xf3,
0xf5, 0xd8, 0x23, 0xa1, 0xd8, 0x55, 0x25, 0xab, 0xa9, 0xa0, 0x0f, 0x04, 0xd0, 0xfc, 0xdc, 0x80,
0xb6, 0x45, 0x3c, 0x82, 0xe9, 0xd9, 0xb0, 0x05, 0xe6, 0xf7, 0x0d, 0x78, 0xf1, 0x0e, 0x61, 0x89,
0x5d, 0xc5, 0x30, 0x73, 0x29, 0x73, 0xed, 0xd3, 0xf4, 0x2b, 0xcc, 0xef, 0x19, 0x70, 0x29, 0x97,
0xad, 0x59, 0x8c, 0xcc, 0x3b, 0x50, 0xe2, 0xbf, 0x68, 0xbb, 0x20, 0x74, 0xfe, 0x72, 0x9e, 0xce,
0x7f, 0x9d, 0xdb, 0x6e, 0xa1, 0xf4, 0x12, 0xdf, 0xfc, 0x2f, 0x03, 0x56, 0x77, 0x0f, 0x82, 0xc3,
0x11, 0x4b, 0xcf, 0x42, 0x40, 0x69, 0xb3, 0x5b, 0xcc, 0x98, 0x5d, 0xf4, 0x26, 0xcc, 0xb3, 0xa3,
0x01, 0x11, 0xba, 0xb5, 0xb0, 0x79, 0xf1, 0x9a, 0xc6, 0x9d, 0xbe, 0xc6, 0x99, 0xfc, 0xe8, 0x68,
0x40, 0x2c, 0x81, 0x8a, 0x5e, 0x87, 0x56, 0x46, 0xe4, 0x91, 0xe1, 0x5a, 0x4c, 0xcb, 0x9c, 0x9a,
0x3f, 0x2e, 0xc0, 0xda, 0xd8, 0x14, 0x67, 0x11, 0xb6, 0x6e, 0xec, 0x82, 0x76, 0x6c, 0xbe, 0x7f,
0x12, 0xa8, 0xae, 0xc3, 0x3d, 0xde, 0xe2, 0x46, 0xd1, 0x6a, 0x26, 0xec, 0xb7, 0x43, 0xd1, 0x1b,
0x80, 0xc6, 0xcc, 0xaa, 0xb4, 0xde, 0xf3, 0xd6, 0xb9, 0xac, 0x5d, 0x15, 0xb6, 0x5b, 0x6b, 0x58,
0xa5, 0x08, 0xe6, 0xad, 0x65, 0x8d, 0x65, 0xa5, 0xe8, 0x4d, 0x58, 0x76, 0xfd, 0xfb, 0xa4, 0x1f,
0x84, 0x47, 0xdd, 0x01, 0x09, 0x6d, 0xe2, 0x33, 0xdc, 0x23, 0xb4, 0x5d, 0x16, 0x1c, 0x2d, 0x45,
0x6d, 0x3b, 0xa3, 0x26, 0xf3, 0x47, 0x06, 0xac, 0x4a, 0x8f, 0x77, 0x07, 0x87, 0xcc, 0x3d, 0x03,
0xd6, 0x68, 0x10, 0xf1, 0x21, 0xf1, 0xa4, 0x7f, 0xde, 0x8c, 0xa1, 0x62, 0x97, 0xfd, 0xc0, 0x80,
0x65, 0xee, 0x8c, 0x3e, 0x4f, 0x3c, 0xff, 0xa5, 0x01, 0x4b, 0x77, 0x31, 0x7d, 0x9e, 0x58, 0xfe,
0x2b, 0x75, 0x52, 0xc5, 0x3c, 0x9f, 0xea, 0x95, 0xed, 0x35, 0x58, 0x4c, 0x33, 0x1d, 0x79, 0x3f,
0x0b, 0x29, 0xae, 0xa9, 0xf9, 0x37, 0xa3, 0xb3, 0xea, 0x39, 0xe3, 0xfc, 0x6f, 0x0d, 0xb8, 0x78,
0x87, 0xb0, 0x98, 0xeb, 0x33, 0x71, 0xa6, 0x4d, 0xab, 0x2d, 0x9f, 0xcb, 0x13, 0x59, 0xcb, 0xfc,
0xa9, 0x9c, 0x7c, 0xdf, 0x2d, 0xc0, 0x0a, 0x3f, 0x16, 0xce, 0x86, 0x12, 0x4c, 0x73, 0x79, 0xd1,
0x28, 0x4a, 0x49, 0xa7, 0x28, 0xf1, 0x79, 0x5a, 0x9e, 0xfa, 0x3c, 0x35, 0x7f, 0x58, 0x90, 0x7e,
0x40, 0x52, 0x1a, 0xb3, 0x2c, 0x8b, 0x86, 0xd7, 0x82, 0x96, 0x57, 0x13, 0x1a, 0x31, 0x64, 0x7b,
0x2b, 0x3a, 0x1f, 0x53, 0xb0, 0x33, 0x7b, 0x3c, 0x7e, 0x66, 0xc0, 0x6a, 0x74, 0x5d, 0xdc, 0x25,
0xbd, 0x3e, 0xf1, 0xd9, 0xd3, 0xeb, 0x50, 0x56, 0x03, 0x0a, 0x1a, 0x0d, 0xb8, 0x00, 0x35, 0x2a,
0xc7, 0x89, 0x6f, 0x82, 0x23, 0x80, 0xf9, 0x77, 0x06, 0xac, 0x8d, 0xb1, 0x33, 0xcb, 0x22, 0xb6,
0xa1, 0xe2, 0xfa, 0x0e, 0x79, 0x12, 0x73, 0x13, 0x7d, 0xf2, 0x96, 0xbd, 0xa1, 0xeb, 0x39, 0x31,
0x1b, 0xd1, 0x27, 0xba, 0x0c, 0x0d, 0xe2, 0xe3, 0x3d, 0x8f, 0x74, 0x05, 0xae, 0x50, 0xe4, 0xaa,
0x55, 0x97, 0xb0, 0x6d, 0x0e, 0xe2, 0xc4, 0xfb, 0x2e, 0x11, 0xc4, 0x25, 0x49, 0xac, 0x3e, 0xcd,
0xdf, 0x30, 0x60, 0x89, 0x6b, 0xa1, 0xe2, 0x9e, 0x3e, 0x5b, 0x69, 0xae, 0x43, 0x3d, 0xa1, 0x66,
0x6a, 0x22, 0x49, 0x90, 0xf9, 0x08, 0x96, 0xd3, 0xec, 0xcc, 0x22, 0xcd, 0x17, 0x01, 0xe2, 0xb5,
0x92, 0xbb, 0xa1, 0x68, 0x25, 0x20, 0xe6, 0x67, 0x85, 0x28, 0x28, 0x2c, 0xc4, 0x74, 0xca, 0x31,
0x2b, 0xb1, 0x24, 0x49, 0x7b, 0x5e, 0x13, 0x10, 0xd1, 0xbc, 0x05, 0x0d, 0xf2, 0x84, 0x85, 0xb8,
0x3b, 0xc0, 0x21, 0xee, 0xcb, 0x6d, 0x35, 0x95, 0xe9, 0xad, 0x0b, 0xb2, 0x1d, 0x41, 0xc5, 0x07,
0x11, 0x2a, 0x22, 0x07, 0x29, 0xcb, 0x41, 0x04, 0x44, 0x1c, 0x18, 0xff, 0xc8, 0xbd, 0x38, 0xa5,
0xcd, 0x67, 0x5d, 0x20, 0xe9, 0xa9, 0x94, 0xb2, 0x53, 0xf9, 0x53, 0x03, 0x5a, 0x62, 0x0a, 0x72,
0x3e, 0x03, 0xde, 0x6d, 0x86, 0xc6, 0xc8, 0xd0, 0x4c, 0xd8, 0x7b, 0x3f, 0x03, 0x65, 0x25, 0xf7,
0xe2, 0xb4, 0x72, 0x57, 0x04, 0xc7, 0x4c, 0xc3, 0xfc, 0x23, 0x03, 0x56, 0x32, 0x22, 0x9f, 0x45,
0xe1, 0x3f, 0x02, 0x24, 0x67, 0xe8, 0x8c, 0xa6, 0x1d, 0x9d, 0xd3, 0xaf, 0x68, 0x0f, 0xa5, 0xac,
0x90, 0xac, 0x73, 0x6e, 0x06, 0x42, 0xcd, 0x7f, 0x31, 0xe0, 0xc2, 0x1d, 0xc2, 0x04, 0xea, 0x2d,
0x6e, 0x74, 0x76, 0xc2, 0xa0, 0x17, 0x12, 0x4a, 0x9f, 0x5f, 0xfd, 0xf8, 0x6d, 0xe9, 0xd8, 0xe9,
0xa6, 0x34, 0x8b, 0xfc, 0x2f, 0x43, 0x43, 0x8c, 0x41, 0x9c, 0x6e, 0x18, 0x1c, 0x52, 0xa5, 0x47,
0x75, 0x05, 0xb3, 0x82, 0x43, 0xa1, 0x10, 0x2c, 0x60, 0xd8, 0x93, 0x08, 0xea, 0x44, 0x11, 0x10,
0xde, 0x2c, 0xf6, 0x60, 0xc4, 0x18, 0xef, 0x9c, 0x3c, 0xbf, 0x32, 0xfe, 0x13, 0x03, 0x56, 0x32,
0x53, 0x99, 0x45, 0xb6, 0x5f, 0x92, 0x6e, 0xa7, 0x9c, 0xcc, 0xc2, 0xe6, 0x25, 0x2d, 0x4d, 0x62,
0x30, 0x89, 0x8d, 0x2e, 0x41, 0x7d, 0x1f, 0xbb, 0x5e, 0x37, 0x24, 0x98, 0x06, 0xbe, 0x9a, 0x28,
0x70, 0x90, 0x25, 0x20, 0xe6, 0x3f, 0x18, 0x32, 0xf3, 0xf6, 0x9c, 0x5b, 0xbc, 0x3f, 0x2e, 0x40,
0x73, 0xdb, 0xa7, 0x24, 0x64, 0x67, 0xff, 0x6a, 0x82, 0xde, 0x87, 0xba, 0x98, 0x18, 0xed, 0x3a,
0x98, 0x61, 0x75, 0x9a, 0xbd, 0xa8, 0x0d, 0xd3, 0x7f, 0xc0, 0xf1, 0xb6, 0x30, 0xc3, 0x96, 0x94,
0x0e, 0xe5, 0xbf, 0xd1, 0x79, 0xa8, 0x1d, 0x60, 0x7a, 0xd0, 0x7d, 0x44, 0x8e, 0xa4, 0xbf, 0xd8,
0xb4, 0xaa, 0x1c, 0xf0, 0x21, 0x39, 0xa2, 0xe8, 0x05, 0xa8, 0xfa, 0xc3, 0xbe, 0xdc, 0x60, 0x95,
0x75, 0x63, 0xa3, 0x69, 0x55, 0xfc, 0x61, 0x5f, 0x6c, 0xaf, 0x7f, 0x2a, 0xc0, 0xc2, 0xfd, 0x21,
0xbf, 0x08, 0x89, 0x24, 0xc3, 0xd0, 0x63, 0x4f, 0xa7, 0x8c, 0x57, 0xa0, 0x28, 0x5d, 0x0a, 0x4e,
0xd1, 0xd6, 0x32, 0xbe, 0xbd, 0x45, 0x2d, 0x8e, 0x24, 0x02, 0xec, 0x43, 0xdb, 0x56, 0xde, 0x59,
0x51, 0x30, 0x5b, 0xe3, 0x10, 0xe9, 0x9b, 0x9d, 0x87, 0x1a, 0x09, 0xc3, 0xd8, 0x77, 0x13, 0x53,
0x21, 0x61, 0x28, 0x1b, 0x4d, 0x68, 0x60, 0xfb, 0x91, 0x1f, 0x1c, 0x7a, 0xc4, 0xe9, 0x11, 0x47,
0x2c, 0x7b, 0xd5, 0x4a, 0xc1, 0xa4, 0x62, 0xf0, 0x85, 0xef, 0xda, 0x3e, 0x13, 0xa7, 0x7a, 0x91,
0x2b, 0x06, 0x87, 0xdc, 0xf6, 0x19, 0x6f, 0x76, 0x88, 0x47, 0x18, 0x11, 0xcd, 0x15, 0xd9, 0x2c,
0x21, 0xaa, 0x79, 0x38, 0x88, 0xa9, 0xab, 0xb2, 0x59, 0x42, 0x78, 0xf3, 0x05, 0xa8, 0x8d, 0xb2,
0x08, 0xb5, 0x51, 0x18, 0x51, 0x00, 0xcc, 0xff, 0x34, 0xa0, 0xb9, 0x25, 0xba, 0x7a, 0x0e, 0x94,
0x0e, 0xc1, 0x3c, 0x79, 0x32, 0x08, 0xd5, 0xd6, 0x11, 0xbf, 0x27, 0xea, 0x91, 0xf9, 0x18, 0x5a,
0x3b, 0x1e, 0xb6, 0xc9, 0x41, 0xe0, 0x39, 0x24, 0x14, 0x67, 0x3b, 0x6a, 0x41, 0x91, 0xe1, 0x9e,
0x72, 0x1e, 0xf8, 0x4f, 0xf4, 0x65, 0x75, 0xf5, 0x93, 0x66, 0xe9, 0x65, 0xed, 0x29, 0x9b, 0xe8,
0x26, 0x11, 0x51, 0x5d, 0x85, 0xb2, 0xc8, 0xec, 0x49, 0xb7, 0xa2, 0x61, 0xa9, 0x2f, 0xf3, 0x61,
0x6a, 0xdc, 0x3b, 0x61, 0x30, 0x1c, 0xa0, 0x6d, 0x68, 0x0c, 0x46, 0x30, 0xae, 0xab, 0xf9, 0x67,
0x7a, 0x96, 0x69, 0x2b, 0x45, 0x6a, 0xfe, 0x77, 0x11, 0x9a, 0xbb, 0x04, 0x87, 0xf6, 0xc1, 0xf3,
0x10, 0x83, 0xe1, 0x12, 0x77, 0xa8, 0xa7, 0x56, 0x8d, 0xff, 0x44, 0x57, 0xe1, 0x5c, 0x62, 0x42,
0xdd, 0x1e, 0x17, 0x90, 0xd0, 0xfb, 0x86, 0xd5, 0x1a, 0x64, 0x05, 0xf7, 0x0e, 0x54, 0x1d, 0xea,
0x75, 0xc5, 0x12, 0x55, 0xc4, 0x12, 0xe9, 0xe7, 0xb7, 0x45, 0x3d, 0xb1, 0x34, 0x15, 0x47, 0xfe,
0x40, 0x2f, 0x41, 0x33, 0x18, 0xb2, 0xc1, 0x90, 0x75, 0xa5, 0xdd, 0x69, 0x57, 0x05, 0x7b, 0x0d,
0x09, 0x14, 0x66, 0x89, 0xa2, 0x0f, 0xa0, 0x49, 0x85, 0x28, 0x23, 0xc7, 0xbc, 0x36, 0xad, 0x83,
0xd8, 0x90, 0x74, 0xca, 0x33, 0x7f, 0x1d, 0x5a, 0x2c, 0xc4, 0x8f, 0x89, 0x97, 0xc8, 0xd9, 0x81,
0xd8, 0x6d, 0x8b, 0x12, 0x3e, 0xca, 0xd7, 0x5d, 0x87, 0xa5, 0xde, 0x10, 0x87, 0xd8, 0x67, 0x84,
0x24, 0xb0, 0xeb, 0x02, 0x1b, 0xc5, 0x4d, 0x31, 0x81, 0xf9, 0x21, 0xcc, 0xdf, 0x75, 0x99, 0x10,
0x24, 0xb7, 0x59, 0x86, 0xb8, 0x06, 0x09, 0xcb, 0xf4, 0x02, 0x54, 0xc3, 0xe0, 0x50, 0xda, 0xe0,
0x82, 0x50, 0xc1, 0x4a, 0x18, 0x1c, 0x0a, 0x03, 0x2b, 0x2a, 0x1d, 0x82, 0x50, 0xe9, 0x66, 0xc1,
0x52, 0x5f, 0xe6, 0x5f, 0x18, 0x23, 0xe5, 0xe1, 0xe6, 0x93, 0x3e, 0x9d, 0xfd, 0x7c, 0x1f, 0x2a,
0xa1, 0xa4, 0x9f, 0x98, 0xa3, 0x4d, 0x8e, 0x24, 0xce, 0x80, 0x88, 0x6a, 0xfa, 0x04, 0xd0, 0x2f,
0x1b, 0xd0, 0xf8, 0xc0, 0x1b, 0xd2, 0x67, 0xa1, 0xec, 0xba, 0xb4, 0x44, 0x51, 0x9f, 0x12, 0xf9,
0xcd, 0x02, 0x34, 0x15, 0x1b, 0xb3, 0x38, 0x41, 0xb9, 0xac, 0xec, 0x42, 0x9d, 0x0f, 0xd9, 0xa5,
0xa4, 0x17, 0xc5, 0x74, 0xea, 0x9b, 0x9b, 0x5a, 0xf3, 0x90, 0x62, 0x43, 0xa4, 0xc1, 0x77, 0x05,
0xd1, 0xcf, 0xfb, 0x2c, 0x3c, 0xb2, 0xc0, 0x8e, 0x01, 0x9d, 0x87, 0xb0, 0x98, 0x69, 0xe6, 0x4a,
0xf4, 0x88, 0x1c, 0x45, 0xf6, 0xef, 0x11, 0x39, 0x42, 0x6f, 0x25, 0x8b, 0x15, 0xf2, 0x4e, 0xf1,
0x7b, 0x81, 0xdf, 0xbb, 0x19, 0x86, 0xf8, 0x48, 0x15, 0x33, 0xbc, 0x5b, 0xf8, 0xb2, 0x61, 0xfe,
0x7d, 0x01, 0x1a, 0x5f, 0x1b, 0x92, 0xf0, 0xe8, 0x34, 0xed, 0x50, 0x74, 0x2a, 0xcc, 0x27, 0x4e,
0x85, 0xb1, 0xad, 0x5f, 0xd2, 0x6c, 0x7d, 0x8d, 0x01, 0x2b, 0x6b, 0x0d, 0x98, 0x6e, 0x6f, 0x57,
0x4e, 0xb4, 0xb7, 0xab, 0xb9, 0x7b, 0xfb, 0xcf, 0x8d, 0x58, 0x84, 0x33, 0xed, 0xc6, 0x94, 0x3b,
0x56, 0x38, 0xb1, 0x3b, 0x36, 0xf5, 0x6e, 0xfc, 0x81, 0x01, 0xb5, 0xaf, 0x13, 0x9b, 0x05, 0x21,
0xb7, 0x3f, 0x1a, 0x32, 0x63, 0x0a, 0xd7, 0xb8, 0x90, 0x75, 0x8d, 0x6f, 0x40, 0xd5, 0x75, 0xba,
0x98, 0xeb, 0x97, 0x18, 0x77, 0x92, 0x4b, 0x56, 0x71, 0x1d, 0xa1, 0x88, 0xd3, 0x27, 0x01, 0x7e,
0xc7, 0x80, 0x86, 0xe4, 0x99, 0x4a, 0xca, 0xf7, 0x12, 0xc3, 0x19, 0x3a, 0xa5, 0x57, 0x1f, 0xf1,
0x44, 0xef, 0xce, 0x8d, 0x86, 0xbd, 0x09, 0xc0, 0x85, 0xac, 0xc8, 0xe5, 0x9e, 0x59, 0xd7, 0x72,
0x2b, 0xc9, 0x85, 0xc0, 0xef, 0xce, 0x59, 0x35, 0x4e, 0x25, 0xba, 0xb8, 0x55, 0x81, 0x92, 0xa0,
0x36, 0xff, 0xcf, 0x80, 0xa5, 0xdb, 0xd8, 0xb3, 0xb7, 0x5c, 0xca, 0xb0, 0x6f, 0xcf, 0xe0, 0x84,
0xbd, 0x0b, 0x95, 0x60, 0xd0, 0xf5, 0xc8, 0x3e, 0x53, 0x2c, 0x5d, 0x9e, 0x30, 0x23, 0x29, 0x06,
0xab, 0x1c, 0x0c, 0xee, 0x91, 0x7d, 0x86, 0xbe, 0x02, 0xd5, 0x60, 0xd0, 0x0d, 0xdd, 0xde, 0x01,
0x53, 0xd2, 0x9f, 0x82, 0xb8, 0x12, 0x0c, 0x2c, 0x4e, 0x91, 0x88, 0xad, 0xcc, 0x9f, 0x30, 0xb6,
0x62, 0xfe, 0xeb, 0xd8, 0xf4, 0x67, 0xd8, 0x03, 0xef, 0x42, 0xd5, 0xf5, 0x59, 0xd7, 0x71, 0x69,
0x24, 0x82, 0x8b, 0x7a, 0x1d, 0xf2, 0x99, 0x98, 0x81, 0x58, 0x53, 0x9f, 0xf1, 0xb1, 0xd1, 0x57,
0x01, 0xf6, 0xbd, 0x00, 0x2b, 0x6a, 0x29, 0x83, 0x4b, 0xfa, 0xed, 0xc3, 0xd1, 0x22, 0xfa, 0x9a,
0x20, 0xe2, 0x3d, 0x8c, 0x96, 0xf4, 0x9f, 0x0d, 0x58, 0xd9, 0x21, 0xa1, 0x2c, 0x65, 0x61, 0x2a,
0x0c, 0xba, 0xed, 0xef, 0x07, 0xe9, 0x48, 0xb4, 0x91, 0x89, 0x44, 0xff, 0x64, 0xa2, 0xaf, 0xa9,
0x9b, 0x93, 0xcc, 0x87, 0x44, 0x37, 0xa7, 0x28, 0xeb, 0x23, 0x6f, 0x9e, 0x0b, 0x39, 0xcb, 0xa4,
0xf8, 0x4d, 0x5e, 0xc0, 0xcd, 0xdf, 0x92, 0x15, 0x18, 0xda, 0x49, 0x3d, 0xbd, 0xc2, 0xae, 0x82,
0xb2, 0xf4, 0x19, 0xbb, 0xff, 0x2a, 0x64, 0x6c, 0x47, 0x8e, 0x21, 0xfa, 0x3d, 0x03, 0xd6, 0xf3,
0xb9, 0x9a, 0xe5, 0x88, 0xfe, 0x2a, 0x94, 0x5c, 0x7f, 0x3f, 0x88, 0xc2, 0x6e, 0x57, 0xf4, 0x2e,
0xba, 0x76, 0x5c, 0x49, 0x68, 0xfe, 0x75, 0x01, 0x5a, 0xc2, 0xa8, 0x9f, 0xc2, 0xf2, 0xf7, 0x49,
0xbf, 0x4b, 0xdd, 0x4f, 0x49, 0xb4, 0xfc, 0x7d, 0xd2, 0xdf, 0x75, 0x3f, 0x25, 0x29, 0xcd, 0x28,
0xa5, 0x35, 0x63, 0x72, 0x54, 0x39, 0x19, 0x56, 0xad, 0xa4, 0xc3, 0xaa, 0xab, 0x50, 0xf6, 0x03,
0x87, 0x6c, 0x6f, 0xa9, 0x6b, 0xa7, 0xfa, 0x1a, 0xa9, 0x5a, 0xed, 0x84, 0xaa, 0xf6, 0xb9, 0x01,
0x9d, 0x3b, 0x84, 0x65, 0x65, 0x77, 0x7a, 0x5a, 0xf6, 0x3d, 0x03, 0xce, 0x6b, 0x19, 0x9a, 0x45,
0xc1, 0xde, 0x4b, 0x2b, 0x98, 0xfe, 0x0e, 0x38, 0x36, 0xa4, 0xd2, 0xad, 0x37, 0xa1, 0xb1, 0x35,
0xec, 0xf7, 0x63, 0x97, 0xeb, 0x32, 0x34, 0x42, 0xf9, 0x53, 0x5e, 0x91, 0xe4, 0xf9, 0x5b, 0x57,
0x30, 0x7e, 0x11, 0x32, 0xaf, 0x42, 0x53, 0x91, 0x28, 0xae, 0x3b, 0x50, 0x0d, 0xd5, 0x6f, 0x85,
0x1f, 0x7f, 0x9b, 0x2b, 0xb0, 0x64, 0x91, 0x1e, 0x57, 0xed, 0xf0, 0x9e, 0xeb, 0x3f, 0x52, 0xc3,
0x98, 0xdf, 0x31, 0x60, 0x39, 0x0d, 0x57, 0x7d, 0xbd, 0x0d, 0x15, 0xec, 0x38, 0x21, 0xa1, 0x74,
0xe2, 0xb2, 0xdc, 0x94, 0x38, 0x56, 0x84, 0x9c, 0x90, 0x5c, 0x61, 0x6a, 0xc9, 0x99, 0x5d, 0x38,
0x77, 0x87, 0xb0, 0xfb, 0x84, 0x85, 0x33, 0x65, 0xf0, 0xdb, 0xfc, 0xf2, 0x22, 0x88, 0x95, 0x5a,
0x44, 0x9f, 0xe6, 0x67, 0x06, 0xa0, 0xe4, 0x08, 0xb3, 0x2c, 0x73, 0x52, 0xca, 0x85, 0xb4, 0x94,
0x65, 0x91, 0x53, 0x7f, 0x10, 0xf8, 0xc4, 0x67, 0x49, 0x77, 0xab, 0x19, 0x43, 0x85, 0xfa, 0xfd,
0xc8, 0x00, 0x74, 0x2f, 0xc0, 0xce, 0x2d, 0xec, 0xcd, 0xe6, 0x1e, 0x5c, 0x04, 0xa0, 0xa1, 0xdd,
0x55, 0xbb, 0xb5, 0xa0, 0xac, 0x4f, 0x68, 0x3f, 0x90, 0x1b, 0xf6, 0x12, 0xd4, 0x1d, 0xca, 0x54,
0x73, 0x94, 0x50, 0x06, 0x87, 0x32, 0xd9, 0x2e, 0x8a, 0x58, 0x29, 0xc1, 0x1e, 0x71, 0xba, 0x89,
0x7c, 0xdc, 0xbc, 0x40, 0x6b, 0xc9, 0x86, 0xdd, 0x51, 0x56, 0xee, 0x21, 0xac, 0xdd, 0xc7, 0xfe,
0x10, 0x7b, 0xb7, 0x83, 0xfe, 0x00, 0xa7, 0x0a, 0x1b, 0xb3, 0x66, 0xce, 0xd0, 0x98, 0xb9, 0x17,
0x65, 0xe5, 0x9b, 0x74, 0xad, 0x05, 0xaf, 0xf3, 0x56, 0x02, 0x62, 0x52, 0x68, 0x8f, 0x77, 0x3f,
0xcb, 0x42, 0x09, 0xa6, 0xa2, 0xae, 0x92, 0xb6, 0x77, 0x04, 0x33, 0xdf, 0x87, 0x17, 0x44, 0x15,
0x62, 0x04, 0x4a, 0x85, 0xf6, 0xb3, 0x1d, 0x18, 0x9a, 0x0e, 0x7e, 0xb5, 0x20, 0x4c, 0xdb, 0x58,
0x0f, 0xb3, 0x30, 0xfe, 0x6e, 0x3a, 0xa2, 0xfe, 0x72, 0x4e, 0xa5, 0x6d, 0x7a, 0x44, 0x15, 0x56,
0xdf, 0x80, 0x45, 0xf2, 0x84, 0xd8, 0x43, 0xe6, 0xfa, 0xbd, 0x1d, 0x0f, 0xfb, 0x0f, 0x02, 0x75,
0xa0, 0x64, 0xc1, 0xe8, 0x65, 0x68, 0x72, 0xe9, 0x07, 0x43, 0xa6, 0xf0, 0xe4, 0xc9, 0x92, 0x06,
0xf2, 0xfe, 0xf8, 0x7c, 0x3d, 0xc2, 0x88, 0xa3, 0xf0, 0xe4, 0x31, 0x93, 0x05, 0x8f, 0x89, 0x92,
0x83, 0xe9, 0x49, 0x44, 0xf9, 0xef, 0x46, 0x46, 0x94, 0xaa, 0x87, 0xd3, 0x12, 0xe5, 0x5d, 0x80,
0x3e, 0x09, 0x7b, 0x64, 0x5b, 0x18, 0x75, 0x79, 0x73, 0xdf, 0xd0, 0x1a, 0xf5, 0x51, 0x07, 0xf7,
0x23, 0x02, 0x2b, 0x41, 0x6b, 0xde, 0x81, 0x25, 0x0d, 0x0a, 0xb7, 0x57, 0x34, 0x18, 0x86, 0x36,
0x89, 0x82, 0x3f, 0xd1, 0x27, 0x3f, 0xdf, 0x18, 0x0e, 0x7b, 0x84, 0x29, 0xa5, 0x55, 0x5f, 0xe6,
0xdb, 0x22, 0x09, 0x25, 0x02, 0x05, 0x29, 0x4d, 0x4d, 0x27, 0xd4, 0x8d, 0xb1, 0x84, 0xfa, 0xbe,
0xc8, 0xf8, 0x24, 0xe9, 0x66, 0x2c, 0x86, 0xd8, 0xe7, 0x5d, 0x11, 0x47, 0xbd, 0xb2, 0x88, 0x3e,
0xcd, 0xff, 0x35, 0xa0, 0xb9, 0xdd, 0x1f, 0x04, 0xa3, 0x64, 0xc7, 0xd4, 0x57, 0xc9, 0xf1, 0x60,
0x71, 0x41, 0x17, 0x2c, 0x7e, 0x09, 0x9a, 0xe9, 0x1a, 0x7d, 0x19, 0xd7, 0x69, 0xd8, 0xc9, 0xda,
0xfc, 0xf3, 0x50, 0x0b, 0x83, 0xc3, 0x2e, 0x37, 0x91, 0x8e, 0x2a, 0xbb, 0xa8, 0x86, 0xc1, 0x21,
0x37, 0x9c, 0x0e, 0x5a, 0x86, 0xd2, 0xbe, 0xeb, 0xc5, 0x15, 0x43, 0xf2, 0x03, 0xbd, 0xc7, 0x2f,
0x5a, 0x32, 0x2d, 0x5b, 0x9e, 0xf6, 0xbe, 0x13, 0x51, 0x98, 0x9f, 0xc0, 0x42, 0x34, 0xeb, 0x19,
0x9f, 0x97, 0x30, 0x4c, 0x1f, 0x45, 0x15, 0x11, 0xf2, 0xc3, 0xbc, 0x2a, 0xb3, 0x75, 0xa2, 0xff,
0xd4, 0xa2, 0x23, 0x98, 0xe7, 0x18, 0x6a, 0x2f, 0x89, 0xdf, 0x7c, 0x01, 0x56, 0xb3, 0xd8, 0xb3,
0xb0, 0xf4, 0x76, 0x7a, 0xff, 0xe8, 0x5f, 0x10, 0x24, 0x47, 0x53, 0x7b, 0x47, 0xad, 0x80, 0x1d,
0x0c, 0x7d, 0xa6, 0x0c, 0x10, 0x5f, 0x81, 0xdb, 0xfc, 0x1b, 0xad, 0x41, 0xc5, 0x75, 0xba, 0x1e,
0xbf, 0x93, 0xc9, 0xb3, 0xa6, 0xec, 0x3a, 0xf7, 0xf8, 0x7d, 0xed, 0x9d, 0xc8, 0x83, 0x9a, 0xba,
0x8c, 0x42, 0x79, 0x4f, 0xdf, 0x97, 0xe7, 0xbb, 0x25, 0x4b, 0xf1, 0x9f, 0x71, 0xb1, 0xcc, 0x06,
0xb4, 0x0e, 0x5d, 0x76, 0xd0, 0x15, 0x6f, 0x31, 0xc4, 0xe1, 0x2a, 0xf3, 0xc5, 0x55, 0x6b, 0x81,
0xc3, 0x77, 0x39, 0x98, 0x1f, 0xb0, 0xd4, 0xfc, 0x35, 0x03, 0x96, 0x52, 0x6c, 0xcd, 0xb2, 0x14,
0x5f, 0xe1, 0x7e, 0x87, 0xec, 0x48, 0x79, 0x98, 0xeb, 0x5a, 0x63, 0xa4, 0x46, 0x13, 0x46, 0x28,
0xa6, 0x30, 0xff, 0xc3, 0x80, 0x7a, 0xa2, 0x85, 0x5f, 0x5b, 0x54, 0xdb, 0xe8, 0xda, 0x12, 0x03,
0xa6, 0x12, 0xc3, 0x4b, 0x30, 0xda, 0x9a, 0x89, 0x7a, 0xee, 0x44, 0xbd, 0x9a, 0x43, 0xd1, 0x5d,
0x58, 0x90, 0x62, 0x8a, 0x59, 0xd7, 0x46, 0x13, 0xe2, 0x4a, 0x3c, 0x1c, 0x3a, 0x8a, 0x4b, 0xab,
0x49, 0x13, 0x5f, 0x32, 0x79, 0x18, 0x38, 0x44, 0x8c, 0x54, 0x92, 0xd6, 0x52, 0xf8, 0x35, 0x0e,
0xe5, 0xd7, 0x8b, 0x46, 0x92, 0x94, 0xbb, 0x68, 0x1e, 0xc1, 0x0e, 0x09, 0xe3, 0xb9, 0xc5, 0xdf,
0xdc, 0x27, 0x92, 0xbf, 0xbb, 0xdc, 0x65, 0x55, 0x46, 0x06, 0x24, 0x88, 0x7b, 0xb3, 0xe8, 0x55,
0x58, 0x74, 0xfa, 0xa9, 0x87, 0x40, 0x91, 0x13, 0xe7, 0xf4, 0x13, 0x2f, 0x80, 0x52, 0x0c, 0xcd,
0xa7, 0x19, 0xfa, 0x1f, 0x23, 0x7e, 0x1e, 0x19, 0x12, 0x87, 0xf8, 0xcc, 0xc5, 0xde, 0xd3, 0xeb,
0x64, 0x07, 0xaa, 0x43, 0x4a, 0xc2, 0x84, 0x4d, 0x8c, 0xbf, 0x79, 0xdb, 0x00, 0x53, 0x7a, 0x18,
0x84, 0x8e, 0xe2, 0x32, 0xfe, 0x9e, 0x50, 0xfc, 0x27, 0x9f, 0xde, 0xe9, 0x8b, 0xff, 0xde, 0x86,
0xb5, 0x7e, 0xe0, 0xb8, 0xfb, 0xae, 0xae, 0x66, 0x90, 0x93, 0xad, 0x44, 0xcd, 0x29, 0x3a, 0xb3,
0x07, 0x6b, 0x32, 0xe3, 0xf8, 0x8c, 0xa7, 0x6c, 0xfe, 0x12, 0xac, 0x70, 0x63, 0xc1, 0x87, 0xf9,
0x98, 0x92, 0x70, 0xc6, 0x5d, 0x75, 0x01, 0x6a, 0x51, 0xcf, 0x51, 0x5d, 0xe6, 0x08, 0x60, 0xde,
0x85, 0xe5, 0xcc, 0x58, 0x4f, 0x39, 0xa3, 0x2b, 0x97, 0xa1, 0x1a, 0xd5, 0x99, 0xa2, 0x0a, 0x14,
0x6f, 0x7a, 0x5e, 0x6b, 0x0e, 0x35, 0xa0, 0xba, 0xad, 0x8a, 0x29, 0x5b, 0xc6, 0x95, 0x9f, 0x83,
0xc5, 0x4c, 0x3e, 0x12, 0x55, 0x61, 0xfe, 0x41, 0xe0, 0x93, 0xd6, 0x1c, 0x6a, 0x41, 0xe3, 0x96,
0xeb, 0xe3, 0xf0, 0x48, 0x46, 0xeb, 0x5a, 0x0e, 0x5a, 0x84, 0xba, 0x88, 0x5a, 0x29, 0x00, 0xd9,
0xfc, 0xf1, 0xcb, 0xd0, 0xbc, 0x2f, 0x18, 0xd9, 0x25, 0xe1, 0x63, 0xd7, 0x26, 0xa8, 0x0b, 0xad,
0xec, 0x2b, 0x5d, 0xf4, 0x05, 0xbd, 0x07, 0xa3, 0x7f, 0xcc, 0xdb, 0x99, 0x24, 0x43, 0x73, 0x0e,
0x7d, 0x02, 0x0b, 0xe9, 0xb7, 0xae, 0x48, 0x1f, 0x56, 0xd1, 0x3e, 0x88, 0x3d, 0xae, 0xf3, 0x2e,
0x34, 0x53, 0x4f, 0x57, 0xd1, 0xeb, 0xda, 0xbe, 0x75, 0xcf, 0x5b, 0x3b, 0x7a, 0xfb, 0x92, 0x7c,
0x5e, 0x2a, 0xb9, 0x4f, 0xbf, 0x2f, 0xcb, 0xe1, 0x5e, 0xfb, 0x08, 0xed, 0x38, 0xee, 0x31, 0x9c,
0x1b, 0x7b, 0x07, 0x86, 0xde, 0xc8, 0xb1, 0xd8, 0xfa, 0xf7, 0x62, 0xc7, 0x0d, 0x71, 0x08, 0x68,
0xfc, 0x89, 0x26, 0xba, 0xa6, 0x5f, 0x81, 0xbc, 0x07, 0xaa, 0x9d, 0xeb, 0x53, 0xe3, 0xc7, 0x82,
0xfb, 0x15, 0x03, 0xd6, 0x72, 0x1e, 0x6f, 0xa1, 0x1b, 0xda, 0xee, 0x26, 0xbf, 0x40, 0xeb, 0xbc,
0x75, 0x32, 0xa2, 0x98, 0x11, 0x1f, 0x16, 0x33, 0xef, 0x99, 0xd0, 0xd5, 0xdc, 0x1a, 0xef, 0xf1,
0x87, 0x5d, 0x9d, 0x2f, 0x4c, 0x87, 0x1c, 0x8f, 0xf7, 0x10, 0x16, 0x33, 0x8f, 0x80, 0x72, 0xc6,
0xd3, 0x3f, 0x15, 0x3a, 0x6e, 0x41, 0xbf, 0x09, 0xcd, 0xd4, 0x6b, 0x9d, 0x1c, 0x8d, 0xd7, 0xbd,
0xe8, 0x39, 0xae, 0xeb, 0x87, 0xd0, 0x48, 0x3e, 0xaa, 0x41, 0x1b, 0x79, 0x7b, 0x69, 0xac, 0xe3,
0x93, 0x6c, 0xa5, 0x51, 0xcd, 0xfc, 0x84, 0xad, 0x34, 0xf6, 0xcc, 0x60, 0xfa, 0xad, 0x94, 0xe8,
0x7f, 0xe2, 0x56, 0x3a, 0xf1, 0x10, 0xdf, 0x91, 0x7e, 0xb3, 0xe6, 0x4d, 0x06, 0xda, 0xcc, 0xd3,
0xcd, 0xfc, 0xd7, 0x27, 0x9d, 0x1b, 0x27, 0xa2, 0x89, 0xa5, 0xf8, 0x08, 0x16, 0xd2, 0x2f, 0x0f,
0x72, 0xa4, 0xa8, 0x7d, 0xac, 0xd1, 0xb9, 0x3a, 0x15, 0x6e, 0x3c, 0xd8, 0xc7, 0x50, 0x4f, 0xfc,
0xf1, 0x06, 0x7a, 0x6d, 0x82, 0x1e, 0x27, 0xff, 0x85, 0xe2, 0x38, 0x49, 0x7e, 0x0d, 0x6a, 0xf1,
0xff, 0x65, 0xa0, 0x57, 0x72, 0xf5, 0xf7, 0x24, 0x5d, 0xee, 0x02, 0x8c, 0xfe, 0x0c, 0x03, 0xbd,
0xaa, 0xed, 0x73, 0xec, 0xdf, 0x32, 0x8e, 0xeb, 0x34, 0x9e, 0xbe, 0x2c, 0xe8, 0x9a, 0x34, 0xfd,
0x64, 0x05, 0xe2, 0x71, 0xdd, 0x1e, 0x40, 0x33, 0x55, 0x37, 0x9c, 0xb7, 0x85, 0x35, 0xe5, 0xdc,
0x9d, 0x2b, 0xd3, 0xa0, 0xc6, 0xeb, 0x77, 0x00, 0xcd, 0x54, 0x15, 0x67, 0xce, 0x48, 0xba, 0xa2,
0xd5, 0x9c, 0x91, 0xb4, 0x45, 0xa1, 0xe6, 0x1c, 0xfa, 0x76, 0xa2, 0x60, 0x34, 0x55, 0x94, 0x8b,
0xde, 0x9c, 0xd8, 0x8f, 0xae, 0x26, 0xb9, 0xb3, 0x79, 0x12, 0x92, 0x98, 0x05, 0xa5, 0x55, 0x52,
0xa4, 0xf9, 0x5a, 0x75, 0x92, 0x95, 0xda, 0x85, 0xb2, 0xac, 0xcb, 0x44, 0x66, 0x4e, 0x05, 0x76,
0xa2, 0x68, 0xb3, 0xf3, 0x92, 0x16, 0x27, 0x5d, 0xb2, 0x28, 0x3b, 0x95, 0x5e, 0x70, 0x4e, 0xa7,
0xa9, 0xa2, 0xbc, 0x69, 0x3b, 0xb5, 0xa0, 0x2c, 0x0b, 0x6e, 0x72, 0x3a, 0x4d, 0x15, 0x8d, 0x75,
0x26, 0xe3, 0x88, 0x4c, 0xac, 0x39, 0x87, 0x76, 0xa0, 0x24, 0xc2, 0x41, 0xe8, 0xf2, 0xa4, 0x5a,
0x94, 0x49, 0x3d, 0xa6, 0xca, 0x55, 0xcc, 0x39, 0xf4, 0x0b, 0x50, 0x12, 0xc9, 0x8d, 0x9c, 0x1e,
0x93, 0x05, 0x25, 0x9d, 0x89, 0x28, 0x11, 0x8b, 0x0e, 0x34, 0x92, 0x59, 0xe4, 0x9c, 0x23, 0x4b,
0x93, 0x67, 0xef, 0x4c, 0x83, 0x19, 0x8d, 0x22, 0xb7, 0xd1, 0x28, 0x34, 0x96, 0xbf, 0x8d, 0xc6,
0xc2, 0x6e, 0xf9, 0xdb, 0x68, 0x3c, 0xd2, 0x66, 0xce, 0xa1, 0x5f, 0x37, 0xa0, 0x9d, 0x97, 0xda,
0x44, 0xb9, 0x1e, 0xd0, 0xa4, 0xfc, 0x6c, 0xe7, 0x4b, 0x27, 0xa4, 0x8a, 0x79, 0xf9, 0x54, 0x04,
0x26, 0xc6, 0x92, 0x99, 0xd7, 0xf3, 0xfa, 0xcb, 0x49, 0xdd, 0x75, 0xbe, 0x38, 0x3d, 0x41, 0x3c,
0xf6, 0x1e, 0xd4, 0x13, 0x41, 0x91, 0x1c, 0xcb, 0x3b, 0x1e, 0xcd, 0xc9, 0x59, 0x55, 0x4d, 0x7c,
0x45, 0xaa, 0xb7, 0xc8, 0x8d, 0xe5, 0x28, 0x63, 0x32, 0xd5, 0x96, 0xa3, 0xde, 0xa9, 0xd4, 0x9a,
0x39, 0x87, 0x08, 0x34, 0x92, 0x89, 0xb2, 0x1c, 0x6d, 0xd4, 0xe4, 0xd8, 0x3a, 0xaf, 0x4f, 0x81,
0x19, 0x0f, 0xd3, 0x05, 0x18, 0x25, 0xaa, 0x72, 0xce, 0xba, 0xb1, 0x5c, 0x59, 0xe7, 0xb5, 0x63,
0xf1, 0x92, 0xc7, 0x7e, 0x22, 0xf5, 0x94, 0x23, 0xfd, 0xf1, 0xe4, 0xd4, 0x14, 0x77, 0x91, 0xf1,
0x34, 0x48, 0xce, 0x5d, 0x24, 0x37, 0xe3, 0xd2, 0xb9, 0x3e, 0x35, 0x7e, 0x3c, 0x9f, 0x6f, 0x41,
0x2b, 0x9b, 0x36, 0xca, 0xb9, 0xe3, 0xe6, 0x24, 0xaf, 0x3a, 0x6f, 0x4c, 0x89, 0x9d, 0x3c, 0x0f,
0xcf, 0x8f, 0xf3, 0xf4, 0x0d, 0x97, 0x1d, 0x88, 0x8c, 0xc5, 0x34, 0xb3, 0x4e, 0x26, 0x47, 0xa6,
0x99, 0x75, 0x2a, 0x15, 0xa2, 0x0e, 0x2f, 0x11, 0x75, 0xcd, 0x3b, 0xbc, 0x92, 0x41, 0xf8, 0x9c,
0x73, 0x26, 0x1d, 0xb2, 0x96, 0xee, 0x67, 0x3a, 0x76, 0x8c, 0xf2, 0xfd, 0x84, 0xb1, 0x70, 0x74,
0x8e, 0xfb, 0xa9, 0x0f, 0x46, 0x0b, 0x45, 0x6f, 0x65, 0x43, 0x64, 0x93, 0x63, 0x13, 0xd9, 0xb0,
0xd2, 0xf1, 0xe1, 0x83, 0xd6, 0xc7, 0x03, 0xe7, 0xd9, 0x0e, 0x90, 0x8d, 0x78, 0xe5, 0x0c, 0x90,
0x13, 0x18, 0x9b, 0xc2, 0x97, 0x4c, 0x45, 0x9f, 0x72, 0x8e, 0x26, 0x5d, 0x84, 0x2a, 0xe7, 0x68,
0xd2, 0x06, 0xce, 0xcc, 0xb9, 0xcd, 0x21, 0x34, 0x76, 0xc2, 0xe0, 0xc9, 0x51, 0x14, 0x38, 0xfa,
0xe9, 0x18, 0xbb, 0x5b, 0xdf, 0x80, 0x05, 0x37, 0xc6, 0xe9, 0x85, 0x03, 0xfb, 0x56, 0x5d, 0x06,
0xb0, 0x76, 0x38, 0xf1, 0x8e, 0xf1, 0x8b, 0x37, 0x7a, 0x2e, 0x3b, 0x18, 0xee, 0x71, 0xc9, 0x5c,
0x97, 0x68, 0x6f, 0xb8, 0x81, 0xfa, 0x75, 0xdd, 0xf5, 0x19, 0x09, 0x7d, 0xec, 0x5d, 0x17, 0x43,
0x29, 0xe8, 0x60, 0xef, 0x0f, 0x0d, 0x63, 0xaf, 0x2c, 0x40, 0x37, 0xfe, 0x3f, 0x00, 0x00, 0xff,
0xff, 0x81, 0xda, 0xa3, 0x80, 0x9d, 0x50, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View File

@ -3921,14 +3921,42 @@ func unhealthyStatus() *commonpb.Status {
// Import data files(json, numpy, etc.) on MinIO/S3 storage, read and parse them into sealed segments
func (node *Proxy) Import(ctx context.Context, req *milvuspb.ImportRequest) (*milvuspb.ImportResponse, error) {
log.Info("received import request")
resp := &milvuspb.ImportResponse{}
resp := &milvuspb.ImportResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
Reason: "",
},
}
if !node.checkHealthy() {
resp.Status = unhealthyStatus()
return resp, nil
}
resp, err := node.rootCoord.Import(ctx, req)
log.Info("received import response", zap.String("collectionName", req.GetCollectionName()), zap.Any("resp", resp), zap.Error(err))
// Get collection ID and then channel names.
collID, err := globalMetaCache.GetCollectionID(ctx, req.GetCollectionName())
if err != nil {
log.Error("collection ID not found",
zap.String("collection name", req.GetCollectionName()),
zap.Error(err))
resp.Status.ErrorCode = commonpb.ErrorCode_UnexpectedError
resp.Status.Reason = err.Error()
return resp, err
}
chNames, err := node.chMgr.getVChannels(collID)
if err != nil {
log.Error("get vChannels failed",
zap.Int64("collection ID", collID),
zap.Error(err))
resp.Status.ErrorCode = commonpb.ErrorCode_UnexpectedError
resp.Status.Reason = err.Error()
return resp, err
}
req.ChannelNames = chNames
// Call rootCoord to finish import.
resp, err = node.rootCoord.Import(ctx, req)
log.Info("received import response",
zap.String("collection name", req.GetCollectionName()),
zap.Any("resp", resp),
zap.Error(err))
return resp, err
}

View File

@ -1597,6 +1597,45 @@ func TestProxy(t *testing.T) {
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
})
wg.Add(1)
t.Run("test import", func(t *testing.T) {
defer wg.Done()
req := &milvuspb.ImportRequest{
CollectionName: collectionName,
Files: []string{"f1", "f2", "f3"},
}
proxy.stateCode.Store(internalpb.StateCode_Healthy)
resp, err := proxy.Import(context.TODO(), req)
assert.EqualValues(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
assert.Nil(t, err)
})
wg.Add(1)
t.Run("test import collection ID not found", func(t *testing.T) {
defer wg.Done()
req := &milvuspb.ImportRequest{
CollectionName: "bad_collection_name",
Files: []string{"f1", "f2", "f3"},
}
proxy.stateCode.Store(internalpb.StateCode_Healthy)
resp, err := proxy.Import(context.TODO(), req)
assert.EqualValues(t, commonpb.ErrorCode_UnexpectedError, resp.Status.ErrorCode)
assert.Error(t, err)
})
wg.Add(1)
t.Run("test import get vChannel fail", func(t *testing.T) {
defer wg.Done()
req := &milvuspb.ImportRequest{
CollectionName: "bad_collection_name",
Files: []string{"f1", "f2", "f3"},
}
proxy.stateCode.Store(internalpb.StateCode_Healthy)
resp, err := proxy.Import(context.TODO(), req)
assert.EqualValues(t, commonpb.ErrorCode_UnexpectedError, resp.Status.ErrorCode)
assert.Error(t, err)
})
wg.Add(1)
t.Run("release collection", func(t *testing.T) {
defer wg.Done()
@ -1610,6 +1649,7 @@ func TestProxy(t *testing.T) {
})
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.ErrorCode)
assert.Equal(t, "", resp.Reason)
// release dql message stream
resp, err = proxy.ReleaseDQLMessageStream(ctx, &proxypb.ReleaseDQLMessageStreamRequest{
@ -1619,6 +1659,7 @@ func TestProxy(t *testing.T) {
})
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.ErrorCode)
assert.Equal(t, "", resp.Reason)
})
wg.Add(1)
@ -1881,6 +1922,7 @@ func TestProxy(t *testing.T) {
})
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.ErrorCode)
assert.Equal(t, "", resp.Reason)
// invalidate meta cache
resp, err = proxy.InvalidateCollectionMetaCache(ctx, &proxypb.InvalidateCollMetaCacheRequest{
@ -2933,38 +2975,66 @@ func TestProxy_GetComponentStates_state_code(t *testing.T) {
assert.NotEqual(t, commonpb.ErrorCode_Success, states.Status.ErrorCode)
}
func TestProxy__Import(t *testing.T) {
req := &milvuspb.ImportRequest{
CollectionName: "dummy",
}
rootCoord := &RootCoordMock{}
rootCoord.state.Store(internalpb.StateCode_Healthy)
t.Run("test import", func(t *testing.T) {
proxy := &Proxy{rootCoord: rootCoord}
proxy.stateCode.Store(internalpb.StateCode_Healthy)
resp, err := proxy.Import(context.TODO(), req)
assert.EqualValues(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
assert.Nil(t, err)
func TestProxy_Import(t *testing.T) {
rc := NewRootCoordMock()
rc.Start()
defer rc.Stop()
err := InitMetaCache(rc)
assert.NoError(t, err)
rc.CreateCollection(context.TODO(), &milvuspb.CreateCollectionRequest{
Base: &commonpb.MsgBase{
MsgType: commonpb.MsgType_DropCollection,
MsgID: 100,
Timestamp: 100,
},
CollectionName: "import_collection",
})
localMsg := true
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
factory := dependency.NewDefaultFactory(localMsg)
proxy, err := NewProxy(ctx, factory)
assert.NoError(t, err)
var wg sync.WaitGroup
wg.Add(1)
t.Run("test import get vChannel failed", func(t *testing.T) {
defer wg.Done()
proxy.stateCode.Store(internalpb.StateCode_Healthy)
proxy.chMgr = newChannelsMgrImpl(nil, nil, nil, nil, nil)
resp, err := proxy.Import(context.TODO(),
&milvuspb.ImportRequest{
CollectionName: "import_collection",
})
assert.EqualValues(t, commonpb.ErrorCode_UnexpectedError, resp.Status.ErrorCode)
assert.Error(t, err)
})
wg.Add(1)
t.Run("test import with unhealthy", func(t *testing.T) {
proxy := &Proxy{rootCoord: rootCoord}
defer wg.Done()
req := &milvuspb.ImportRequest{
CollectionName: "dummy",
}
proxy.stateCode.Store(internalpb.StateCode_Abnormal)
resp, err := proxy.Import(context.TODO(), req)
assert.EqualValues(t, unhealthyStatus(), resp.Status)
assert.Nil(t, err)
assert.NoError(t, err)
})
resp, err := rc.DropCollection(context.TODO(), &milvuspb.DropCollectionRequest{
CollectionName: "import_collection",
})
wg.Wait()
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.ErrorCode)
rc.Stop()
}
func TestProxy__GetImportState(t *testing.T) {
func TestProxy_GetImportState(t *testing.T) {
req := &milvuspb.GetImportStateRequest{
Task: 1,
}
rootCoord := &RootCoordMock{}
rootCoord.state.Store(internalpb.StateCode_Healthy)
t.Run("test get import state", func(t *testing.T) {
proxy := &Proxy{rootCoord: rootCoord}
proxy.stateCode.Store(internalpb.StateCode_Healthy)

View File

@ -113,9 +113,11 @@ func (m *importManager) sendOutTasks(ctx context.Context) error {
if task.GetState().GetStateCode() == commonpb.ImportState_ImportFailed {
continue
}
// TODO: Use ImportTaskInfo directly.
it := &datapb.ImportTask{
CollectionId: task.GetCollectionId(),
PartitionId: task.GetPartitionId(),
ChannelNames: task.GetChannelNames(),
RowBased: task.GetRowBased(),
TaskId: task.GetId(),
Files: task.GetFiles(),
@ -146,7 +148,7 @@ func (m *importManager) sendOutTasks(ctx context.Context) error {
task.DatanodeId = resp.GetDatanodeId()
log.Debug("import task successfully assigned to DataNode",
zap.Int64("task ID", it.GetTaskId()),
zap.Int64("DataNode ID", task.GetDatanodeId()))
zap.Int64("dataNode ID", task.GetDatanodeId()))
// Add new working dataNode to busyNodes.
m.busyNodes[resp.GetDatanodeId()] = true
@ -252,6 +254,7 @@ func (m *importManager) importJob(ctx context.Context, req *milvuspb.ImportReque
Id: m.nextTaskID,
RequestId: reqID,
CollectionId: cID,
ChannelNames: req.ChannelNames,
Bucket: bucket,
RowBased: req.GetRowBased(),
Files: []string{req.GetFiles()[i]},
@ -274,6 +277,7 @@ func (m *importManager) importJob(ctx context.Context, req *milvuspb.ImportReque
Id: m.nextTaskID,
RequestId: reqID,
CollectionId: cID,
ChannelNames: req.ChannelNames,
Bucket: bucket,
RowBased: req.GetRowBased(),
Files: req.GetFiles(),

View File

@ -611,7 +611,7 @@ type RootCoord interface {
// error is always nil
Import(ctx context.Context, req *milvuspb.ImportRequest) (*milvuspb.ImportResponse, error)
// Check import task state from datanode
// GetImportState checks import task state from datanode
//
// ctx is the context to control request deadline and cancellation
// req contains the request params, including a task id
@ -621,7 +621,7 @@ type RootCoord interface {
// error is always nil
GetImportState(ctx context.Context, req *milvuspb.GetImportStateRequest) (*milvuspb.GetImportStateResponse, error)
// Report impot task state to rootcoord
// ReportImport reports import task state to rootCoord
//
// ctx is the context to control request deadline and cancellation
// req contains the import results, including imported row count and an id list of generated segments